codemie-sdk-python 0.1.280__tar.gz → 0.1.282__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 (49) hide show
  1. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/assistant.py +87 -0
  4. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/assistant.py +14 -7
  5. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/README.md +0 -0
  6. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/__init__.py +0 -0
  7. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/auth/__init__.py +0 -0
  8. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/auth/credentials.py +0 -0
  9. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/client/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/client/client.py +0 -0
  11. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/exceptions.py +0 -0
  12. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/admin.py +0 -0
  14. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/common.py +0 -0
  15. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/conversation.py +0 -0
  16. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/datasource.py +0 -0
  17. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/file_operation.py +0 -0
  18. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/guardrails.py +0 -0
  19. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/integration.py +0 -0
  20. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/llm.py +0 -0
  21. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/task.py +0 -0
  22. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/user.py +0 -0
  23. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  24. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  25. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  26. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  27. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/workflow.py +0 -0
  28. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  29. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/workflow_state.py +0 -0
  30. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  31. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/admin.py +0 -0
  32. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  33. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/conversation.py +0 -0
  34. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/datasource.py +0 -0
  35. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/files.py +0 -0
  36. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/integration.py +0 -0
  37. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/llm.py +0 -0
  38. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/task.py +0 -0
  39. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/user.py +0 -0
  40. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  41. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  42. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  43. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  44. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/webhook.py +0 -0
  45. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/workflow.py +0 -0
  46. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/workflow_execution.py +0 -0
  47. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  48. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/src/codemie_sdk/utils/__init__.py +0 -0
  49. {codemie_sdk_python-0.1.280 → codemie_sdk_python-0.1.282}/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.280
3
+ Version: 0.1.282
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.280"
3
+ version = "0.1.282"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -216,6 +216,7 @@ class AssistantRequestBase(AssistantBase):
216
216
  mcp_servers: List[MCPServerDetails] = Field(default_factory=list)
217
217
  assistant_ids: List[str] = Field(default_factory=list)
218
218
  prompt_variables: List[PromptVariable] = Field(default_factory=list)
219
+ skip_integration_validation: Optional[bool] = Field(default=False)
219
220
 
220
221
 
221
222
  class AssistantCreateRequest(AssistantRequestBase):
@@ -230,6 +231,92 @@ class AssistantUpdateRequest(AssistantRequestBase):
230
231
  pass
231
232
 
232
233
 
234
+ class MissingIntegration(BaseModel):
235
+ """Model representing a single missing tool credential."""
236
+
237
+ model_config = ConfigDict(extra="ignore")
238
+
239
+ toolkit: str = Field(..., description="Toolkit name (e.g., 'Data Management')")
240
+ tool: str = Field(..., description="Tool name (e.g., 'sql')")
241
+ label: str = Field(..., description="Display label for the tool (e.g., 'SQL')")
242
+ credential_type: Optional[str] = Field(
243
+ None, description="Credential type required (e.g., 'AWS', 'Jira')"
244
+ )
245
+
246
+
247
+ class MissingIntegrationsByCredentialType(BaseModel):
248
+ """Model representing missing tools grouped by credential type."""
249
+
250
+ model_config = ConfigDict(extra="ignore")
251
+
252
+ credential_type: str = Field(
253
+ ..., description="Credential type (e.g., 'AWS', 'Jira', 'Confluence')"
254
+ )
255
+ missing_tools: List[MissingIntegration] = Field(
256
+ ..., description="List of missing tools requiring this credential type"
257
+ )
258
+ # Optional sub-assistant context
259
+ assistant_id: Optional[str] = Field(
260
+ None, description="Sub-assistant ID (if from sub-assistant)"
261
+ )
262
+ assistant_name: Optional[str] = Field(
263
+ None, description="Sub-assistant name (if from sub-assistant)"
264
+ )
265
+ icon_url: Optional[str] = Field(
266
+ None, description="Sub-assistant icon URL (if from sub-assistant)"
267
+ )
268
+
269
+
270
+ class IntegrationValidationResult(BaseModel):
271
+ """Complete validation result for assistant integrations."""
272
+
273
+ model_config = ConfigDict(extra="ignore")
274
+
275
+ has_missing_integrations: bool = Field(
276
+ ..., description="Whether any integrations are missing"
277
+ )
278
+ missing_by_credential_type: List[MissingIntegrationsByCredentialType] = Field(
279
+ default_factory=list,
280
+ description="Missing tools in main assistant grouped by credential type",
281
+ )
282
+ sub_assistants_missing: List[MissingIntegrationsByCredentialType] = Field(
283
+ default_factory=list,
284
+ description="Missing tools in sub-assistants grouped by credential type",
285
+ )
286
+ message: Optional[str] = Field(
287
+ None, description="User-friendly message about missing integrations"
288
+ )
289
+
290
+
291
+ class AssistantCreateResponse(BaseModel):
292
+ """Response model for assistant creation with validation."""
293
+
294
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
295
+
296
+ message: str = Field(..., description="Response message")
297
+ assistant_id: Optional[str] = Field(
298
+ None,
299
+ alias="assistantId",
300
+ description="Created assistant ID (None if validation failed)",
301
+ )
302
+ validation: Optional[IntegrationValidationResult] = Field(
303
+ None,
304
+ description="Validation result (populated if validation found missing integrations)",
305
+ )
306
+
307
+
308
+ class AssistantUpdateResponse(BaseModel):
309
+ """Response model for assistant update with validation."""
310
+
311
+ model_config = ConfigDict(extra="ignore")
312
+
313
+ message: str = Field(..., description="Response message")
314
+ validation: Optional[IntegrationValidationResult] = Field(
315
+ None,
316
+ description="Validation result (populated if validation found missing integrations)",
317
+ )
318
+
319
+
233
320
  class AssistantVersion(BaseModel):
234
321
  """Immutable snapshot of assistant configuration for a specific version."""
235
322
 
@@ -14,6 +14,8 @@ from ..models.assistant import (
14
14
  Assistant,
15
15
  AssistantCreateRequest,
16
16
  AssistantUpdateRequest,
17
+ AssistantCreateResponse,
18
+ AssistantUpdateResponse,
17
19
  ToolKitDetails,
18
20
  AssistantChatRequest,
19
21
  BaseModelResponse,
@@ -90,20 +92,24 @@ class AssistantService:
90
92
  """
91
93
  return self._api.get(f"/v1/assistants/slug/{slug}", Assistant)
92
94
 
93
- def create(self, request: AssistantCreateRequest) -> dict:
95
+ def create(self, request: AssistantCreateRequest) -> AssistantCreateResponse:
94
96
  """Create a new assistant.
95
97
 
96
98
  Args:
97
99
  request: Assistant creation request
98
100
 
99
101
  Returns:
100
- Created assistant details
102
+ AssistantCreateResponse with assistant_id and optional validation results
101
103
  """
102
104
  return self._api.post(
103
- "/v1/assistants", dict, json_data=request.model_dump(exclude_none=True)
105
+ "/v1/assistants",
106
+ AssistantCreateResponse,
107
+ json_data=request.model_dump(exclude_none=True),
104
108
  )
105
109
 
106
- def update(self, assistant_id: str, request: AssistantUpdateRequest) -> dict:
110
+ def update(
111
+ self, assistant_id: str, request: AssistantUpdateRequest
112
+ ) -> AssistantUpdateResponse:
107
113
  """Update an existing assistant.
108
114
 
109
115
  Args:
@@ -111,11 +117,11 @@ class AssistantService:
111
117
  request: Assistant update request
112
118
 
113
119
  Returns:
114
- Updated assistant details
120
+ AssistantUpdateResponse with optional validation results
115
121
  """
116
122
  return self._api.put(
117
123
  f"/v1/assistants/{assistant_id}",
118
- dict,
124
+ AssistantUpdateResponse,
119
125
  json_data=request.model_dump(exclude_none=True),
120
126
  )
121
127
 
@@ -296,7 +302,8 @@ class AssistantService:
296
302
  if hasattr(version, "assistant_ids")
297
303
  else assistant.assistant_ids,
298
304
  )
299
- resp = self.update(assistant_id, update_req)
305
+ update_resp = self.update(assistant_id, update_req)
306
+ resp = update_resp.model_dump()
300
307
  resp["_rollback_fallback"] = True
301
308
  resp["_target_version"] = version_number
302
309
  if change_notes: