model-compose 0.2.2__tar.gz → 0.2.4__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 (143) hide show
  1. {model_compose-0.2.2/src/model_compose.egg-info → model_compose-0.2.4}/PKG-INFO +1 -1
  2. {model_compose-0.2.2 → model_compose-0.2.4}/pyproject.toml +1 -1
  3. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/http_client.py +1 -4
  4. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/http_client.py +1 -1
  5. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/renderer.py +3 -1
  6. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/streaming.py +20 -1
  7. {model_compose-0.2.2 → model_compose-0.2.4/src/model_compose.egg-info}/PKG-INFO +1 -1
  8. {model_compose-0.2.2 → model_compose-0.2.4}/LICENSE +0 -0
  9. {model_compose-0.2.2 → model_compose-0.2.4}/README.md +0 -0
  10. {model_compose-0.2.2 → model_compose-0.2.4}/setup.cfg +0 -0
  11. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/__init__.py +0 -0
  12. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/cli/__init__.py +0 -0
  13. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/cli/compose.py +0 -0
  14. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/__init__.py +0 -0
  15. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/__init__.py +0 -0
  16. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/base.py +0 -0
  17. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/component.py +0 -0
  18. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/context.py +0 -0
  19. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/__init__.py +0 -0
  20. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/http_server.py +0 -0
  21. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/mcp_client.py +0 -0
  22. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/mcp_server.py +0 -0
  23. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/shell.py +0 -0
  24. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/component/engine/workflow.py +0 -0
  25. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/compose/__init__.py +0 -0
  26. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/compose/compose.py +0 -0
  27. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/compose/manager.py +0 -0
  28. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/__init__.py +0 -0
  29. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/base.py +0 -0
  30. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/controller.py +0 -0
  31. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/engine/__init__.py +0 -0
  32. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/engine/http_server.py +0 -0
  33. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/engine/mcp_server.py +0 -0
  34. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/runner/__init__.py +0 -0
  35. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/runner/client.py +0 -0
  36. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/runner/http_client.py +0 -0
  37. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  38. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/runner/runner.py +0 -0
  39. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/webui/__init__.py +0 -0
  40. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/webui/gradio.py +0 -0
  41. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/controller/webui/webui.py +0 -0
  42. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/__init__.py +0 -0
  43. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/base.py +0 -0
  44. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/engine/__init__.py +0 -0
  45. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/engine/http_tunnel.py +0 -0
  46. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/engine/ssh_tunnel.py +0 -0
  47. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/gateway/gateway.py +0 -0
  48. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/listener/__init__.py +0 -0
  49. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/listener/base.py +0 -0
  50. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/listener/engine/__init__.py +0 -0
  51. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/listener/engine/http_callback.py +0 -0
  52. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/listener/listener.py +0 -0
  53. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/runtime/__init__.py +0 -0
  54. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/runtime/env.py +0 -0
  55. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/services/__init__.py +0 -0
  56. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/services/async_service.py +0 -0
  57. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/__init__.py +0 -0
  58. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/expiring.py +0 -0
  59. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/http_request.py +0 -0
  60. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/http_status.py +0 -0
  61. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/image.py +0 -0
  62. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/mcp_client.py +0 -0
  63. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/ssh_client.py +0 -0
  64. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/time.py +0 -0
  65. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/utils/workqueue.py +0 -0
  66. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/__init__.py +0 -0
  67. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/context.py +0 -0
  68. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/__init__.py +0 -0
  69. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/base.py +0 -0
  70. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  71. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/impl/action.py +0 -0
  72. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  73. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/job/job.py +0 -0
  74. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/schema.py +0 -0
  75. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/core/workflow/workflow.py +0 -0
  76. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/__init__.py +0 -0
  77. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/loader.py +0 -0
  78. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/__init__.py +0 -0
  79. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/__init__.py +0 -0
  80. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/action.py +0 -0
  81. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
  82. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  83. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  84. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  85. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  86. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  87. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  88. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  89. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/__init__.py +0 -0
  90. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/component.py +0 -0
  91. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
  92. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/common.py +0 -0
  93. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  94. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  95. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  96. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  97. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  98. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/types.py +0 -0
  99. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  100. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/compose.py +0 -0
  101. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  102. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/controller.py +0 -0
  103. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  104. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/common.py +0 -0
  105. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
  106. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
  107. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  108. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/controller/impl/webui.py +0 -0
  109. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  110. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  111. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  112. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  113. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/impl/http_tunnel.py +0 -0
  114. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  115. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  116. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/__init__.py +0 -0
  117. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  118. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/impl/action.py +0 -0
  119. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  120. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  121. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  122. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/job/job.py +0 -0
  123. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  124. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  125. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  126. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  127. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  128. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/listener/listener.py +0 -0
  129. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  130. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  131. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  132. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  133. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  134. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  135. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/utils/__init__.py +0 -0
  136. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/utils/annotation.py +0 -0
  137. {model_compose-0.2.2 → model_compose-0.2.4}/src/mindor/dsl/schema/workflow.py +0 -0
  138. {model_compose-0.2.2 → model_compose-0.2.4}/src/model_compose.egg-info/SOURCES.txt +0 -0
  139. {model_compose-0.2.2 → model_compose-0.2.4}/src/model_compose.egg-info/dependency_links.txt +0 -0
  140. {model_compose-0.2.2 → model_compose-0.2.4}/src/model_compose.egg-info/entry_points.txt +0 -0
  141. {model_compose-0.2.2 → model_compose-0.2.4}/src/model_compose.egg-info/requires.txt +0 -0
  142. {model_compose-0.2.2 → model_compose-0.2.4}/src/model_compose.egg-info/top_level.txt +0 -0
  143. {model_compose-0.2.2 → model_compose-0.2.4}/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.2
3
+ Version: 0.2.4
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "model-compose"
3
- version = "0.2.2"
3
+ version = "0.2.4"
4
4
  description = "model-compose: Declarative AI Model and Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
@@ -38,9 +38,6 @@ class HttpClientPollingCompletion(HttpClientCompletion):
38
38
  context.register_source("result", response)
39
39
 
40
40
  status = (await context.render_variable(self.config.status)) if self.config.status else None
41
- if self.config.status and not status:
42
- raise RuntimeError(f"Polling failed: no status found in response.")
43
-
44
41
  if status:
45
42
  if status in self.config.success_when or []:
46
43
  return response
@@ -63,7 +60,7 @@ class HttpClientPollingCompletion(HttpClientCompletion):
63
60
  return await context.render_variable(self.config.endpoint)
64
61
 
65
62
  class HttpClientCallbackCompletion(HttpClientCompletion):
66
- async def run(self, context: ComponentActionContext) -> Any:
63
+ async def run(self, context: ComponentActionContext, client: HttpClient) -> Any:
67
64
  callback_id = await context.render_variable(self.config.wait_for)
68
65
  future: asyncio.Future = asyncio.get_event_loop().create_future()
69
66
  HttpCallbackListener.register_pending_future(callback_id, future)
@@ -134,5 +134,5 @@ class HttpClient:
134
134
 
135
135
  return (HttpStreamResource(response, content_type, filename), content_type)
136
136
 
137
- async def create_stream_with_url(url: str):
137
+ async def create_stream_with_url(url: str) -> HttpStreamResource:
138
138
  return await HttpClient.get_shared_instance().request(url)
@@ -1,5 +1,5 @@
1
1
  from typing import Callable, Dict, List, Optional, Awaitable, Any
2
- from .streaming import StreamResource, Base64StreamResource
2
+ from .streaming import StreamResource, UploadFileStreamResource, Base64StreamResource
3
3
  from .streaming import encode_stream_to_base64, save_stream_to_temporary_file
4
4
  from .http_request import create_upload_file
5
5
  from .http_client import create_stream_with_url
@@ -110,6 +110,8 @@ class VariableRenderer:
110
110
  return []
111
111
 
112
112
  if type == "base64":
113
+ if isinstance(value, UploadFile):
114
+ return await encode_stream_to_base64(UploadFileStreamResource(value))
113
115
  if isinstance(value, StreamResource):
114
116
  return await encode_stream_to_base64(value)
115
117
  return base64.b64encode(value)
@@ -1,7 +1,7 @@
1
1
  from typing import Optional, AsyncIterator
2
2
  from abc import ABC, abstractmethod
3
3
  from tempfile import NamedTemporaryFile
4
- from aiofiles.threadpool.binary import AsyncBufferedReader
4
+ from starlette.datastructures import UploadFile
5
5
  import aiofiles, os, io, base64
6
6
 
7
7
  class StreamResource(ABC):
@@ -49,6 +49,25 @@ class FileStreamResource(StreamResource):
49
49
  break
50
50
  yield chunk
51
51
 
52
+ class UploadFileStreamResource(StreamResource):
53
+ def __init__(self, file: UploadFile):
54
+ super().__init__(file.content_type, file.filename)
55
+
56
+ self.file: UploadFile = file
57
+
58
+ async def __aenter__(self):
59
+ return self
60
+
61
+ async def close(self) -> None:
62
+ await self.file.close()
63
+
64
+ async def _iterate_stream(self) -> AsyncIterator[bytes]:
65
+ while True:
66
+ chunk = await self.file.read(8192)
67
+ if not chunk:
68
+ break
69
+ yield chunk
70
+
52
71
  class Base64StreamResource(StreamResource):
53
72
  def __init__(self, encoded: str, content_type: Optional[str] = None, filename: Optional[str] = None):
54
73
  super().__init__(content_type, filename)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.2.2
3
+ Version: 0.2.4
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
File without changes
File without changes
File without changes