codemie-sdk-python 0.1.276__tar.gz → 0.1.277__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.276 → codemie_sdk_python-0.1.277}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/__init__.py +12 -0
  4. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/client/client.py +7 -0
  5. codemie_sdk_python-0.1.277/src/codemie_sdk/models/guardrails.py +62 -0
  6. codemie_sdk_python-0.1.277/src/codemie_sdk/services/codemie_guardrails.py +76 -0
  7. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/README.md +0 -0
  8. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/auth/__init__.py +0 -0
  9. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/auth/credentials.py +0 -0
  10. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/client/__init__.py +0 -0
  11. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/exceptions.py +0 -0
  12. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/admin.py +0 -0
  14. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/assistant.py +0 -0
  15. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/common.py +0 -0
  16. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/conversation.py +0 -0
  17. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/datasource.py +0 -0
  18. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/file_operation.py +0 -0
  19. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/integration.py +0 -0
  20. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/llm.py +0 -0
  21. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/task.py +0 -0
  22. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/user.py +0 -0
  23. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  24. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  25. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  26. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  27. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/workflow.py +0 -0
  28. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  29. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/workflow_state.py +0 -0
  30. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  31. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/admin.py +0 -0
  32. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/assistant.py +0 -0
  33. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/conversation.py +0 -0
  34. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/datasource.py +0 -0
  35. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/files.py +0 -0
  36. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/integration.py +0 -0
  37. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/llm.py +0 -0
  38. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/task.py +0 -0
  39. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/user.py +0 -0
  40. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  41. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  42. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  43. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  44. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/webhook.py +0 -0
  45. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/workflow.py +0 -0
  46. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/workflow_execution.py +0 -0
  47. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  48. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/src/codemie_sdk/utils/__init__.py +0 -0
  49. {codemie_sdk_python-0.1.276 → codemie_sdk_python-0.1.277}/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.276
3
+ Version: 0.1.277
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.276"
3
+ version = "0.1.277"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -73,10 +73,17 @@ from .models.vendor_guardrail import (
73
73
  VendorGuardrailInstallResponse,
74
74
  VendorGuardrailUninstallResponse,
75
75
  )
76
+ from .models.guardrails import (
77
+ GuardrailAssignmentSetting,
78
+ GuardrailAssignmentEntity,
79
+ GuardrailAssignmentRequest,
80
+ GuardrailAssignmentResponse,
81
+ )
76
82
  from .services.vendor_assistant import VendorAssistantService
77
83
  from .services.vendor_workflow import VendorWorkflowService
78
84
  from .services.vendor_knowledgebase import VendorKnowledgeBaseService
79
85
  from .services.vendor_guardrail import VendorGuardrailService
86
+ from .services.codemie_guardrails import CodemieGuardrailService
80
87
 
81
88
  __version__ = "0.2.12"
82
89
  __all__ = [
@@ -132,4 +139,9 @@ __all__ = [
132
139
  "VendorGuardrailInstallResponse",
133
140
  "VendorGuardrailUninstallResponse",
134
141
  "VendorGuardrailService",
142
+ "GuardrailAssignmentSetting",
143
+ "GuardrailAssignmentEntity",
144
+ "GuardrailAssignmentRequest",
145
+ "GuardrailAssignmentResponse",
146
+ "CodemieGuardrailService",
135
147
  ]
@@ -18,6 +18,7 @@ from ..services.vendor_assistant import VendorAssistantService
18
18
  from ..services.vendor_workflow import VendorWorkflowService
19
19
  from ..services.vendor_knowledgebase import VendorKnowledgeBaseService
20
20
  from ..services.vendor_guardrail import VendorGuardrailService
21
+ from ..services.codemie_guardrails import CodemieGuardrailService
21
22
 
22
23
 
23
24
  class CodeMieClient:
@@ -107,6 +108,9 @@ class CodeMieClient:
107
108
  self.vendor_guardrails = VendorGuardrailService(
108
109
  self._api_domain, self._token, verify_ssl=self._verify_ssl
109
110
  )
111
+ self.codemie_guardrails = CodemieGuardrailService(
112
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
113
+ )
110
114
 
111
115
  @property
112
116
  def token(self) -> str:
@@ -175,4 +179,7 @@ class CodeMieClient:
175
179
  self.vendor_guardrails = VendorGuardrailService(
176
180
  self._api_domain, self._token, verify_ssl=self._verify_ssl
177
181
  )
182
+ self.codemie_guardrails = CodemieGuardrailService(
183
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
184
+ )
178
185
  return self._token
@@ -0,0 +1,62 @@
1
+ """Models for guardrail assignments."""
2
+
3
+ from typing import List
4
+
5
+ from pydantic import BaseModel, ConfigDict, Field
6
+
7
+
8
+ class GuardrailAssignmentSetting(BaseModel):
9
+ """Model for guardrail assignment settings."""
10
+
11
+ model_config = ConfigDict(extra="ignore")
12
+
13
+ mode: str = Field(..., description="Assignment mode (e.g., 'all', 'specific')")
14
+ source: str = Field(..., description="Source type (e.g., 'input', 'output')")
15
+
16
+
17
+ class GuardrailAssignmentEntity(BaseModel):
18
+ """Model for guardrail assignment to specific entities."""
19
+
20
+ model_config = ConfigDict(extra="ignore")
21
+
22
+ settings: List[GuardrailAssignmentSetting] = Field(
23
+ default_factory=list, description="List of assignment settings"
24
+ )
25
+ items: List[str] = Field(
26
+ default_factory=list, description="List of specific entity IDs"
27
+ )
28
+
29
+
30
+ class GuardrailAssignmentRequest(BaseModel):
31
+ """Request model for assigning guardrails to entities."""
32
+
33
+ model_config = ConfigDict(extra="ignore")
34
+
35
+ project: GuardrailAssignmentEntity = Field(
36
+ default_factory=lambda: GuardrailAssignmentEntity(settings=[], items=[]),
37
+ description="Project-level assignments",
38
+ )
39
+ assistants: GuardrailAssignmentEntity = Field(
40
+ default_factory=lambda: GuardrailAssignmentEntity(settings=[], items=[]),
41
+ description="Assistant-level assignments",
42
+ )
43
+ workflows: GuardrailAssignmentEntity = Field(
44
+ default_factory=lambda: GuardrailAssignmentEntity(settings=[], items=[]),
45
+ description="Workflow-level assignments",
46
+ )
47
+ datasources: GuardrailAssignmentEntity = Field(
48
+ default_factory=lambda: GuardrailAssignmentEntity(settings=[], items=[]),
49
+ description="Datasource-level assignments",
50
+ )
51
+
52
+
53
+ class GuardrailAssignmentResponse(BaseModel):
54
+ """Response model for guardrail assignment."""
55
+
56
+ model_config = ConfigDict(extra="ignore")
57
+
58
+ success: int = Field(..., description="Count of successful assignments")
59
+ failed: int = Field(..., description="Count of failed assignments")
60
+ errors: List[str] = Field(
61
+ default_factory=list, description="List of error messages"
62
+ )
@@ -0,0 +1,76 @@
1
+ """CodeMie guardrail service implementation for managing guardrail assignments."""
2
+
3
+ from ..models.guardrails import (
4
+ GuardrailAssignmentRequest,
5
+ GuardrailAssignmentResponse,
6
+ )
7
+ from ..utils import ApiRequestHandler
8
+
9
+
10
+ class CodemieGuardrailService:
11
+ """Service for managing CodeMie guardrail assignments."""
12
+
13
+ def __init__(self, api_domain: str, token: str, verify_ssl: bool = True):
14
+ """Initialize the CodeMie guardrail service.
15
+
16
+ Args:
17
+ api_domain: Base URL for the CodeMie API
18
+ token: Authentication token
19
+ verify_ssl: Whether to verify SSL certificates
20
+ """
21
+ self._api = ApiRequestHandler(api_domain, token, verify_ssl)
22
+
23
+ def assign_guardrails(
24
+ self,
25
+ guardrail_id: str,
26
+ assignment: GuardrailAssignmentRequest,
27
+ ) -> GuardrailAssignmentResponse:
28
+ """Assign guardrails to project entities (assistants, workflows, datasources).
29
+
30
+ Args:
31
+ guardrail_id: ID of the guardrail to assign (AI run ID from installation)
32
+ assignment: Assignment configuration for different entity types
33
+
34
+ Returns:
35
+ GuardrailAssignmentResponse with success status
36
+
37
+ Example:
38
+ >>> from codemie_sdk.models.guardrails import (
39
+ ... GuardrailAssignmentRequest,
40
+ ... GuardrailAssignmentEntity,
41
+ ... GuardrailAssignmentSetting
42
+ ... )
43
+ >>> # Assign guardrail to all project assistants
44
+ >>> assignment = GuardrailAssignmentRequest(
45
+ ... assistants=GuardrailAssignmentEntity(
46
+ ... settings=[GuardrailAssignmentSetting(mode="all", source="input")],
47
+ ... items=[]
48
+ ... )
49
+ ... )
50
+ >>> response = client.codemie_guardrails.assign_guardrails(
51
+ ... guardrail_id="ai_run_123",
52
+ ... assignment=assignment
53
+ ... )
54
+ >>> if response.success:
55
+ ... print("Guardrail assigned successfully!")
56
+ >>>
57
+ >>> # Assign to specific assistants
58
+ >>> assignment = GuardrailAssignmentRequest(
59
+ ... assistants=GuardrailAssignmentEntity(
60
+ ... settings=[],
61
+ ... items=["asst_123", "asst_456"]
62
+ ... )
63
+ ... )
64
+ >>> response = client.codemie_guardrails.assign_guardrails(
65
+ ... guardrail_id="ai_run_123",
66
+ ... assignment=assignment
67
+ ... )
68
+ """
69
+ payload = assignment.model_dump(by_alias=True)
70
+
71
+ return self._api.put(
72
+ f"/v1/guardrails/{guardrail_id}/assignments",
73
+ GuardrailAssignmentResponse,
74
+ json_data=payload,
75
+ wrap_response=False,
76
+ )