model-compose 0.2.4__tar.gz → 0.2.6__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.4/src/model_compose.egg-info → model_compose-0.2.6}/PKG-INFO +1 -1
  2. {model_compose-0.2.4 → model_compose-0.2.6}/pyproject.toml +1 -1
  3. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/http_client.py +2 -2
  4. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/listener/engine/http_callback.py +2 -2
  5. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/schema.py +28 -10
  6. {model_compose-0.2.4 → model_compose-0.2.6/src/model_compose.egg-info}/PKG-INFO +1 -1
  7. {model_compose-0.2.4 → model_compose-0.2.6}/LICENSE +0 -0
  8. {model_compose-0.2.4 → model_compose-0.2.6}/README.md +0 -0
  9. {model_compose-0.2.4 → model_compose-0.2.6}/setup.cfg +0 -0
  10. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/__init__.py +0 -0
  11. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/cli/__init__.py +0 -0
  12. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/cli/compose.py +0 -0
  13. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/__init__.py +0 -0
  14. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/__init__.py +0 -0
  15. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/base.py +0 -0
  16. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/component.py +0 -0
  17. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/context.py +0 -0
  18. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/__init__.py +0 -0
  19. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/http_server.py +0 -0
  20. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/mcp_client.py +0 -0
  21. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/mcp_server.py +0 -0
  22. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/shell.py +0 -0
  23. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/component/engine/workflow.py +0 -0
  24. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/compose/__init__.py +0 -0
  25. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/compose/compose.py +0 -0
  26. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/compose/manager.py +0 -0
  27. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/__init__.py +0 -0
  28. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/base.py +0 -0
  29. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/controller.py +0 -0
  30. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/engine/__init__.py +0 -0
  31. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/engine/http_server.py +0 -0
  32. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/engine/mcp_server.py +0 -0
  33. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/runner/__init__.py +0 -0
  34. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/runner/client.py +0 -0
  35. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/runner/http_client.py +0 -0
  36. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/runner/mcp_client.py +0 -0
  37. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/runner/runner.py +0 -0
  38. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/webui/__init__.py +0 -0
  39. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/webui/gradio.py +0 -0
  40. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/controller/webui/webui.py +0 -0
  41. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/__init__.py +0 -0
  42. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/base.py +0 -0
  43. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/engine/__init__.py +0 -0
  44. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/engine/http_tunnel.py +0 -0
  45. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/engine/ssh_tunnel.py +0 -0
  46. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/gateway/gateway.py +0 -0
  47. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/listener/__init__.py +0 -0
  48. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/listener/base.py +0 -0
  49. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/listener/engine/__init__.py +0 -0
  50. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/listener/listener.py +0 -0
  51. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/runtime/__init__.py +0 -0
  52. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/runtime/env.py +0 -0
  53. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/services/__init__.py +0 -0
  54. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/services/async_service.py +0 -0
  55. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/__init__.py +0 -0
  56. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/expiring.py +0 -0
  57. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/http_client.py +0 -0
  58. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/http_request.py +0 -0
  59. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/http_status.py +0 -0
  60. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/image.py +0 -0
  61. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/mcp_client.py +0 -0
  62. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/renderer.py +0 -0
  63. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/ssh_client.py +0 -0
  64. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/streaming.py +0 -0
  65. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/time.py +0 -0
  66. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/utils/workqueue.py +0 -0
  67. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/__init__.py +0 -0
  68. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/context.py +0 -0
  69. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/__init__.py +0 -0
  70. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/base.py +0 -0
  71. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/impl/__init__.py +0 -0
  72. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/impl/action.py +0 -0
  73. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/impl/delay.py +0 -0
  74. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/job/job.py +0 -0
  75. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/core/workflow/workflow.py +0 -0
  76. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/__init__.py +0 -0
  77. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/loader.py +0 -0
  78. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/__init__.py +0 -0
  79. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/__init__.py +0 -0
  80. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/action.py +0 -0
  81. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/__init__.py +0 -0
  82. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/common.py +0 -0
  83. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/http_client.py +0 -0
  84. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/http_server.py +0 -0
  85. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/mcp_client.py +0 -0
  86. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/mcp_server.py +0 -0
  87. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/shell.py +0 -0
  88. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/action/impl/workflow.py +0 -0
  89. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/__init__.py +0 -0
  90. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/component.py +0 -0
  91. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/__init__.py +0 -0
  92. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/common.py +0 -0
  93. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/http_client.py +0 -0
  94. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/http_server.py +0 -0
  95. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/mcp_client.py +0 -0
  96. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/mcp_server.py +0 -0
  97. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/shell.py +0 -0
  98. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/types.py +0 -0
  99. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/component/impl/workflow.py +0 -0
  100. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/compose.py +0 -0
  101. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/__init__.py +0 -0
  102. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/controller.py +0 -0
  103. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/__init__.py +0 -0
  104. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/common.py +0 -0
  105. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/http_server.py +0 -0
  106. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/mcp_server.py +0 -0
  107. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/types.py +0 -0
  108. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/controller/impl/webui.py +0 -0
  109. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/__init__.py +0 -0
  110. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/gateway.py +0 -0
  111. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/impl/__init__.py +0 -0
  112. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/impl/common.py +0 -0
  113. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/impl/http_tunnel.py +0 -0
  114. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/impl/ssh_tunnel.py +0 -0
  115. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/gateway/impl/types.py +0 -0
  116. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/__init__.py +0 -0
  117. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/impl/__init__.py +0 -0
  118. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/impl/action.py +0 -0
  119. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/impl/common.py +0 -0
  120. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/impl/delay.py +0 -0
  121. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/impl/types.py +0 -0
  122. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/job/job.py +0 -0
  123. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/__init__.py +0 -0
  124. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/impl/__init__.py +0 -0
  125. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/impl/common.py +0 -0
  126. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/impl/http_callback.py +0 -0
  127. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/impl/types.py +0 -0
  128. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/listener/listener.py +0 -0
  129. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/__init__.py +0 -0
  130. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/impl/__init__.py +0 -0
  131. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/impl/common.py +0 -0
  132. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/impl/docker.py +0 -0
  133. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/impl/types.py +0 -0
  134. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/runtime/runtime.py +0 -0
  135. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/utils/__init__.py +0 -0
  136. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/utils/annotation.py +0 -0
  137. {model_compose-0.2.4 → model_compose-0.2.6}/src/mindor/dsl/schema/workflow.py +0 -0
  138. {model_compose-0.2.4 → model_compose-0.2.6}/src/model_compose.egg-info/SOURCES.txt +0 -0
  139. {model_compose-0.2.4 → model_compose-0.2.6}/src/model_compose.egg-info/dependency_links.txt +0 -0
  140. {model_compose-0.2.4 → model_compose-0.2.6}/src/model_compose.egg-info/entry_points.txt +0 -0
  141. {model_compose-0.2.4 → model_compose-0.2.6}/src/model_compose.egg-info/requires.txt +0 -0
  142. {model_compose-0.2.4 → model_compose-0.2.6}/src/model_compose.egg-info/top_level.txt +0 -0
  143. {model_compose-0.2.4 → model_compose-0.2.6}/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.4
3
+ Version: 0.2.6
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.4"
3
+ version = "0.2.6"
4
4
  description = "model-compose: Declarative AI Model and Workflow Orchestrator"
5
5
  authors = [
6
6
  { name = "Hanyeol Cho", email = "hanyeol.cho@gmail.com" }
@@ -39,9 +39,9 @@ class HttpClientPollingCompletion(HttpClientCompletion):
39
39
 
40
40
  status = (await context.render_variable(self.config.status)) if self.config.status else None
41
41
  if status:
42
- if status in self.config.success_when or []:
42
+ if status in (self.config.success_when or []):
43
43
  return response
44
- if status in self.config.fail_when or []:
44
+ if status in (self.config.fail_when or []):
45
45
  raise RuntimeError(f"Polling failed: status '{status}' matched a failure condition.")
46
46
  else: # use status code
47
47
  if is_status_code_matched(status_code, self.config.success_when or []):
@@ -92,9 +92,9 @@ class HttpCallbackListener(ListenerEngine):
92
92
  status = (await context.render_variable(callback.status)) if callback.status else None
93
93
 
94
94
  if status:
95
- if status in callback.success_when or []:
95
+ if status in (callback.success_when or []):
96
96
  return True
97
- if status in callback.fail_when or []:
97
+ if status in (callback.fail_when or []):
98
98
  return False
99
99
 
100
100
  return True
@@ -3,7 +3,7 @@ from dataclasses import dataclass, asdict
3
3
  from pydantic import BaseModel
4
4
  from mindor.dsl.schema.workflow import WorkflowConfig, WorkflowVariableConfig, WorkflowVariableGroupConfig
5
5
  from mindor.dsl.schema.job import ActionJobConfig
6
- from mindor.dsl.schema.component import ComponentConfig
6
+ from mindor.dsl.schema.component import ComponentConfig, ComponentType
7
7
  import re, json
8
8
 
9
9
  @dataclass
@@ -192,8 +192,11 @@ class WorkflowVariableResolver:
192
192
  return annotations
193
193
 
194
194
  class WorkflowInputVariableResolver(WorkflowVariableResolver):
195
- def resolve(self, workflow: WorkflowConfig, components: Dict[str, ComponentConfig]) -> List[WorkflowVariableConfig]:
196
- variables: List[WorkflowVariable] = []
195
+ def resolve(self, workflow: WorkflowConfig, workflows: Dict[str, WorkflowConfig], components: Dict[str, ComponentConfig]) -> List[WorkflowVariableConfig]:
196
+ return self._to_variable_config_list(self._resolve(workflow, workflows, components))
197
+
198
+ def _resolve(self, workflow: WorkflowConfig, workflows: Dict[str, WorkflowConfig], components: Dict[str, ComponentConfig]) -> List[Union[WorkflowVariable, WorkflowVariableGroup]]:
199
+ variables: List[Union[WorkflowVariable, WorkflowVariableGroup]] = []
197
200
 
198
201
  for job in workflow.jobs.values():
199
202
  if isinstance(job, ActionJobConfig) and (not job.input or job.input == "${input}"):
@@ -203,7 +206,13 @@ class WorkflowInputVariableResolver(WorkflowVariableResolver):
203
206
  if component:
204
207
  action = component.actions[action_id] if action_id in component.actions else None
205
208
  if action:
206
- variables.extend(self._enumerate_input_variables(action, "input", internal=True))
209
+ if component.type == ComponentType.WORKFLOW:
210
+ sub_workflow_id = action.workflow or "__default__"
211
+ sub_workflow = workflows[sub_workflow_id] if sub_workflow_id in workflows else None
212
+ if sub_workflow:
213
+ variables.extend(self._resolve(sub_workflow, workflows, components))
214
+ else:
215
+ variables.extend(self._enumerate_input_variables(action, "input", internal=True))
207
216
  else:
208
217
  action = job.component.actions[action_id] if action_id in job.component.actions else None
209
218
  if action:
@@ -211,10 +220,13 @@ class WorkflowInputVariableResolver(WorkflowVariableResolver):
211
220
  else:
212
221
  variables.extend(self._enumerate_input_variables(job, "input"))
213
222
 
214
- return self._to_variable_config_list(variables)
223
+ return variables
215
224
 
216
225
  class WorkflowOutputVariableResolver(WorkflowVariableResolver):
217
- def resolve(self, workflow: WorkflowConfig, components: Dict[str, ComponentConfig]) -> List[Union[WorkflowVariableConfig, WorkflowVariableGroupConfig]]:
226
+ def resolve(self, workflow: WorkflowConfig, workflows: Dict[str, WorkflowConfig], components: Dict[str, ComponentConfig]) -> List[WorkflowVariableConfig]:
227
+ return self._to_variable_config_list(self._resolve(workflow, workflows, components))
228
+
229
+ def _resolve(self, workflow: WorkflowConfig, workflows: Dict[str, WorkflowConfig], components: Dict[str, ComponentConfig]) -> List[Union[WorkflowVariableConfig, WorkflowVariableGroupConfig]]:
218
230
  variables: List[Union[WorkflowVariable, WorkflowVariableGroup]] = []
219
231
 
220
232
  for job_id, job in workflow.jobs.items():
@@ -234,7 +246,13 @@ class WorkflowOutputVariableResolver(WorkflowVariableResolver):
234
246
  if component:
235
247
  action = component.actions[action_id] if action_id in component.actions else None
236
248
  if action:
237
- job_variables.extend(self._enumerate_output_variables(None, action.output, internal=True))
249
+ if component.type == ComponentType.WORKFLOW:
250
+ sub_workflow_id = action.workflow or "__default__"
251
+ sub_workflow = workflows[sub_workflow_id] if sub_workflow_id in workflows else None
252
+ if sub_workflow:
253
+ variables.extend(self._resolve(sub_workflow, workflows, components))
254
+ else:
255
+ job_variables.extend(self._enumerate_output_variables(None, action.output, internal=True))
238
256
  else:
239
257
  action = job.component.actions[action_id] if action_id in job.component.actions else None
240
258
  if action:
@@ -242,7 +260,7 @@ class WorkflowOutputVariableResolver(WorkflowVariableResolver):
242
260
  else:
243
261
  job_variables.extend(self._enumerate_output_variables(None, job.output))
244
262
 
245
- return self._to_variable_config_list(variables)
263
+ return variables
246
264
 
247
265
  def _is_terminal_job(self, workflow: WorkflowConfig, job_id: str) -> bool:
248
266
  return all(job_id not in job.depends_on for other_id, job in workflow.jobs.items() if other_id != job_id)
@@ -270,8 +288,8 @@ def create_workflow_schema(workflows: Dict[str, WorkflowConfig], components: Dic
270
288
  name=workflow.name,
271
289
  title=workflow.title,
272
290
  description=workflow.description,
273
- input=WorkflowInputVariableResolver().resolve(workflow, components),
274
- output=WorkflowOutputVariableResolver().resolve(workflow, components)
291
+ input=WorkflowInputVariableResolver().resolve(workflow, workflows, components),
292
+ output=WorkflowOutputVariableResolver().resolve(workflow, workflows, components)
275
293
  )
276
294
 
277
295
  return schema
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: model-compose
3
- Version: 0.2.4
3
+ Version: 0.2.6
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