codemie-sdk-python 0.1.515__tar.gz → 0.1.516__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 (64) hide show
  1. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/workflow.py +70 -0
  4. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/workflow.py +41 -0
  5. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/README.md +0 -0
  6. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/__init__.py +0 -0
  7. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/auth/__init__.py +0 -0
  8. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/auth/credentials.py +0 -0
  9. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/client/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/client/client.py +0 -0
  11. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/exceptions.py +0 -0
  12. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/activity_event.py +0 -0
  14. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/admin.py +0 -0
  15. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/analytics.py +0 -0
  16. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/assistant.py +0 -0
  17. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/categories.py +0 -0
  18. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/common.py +0 -0
  19. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/conversation.py +0 -0
  20. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/datasource.py +0 -0
  21. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/errors.py +0 -0
  22. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/file_operation.py +0 -0
  23. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/guardrails.py +0 -0
  24. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/integration.py +0 -0
  25. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/llm.py +0 -0
  26. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/mermaid.py +0 -0
  27. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/project.py +0 -0
  28. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/skill.py +0 -0
  29. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/task.py +0 -0
  30. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/user.py +0 -0
  31. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  32. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  33. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  34. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/vendor_runtime.py +0 -0
  35. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  36. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  37. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/workflow_state.py +0 -0
  38. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  39. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/activity_event.py +0 -0
  40. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/admin.py +0 -0
  41. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/analytics.py +0 -0
  42. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/assistant.py +0 -0
  43. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/categories.py +0 -0
  44. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  45. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/conversation.py +0 -0
  46. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/datasource.py +0 -0
  47. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/files.py +0 -0
  48. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/integration.py +0 -0
  49. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/llm.py +0 -0
  50. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/mermaid.py +0 -0
  51. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/project.py +0 -0
  52. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/skill.py +0 -0
  53. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/task.py +0 -0
  54. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/user.py +0 -0
  55. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  56. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  57. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  58. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/vendor_runtime.py +0 -0
  59. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  60. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/webhook.py +0 -0
  61. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/workflow_execution.py +0 -0
  62. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  63. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/utils/__init__.py +0 -0
  64. {codemie_sdk_python-0.1.515 → codemie_sdk_python-0.1.516}/src/codemie_sdk/utils/http.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemie-sdk-python
3
- Version: 0.1.515
3
+ Version: 0.1.516
4
4
  Summary: CodeMie SDK for Python
5
5
  Author: Vadym Vlasenko
6
6
  Author-email: vadym_vlasenko@epam.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemie-sdk-python"
3
- version = "0.1.515"
3
+ version = "0.1.516"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -100,3 +100,73 @@ class WorkflowEvaluationRequest(BaseModel):
100
100
  max_concurrency: int = Field(
101
101
  default=1, ge=1, le=5, description="Maximum number of concurrent evaluations"
102
102
  )
103
+
104
+
105
+ class WorkflowGeneratorRequest(BaseModel):
106
+ """Request model for generating a workflow from a natural language description.
107
+
108
+ Maps to the backend's ``WorkflowGeneratorRequest``
109
+ (``src/codemie/rest_api/models/workflow_generator.py``), where the wire field
110
+ for the natural language description is ``text`` (not ``nl_query`` — that name
111
+ is only used internally as the service-layer parameter).
112
+ """
113
+
114
+ text: str = Field(..., min_length=1)
115
+ llm_model: str | None = None
116
+ persist: bool = False
117
+ guardrail_ids: list[str] | None = None
118
+
119
+
120
+ class WorkflowGeneratedState(BaseModel):
121
+ """A single generated state (node) inside a generated workflow config."""
122
+
123
+ model_config = ConfigDict(extra="allow")
124
+
125
+ id: str | None = None
126
+ assistant_id: str | None = None
127
+ tool_id: str | None = None
128
+ custom_node_id: str | None = None
129
+ task: str | None = None
130
+ next: dict | None = None
131
+
132
+
133
+ class WorkflowGeneratedAssistant(BaseModel):
134
+ """A single generated assistant reference inside a generated workflow config."""
135
+
136
+ model_config = ConfigDict(extra="allow")
137
+
138
+ id: str | None = None
139
+ assistant_id: str | None = None
140
+
141
+
142
+ class WorkflowGeneratorConfig(BaseModel):
143
+ """The generated workflow configuration returned by the generator.
144
+
145
+ Mirrors the backend's ``CreateWorkflowRequest`` shape
146
+ (``src/codemie/core/workflow_models/workflow_models.py``). Uses
147
+ ``extra="allow"`` since the backend model carries additional fields (e.g.
148
+ ``guardrail_assignments``) that are not required for test assertions.
149
+ """
150
+
151
+ model_config = ConfigDict(populate_by_name=True, extra="allow")
152
+
153
+ name: str
154
+ description: str | None = None
155
+ project: str | None = None
156
+ mode: WorkflowMode = WorkflowMode.SEQUENTIAL
157
+ yaml_config: str | None = None
158
+ shared: bool = True
159
+ assistants: list[WorkflowGeneratedAssistant] = Field(default_factory=list)
160
+ tools: list[dict] = Field(default_factory=list)
161
+ states: list[WorkflowGeneratedState] = Field(default_factory=list)
162
+ supervisor_prompt: str | None = ""
163
+ meta_config: str | None = None
164
+
165
+
166
+ class WorkflowGeneratorResponse(BaseModel):
167
+ """Response model for ``POST /v1/workflows/generate``."""
168
+
169
+ model_config = ConfigDict(populate_by_name=True)
170
+
171
+ workflow_config: WorkflowGeneratorConfig
172
+ workflow_id: str | None = None
@@ -11,6 +11,8 @@ from ..models.workflow import (
11
11
  WorkflowCreateRequest,
12
12
  WorkflowUpdateRequest,
13
13
  WorkflowEvaluationRequest,
14
+ WorkflowGeneratorRequest,
15
+ WorkflowGeneratorResponse,
14
16
  Workflow,
15
17
  )
16
18
  from ..utils import ApiRequestHandler, TokenSource
@@ -56,6 +58,45 @@ class WorkflowService:
56
58
  """
57
59
  return self._api.post("/v1/workflows", dict, json_data=request.model_dump())
58
60
 
61
+ def generate(
62
+ self,
63
+ text: str,
64
+ llm_model: str | None = None,
65
+ persist: bool = False,
66
+ guardrail_ids: list[str] | None = None,
67
+ ) -> WorkflowGeneratorResponse:
68
+ """Generate a workflow configuration from a natural language description.
69
+
70
+ Args:
71
+ text: Natural language description of the desired workflow.
72
+ llm_model: Optional LLM model to use for generation. Falls back to
73
+ the platform default (``WORKFLOW_GENERATOR_LLM_MODEL`` or the
74
+ global default LLM) when not provided.
75
+ persist: When True, the generated workflow is validated
76
+ (``WorkflowExecutor.validate_workflow``) and saved on the
77
+ backend, and the response includes ``workflow_id``. When False
78
+ (default), only the in-memory ``workflow_config`` is returned
79
+ for client-side review/edit before an explicit
80
+ ``create_workflow`` call.
81
+ guardrail_ids: Optional guardrail IDs to attach to the generated
82
+ workflow's guardrail assignments.
83
+
84
+ Returns:
85
+ WorkflowGeneratorResponse containing the generated ``workflow_config``
86
+ and, when ``persist=True``, the created ``workflow_id``.
87
+ """
88
+ request = WorkflowGeneratorRequest(
89
+ text=text,
90
+ llm_model=llm_model,
91
+ persist=persist,
92
+ guardrail_ids=guardrail_ids,
93
+ )
94
+ return self._api.post(
95
+ "/v1/workflows/generate",
96
+ WorkflowGeneratorResponse,
97
+ json_data=request.model_dump(exclude_none=True),
98
+ )
99
+
59
100
  def update(self, workflow_id: str, request: WorkflowUpdateRequest) -> dict:
60
101
  """Update an existing workflow.
61
102