model-compose 0.4.23__tar.gz → 0.4.24__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.23/src/model_compose.egg-info → model_compose-0.4.24}/PKG-INFO +1 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/pyproject.toml +1 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/cli/compose.py +81 -2
- model_compose-0.4.24/src/mindor/cli/interrupt.py +30 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/context.py +4 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/core/component/services/agent.py +194 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/http_client.py +4 -4
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/http_server.py +4 -4
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/__init__.py +1 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/common.py +1 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/custom.py +6 -6
- model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/common.py +38 -0
- model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/custom.py +12 -0
- model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/qwen.py +141 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/shell.py +5 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/compose/compose.py +15 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/compose/manager.py +4 -0
- model_compose-0.4.24/src/mindor/core/compose/validator.py +207 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/base.py +167 -26
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/services/http_server.py +47 -5
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/services/mcp_server.py +95 -108
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/webui/gradio.py +4 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/webui/webui.py +1 -1
- model_compose-0.4.24/src/mindor/core/evaluator/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/core/evaluator/condition.py +33 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/logger.py +3 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/renderers.py +24 -3
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/streaming.py +22 -0
- model_compose-0.4.24/src/mindor/core/utils/work_queue.py +103 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/context.py +5 -2
- model_compose-0.4.24/src/mindor/core/workflow/interrupt.py +47 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/action.py +43 -3
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/if_.py +4 -33
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/schema.py +14 -9
- model_compose-0.4.24/src/mindor/core/workflow/tool.py +80 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/workflow.py +6 -2
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/action.py +2 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/agent.py +15 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/__init__.py +2 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/common.py +15 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/impl/qwen.py +19 -0
- model_compose-0.4.24/src/mindor/dsl/schema/action/impl/model/impl/text_to_speech/text_to_speech.py +12 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/model.py +1 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/component.py +2 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/agent.py +10 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/common.py +8 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/datasets/datasets.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/http_client.py +0 -9
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/http_server.py +0 -7
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/image_processor.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -10
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -7
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/common.py +1 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/common.py +2 -15
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/dlib.py +2 -8
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/facenet.py +2 -8
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/insightface.py +2 -8
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +15 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/flux.py +2 -8
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/hunyuan_image.py +2 -8
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/sdxl.py +2 -8
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_to_text.py +0 -9
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/image_upscale.py +1 -1
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +15 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/esrgan.py +4 -10
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/real_esrgan.py +4 -10
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/text_classification.py +0 -9
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +0 -9
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/__init__.py +2 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/common.py +13 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/impl/qwen.py +9 -0
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model/impl/text_to_speech/text_to_speech.py +10 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/model.py +3 -2
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/classification.py +0 -9
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/shell.py +0 -8
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/text_splitter.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/types.py +1 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/chroma.py +0 -10
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/milvus.py +0 -9
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/qdrant.py +0 -9
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/web_scraper.py +0 -10
- model_compose-0.4.24/src/mindor/dsl/schema/component/impl/workflow.py +8 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/common.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/job/impl/action.py +42 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/if_.py +5 -18
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/switch.py +3 -3
- model_compose-0.4.24/src/mindor/dsl/schema/operator/__init__.py +1 -0
- model_compose-0.4.24/src/mindor/dsl/schema/operator/condition.py +14 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/workflow.py +1 -0
- {model_compose-0.4.23 → model_compose-0.4.24/src/model_compose.egg-info}/PKG-INFO +1 -1
- {model_compose-0.4.23 → model_compose-0.4.24}/src/model_compose.egg-info/SOURCES.txt +25 -0
- model_compose-0.4.23/src/mindor/core/utils/work_queue.py +0 -56
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/datasets/datasets.py +0 -18
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/image_processor.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/chat_completion.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/common.py +0 -28
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/common.py +0 -28
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/ldsr.py +0 -14
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/swinir.py +0 -14
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/model_trainer/impl/sft.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/text_splitter.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/vector_store/impl/faiss.py +0 -18
- model_compose-0.4.23/src/mindor/dsl/schema/component/impl/workflow.py +0 -17
- model_compose-0.4.23/src/mindor/dsl/schema/job/impl/action.py +0 -18
- {model_compose-0.4.23 → model_compose-0.4.24}/LICENSE +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/README.md +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/setup.cfg +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/cli/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/component.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/runtime/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/runtime/process_manager.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/runtime/process_worker.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/datasets.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/providers/local.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/datasets/utils.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/image_processor.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/mcp_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/mcp_server.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/huggingface_hub.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/base/unsloth.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/model.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/chat_completion/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/chat_completion/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/custom.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/face_embedding/insightface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/custom.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/flux.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/hunyuan_image.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_generation/sdxl.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_to_text/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_to_text/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/esrgan.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/ldsr.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/real_esrgan.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/image_upscale/swinir.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_classification/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_classification/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_embedding/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_embedding/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_generation/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/model/tasks/text_generation/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/text_splitter.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/chroma.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/drivers/milvus.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/vector_store/vector_store.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/web_scraper.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/workflow.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/compose/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/controller.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runner/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runner/client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runner/http_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runner/mcp_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runner/runner.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/context/Dockerfile +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/docker/docker.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/native/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/native/native.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/runtime/specs.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/services/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/controller/webui/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/foundation/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/foundation/async_service.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/foundation/ipc_messages.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/foundation/process_manager.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/foundation/process_worker.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/gateway.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/cloudflare.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/drivers/ngrok.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/listener.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/services/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/services/http_callback.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/listener/services/http_trigger.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/logging.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/services/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/services/console.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/logger/services/file.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/runtime/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/runtime/docker/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/runtime/docker/docker.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/runtime/env.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/caching.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/http_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/http_request.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/http_response.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/http_status.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/image.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/mcp_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/package.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/resolvers.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/shell.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/ssh_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/streamer.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/time.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/url.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/utils/websocket_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/base.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/delay.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/filter.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/random_router.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/impl/switch.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/workflow/job/job.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/loader.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/datasets.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/huggingface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/datasets/providers/local.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/image_processor.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/chat_completion.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/face_embedding.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/dlib.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/facenet.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/face_embedding/impl/insightface.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/image_generation.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/flux.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/hunyuan_image.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_generation/impl/sdxl.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_to_text.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/image_upscale.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/esrgan.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/ldsr.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/real_esrgan.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/image_upscale/impl/swinir.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_classification.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/classification.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/impl/sft.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/text_splitter.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/chroma.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/faiss.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/milvus.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/impl/qdrant.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/web_scraper.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/datasets/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/face_embedding.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/face_embedding/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/image_generation.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_generation/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model/impl/image_upscale/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/model_trainer/model_trainer.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/component/impl/vector_store/vector_store.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/compose.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/controller.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/dynamic.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/gradio.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/impl/static.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/controller/webui/webui.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/http_tunnel.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/cloudflare.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/http_tunnel/impl/ngrok.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/filter.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/random_router.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/job/job.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/http_trigger.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/listener/listener.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/logger/logger.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/embedded.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/native.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/process.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/http.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/schema/transport/ssh.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/utils/__init__.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/utils/annotation.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/utils/enum.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/dsl/utils/path.py +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/model_compose.egg-info/dependency_links.txt +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/model_compose.egg-info/entry_points.txt +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/model_compose.egg-info/requires.txt +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/src/model_compose.egg-info/top_level.txt +0 -0
- {model_compose-0.4.23 → model_compose-0.4.24}/tests/test_cli.py +0 -0
|
@@ -4,6 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
import click
|
|
5
5
|
import asyncio
|
|
6
6
|
import json
|
|
7
|
+
import sys
|
|
7
8
|
|
|
8
9
|
def _load_compose_config(config_files: List[Path], env_files: List[Path], env_data: List[str]):
|
|
9
10
|
from mindor.dsl.loader import load_compose_config
|
|
@@ -70,6 +71,7 @@ def up_command(
|
|
|
70
71
|
traceback.print_exc()
|
|
71
72
|
else:
|
|
72
73
|
click.echo(f"❌ {e}", err=True)
|
|
74
|
+
raise SystemExit(1)
|
|
73
75
|
asyncio.run(_async_command())
|
|
74
76
|
|
|
75
77
|
@click.command(name="down")
|
|
@@ -104,6 +106,7 @@ def down_command(
|
|
|
104
106
|
traceback.print_exc()
|
|
105
107
|
else:
|
|
106
108
|
click.echo(f"❌ {e}", err=True)
|
|
109
|
+
raise SystemExit(1)
|
|
107
110
|
asyncio.run(_async_command())
|
|
108
111
|
|
|
109
112
|
@click.command(name="start")
|
|
@@ -138,6 +141,7 @@ def start_command(
|
|
|
138
141
|
traceback.print_exc()
|
|
139
142
|
else:
|
|
140
143
|
click.echo(f"❌ {e}", err=True)
|
|
144
|
+
raise SystemExit(1)
|
|
141
145
|
asyncio.run(_async_command())
|
|
142
146
|
|
|
143
147
|
@click.command(name="stop")
|
|
@@ -172,6 +176,7 @@ def stop_command(
|
|
|
172
176
|
traceback.print_exc()
|
|
173
177
|
else:
|
|
174
178
|
click.echo(f"❌ {e}", err=True)
|
|
179
|
+
raise SystemExit(1)
|
|
175
180
|
asyncio.run(_async_command())
|
|
176
181
|
|
|
177
182
|
@click.command(name="run")
|
|
@@ -198,6 +203,7 @@ def stop_command(
|
|
|
198
203
|
required=False,
|
|
199
204
|
help="Path to save the output result as a file."
|
|
200
205
|
)
|
|
206
|
+
@click.option("--auto-resume", is_flag=True, help="Automatically resume interrupts without prompting.")
|
|
201
207
|
@click.option("--verbose", "-v", is_flag=True, help="Enable verbose output.")
|
|
202
208
|
@click.pass_context
|
|
203
209
|
def run_command(
|
|
@@ -207,15 +213,29 @@ def run_command(
|
|
|
207
213
|
env_files: List[Path],
|
|
208
214
|
env_data: List[str],
|
|
209
215
|
output_path: Optional[Path],
|
|
216
|
+
auto_resume: bool,
|
|
210
217
|
verbose: bool
|
|
211
218
|
) -> None:
|
|
212
|
-
from mindor.core.compose import
|
|
219
|
+
from mindor.core.compose.manager import ComposeManager
|
|
220
|
+
from mindor.core.controller.base import TaskStatus
|
|
221
|
+
from mindor.cli.interrupt import prompt_for_interrupt
|
|
213
222
|
config_files = ctx.obj.get("config_files", [])
|
|
214
223
|
async def _async_command():
|
|
215
224
|
try:
|
|
216
225
|
config = _load_compose_config(config_files, env_files, env_data)
|
|
217
226
|
input = json.loads(input_json) if input_json else {}
|
|
218
|
-
|
|
227
|
+
is_tty = sys.stdin.isatty()
|
|
228
|
+
|
|
229
|
+
manager = ComposeManager(config, daemon=False)
|
|
230
|
+
state = await manager.run_workflow(workflow_id or "__default__", input, output_path, verbose)
|
|
231
|
+
|
|
232
|
+
while state.status == TaskStatus.INTERRUPTED:
|
|
233
|
+
if not auto_resume and not is_tty:
|
|
234
|
+
click.echo("❌ Workflow interrupted but no TTY available. Use --auto-resume to skip.", err=True)
|
|
235
|
+
raise SystemExit(1)
|
|
236
|
+
answer = None if auto_resume else prompt_for_interrupt(state)
|
|
237
|
+
state = await manager.resume_workflow(state.task_id, state.interrupt.job_id, answer)
|
|
238
|
+
|
|
219
239
|
if isinstance(state.output, (dict, list)) or state.error:
|
|
220
240
|
click.echo(json.dumps(
|
|
221
241
|
state.output or state.error,
|
|
@@ -225,8 +245,12 @@ def run_command(
|
|
|
225
245
|
else:
|
|
226
246
|
if state.output is not None:
|
|
227
247
|
click.echo(state.output)
|
|
248
|
+
except click.exceptions.Abort:
|
|
249
|
+
click.echo("\nInterrupt cancelled by user.", err=True)
|
|
250
|
+
raise SystemExit(130)
|
|
228
251
|
except json.JSONDecodeError:
|
|
229
252
|
click.echo("❌ Invalid JSON provided for --input", err=True)
|
|
253
|
+
raise SystemExit(1)
|
|
230
254
|
except Exception as e:
|
|
231
255
|
if verbose:
|
|
232
256
|
import traceback
|
|
@@ -234,13 +258,68 @@ def run_command(
|
|
|
234
258
|
traceback.print_exc()
|
|
235
259
|
else:
|
|
236
260
|
click.echo(f"❌ {e}", err=True)
|
|
261
|
+
raise SystemExit(1)
|
|
237
262
|
asyncio.run(_async_command())
|
|
238
263
|
|
|
264
|
+
@click.command(name="validate")
|
|
265
|
+
@click.option(
|
|
266
|
+
"--env-file", "env_files", multiple=True,
|
|
267
|
+
type=click.Path(exists=True, dir_okay=False, path_type=Path),
|
|
268
|
+
required=False,
|
|
269
|
+
help="Path to a .env file containing environment variables."
|
|
270
|
+
)
|
|
271
|
+
@click.option(
|
|
272
|
+
"--env", "-e", "env_data", multiple=True,
|
|
273
|
+
help="Environment variable in the form KEY=VALUE. Repeatable."
|
|
274
|
+
)
|
|
275
|
+
@click.option("--verbose", "-v", is_flag=True, help="Enable verbose output.")
|
|
276
|
+
@click.pass_context
|
|
277
|
+
def validate_command(
|
|
278
|
+
ctx: click.Context,
|
|
279
|
+
env_files: List[Path],
|
|
280
|
+
env_data: List[str],
|
|
281
|
+
verbose: bool
|
|
282
|
+
) -> None:
|
|
283
|
+
"""Validate the compose configuration without starting any services."""
|
|
284
|
+
from mindor.core.compose import validate_compose_config
|
|
285
|
+
config_files = ctx.obj.get("config_files", [])
|
|
286
|
+
try:
|
|
287
|
+
config = _load_compose_config(config_files, env_files, env_data)
|
|
288
|
+
errors = validate_compose_config(config)
|
|
289
|
+
|
|
290
|
+
if errors:
|
|
291
|
+
click.echo("❌ Configuration has semantic errors:\n", err=True)
|
|
292
|
+
for error in errors:
|
|
293
|
+
click.echo(f" - {error}", err=True)
|
|
294
|
+
raise SystemExit(1)
|
|
295
|
+
else:
|
|
296
|
+
summary_parts = [f"controller: {config.controller.type.value}"]
|
|
297
|
+
if config.components:
|
|
298
|
+
summary_parts.append(f"{len(config.components)} component(s)")
|
|
299
|
+
if config.workflows:
|
|
300
|
+
summary_parts.append(f"{len(config.workflows)} workflow(s)")
|
|
301
|
+
if config.listeners:
|
|
302
|
+
summary_parts.append(f"{len(config.listeners)} listener(s)")
|
|
303
|
+
if config.gateways:
|
|
304
|
+
summary_parts.append(f"{len(config.gateways)} gateway(s)")
|
|
305
|
+
if config.loggers:
|
|
306
|
+
summary_parts.append(f"{len(config.loggers)} logger(s)")
|
|
307
|
+
click.echo(f"✅ Configuration is valid ({', '.join(summary_parts)})")
|
|
308
|
+
except Exception as e:
|
|
309
|
+
if verbose:
|
|
310
|
+
import traceback
|
|
311
|
+
click.echo(f"❌ Error: {e}\n\nTraceback:", err=True)
|
|
312
|
+
traceback.print_exc()
|
|
313
|
+
else:
|
|
314
|
+
click.echo(f"❌ {e}", err=True)
|
|
315
|
+
raise SystemExit(1)
|
|
316
|
+
|
|
239
317
|
compose_command.add_command(up_command)
|
|
240
318
|
compose_command.add_command(down_command)
|
|
241
319
|
compose_command.add_command(start_command)
|
|
242
320
|
compose_command.add_command(stop_command)
|
|
243
321
|
compose_command.add_command(run_command)
|
|
322
|
+
compose_command.add_command(validate_command)
|
|
244
323
|
|
|
245
324
|
if __name__ == "__main__":
|
|
246
325
|
compose_command()
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import TYPE_CHECKING, Any
|
|
3
|
+
import click
|
|
4
|
+
import json
|
|
5
|
+
|
|
6
|
+
if TYPE_CHECKING:
|
|
7
|
+
from mindor.core.controller.base import TaskState
|
|
8
|
+
|
|
9
|
+
def prompt_for_interrupt(state: TaskState) -> Any:
|
|
10
|
+
interrupt = state.interrupt
|
|
11
|
+
|
|
12
|
+
click.echo("", err=True)
|
|
13
|
+
click.echo(f"--- Interrupted (job: {interrupt.job_id}, phase: {interrupt.phase}) ---", err=True)
|
|
14
|
+
|
|
15
|
+
if interrupt.message:
|
|
16
|
+
click.echo(f"\n{interrupt.message}", err=True)
|
|
17
|
+
|
|
18
|
+
if interrupt.metadata:
|
|
19
|
+
click.echo(json.dumps(interrupt.metadata, indent=2, ensure_ascii=False), err=True)
|
|
20
|
+
|
|
21
|
+
click.echo("", err=True)
|
|
22
|
+
raw = click.prompt("Enter response (JSON or text, empty to continue)", default="", show_default=False)
|
|
23
|
+
|
|
24
|
+
if not raw:
|
|
25
|
+
return None
|
|
26
|
+
|
|
27
|
+
try:
|
|
28
|
+
return json.loads(raw)
|
|
29
|
+
except json.JSONDecodeError:
|
|
30
|
+
return raw
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
|
|
2
|
-
from mindor.core.utils.renderers import VariableRenderer, ImageValueRenderer
|
|
2
|
+
from mindor.core.utils.renderers import VariableRenderer, ImageValueRenderer, FileValueRenderer
|
|
3
3
|
from mindor.core.gateway import find_gateway_by_port
|
|
4
4
|
from PIL import Image as PILImage
|
|
5
5
|
|
|
@@ -20,6 +20,9 @@ class ComponentActionContext:
|
|
|
20
20
|
async def render_image(self, value: Any) -> Optional[PILImage.Image]:
|
|
21
21
|
return await ImageValueRenderer().render(await self.render_variable(value))
|
|
22
22
|
|
|
23
|
+
async def render_file(self, value: Any) -> Optional[str]:
|
|
24
|
+
return await FileValueRenderer().render(await self.render_variable(value))
|
|
25
|
+
|
|
23
26
|
def contains_variable_reference(self, key: str, value: Any) -> bool:
|
|
24
27
|
return self.renderer.contains_reference(key, value)
|
|
25
28
|
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
from typing import Optional, Dict, List, Any
|
|
2
|
+
from mindor.dsl.schema.component import AgentComponentConfig
|
|
3
|
+
from mindor.dsl.schema.action import ActionConfig, AgentActionConfig, AgentModelConfig
|
|
4
|
+
from mindor.core.component import ComponentService, ComponentGlobalConfigs, ComponentResolver, create_component
|
|
5
|
+
from mindor.core.workflow import Workflow, WorkflowResolver, create_workflow
|
|
6
|
+
from mindor.core.workflow.tool import WorkflowToolGenerator, WorkflowTool
|
|
7
|
+
from mindor.core.workflow.schema import create_workflow_schemas
|
|
8
|
+
from ..base import ComponentType, register_component
|
|
9
|
+
from ..context import ComponentActionContext
|
|
10
|
+
import asyncio, ulid, json
|
|
11
|
+
|
|
12
|
+
_JSON_SCHEMA_TYPE_MAP = { "int": "integer", "float": "number", "bool": "boolean", "list[dict]": "array" }
|
|
13
|
+
|
|
14
|
+
class AgentAction:
|
|
15
|
+
def __init__(self, action: AgentActionConfig, config: AgentComponentConfig, global_configs: ComponentGlobalConfigs, tools: Dict[str, WorkflowTool], function_schemas: List[Dict[str, Any]]):
|
|
16
|
+
self.action: AgentActionConfig = action
|
|
17
|
+
self.config: AgentComponentConfig = config
|
|
18
|
+
self.global_configs: ComponentGlobalConfigs = global_configs
|
|
19
|
+
self.tools: Dict[str, WorkflowTool] = tools
|
|
20
|
+
self.function_schemas: List[Dict[str, Any]] = function_schemas
|
|
21
|
+
|
|
22
|
+
async def run(self, context: ComponentActionContext) -> Any:
|
|
23
|
+
messages: List[Dict[str, Any]] = await self._build_initial_messages(context)
|
|
24
|
+
|
|
25
|
+
model_config = self.action.model
|
|
26
|
+
model_component = self._create_component(model_config.component)
|
|
27
|
+
if not model_component.started:
|
|
28
|
+
await model_component.start()
|
|
29
|
+
|
|
30
|
+
max_iteration_count = self.action.max_iteration_count or self.config.max_iteration_count
|
|
31
|
+
tools = self.function_schemas if self.function_schemas else None
|
|
32
|
+
streaming = await context.render_variable(self.action.streaming)
|
|
33
|
+
|
|
34
|
+
if streaming:
|
|
35
|
+
async def _stream_message_generator():
|
|
36
|
+
for message in messages:
|
|
37
|
+
yield message
|
|
38
|
+
|
|
39
|
+
for _ in range(max_iteration_count):
|
|
40
|
+
model_input = await self._render_model_input(context, model_config.input, messages, tools)
|
|
41
|
+
response = await model_component.run(model_config.action, ulid.ulid(), model_input)
|
|
42
|
+
|
|
43
|
+
assistant_message = await self._build_assistant_message(response)
|
|
44
|
+
messages.append(assistant_message)
|
|
45
|
+
yield assistant_message
|
|
46
|
+
|
|
47
|
+
tool_calls = self._extract_tool_calls(response)
|
|
48
|
+
if not tool_calls:
|
|
49
|
+
break
|
|
50
|
+
|
|
51
|
+
tool_messages = await asyncio.gather(*[self._execute_tool_call(tc) for tc in tool_calls])
|
|
52
|
+
for tool_message in tool_messages:
|
|
53
|
+
messages.append(tool_message)
|
|
54
|
+
yield tool_message
|
|
55
|
+
|
|
56
|
+
return _stream_message_generator()
|
|
57
|
+
|
|
58
|
+
for _ in range(max_iteration_count):
|
|
59
|
+
model_input = await self._render_model_input(context, model_config.input, messages, tools)
|
|
60
|
+
response = await model_component.run(model_config.action, ulid.ulid(), model_input)
|
|
61
|
+
|
|
62
|
+
assistant_message = await self._build_assistant_message(response)
|
|
63
|
+
messages.append(assistant_message)
|
|
64
|
+
|
|
65
|
+
tool_calls = self._extract_tool_calls(response)
|
|
66
|
+
if not tool_calls:
|
|
67
|
+
break
|
|
68
|
+
|
|
69
|
+
tool_messages = await asyncio.gather(*[self._execute_tool_call(tc) for tc in tool_calls])
|
|
70
|
+
for tool_message in tool_messages:
|
|
71
|
+
messages.append(tool_message)
|
|
72
|
+
|
|
73
|
+
return messages
|
|
74
|
+
|
|
75
|
+
async def _execute_tool_call(self, tool_call: Dict[str, Any]) -> Dict[str, Any]:
|
|
76
|
+
tool_name = tool_call["function"]["name"]
|
|
77
|
+
tool_arguments = tool_call["function"].get("arguments", {})
|
|
78
|
+
if isinstance(tool_arguments, str):
|
|
79
|
+
tool_arguments = json.loads(tool_arguments)
|
|
80
|
+
|
|
81
|
+
if tool_name in self.tools:
|
|
82
|
+
result = await self.tools[tool_name].fn(**tool_arguments)
|
|
83
|
+
content = json.dumps(result) if isinstance(result, (dict, list)) else str(result)
|
|
84
|
+
else:
|
|
85
|
+
content = f"Error: Unknown tool '{tool_name}'"
|
|
86
|
+
|
|
87
|
+
return { "role": "tool", "tool_call_id": tool_call.get("id", ""), "content": content }
|
|
88
|
+
|
|
89
|
+
def _create_component(self, component_id: str) -> ComponentService:
|
|
90
|
+
_, config = ComponentResolver(self.global_configs.components).resolve(component_id)
|
|
91
|
+
return create_component(component_id, config, self.global_configs, daemon=False)
|
|
92
|
+
|
|
93
|
+
async def _render_model_input(self, context: ComponentActionContext, input_mapping: Dict[str, Any], messages: List[Dict[str, Any]], tools: Optional[List[Dict[str, Any]]]) -> Dict[str, Any]:
|
|
94
|
+
context.register_source("messages", messages)
|
|
95
|
+
if tools:
|
|
96
|
+
context.register_source("tools", tools)
|
|
97
|
+
|
|
98
|
+
return await context.render_variable(input_mapping)
|
|
99
|
+
|
|
100
|
+
def _extract_tool_calls(self, response: Any) -> Optional[List[Dict[str, Any]]]:
|
|
101
|
+
if isinstance(response, dict):
|
|
102
|
+
return response.get("tool_calls")
|
|
103
|
+
return None
|
|
104
|
+
|
|
105
|
+
def _extract_content(self, response: Any) -> Any:
|
|
106
|
+
if isinstance(response, dict):
|
|
107
|
+
return response.get("content", response)
|
|
108
|
+
return response
|
|
109
|
+
|
|
110
|
+
async def _build_initial_messages(self, context: ComponentActionContext) -> List[Dict[str, Any]]:
|
|
111
|
+
messages: List[Dict[str, Any]] = []
|
|
112
|
+
|
|
113
|
+
if self.action.system_prompt:
|
|
114
|
+
system = await context.render_variable(self.action.system_prompt)
|
|
115
|
+
messages.append({ "role": "system", "content": system if isinstance(system, str) else json.dumps(system) })
|
|
116
|
+
|
|
117
|
+
user_input = self.action.user_prompt
|
|
118
|
+
user = (await context.render_variable(user_input)) if user_input else context.input
|
|
119
|
+
messages.append({ "role": "user", "content": user if isinstance(user, str) else json.dumps(user) })
|
|
120
|
+
|
|
121
|
+
return messages
|
|
122
|
+
|
|
123
|
+
async def _build_assistant_message(self, response: Any) -> Dict[str, Any]:
|
|
124
|
+
if isinstance(response, dict):
|
|
125
|
+
message: Dict[str, Any] = {"role": "assistant"}
|
|
126
|
+
if "content" in response:
|
|
127
|
+
message["content"] = response["content"]
|
|
128
|
+
if "tool_calls" in response:
|
|
129
|
+
message["tool_calls"] = response["tool_calls"]
|
|
130
|
+
return message
|
|
131
|
+
return { "role": "assistant", "content": str(response) }
|
|
132
|
+
|
|
133
|
+
async def _build_function_schema(name: str, tool: WorkflowTool) -> Dict[str, Any]:
|
|
134
|
+
properties: Dict[str, Any] = {}
|
|
135
|
+
required: List[str] = []
|
|
136
|
+
|
|
137
|
+
for param in tool.parameters:
|
|
138
|
+
prop: Dict[str, Any] = { "type": _JSON_SCHEMA_TYPE_MAP.get(param.type, "string") }
|
|
139
|
+
if param.description:
|
|
140
|
+
prop["description"] = param.description
|
|
141
|
+
if param.default is not None:
|
|
142
|
+
prop["default"] = param.default
|
|
143
|
+
if param.required:
|
|
144
|
+
required.append(param.name)
|
|
145
|
+
properties[param.name] = prop
|
|
146
|
+
|
|
147
|
+
schema: Dict[str, Any] = {
|
|
148
|
+
"type": "function",
|
|
149
|
+
"function": {
|
|
150
|
+
"name": name,
|
|
151
|
+
"parameters": {"type": "object", "properties": properties}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if tool.description:
|
|
156
|
+
schema["function"]["description"] = tool.description
|
|
157
|
+
if required:
|
|
158
|
+
schema["function"]["parameters"]["required"] = required
|
|
159
|
+
|
|
160
|
+
return schema
|
|
161
|
+
|
|
162
|
+
@register_component(ComponentType.AGENT)
|
|
163
|
+
class AgentComponent(ComponentService):
|
|
164
|
+
def __init__(self, id: str, config: AgentComponentConfig, global_configs: ComponentGlobalConfigs, daemon: bool):
|
|
165
|
+
super().__init__(id, config, global_configs, daemon)
|
|
166
|
+
|
|
167
|
+
self.tools: Optional[Dict[str, WorkflowTool]] = None
|
|
168
|
+
self.function_schemas: Optional[List[Dict[str, Any]]] = None
|
|
169
|
+
|
|
170
|
+
async def _start(self) -> None:
|
|
171
|
+
self.tools = await self._generate_tools()
|
|
172
|
+
self.function_schemas = await asyncio.gather(*[ _build_function_schema(name, tool) for name, tool in self.tools.items() ])
|
|
173
|
+
await super()._start()
|
|
174
|
+
|
|
175
|
+
async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
|
|
176
|
+
return await AgentAction(action, self.config, self.global_configs, self.tools, self.function_schemas).run(context)
|
|
177
|
+
|
|
178
|
+
async def _generate_tools(self) -> Dict[str, WorkflowTool]:
|
|
179
|
+
workflow_schemas = create_workflow_schemas(self.global_configs.workflows, self.global_configs.components)
|
|
180
|
+
tools: Dict[str, WorkflowTool] = {}
|
|
181
|
+
|
|
182
|
+
for workflow_id in self.config.tools:
|
|
183
|
+
if workflow_id not in workflow_schemas:
|
|
184
|
+
raise ValueError(f"Workflow not found for tool: {workflow_id}")
|
|
185
|
+
|
|
186
|
+
workflow = workflow_schemas[workflow_id]
|
|
187
|
+
tool = WorkflowToolGenerator().generate(workflow_id, workflow, self._run_workflow)
|
|
188
|
+
tools[workflow.name or workflow_id] = tool
|
|
189
|
+
|
|
190
|
+
return tools
|
|
191
|
+
|
|
192
|
+
async def _run_workflow(self, workflow_id: str, input: Any) -> Any:
|
|
193
|
+
workflow = create_workflow(*WorkflowResolver(self.global_configs.workflows).resolve(workflow_id), self.global_configs)
|
|
194
|
+
return await workflow.run(ulid.ulid(), input)
|
{model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/http_client.py
RENAMED
|
@@ -97,12 +97,12 @@ class HttpClientAction:
|
|
|
97
97
|
response, result = await client.request(url_or_path, method, params, body, headers), None
|
|
98
98
|
|
|
99
99
|
if isinstance(response, HttpEventStreamResource) and context.contains_variable_reference("response[]", self.config.output):
|
|
100
|
-
async def
|
|
100
|
+
async def _stream_output_generator(stream: HttpEventStreamResource):
|
|
101
101
|
async for chunk in stream:
|
|
102
102
|
context.register_source("response[]", self._convert_stream_chunk(chunk))
|
|
103
103
|
yield await context.render_variable(self.config.output, ignore_files=True)
|
|
104
104
|
|
|
105
|
-
return
|
|
105
|
+
return _stream_output_generator(response)
|
|
106
106
|
|
|
107
107
|
context.register_source("response", response)
|
|
108
108
|
|
|
@@ -110,12 +110,12 @@ class HttpClientAction:
|
|
|
110
110
|
result = await self.completion.run(context, client)
|
|
111
111
|
|
|
112
112
|
if isinstance(result, HttpEventStreamResource) and context.contains_variable_reference("result[]", self.config.output):
|
|
113
|
-
async def
|
|
113
|
+
async def _stream_output_generator(stream: HttpEventStreamResource):
|
|
114
114
|
async for chunk in stream:
|
|
115
115
|
context.register_source("result[]", self._convert_stream_chunk(chunk))
|
|
116
116
|
yield await context.render_variable(self.config.output, ignore_files=True)
|
|
117
117
|
|
|
118
|
-
return
|
|
118
|
+
return _stream_output_generator(result)
|
|
119
119
|
|
|
120
120
|
context.register_source("result", result)
|
|
121
121
|
|
{model_compose-0.4.23 → model_compose-0.4.24}/src/mindor/core/component/services/http_server.py
RENAMED
|
@@ -92,12 +92,12 @@ class HttpServerAction:
|
|
|
92
92
|
response, result = await client.request(path or "", method, params, body, headers), None
|
|
93
93
|
|
|
94
94
|
if isinstance(response, HttpEventStreamResource) and context.contains_variable_reference("response[]", self.config.output):
|
|
95
|
-
async def
|
|
95
|
+
async def _stream_output_generator(stream: HttpEventStreamResource):
|
|
96
96
|
async for chunk in stream:
|
|
97
97
|
context.register_source("response[]", self._convert_stream_chunk(chunk))
|
|
98
98
|
yield await context.render_variable(self.config.output, ignore_files=True)
|
|
99
99
|
|
|
100
|
-
return
|
|
100
|
+
return _stream_output_generator(response)
|
|
101
101
|
|
|
102
102
|
context.register_source("response", response)
|
|
103
103
|
|
|
@@ -105,12 +105,12 @@ class HttpServerAction:
|
|
|
105
105
|
result = await self.completion.run(context, client)
|
|
106
106
|
|
|
107
107
|
if isinstance(result, HttpEventStreamResource) and context.contains_variable_reference("result[]", self.config.output):
|
|
108
|
-
async def
|
|
108
|
+
async def _stream_output_generator(stream: HttpEventStreamResource):
|
|
109
109
|
async for chunk in stream:
|
|
110
110
|
context.register_source("result[]", self._convert_stream_chunk(chunk))
|
|
111
111
|
yield await context.render_variable(self.config.output, ignore_files=True)
|
|
112
112
|
|
|
113
|
-
return
|
|
113
|
+
return _stream_output_generator(result)
|
|
114
114
|
|
|
115
115
|
context.register_source("result", result)
|
|
116
116
|
|
|
@@ -51,7 +51,7 @@ class ImageUpscaleTaskAction:
|
|
|
51
51
|
|
|
52
52
|
raise ValueError(f"Unsupported color format: {color_format}")
|
|
53
53
|
|
|
54
|
-
def _downsample_image(self, image: PILImage.Image, method: Literal["lanczos", "bicubic"], scale: int = 4) -> PILImage.Image:
|
|
54
|
+
def _downsample_image(self, image: PILImage.Image, method: Literal[ "lanczos", "bicubic" ], scale: int = 4) -> PILImage.Image:
|
|
55
55
|
downsample_size = (max(1, image.size[0] // scale), max(1, image.size[1] // scale))
|
|
56
56
|
|
|
57
57
|
if method not in _resample_map:
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
|
|
2
|
-
from mindor.dsl.schema.component import ModelComponentConfig,
|
|
2
|
+
from mindor.dsl.schema.component import ModelComponentConfig, ImageUpscaleModelFamily
|
|
3
3
|
from ...base import ModelTaskType, ModelDriver, register_model_task_service
|
|
4
4
|
|
|
5
5
|
@register_model_task_service(ModelTaskType.IMAGE_UPSCALE, ModelDriver.CUSTOM)
|
|
6
6
|
class CustomImageUpscaleTaskService:
|
|
7
7
|
def __new__(cls, id: str, config: ModelComponentConfig, daemon: bool):
|
|
8
|
-
if config.
|
|
8
|
+
if config.family == ImageUpscaleModelFamily.ESRGAN:
|
|
9
9
|
from .esrgan import EsrganImageUpscaleTaskService
|
|
10
10
|
return EsrganImageUpscaleTaskService(id, config, daemon)
|
|
11
11
|
|
|
12
|
-
if config.
|
|
12
|
+
if config.family == ImageUpscaleModelFamily.REAL_ESRGAN:
|
|
13
13
|
from .real_esrgan import RealEsrganImageUpscaleTaskService
|
|
14
14
|
return RealEsrganImageUpscaleTaskService(id, config, daemon)
|
|
15
15
|
|
|
16
|
-
if config.
|
|
16
|
+
if config.family == ImageUpscaleModelFamily.LDSR:
|
|
17
17
|
from .ldsr import LdsrImageUpscaleTaskService
|
|
18
18
|
return LdsrImageUpscaleTaskService(id, config, daemon)
|
|
19
19
|
|
|
20
|
-
if config.
|
|
20
|
+
if config.family == ImageUpscaleModelFamily.SWINIR:
|
|
21
21
|
from .swinir import SwinIRImageUpscaleTaskService
|
|
22
22
|
return SwinIRImageUpscaleTaskService(id, config, daemon)
|
|
23
23
|
|
|
24
|
-
raise ValueError(f"Unknown
|
|
24
|
+
raise ValueError(f"Unknown family: {config.family}")
|
model_compose-0.4.24/src/mindor/core/component/services/model/tasks/text_to_speech/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .custom import *
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import TYPE_CHECKING
|
|
3
|
+
|
|
4
|
+
from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
|
|
5
|
+
from abc import ABC, abstractmethod
|
|
6
|
+
from mindor.dsl.schema.action import TextToSpeechModelActionConfig
|
|
7
|
+
from mindor.core.logger import logging
|
|
8
|
+
from ...base import ModelTaskService, ComponentActionContext
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
import torch
|
|
12
|
+
|
|
13
|
+
class TextToSpeechTaskAction:
|
|
14
|
+
def __init__(self, config: TextToSpeechModelActionConfig, device: Optional[torch.device]):
|
|
15
|
+
self.config: TextToSpeechModelActionConfig = config
|
|
16
|
+
self.device: Optional[torch.device] = device
|
|
17
|
+
|
|
18
|
+
async def run(self, context: ComponentActionContext) -> Any:
|
|
19
|
+
text = await self._prepare_input(context)
|
|
20
|
+
is_single_input = not isinstance(text, list)
|
|
21
|
+
texts: List[str] = [ text ] if is_single_input else text
|
|
22
|
+
results = []
|
|
23
|
+
|
|
24
|
+
for t in texts:
|
|
25
|
+
audio_bytes = await self._generate(t, context)
|
|
26
|
+
results.append(audio_bytes)
|
|
27
|
+
|
|
28
|
+
return results[0] if is_single_input else results
|
|
29
|
+
|
|
30
|
+
async def _prepare_input(self, context: ComponentActionContext) -> Union[str, List[str]]:
|
|
31
|
+
return await context.render_variable(self.config.text)
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
async def _generate(self, text: str, context: ComponentActionContext) -> bytes:
|
|
35
|
+
pass
|
|
36
|
+
|
|
37
|
+
class TextToSpeechTaskService(ModelTaskService):
|
|
38
|
+
pass
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, TypeAlias, Any
|
|
2
|
+
from mindor.dsl.schema.component import ModelComponentConfig, TextToSpeechModelFamily
|
|
3
|
+
from ...base import ModelTaskType, ModelDriver, register_model_task_service
|
|
4
|
+
|
|
5
|
+
@register_model_task_service(ModelTaskType.TEXT_TO_SPEECH, ModelDriver.CUSTOM)
|
|
6
|
+
class CustomTextToSpeechTaskService:
|
|
7
|
+
def __new__(cls, id: str, config: ModelComponentConfig, daemon: bool):
|
|
8
|
+
if config.family == TextToSpeechModelFamily.QWEN:
|
|
9
|
+
from .qwen import QwenTextToSpeechTaskService
|
|
10
|
+
return QwenTextToSpeechTaskService(id, config, daemon)
|
|
11
|
+
|
|
12
|
+
raise ValueError(f"Unknown family: {config.family}")
|