codemie-sdk-python 0.1.226__py3-none-any.whl → 0.1.273__py3-none-any.whl

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.
codemie_sdk/__init__.py CHANGED
@@ -60,11 +60,25 @@ from .models.vendor_knowledgebase import (
60
60
  VendorKnowledgeBaseInstallResponse,
61
61
  VendorKnowledgeBaseUninstallResponse,
62
62
  )
63
+ from .models.vendor_guardrail import (
64
+ VendorGuardrailSetting,
65
+ VendorGuardrailSettingsResponse,
66
+ VendorGuardrail,
67
+ VendorGuardrailStatus,
68
+ VendorGuardrailsResponse,
69
+ VendorGuardrailVersion,
70
+ VendorGuardrailVersionsResponse,
71
+ VendorGuardrailInstallRequest,
72
+ VendorGuardrailInstallSummary,
73
+ VendorGuardrailInstallResponse,
74
+ VendorGuardrailUninstallResponse,
75
+ )
63
76
  from .services.vendor_assistant import VendorAssistantService
64
77
  from .services.vendor_workflow import VendorWorkflowService
65
78
  from .services.vendor_knowledgebase import VendorKnowledgeBaseService
79
+ from .services.vendor_guardrail import VendorGuardrailService
66
80
 
67
- __version__ = "0.2.11"
81
+ __version__ = "0.2.12"
68
82
  __all__ = [
69
83
  "CodeMieClient",
70
84
  "VendorType",
@@ -106,4 +120,16 @@ __all__ = [
106
120
  "VendorKnowledgeBaseInstallResponse",
107
121
  "VendorKnowledgeBaseUninstallResponse",
108
122
  "VendorKnowledgeBaseService",
123
+ "VendorGuardrailSetting",
124
+ "VendorGuardrailSettingsResponse",
125
+ "VendorGuardrail",
126
+ "VendorGuardrailStatus",
127
+ "VendorGuardrailsResponse",
128
+ "VendorGuardrailVersion",
129
+ "VendorGuardrailVersionsResponse",
130
+ "VendorGuardrailInstallRequest",
131
+ "VendorGuardrailInstallSummary",
132
+ "VendorGuardrailInstallResponse",
133
+ "VendorGuardrailUninstallResponse",
134
+ "VendorGuardrailService",
109
135
  ]
@@ -16,6 +16,7 @@ from ..services.webhook import WebhookService
16
16
  from ..services.vendor_assistant import VendorAssistantService
17
17
  from ..services.vendor_workflow import VendorWorkflowService
18
18
  from ..services.vendor_knowledgebase import VendorKnowledgeBaseService
19
+ from ..services.vendor_guardrail import VendorGuardrailService
19
20
 
20
21
 
21
22
  class CodeMieClient:
@@ -101,6 +102,9 @@ class CodeMieClient:
101
102
  self.vendor_knowledgebases = VendorKnowledgeBaseService(
102
103
  self._api_domain, self._token, verify_ssl=self._verify_ssl
103
104
  )
105
+ self.vendor_guardrails = VendorGuardrailService(
106
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
107
+ )
104
108
 
105
109
  @property
106
110
  def token(self) -> str:
@@ -116,6 +120,7 @@ class CodeMieClient:
116
120
  "localhost",
117
121
  "127.0.0.1",
118
122
  "0.0.0.0",
123
+ "192.168",
119
124
  ]
120
125
  return any(pattern in domain_lower for pattern in localhost_patterns)
121
126
 
@@ -147,6 +152,12 @@ class CodeMieClient:
147
152
  self.conversations = ConversationService(
148
153
  self._api_domain, self._token, verify_ssl=self._verify_ssl
149
154
  )
155
+ self.files = FileOperationService(
156
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
157
+ )
158
+ self.webhook = WebhookService(
159
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
160
+ )
150
161
  self.vendor_assistants = VendorAssistantService(
151
162
  self._api_domain, self._token, verify_ssl=self._verify_ssl
152
163
  )
@@ -156,4 +167,7 @@ class CodeMieClient:
156
167
  self.vendor_knowledgebases = VendorKnowledgeBaseService(
157
168
  self._api_domain, self._token, verify_ssl=self._verify_ssl
158
169
  )
170
+ self.vendor_guardrails = VendorGuardrailService(
171
+ self._api_domain, self._token, verify_ssl=self._verify_ssl
172
+ )
159
173
  return self._token
@@ -53,6 +53,16 @@ class Context(BaseModel):
53
53
  name: str
54
54
 
55
55
 
56
+ class PromptVariable(BaseModel):
57
+ """Model for assistant prompt variables."""
58
+
59
+ model_config = ConfigDict(extra="ignore")
60
+
61
+ key: str
62
+ description: Optional[str] = None
63
+ default_value: str
64
+
65
+
56
66
  class MCPServerConfig(BaseModel):
57
67
  """
58
68
  Configuration for an MCP server.
@@ -110,6 +120,7 @@ class MCPServerDetails(BaseModel):
110
120
  arguments: Optional[str] = None
111
121
  settings: Optional[Integration] = None
112
122
  mcp_connect_auth_token: Optional[Integration] = None
123
+ integration_alias: Optional[str] = None
113
124
 
114
125
 
115
126
  class SystemPromptHistory(BaseModel):
@@ -137,6 +148,17 @@ class AssistantBase(BaseModel):
137
148
  icon_url: Optional[str] = None
138
149
 
139
150
 
151
+ class AssistantListResponse(BaseModel):
152
+ """Model for assistant list response."""
153
+
154
+ model_config = ConfigDict(extra="ignore")
155
+
156
+ id: str
157
+ name: str
158
+ slug: Optional[str] = None
159
+ created_by: Optional[User] = None
160
+
161
+
140
162
  class Assistant(AssistantBase):
141
163
  """Full assistant model with additional fields."""
142
164
 
@@ -164,6 +186,8 @@ class Assistant(AssistantBase):
164
186
  user_abilities: Optional[List[Any]] = None
165
187
  mcp_servers: List[MCPServerDetails] = Field(default_factory=list)
166
188
  assistant_ids: List[str] = Field(default_factory=list)
189
+ version_count: Optional[int] = None
190
+ prompt_variables: Optional[List[PromptVariable]] = Field(default=None)
167
191
 
168
192
 
169
193
  class AssistantRequestBase(AssistantBase):
@@ -191,6 +215,7 @@ class AssistantRequestBase(AssistantBase):
191
215
  top_p: Optional[float] = None
192
216
  mcp_servers: List[MCPServerDetails] = Field(default_factory=list)
193
217
  assistant_ids: List[str] = Field(default_factory=list)
218
+ prompt_variables: List[PromptVariable] = Field(default_factory=list)
194
219
 
195
220
 
196
221
  class AssistantCreateRequest(AssistantRequestBase):
@@ -205,6 +230,27 @@ class AssistantUpdateRequest(AssistantRequestBase):
205
230
  pass
206
231
 
207
232
 
233
+ class AssistantVersion(BaseModel):
234
+ """Immutable snapshot of assistant configuration for a specific version."""
235
+
236
+ model_config = ConfigDict(extra="ignore", use_enum_values=True)
237
+
238
+ version_number: int
239
+ created_date: datetime
240
+ created_by: Optional[User] = None
241
+ change_notes: Optional[str] = None
242
+ description: Optional[str] = None
243
+ system_prompt: str
244
+ llm_model_type: Optional[str] = None
245
+ temperature: Optional[float] = None
246
+ top_p: Optional[float] = None
247
+ context: List[Context] = Field(default_factory=list)
248
+ toolkits: List[ToolKitDetails] = Field(default_factory=list)
249
+ mcp_servers: List[MCPServerDetails] = Field(default_factory=list)
250
+ assistant_ids: List[str] = Field(default_factory=list)
251
+ prompt_variables: List[PromptVariable] = Field(default_factory=list)
252
+
253
+
208
254
  class ChatRole(str, Enum):
209
255
  """Enum for chat message roles."""
210
256
 
@@ -263,6 +309,14 @@ class AssistantChatRequest(BaseModel):
263
309
  default=None, description="DataSource in conversation history"
264
310
  )
265
311
  stream: bool = Field(default=False, description="Enable streaming response")
312
+ propagate_headers: bool = Field(
313
+ default=False,
314
+ description="Enable propagation of X-* HTTP headers to MCP servers during tool execution",
315
+ )
316
+ custom_metadata: Optional[dict[str, Any]] = Field(
317
+ default=None,
318
+ description="Custom metadata for the AI Assistant",
319
+ )
266
320
  top_k: int = Field(default=10, description="Top K results to consider")
267
321
  system_prompt: str = Field(default="", description="Override system prompt")
268
322
  background_task: bool = Field(default=False, description="Run as background task")
@@ -25,6 +25,8 @@ class DataSourceType(str, Enum):
25
25
  CHUNK_SUMMARY = "chunk-summary"
26
26
  JSON = "knowledge_base_json"
27
27
  BEDROCK = "knowledge_base_bedrock"
28
+ PLATFORM = "platform_marketplace_assistant"
29
+ AZURE_DEVOPS_WIKI = "knowledge_base_azure_devops_wiki"
28
30
 
29
31
 
30
32
  class DataSourceStatus(str, Enum):
@@ -46,6 +48,15 @@ class DataSourceProcessingInfo(BaseModel):
46
48
  processed_documents_count: Optional[int] = Field(None, alias="documents_count_key")
47
49
 
48
50
 
51
+ class ElasticsearchStatsResponse(BaseModel):
52
+ """Response model for Elasticsearch index statistics."""
53
+
54
+ model_config = ConfigDict(extra="ignore")
55
+
56
+ index_name: str = Field(..., description="Name of the index in Elasticsearch")
57
+ size_in_bytes: int = Field(..., ge=0, description="Size of the index in bytes")
58
+
59
+
49
60
  # Base request models
50
61
  class Confluence(BaseModel):
51
62
  """Model for Confluence-specific response fields"""
@@ -89,6 +100,17 @@ class File(BaseModel):
89
100
  model_config = ConfigDict(extra="ignore")
90
101
 
91
102
 
103
+ class AzureDevOpsWiki(BaseModel):
104
+ """Model for Azure DevOps Wiki-specific response fields"""
105
+
106
+ wiki_query: Optional[str] = None
107
+ organization: Optional[str] = None
108
+ project: Optional[str] = None
109
+ wiki_name: Optional[str] = None
110
+
111
+ model_config = ConfigDict(extra="ignore")
112
+
113
+
92
114
  class Code(BaseModel):
93
115
  """Model for code repository datasource creation"""
94
116
 
@@ -189,6 +211,17 @@ class FileDataSourceRequest(BaseDataSourceRequest):
189
211
  super().__init__(type=DataSourceType.FILE, **data)
190
212
 
191
213
 
214
+ class AzureDevOpsWikiDataSourceRequest(BaseDataSourceRequest, AzureDevOpsWiki):
215
+ """Model for Azure DevOps Wiki datasource creation requests"""
216
+
217
+ def __init__(self, **data):
218
+ super().__init__(type=DataSourceType.AZURE_DEVOPS_WIKI, **data)
219
+
220
+ @classmethod
221
+ def required_fields(cls) -> List[str]:
222
+ return ["wiki_query"]
223
+
224
+
192
225
  class BaseUpdateDataSourceRequest(BaseDataSourceRequest):
193
226
  """Mixin update-specific reindex fields"""
194
227
 
@@ -259,6 +292,49 @@ class UpdateFileDataSourceRequest(BaseUpdateDataSourceRequest):
259
292
  super().__init__(type=DataSourceType.FILE, **data)
260
293
 
261
294
 
295
+ class UpdateAzureDevOpsWikiDataSourceRequest(
296
+ BaseUpdateDataSourceRequest, AzureDevOpsWiki
297
+ ):
298
+ """Model for Azure DevOps Wiki datasource updates"""
299
+
300
+ def __init__(self, **data):
301
+ super().__init__(type=DataSourceType.AZURE_DEVOPS_WIKI, **data)
302
+
303
+
304
+ class CodeAnalysisDataSourceRequest(BaseModel):
305
+ """Model for provider-based datasource creation requests"""
306
+
307
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
308
+
309
+ name: str = Field(..., description="Datasource name")
310
+ description: Optional[str] = Field(None, description="Datasource description")
311
+ project_name: str = Field(..., description="Project name")
312
+ project_space_visible: bool = Field(False, alias="projectSpaceVisible")
313
+ branch: Optional[str] = Field(None, description="Git branch")
314
+ api_url: str = Field(..., description="Repository URL")
315
+ access_token: str = Field(..., description="Access token for repository")
316
+ analyzer: Optional[str] = Field(
317
+ None, description="Code analyzer type (e.g., Java, Python)"
318
+ )
319
+ datasource_root: str = Field("/", description="Root directory to analyze")
320
+
321
+
322
+ class CodeExplorationDataSourceRequest(BaseModel):
323
+ """Model for CodeExplorationToolkit datasource creation requests"""
324
+
325
+ model_config = ConfigDict(extra="ignore", populate_by_name=True)
326
+
327
+ name: str = Field(..., description="Datasource name")
328
+ description: Optional[str] = Field(None, description="Datasource description")
329
+ project_name: str = Field(..., description="Project name")
330
+ project_space_visible: bool = Field(False, alias="projectSpaceVisible")
331
+ code_analysis_datasource_ids: List[str] = Field(
332
+ ...,
333
+ alias="code_analysis_datasource_ids",
334
+ description="List of CodeAnalysisToolkit datasource IDs",
335
+ )
336
+
337
+
262
338
  class DataSource(BaseModel):
263
339
  model_config = ConfigDict(
264
340
  extra="ignore",
@@ -293,6 +369,8 @@ class DataSource(BaseModel):
293
369
  confluence: Optional[Confluence] = None
294
370
  # Google doc specific fields
295
371
  google_doc_link: Optional[str] = None
372
+ # Azure DevOps Wiki specific fields
373
+ azure_devops_wiki: Optional[AzureDevOpsWiki] = None
296
374
 
297
375
  @model_validator(mode="before")
298
376
  def before_init(cls, values):
@@ -309,6 +387,7 @@ class DataSource(BaseModel):
309
387
  DataSourceType.CONFLUENCE,
310
388
  DataSourceType.JIRA,
311
389
  DataSourceType.GOOGLE,
390
+ DataSourceType.AZURE_DEVOPS_WIKI,
312
391
  ]:
313
392
  complete_state = values.get("complete_state", 0)
314
393
  if complete_state is not None:
@@ -29,7 +29,7 @@ class CredentialTypes(str, Enum):
29
29
  SONAR = "Sonar"
30
30
  SQL = "SQL"
31
31
  TELEGRAM = "Telegram"
32
- ZEPHYR_CLOUD = "ZephyrCloud"
32
+ ZEPHYR_SCALE = "ZephyrScale"
33
33
  ZEPHYR_SQUAD = "ZephyrSquad"
34
34
  SERVICE_NOW = "ServiceNow"
35
35
  DIAL = "DIAL"
@@ -0,0 +1,152 @@
1
+ """Models for vendor guardrail settings."""
2
+
3
+ from datetime import datetime
4
+ from enum import Enum
5
+ from typing import Optional, List
6
+
7
+ from pydantic import BaseModel, ConfigDict, Field
8
+
9
+ from .vendor_assistant import PaginationInfo, TokenPagination
10
+
11
+
12
+ class VendorGuardrailSetting(BaseModel):
13
+ """Model representing a vendor guardrail setting."""
14
+
15
+ model_config = ConfigDict(extra="ignore")
16
+
17
+ setting_id: str = Field(..., description="Unique identifier for the setting")
18
+ setting_name: str = Field(..., description="Name of the setting")
19
+ project: str = Field(..., description="Project associated with the setting")
20
+ entities: List[str] = Field(
21
+ default_factory=list, description="List of entities associated with the setting"
22
+ )
23
+ invalid: Optional[bool] = Field(None, description="Whether the setting is invalid")
24
+ error: Optional[str] = Field(
25
+ None, description="Error message if the setting is invalid"
26
+ )
27
+
28
+
29
+ class VendorGuardrailSettingsResponse(BaseModel):
30
+ """Response model for vendor guardrail settings list."""
31
+
32
+ model_config = ConfigDict(extra="ignore")
33
+
34
+ data: List[VendorGuardrailSetting] = Field(
35
+ ..., description="List of vendor guardrail settings"
36
+ )
37
+ pagination: PaginationInfo = Field(..., description="Pagination information")
38
+
39
+
40
+ class VendorGuardrailStatus(str, Enum):
41
+ """Status of vendor guardrail."""
42
+
43
+ PREPARED = "PREPARED"
44
+ NOT_PREPARED = "NOT_PREPARED"
45
+
46
+
47
+ class VendorGuardrail(BaseModel):
48
+ """Model representing a vendor guardrail."""
49
+
50
+ model_config = ConfigDict(extra="ignore")
51
+
52
+ id: str = Field(..., description="Unique identifier for the guardrail")
53
+ name: str = Field(..., description="Name of the guardrail")
54
+ status: VendorGuardrailStatus = Field(..., description="Status of the guardrail")
55
+ description: Optional[str] = Field(None, description="Description of the guardrail")
56
+ version: str = Field(..., description="Version of the guardrail")
57
+ createdAt: datetime = Field(
58
+ ..., description="Creation timestamp", alias="createdAt"
59
+ )
60
+ updatedAt: datetime = Field(
61
+ ..., description="Last update timestamp", alias="updatedAt"
62
+ )
63
+
64
+
65
+ class VendorGuardrailsResponse(BaseModel):
66
+ """Response model for vendor guardrails list."""
67
+
68
+ model_config = ConfigDict(extra="ignore")
69
+
70
+ data: List[VendorGuardrail] = Field(..., description="List of vendor guardrails")
71
+ pagination: TokenPagination = Field(
72
+ ..., description="Token-based pagination information"
73
+ )
74
+
75
+
76
+ class VendorGuardrailVersion(BaseModel):
77
+ """Model representing a vendor guardrail version."""
78
+
79
+ model_config = ConfigDict(extra="ignore")
80
+
81
+ id: str = Field(..., description="Unique identifier for the guardrail")
82
+ version: str = Field(..., description="Version of the guardrail")
83
+ name: str = Field(..., description="Name of the guardrail")
84
+ status: VendorGuardrailStatus = Field(..., description="Status of the version")
85
+ description: Optional[str] = Field(None, description="Description of the version")
86
+ blockedInputMessaging: Optional[str] = Field(
87
+ None,
88
+ description="Message to display when input is blocked by guardrail",
89
+ alias="blockedInputMessaging",
90
+ )
91
+ blockedOutputsMessaging: Optional[str] = Field(
92
+ None,
93
+ description="Message to display when output is blocked by guardrail",
94
+ alias="blockedOutputsMessaging",
95
+ )
96
+ createdAt: datetime = Field(
97
+ ..., description="Creation timestamp", alias="createdAt"
98
+ )
99
+ updatedAt: datetime = Field(
100
+ ..., description="Last update timestamp", alias="updatedAt"
101
+ )
102
+
103
+
104
+ class VendorGuardrailVersionsResponse(BaseModel):
105
+ """Response model for vendor guardrail versions list."""
106
+
107
+ model_config = ConfigDict(extra="ignore")
108
+
109
+ data: List[VendorGuardrailVersion] = Field(
110
+ ..., description="List of vendor guardrail versions"
111
+ )
112
+ pagination: TokenPagination = Field(
113
+ ..., description="Token-based pagination information"
114
+ )
115
+
116
+
117
+ class VendorGuardrailInstallRequest(BaseModel):
118
+ """Model for a single guardrail installation request."""
119
+
120
+ model_config = ConfigDict(extra="ignore")
121
+
122
+ id: str = Field(..., description="Guardrail ID to install")
123
+ version: str = Field(..., description="Version to use for the guardrail")
124
+ setting_id: str = Field(..., description="Vendor setting ID")
125
+
126
+
127
+ class VendorGuardrailInstallSummary(BaseModel):
128
+ """Model for guardrail installation summary."""
129
+
130
+ model_config = ConfigDict(extra="ignore")
131
+
132
+ guardrailId: str = Field(..., description="Installed guardrail ID")
133
+ version: str = Field(..., description="Version used for installation")
134
+ aiRunId: str = Field(..., description="AI run ID for the installation")
135
+
136
+
137
+ class VendorGuardrailInstallResponse(BaseModel):
138
+ """Response model for guardrail installation."""
139
+
140
+ model_config = ConfigDict(extra="ignore")
141
+
142
+ summary: List[VendorGuardrailInstallSummary] = Field(
143
+ ..., description="List of installation summaries"
144
+ )
145
+
146
+
147
+ class VendorGuardrailUninstallResponse(BaseModel):
148
+ """Response model for guardrail uninstallation."""
149
+
150
+ model_config = ConfigDict(extra="ignore")
151
+
152
+ success: bool = Field(..., description="Whether the uninstallation was successful")
@@ -15,3 +15,7 @@ class WorkflowExecutionCreateRequest(BaseModel):
15
15
  file_name: Optional[str] = Field(
16
16
  None, description="File name associated with the workflow execution"
17
17
  )
18
+ propagate_headers: bool = Field(
19
+ default=False,
20
+ description="Enable propagation of X-* HTTP headers to MCP servers during tool execution",
21
+ )