model-compose 0.2.9__tar.gz → 0.2.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. {model_compose-0.2.9/src/model_compose.egg-info → model_compose-0.2.10}/PKG-INFO +3 -1
  2. {model_compose-0.2.9 → model_compose-0.2.10}/pyproject.toml +4 -2
  3. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/__init__.py +1 -0
  4. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/http_server.py +8 -1
  5. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/mcp_client.py +1 -1
  6. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/mcp_server.py +9 -1
  7. model_compose-0.2.10/src/mindor/core/component/services/model/__init__.py +1 -0
  8. model_compose-0.2.10/src/mindor/core/component/services/model/base.py +28 -0
  9. model_compose-0.2.10/src/mindor/core/component/services/model/model.py +37 -0
  10. model_compose-0.2.10/src/mindor/core/component/services/model/tasks/__init__.py +2 -0
  11. model_compose-0.2.10/src/mindor/core/component/services/model/tasks/text_embedding.py +83 -0
  12. model_compose-0.2.10/src/mindor/core/component/services/model/tasks/text_generation.py +63 -0
  13. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/webui/gradio.py +2 -1
  14. model_compose-0.2.10/src/mindor/dsl/schema/action/action.py +13 -0
  15. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/__init__.py +1 -0
  16. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/mcp_server.py +1 -2
  17. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/__init__.py +1 -0
  18. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/impl/__init__.py +3 -0
  19. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/impl/common.py +11 -0
  20. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py +14 -0
  21. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/impl/text_generation.py +15 -0
  22. model_compose-0.2.10/src/mindor/dsl/schema/action/impl/model/model.py +8 -0
  23. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/component.py +1 -0
  24. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/__init__.py +1 -0
  25. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/__init__.py +1 -0
  26. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/impl/__init__.py +3 -0
  27. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/impl/common.py +23 -0
  28. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py +7 -0
  29. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/impl/text_generation.py +7 -0
  30. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/impl/types.py +5 -0
  31. model_compose-0.2.10/src/mindor/dsl/schema/component/impl/model/model.py +11 -0
  32. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/types.py +1 -0
  33. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/workflow.py +1 -1
  34. {model_compose-0.2.9 → model_compose-0.2.10/src/model_compose.egg-info}/PKG-INFO +3 -1
  35. {model_compose-0.2.9 → model_compose-0.2.10}/src/model_compose.egg-info/SOURCES.txt +21 -2
  36. {model_compose-0.2.9 → model_compose-0.2.10}/src/model_compose.egg-info/requires.txt +2 -0
  37. model_compose-0.2.9/src/mindor/dsl/schema/action/action.py +0 -15
  38. {model_compose-0.2.9 → model_compose-0.2.10}/LICENSE +0 -0
  39. {model_compose-0.2.9 → model_compose-0.2.10}/README.md +0 -0
  40. {model_compose-0.2.9 → model_compose-0.2.10}/setup.cfg +0 -0
  41. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/__init__.py +0 -0
  42. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/cli/__init__.py +0 -0
  43. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/cli/compose.py +0 -0
  44. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/__init__.py +0 -0
  45. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/__init__.py +0 -0
  46. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/base.py +0 -0
  47. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/component.py +0 -0
  48. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/context.py +0 -0
  49. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/http_client.py +0 -0
  50. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/shell.py +0 -0
  51. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/component/services/workflow.py +0 -0
  52. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/compose/__init__.py +0 -0
  53. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/compose/compose.py +0 -0
  54. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/compose/manager.py +0 -0
  55. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/__init__.py +0 -0
  56. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/base.py +0 -0
  57. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/controller.py +0 -0
  58. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/runner/__init__.py +0 -0
  59. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/runner/client.py +0 -0
  60. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/runner/http_client.py +0 -0
  61. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  62. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/runner/runner.py +0 -0
  63. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/services/__init__.py +0 -0
  64. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/services/http_server.py +0 -0
  65. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/services/mcp_server.py +0 -0
  66. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/webui/__init__.py +0 -0
  67. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/controller/webui/webui.py +0 -0
  68. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/__init__.py +0 -0
  69. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/base.py +0 -0
  70. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/gateway.py +0 -0
  71. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/services/__init__.py +0 -0
  72. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/services/http_tunnel.py +0 -0
  73. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/gateway/services/ssh_tunnel.py +0 -0
  74. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/listener/__init__.py +0 -0
  75. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/listener/base.py +0 -0
  76. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/listener/listener.py +0 -0
  77. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/listener/services/__init__.py +0 -0
  78. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/listener/services/http_callback.py +0 -0
  79. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/__init__.py +0 -0
  80. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/base.py +0 -0
  81. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/logger.py +0 -0
  82. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/logging.py +0 -0
  83. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/services/__init__.py +0 -0
  84. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/services/console.py +0 -0
  85. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/logger/services/file.py +0 -0
  86. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/runtime/__init__.py +0 -0
  87. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/runtime/env.py +0 -0
  88. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/services/__init__.py +0 -0
  89. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/services/async_service.py +0 -0
  90. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/__init__.py +0 -0
  91. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/expiring.py +0 -0
  92. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/http_client.py +0 -0
  93. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/http_request.py +0 -0
  94. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/http_status.py +0 -0
  95. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/image.py +0 -0
  96. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/mcp_client.py +0 -0
  97. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/renderer.py +0 -0
  98. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/ssh_client.py +0 -0
  99. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/streaming.py +0 -0
  100. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/time.py +0 -0
  101. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/utils/workqueue.py +0 -0
  102. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/__init__.py +0 -0
  103. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/context.py +0 -0
  104. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/__init__.py +0 -0
  105. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/base.py +0 -0
  106. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  107. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/impl/action.py +0 -0
  108. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  109. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/job/job.py +0 -0
  110. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/schema.py +0 -0
  111. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/core/workflow/workflow.py +0 -0
  112. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/__init__.py +0 -0
  113. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/loader.py +0 -0
  114. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/__init__.py +0 -0
  115. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/__init__.py +0 -0
  116. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  117. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  118. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  119. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  120. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  121. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  122. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/__init__.py +0 -0
  123. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/common.py +0 -0
  124. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  125. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  126. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  127. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  128. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  129. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  130. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/compose.py +0 -0
  131. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  132. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/controller.py +0 -0
  133. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  134. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/common.py +0 -0
  135. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
  136. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
  137. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  138. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/controller/impl/webui.py +0 -0
  139. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  140. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  141. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  142. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  143. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/impl/http_tunnel.py +0 -0
  144. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  145. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  146. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/__init__.py +0 -0
  147. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  148. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/impl/action.py +0 -0
  149. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  150. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  151. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  152. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/job/job.py +0 -0
  153. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  154. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  155. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  156. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  157. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  158. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/listener/listener.py +0 -0
  159. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/__init__.py +0 -0
  160. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/impl/__init__.py +0 -0
  161. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/impl/common.py +0 -0
  162. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/impl/console.py +0 -0
  163. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/impl/file.py +0 -0
  164. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/impl/types.py +0 -0
  165. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/logger/logger.py +0 -0
  166. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  167. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  168. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  169. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  170. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  171. {model_compose-0.2.9 → model_compose-0.2.10}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  172. {model_compose-0.2.9/src/mindor/dsl/schema → model_compose-0.2.10/src/mindor/dsl}/utils/__init__.py +0 -0
  173. {model_compose-0.2.9/src/mindor/dsl/schema → model_compose-0.2.10/src/mindor/dsl}/utils/annotation.py +0 -0
  174. {model_compose-0.2.9 → model_compose-0.2.10}/src/model_compose.egg-info/dependency_links.txt +0 -0
  175. {model_compose-0.2.9 → model_compose-0.2.10}/src/model_compose.egg-info/entry_points.txt +0 -0
  176. {model_compose-0.2.9 → model_compose-0.2.10}/src/model_compose.egg-info/top_level.txt +0 -0
  177. {model_compose-0.2.9 → model_compose-0.2.10}/tests/test_cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary: model-compose: Declarative AI Model and Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
@@ -20,6 +20,8 @@ Requires-Dist: pyngrok
20
20
  Requires-Dist: ulid
21
21
  Requires-Dist: gradio
22
22
  Requires-Dist: Pillow
23
+ Requires-Dist: transformers
24
+ Requires-Dist: torch
23
25
  Dynamic: license-file
24
26
 
25
27
  # model-compose: Declarative AI Model and Workflow Orchestrator
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.2.9"
3
+ version = "0.2.10"
4
4
  description = "model-compose: Declarative AI Model and Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
@@ -20,7 +20,9 @@ dependencies = [
20
20
  "pyngrok",
21
21
  "ulid",
22
22
  "gradio",
23
- "Pillow"
23
+ "Pillow",
24
+ "transformers",
25
+ "torch"
24
26
  ]
25
27
 
26
28
  [project.scripts]
@@ -2,5 +2,6 @@ from .http_server import *
2
2
  from .http_client import *
3
3
  from .mcp_server import *
4
4
  from .mcp_client import *
5
+ from .model import *
5
6
  from .workflow import *
6
7
  from .shell import *
@@ -4,6 +4,13 @@ from mindor.dsl.schema.action import ActionConfig, HttpServerActionConfig
4
4
  from ..base import ComponentService, ComponentType, ComponentGlobalConfigs, register_component
5
5
  from ..context import ComponentActionContext
6
6
 
7
+ class HttpServerAction:
8
+ def __init__(self, config: HttpServerActionConfig):
9
+ self.config: HttpServerActionConfig = config
10
+
11
+ async def run(self, context: ComponentActionContext) -> Any:
12
+ pass
13
+
7
14
  @register_component(ComponentType.HTTP_SERVER)
8
15
  class HttpServerComponent(ComponentService):
9
16
  def __init__(self, id: str, config: HttpServerComponentConfig, global_configs: ComponentGlobalConfigs, daemon: bool):
@@ -16,4 +23,4 @@ class HttpServerComponent(ComponentService):
16
23
  pass
17
24
 
18
25
  async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
19
- return {}
26
+ return await HttpServerAction(action).run(context)
@@ -5,7 +5,7 @@ from mindor.core.utils.mcp_client import McpClient, ContentBlock, TextContent, I
5
5
  from ..base import ComponentService, ComponentType, ComponentGlobalConfigs, register_component
6
6
  from ..context import ComponentActionContext
7
7
 
8
- class McpClientAction():
8
+ class McpClientAction:
9
9
  def __init__(self, config: McpClientActionConfig):
10
10
  self.config: McpClientActionConfig = config
11
11
 
@@ -4,6 +4,13 @@ from mindor.dsl.schema.action import ActionConfig, McpServerActionConfig
4
4
  from ..base import ComponentService, ComponentType, ComponentGlobalConfigs, register_component
5
5
  from ..context import ComponentActionContext
6
6
 
7
+ class McpServerAction:
8
+ def __init__(self, config: McpServerActionConfig):
9
+ self.config: McpServerActionConfig = config
10
+
11
+ async def run(self, context: ComponentActionContext) -> Any:
12
+ pass
13
+
7
14
  @register_component(ComponentType.MCP_SERVER)
8
15
  class McpServerComponent(ComponentService):
9
16
  def __init__(self, id: str, config: McpServerComponentConfig, global_configs: ComponentGlobalConfigs, daemon: bool):
@@ -16,4 +23,5 @@ class McpServerComponent(ComponentService):
16
23
  pass
17
24
 
18
25
  async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
19
- return {}
26
+ return await McpServerAction(action).run(context)
27
+
@@ -0,0 +1 @@
1
+ from .model import *
@@ -0,0 +1,28 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Callable, Any
2
+ from abc import ABC, abstractmethod
3
+ from mindor.dsl.schema.component import ModelComponentConfig, ModelTaskType
4
+ from mindor.dsl.schema.action import ModelActionConfig
5
+ from mindor.core.services import AsyncService
6
+ from ...context import ComponentActionContext
7
+
8
+ class ModelTaskService(AsyncService):
9
+ def __init__(self, id: str, config: ModelComponentConfig, daemon: bool):
10
+ super().__init__(daemon)
11
+
12
+ self.id: str = id
13
+ self.config: ModelComponentConfig = config
14
+
15
+ async def run(self, action: ModelActionConfig, context: ComponentActionContext) -> Any:
16
+ return await self._run(action, context)
17
+
18
+ @abstractmethod
19
+ async def _run(self, action: ModelActionConfig, context: ComponentActionContext) -> Any:
20
+ pass
21
+
22
+ def register_model_task_service(type: ModelTaskType):
23
+ def decorator(cls: Type[ModelTaskService]) -> Type[ModelTaskService]:
24
+ ModelTaskServiceRegistry[type] = cls
25
+ return cls
26
+ return decorator
27
+
28
+ ModelTaskServiceRegistry: Dict[ModelTaskType, Type[ModelTaskService]] = {}
@@ -0,0 +1,37 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, AsyncIterator, Any
2
+ from mindor.dsl.schema.component import ModelComponentConfig, ModelTaskType
3
+ from mindor.dsl.schema.action import ActionConfig, ModelActionConfig
4
+ from ...base import ComponentService, ComponentType, ComponentGlobalConfigs, register_component
5
+ from ...context import ComponentActionContext
6
+ from .base import ModelTaskService, ModelTaskServiceRegistry
7
+
8
+ class ModelAction:
9
+ def __init__(self, config: ModelActionConfig):
10
+ self.config: ModelActionConfig = config
11
+
12
+ async def run(self, context: ComponentActionContext, task_service: ModelTaskService) -> Any:
13
+ return await task_service.run(self.config, context)
14
+
15
+ @register_component(ComponentType.MODEL)
16
+ class ModelComponent(ComponentService):
17
+ def __init__(self, id: str, config: ModelComponentConfig, global_configs: ComponentGlobalConfigs, daemon: bool):
18
+ super().__init__(id, config, global_configs, daemon)
19
+
20
+ self.task_service = self._create_task_service(self.config.task)
21
+
22
+ def _create_task_service(self, type: ModelTaskType) -> ModelTaskService:
23
+ try:
24
+ if not ModelTaskServiceRegistry:
25
+ from . import tasks
26
+ return ModelTaskServiceRegistry[type](self.id, self.config, self.daemon)
27
+ except KeyError:
28
+ raise ValueError(f"Unsupported component type: {type}")
29
+
30
+ async def _serve(self) -> None:
31
+ await self.task_service.start()
32
+
33
+ async def _shutdown(self) -> None:
34
+ await self.task_service.stop()
35
+
36
+ async def _run(self, action: ActionConfig, context: ComponentActionContext) -> Any:
37
+ return await ModelAction(action).run(context, self.task_service)
@@ -0,0 +1,2 @@
1
+ from .text_generation import *
2
+ from .text_embedding import *
@@ -0,0 +1,83 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from mindor.dsl.schema.component import ModelComponentConfig
3
+ from mindor.dsl.schema.action import ModelActionConfig, TextEmbeddingModelActionConfig
4
+ from ..base import ModelTaskService, ModelTaskType, register_model_task_service
5
+ from ..base import ComponentActionContext
6
+ from transformers import AutoModel, AutoTokenizer, PreTrainedModel, PreTrainedTokenizer
7
+ from transformers.modeling_outputs import BaseModelOutput
8
+ from torch import Tensor
9
+ import torch
10
+
11
+ class TextEmbeddingTaskAction:
12
+ def __init__(self, config: TextEmbeddingModelActionConfig, model: PreTrainedModel, tokenizer: PreTrainedTokenizer):
13
+ self.config: TextEmbeddingModelActionConfig = config
14
+ self.model: PreTrainedModel = model
15
+ self.tokenizer: PreTrainedTokenizer = tokenizer
16
+
17
+ async def run(self, context: ComponentActionContext) -> Any:
18
+ text = await context.render_variable(self.config.text)
19
+
20
+ # Model parameters
21
+ max_length = await context.render_variable(self.config.params.max_length)
22
+ pooling = await context.render_variable(self.config.params.pooling)
23
+ normalize = await context.render_variable(self.config.params.normalize)
24
+
25
+ # Tokenizing
26
+ inputs = self.tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=max_length).to(self.model.device)
27
+ attention_mask: Tensor = inputs.get("attention_mask", None)
28
+
29
+ # Forward pass through the model
30
+ with torch.no_grad():
31
+ outputs: BaseModelOutput = self.model(**inputs)
32
+ last_hidden_state = outputs.last_hidden_state # (batch_size, seq_len, hidden_size)
33
+
34
+ # Apply pooling strategy (mean, cls, max)
35
+ embedding = self._pool_hidden_state(last_hidden_state, attention_mask, pooling)
36
+
37
+ if normalize:
38
+ embedding = torch.nn.functional.normalize(embedding, p=2, dim=1)
39
+
40
+ result = embedding.squeeze().tolist()
41
+ context.register_source("result", result)
42
+
43
+ return (await context.render_variable(self.config.output, ignore_files=True)) if self.config.output else result
44
+
45
+ def _pool_hidden_state(self, last_hidden_state: Tensor, attention_mask: Optional[Tensor], pooling: str) -> Tensor:
46
+ if pooling == "mean":
47
+ if attention_mask is not None:
48
+ mask = attention_mask.unsqueeze(-1).expand(last_hidden_state.size())
49
+ summed = torch.sum(last_hidden_state * mask, dim=1)
50
+ count = torch.clamp(mask.sum(dim=1), min=1e-9)
51
+ return summed / count
52
+ else:
53
+ return torch.mean(last_hidden_state, dim=1)
54
+
55
+ if pooling == "cls":
56
+ return last_hidden_state[:, 0]
57
+
58
+ if pooling == "max":
59
+ if attention_mask is not None:
60
+ mask = attention_mask.unsqueeze(-1).expand(last_hidden_state.size())
61
+ last_hidden_state = last_hidden_state.masked_fill(mask == 0, -1e9)
62
+ return torch.max(last_hidden_state, dim=1).values
63
+
64
+ raise ValueError(f"Unsupported pooling type: {pooling}")
65
+
66
+ @register_model_task_service(ModelTaskType.TEXT_EMBEDDING)
67
+ class TextEmbeddingTaskService(ModelTaskService):
68
+ def __init__(self, id: str, config: ModelComponentConfig, daemon: bool):
69
+ super().__init__(id, config, daemon)
70
+
71
+ self.model: Optional[PreTrainedModel] = None
72
+ self.tokenizer: Optional[PreTrainedTokenizer] = None
73
+
74
+ async def _serve(self) -> None:
75
+ self.model = AutoModel.from_pretrained(self.config.model).to(torch.device(self.config.device))
76
+ self.tokenizer = AutoTokenizer.from_pretrained(self.config.model)
77
+
78
+ async def _shutdown(self) -> None:
79
+ self.model = None
80
+ self.tokenizer = None
81
+
82
+ async def _run(self, action: ModelActionConfig, context: ComponentActionContext) -> Any:
83
+ return await TextEmbeddingTaskAction(action, self.model, self.tokenizer).run(context)
@@ -0,0 +1,63 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from mindor.dsl.schema.component import ModelComponentConfig
3
+ from mindor.dsl.schema.action import ModelActionConfig, TextGenerationModelActionConfig
4
+ from ..base import ModelTaskService, ModelTaskType, register_model_task_service
5
+ from ..base import ComponentActionContext
6
+ from transformers import AutoModelForCausalLM, AutoTokenizer, PreTrainedModel, PreTrainedTokenizer, GenerationMixin
7
+ import torch
8
+
9
+ class TextGenerationTaskAction:
10
+ def __init__(self, config: TextGenerationModelActionConfig, model: Union[PreTrainedModel, GenerationMixin], tokenizer: PreTrainedTokenizer):
11
+ self.config: TextGenerationModelActionConfig = config
12
+ self.model: Union[PreTrainedModel, GenerationMixin] = model
13
+ self.tokenizer: PreTrainedTokenizer = tokenizer
14
+
15
+ async def run(self, context: ComponentActionContext) -> Any:
16
+ prompt: str = await context.render_variable(self.config.prompt)
17
+
18
+ # Model parameters
19
+ max_length = await context.render_variable(self.config.params.max_length)
20
+ num_return_sequences = await context.render_variable(self.config.params.num_return_sequences)
21
+ temperature = await context.render_variable(self.config.params.temperature)
22
+ top_k = await context.render_variable(self.config.params.top_k)
23
+ top_p = await context.render_variable(self.config.params.top_p)
24
+
25
+ # Tokenizing
26
+ inputs = self.tokenizer(prompt, return_tensors="pt").to(self.model.device)
27
+
28
+ # Text generation
29
+ with torch.no_grad():
30
+ outputs = self.model.generate(
31
+ **inputs,
32
+ max_length=max_length,
33
+ num_return_sequences=num_return_sequences,
34
+ temperature=temperature,
35
+ top_k=top_k,
36
+ top_p=top_p,
37
+ do_sample=True
38
+ )
39
+
40
+ # Decoding output
41
+ result = self.tokenizer.batch_decode(outputs, skip_special_tokens=True)
42
+ context.register_source("result", result)
43
+
44
+ return (await context.render_variable(self.config.output, ignore_files=True)) if self.config.output else result
45
+
46
+ @register_model_task_service(ModelTaskType.TEXT_GENERATION)
47
+ class TextGenerationTaskService(ModelTaskService):
48
+ def __init__(self, id: str, config: ModelComponentConfig, daemon: bool):
49
+ super().__init__(id, config, daemon)
50
+
51
+ self.model: Optional[Union[PreTrainedModel, GenerationMixin]] = None
52
+ self.tokenizer: Optional[PreTrainedTokenizer] = None
53
+
54
+ async def _serve(self) -> None:
55
+ self.model = AutoModelForCausalLM.from_pretrained(self.config.model).to(torch.device(self.config.device))
56
+ self.tokenizer = AutoTokenizer.from_pretrained(self.config.model)
57
+
58
+ async def _shutdown(self) -> None:
59
+ self.model = None
60
+ self.tokenizer = None
61
+
62
+ async def _run(self, action: ModelActionConfig, context: ComponentActionContext) -> Any:
63
+ return await TextGenerationTaskAction(action, self.model, self.tokenizer).run(context)
@@ -49,7 +49,8 @@ class GradioWebUIBuilder:
49
49
  async def _run_workflow(*args):
50
50
  input = await self._build_input_value(args, workflow.input)
51
51
  output = await runner(input)
52
- output = await self._flatten_output_value(output, workflow.output)
52
+ if workflow.output:
53
+ output = await self._flatten_output_value(output, workflow.output)
53
54
  return output[0] if len(output) == 1 else output
54
55
 
55
56
  run_button.click(
@@ -0,0 +1,13 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from pydantic import BaseModel, Field
3
+ from .impl import *
4
+
5
+ ActionConfig = Union[
6
+ HttpServerActionConfig,
7
+ HttpClientActionConfig,
8
+ McpServerActionConfig,
9
+ McpClientActionConfig,
10
+ ModelActionConfig,
11
+ WorkflowActionConfig,
12
+ ShellActionConfig
13
+ ]
@@ -3,5 +3,6 @@ from .http_server import *
3
3
  from .http_client import *
4
4
  from .mcp_server import *
5
5
  from .mcp_client import *
6
+ from .model import *
6
7
  from .workflow import *
7
8
  from .shell import *
@@ -4,5 +4,4 @@ from pydantic import model_validator
4
4
  from .common import CommonActionConfig
5
5
 
6
6
  class McpServerActionConfig(CommonActionConfig):
7
- def __init__(self):
8
- super().__init__()
7
+ pass
@@ -0,0 +1 @@
1
+ from .model import *
@@ -0,0 +1,3 @@
1
+ from .common import *
2
+ from .text_generation import *
3
+ from .text_embedding import *
@@ -0,0 +1,11 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from enum import Enum
3
+ from pydantic import BaseModel, Field
4
+ from ...common import CommonActionConfig
5
+
6
+ class ModelTaskMode(str, Enum):
7
+ INFERENCE = "inference"
8
+ TRAINING = "training"
9
+
10
+ class CommonModelActionConfig(CommonActionConfig):
11
+ mode: ModelTaskMode = Field(default=ModelTaskMode.INFERENCE, description="")
@@ -0,0 +1,14 @@
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 CommonModelActionConfig
5
+
6
+ class TextEmbeddingParamsConfig(BaseModel):
7
+ pooling: Literal[ "mean", "cls", "max" ] = Field(default="mean", description="Pooling strategy used to aggregate token embeddings.")
8
+ normalize: bool = Field(default=True, description="Whether to apply L2 normalization to the output embeddings.")
9
+ batch_size: int = Field(default=1, description="Number of input texts to process in a single batch.")
10
+ max_length: int = Field(default=512, description="Maximum number of tokens per input text.")
11
+
12
+ class TextEmbeddingModelActionConfig(CommonModelActionConfig):
13
+ text: str = Field(..., description="Input text to be embedded.")
14
+ params: TextEmbeddingParamsConfig = Field(default_factory=TextEmbeddingParamsConfig, description="Configuration parameters for embedding generation.")
@@ -0,0 +1,15 @@
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 CommonModelActionConfig
5
+
6
+ class TextGenerationParamsConfig(BaseModel):
7
+ max_length: int = Field(default=128, description="")
8
+ num_return_sequences: int = Field(default=1, description="")
9
+ temperature: float = Field(default=1.0, description="")
10
+ top_k: int = Field(default=50, description="")
11
+ top_p: float = Field(default=1.0, description="")
12
+
13
+ class TextGenerationModelActionConfig(CommonModelActionConfig):
14
+ prompt: str = Field(..., description="")
15
+ params: TextGenerationParamsConfig = Field(default_factory=TextGenerationParamsConfig, description="Text generation configuration parameters.")
@@ -0,0 +1,8 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from pydantic import BaseModel, Field
3
+ from .impl import *
4
+
5
+ ModelActionConfig = Union[
6
+ TextGenerationModelActionConfig,
7
+ TextEmbeddingModelActionConfig,
8
+ ]
@@ -8,6 +8,7 @@ ComponentConfig = Annotated[
8
8
  HttpClientComponentConfig,
9
9
  McpServerComponentConfig,
10
10
  McpClientComponentConfig,
11
+ ModelComponentConfig,
11
12
  WorkflowComponentConfig,
12
13
  ShellComponentConfig
13
14
  ],
@@ -3,5 +3,6 @@ from .http_server import *
3
3
  from .http_client import *
4
4
  from .mcp_server import *
5
5
  from .mcp_client import *
6
+ from .model import *
6
7
  from .workflow import *
7
8
  from .shell import *
@@ -0,0 +1,3 @@
1
+ from .common import *
2
+ from .text_generation import *
3
+ from .text_embedding import *
@@ -0,0 +1,23 @@
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 mindor.dsl.schema.action import ModelActionConfig
5
+ from mindor.dsl.utils.annotation import get_model_union_keys
6
+ from ...common import CommonComponentConfig, ComponentType
7
+ from .types import ModelTaskType
8
+
9
+ class CommonModelComponentConfig(CommonComponentConfig):
10
+ type: Literal[ComponentType.MODEL]
11
+ task: ModelTaskType = Field(..., description="")
12
+ model: str = Field(..., description="")
13
+ device: str = Field(default="cpu", description="Computation device to use.")
14
+ cache_dir: Optional[str] = Field(default=None, description="")
15
+ actions: Dict[str, ModelActionConfig] = Field(default_factory=dict)
16
+
17
+ @model_validator(mode="before")
18
+ def inflate_single_action(cls, values: Dict[str, Any]):
19
+ if "actions" not in values:
20
+ action_keys = set(get_model_union_keys(ModelActionConfig))
21
+ if any(k in values for k in action_keys):
22
+ values["actions"] = { "__default__": { k: values.pop(k) for k in action_keys if k in values } }
23
+ return values
@@ -0,0 +1,7 @@
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 CommonModelComponentConfig, ModelTaskType
5
+
6
+ class TextEmbeddingModelComponentConfig(CommonModelComponentConfig):
7
+ task: Literal[ModelTaskType.TEXT_EMBEDDING]
@@ -0,0 +1,7 @@
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 CommonModelComponentConfig, ModelTaskType
5
+
6
+ class TextGenerationModelComponentConfig(CommonModelComponentConfig):
7
+ task: Literal[ModelTaskType.TEXT_GENERATION]
@@ -0,0 +1,5 @@
1
+ from enum import Enum
2
+
3
+ class ModelTaskType(str, Enum):
4
+ TEXT_GENERATION = "text-generation"
5
+ TEXT_EMBEDDING = "text-embedding"
@@ -0,0 +1,11 @@
1
+ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
+ from pydantic import BaseModel, Field
3
+ from .impl import *
4
+
5
+ ModelComponentConfig = Annotated[
6
+ Union[
7
+ TextGenerationModelComponentConfig,
8
+ TextEmbeddingModelComponentConfig,
9
+ ],
10
+ Field(discriminator="task")
11
+ ]
@@ -5,5 +5,6 @@ class ComponentType(str, Enum):
5
5
  HTTP_CLIENT = "http-client"
6
6
  MCP_SERVER = "mcp-server"
7
7
  MCP_CLIENT = "mcp-client"
8
+ MODEL = "model"
8
9
  WORKFLOW = "workflow"
9
10
  SHELL = "shell"
@@ -2,8 +2,8 @@ from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annot
2
2
  from enum import Enum
3
3
  from pydantic import BaseModel, Field
4
4
  from pydantic import model_validator, field_validator
5
+ from mindor.dsl.utils.annotation import get_model_union_keys
5
6
  from .job import JobConfig, JobType
6
- from .utils.annotation import get_model_union_keys
7
7
 
8
8
  class WorkflowVariableType(str, Enum):
9
9
  # Primitive data types
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary: model-compose: Declarative AI Model and Workflow Orchestrator
5
5
  Author-email: Hanyeol Cho <hanyeol.cho@gmail.com>
6
6
  License-Expression: MIT
@@ -20,6 +20,8 @@ Requires-Dist: pyngrok
20
20
  Requires-Dist: ulid
21
21
  Requires-Dist: gradio
22
22
  Requires-Dist: Pillow
23
+ Requires-Dist: transformers
24
+ Requires-Dist: torch
23
25
  Dynamic: license-file
24
26
 
25
27
  # model-compose: Declarative AI Model and Workflow Orchestrator
@@ -16,6 +16,12 @@ src/mindor/core/component/services/mcp_client.py
16
16
  src/mindor/core/component/services/mcp_server.py
17
17
  src/mindor/core/component/services/shell.py
18
18
  src/mindor/core/component/services/workflow.py
19
+ src/mindor/core/component/services/model/__init__.py
20
+ src/mindor/core/component/services/model/base.py
21
+ src/mindor/core/component/services/model/model.py
22
+ src/mindor/core/component/services/model/tasks/__init__.py
23
+ src/mindor/core/component/services/model/tasks/text_embedding.py
24
+ src/mindor/core/component/services/model/tasks/text_generation.py
19
25
  src/mindor/core/compose/__init__.py
20
26
  src/mindor/core/compose/compose.py
21
27
  src/mindor/core/compose/manager.py
@@ -92,6 +98,12 @@ src/mindor/dsl/schema/action/impl/mcp_client.py
92
98
  src/mindor/dsl/schema/action/impl/mcp_server.py
93
99
  src/mindor/dsl/schema/action/impl/shell.py
94
100
  src/mindor/dsl/schema/action/impl/workflow.py
101
+ src/mindor/dsl/schema/action/impl/model/__init__.py
102
+ src/mindor/dsl/schema/action/impl/model/model.py
103
+ src/mindor/dsl/schema/action/impl/model/impl/__init__.py
104
+ src/mindor/dsl/schema/action/impl/model/impl/common.py
105
+ src/mindor/dsl/schema/action/impl/model/impl/text_embedding.py
106
+ src/mindor/dsl/schema/action/impl/model/impl/text_generation.py
95
107
  src/mindor/dsl/schema/component/__init__.py
96
108
  src/mindor/dsl/schema/component/component.py
97
109
  src/mindor/dsl/schema/component/impl/__init__.py
@@ -103,6 +115,13 @@ src/mindor/dsl/schema/component/impl/mcp_server.py
103
115
  src/mindor/dsl/schema/component/impl/shell.py
104
116
  src/mindor/dsl/schema/component/impl/types.py
105
117
  src/mindor/dsl/schema/component/impl/workflow.py
118
+ src/mindor/dsl/schema/component/impl/model/__init__.py
119
+ src/mindor/dsl/schema/component/impl/model/model.py
120
+ src/mindor/dsl/schema/component/impl/model/impl/__init__.py
121
+ src/mindor/dsl/schema/component/impl/model/impl/common.py
122
+ src/mindor/dsl/schema/component/impl/model/impl/text_embedding.py
123
+ src/mindor/dsl/schema/component/impl/model/impl/text_generation.py
124
+ src/mindor/dsl/schema/component/impl/model/impl/types.py
106
125
  src/mindor/dsl/schema/controller/__init__.py
107
126
  src/mindor/dsl/schema/controller/controller.py
108
127
  src/mindor/dsl/schema/controller/impl/__init__.py
@@ -144,8 +163,8 @@ src/mindor/dsl/schema/runtime/impl/__init__.py
144
163
  src/mindor/dsl/schema/runtime/impl/common.py
145
164
  src/mindor/dsl/schema/runtime/impl/docker.py
146
165
  src/mindor/dsl/schema/runtime/impl/types.py
147
- src/mindor/dsl/schema/utils/__init__.py
148
- src/mindor/dsl/schema/utils/annotation.py
166
+ src/mindor/dsl/utils/__init__.py
167
+ src/mindor/dsl/utils/annotation.py
149
168
  src/model_compose.egg-info/PKG-INFO
150
169
  src/model_compose.egg-info/SOURCES.txt
151
170
  src/model_compose.egg-info/dependency_links.txt
@@ -11,3 +11,5 @@ pyngrok
11
11
  ulid
12
12
  gradio
13
13
  Pillow
14
+ transformers
15
+ torch
@@ -1,15 +0,0 @@
1
- from typing import Type, Union, Literal, Optional, Dict, List, Tuple, Set, Annotated, Any
2
- from pydantic import BaseModel, Field
3
- from .impl import *
4
-
5
- ActionConfig = Annotated[
6
- Union[
7
- HttpServerActionConfig,
8
- HttpClientActionConfig,
9
- McpServerActionConfig,
10
- McpClientActionConfig,
11
- WorkflowActionConfig,
12
- ShellActionConfig
13
- ],
14
- Field(discriminator="type")
15
- ]
File without changes
File without changes
File without changes