codemie-sdk-python 0.1.618__tar.gz → 0.1.620__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 (72) hide show
  1. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/datasource.py +40 -0
  4. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/datasource.py +32 -2
  5. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/README.md +0 -0
  6. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/__init__.py +0 -0
  7. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/auth/__init__.py +0 -0
  8. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/auth/credentials.py +0 -0
  9. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/client/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/client/client.py +0 -0
  11. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/exceptions.py +0 -0
  12. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/activity_event.py +0 -0
  14. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/admin.py +0 -0
  15. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/analytics.py +0 -0
  16. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/assistant.py +0 -0
  17. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/categories.py +0 -0
  18. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/common.py +0 -0
  19. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/conversation.py +0 -0
  20. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/cost_center.py +0 -0
  21. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/errors.py +0 -0
  22. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/file_operation.py +0 -0
  23. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/guardrails.py +0 -0
  24. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/integration.py +0 -0
  25. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/llm.py +0 -0
  26. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/mcp_config.py +0 -0
  27. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/mermaid.py +0 -0
  28. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/project.py +0 -0
  29. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/skill.py +0 -0
  30. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/task.py +0 -0
  31. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/user.py +0 -0
  32. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  33. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  34. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  35. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/vendor_runtime.py +0 -0
  36. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  37. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/workflow.py +0 -0
  38. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  39. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/workflow_state.py +0 -0
  40. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  41. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/models/workflow_transition.py +0 -0
  42. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/activity_event.py +0 -0
  43. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/admin.py +0 -0
  44. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/analytics.py +0 -0
  45. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/assistant.py +0 -0
  46. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/categories.py +0 -0
  47. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  48. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/conversation.py +0 -0
  49. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/cost_center.py +0 -0
  50. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/customer_config_service.py +0 -0
  51. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/dynamic_config.py +0 -0
  52. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/files.py +0 -0
  53. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/integration.py +0 -0
  54. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/llm.py +0 -0
  55. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/mcp_configs.py +0 -0
  56. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/mermaid.py +0 -0
  57. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/project.py +0 -0
  58. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/project_budget_groups.py +0 -0
  59. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/skill.py +0 -0
  60. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/task.py +0 -0
  61. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/user.py +0 -0
  62. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  63. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  64. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  65. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/vendor_runtime.py +0 -0
  66. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  67. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/webhook.py +0 -0
  68. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/workflow.py +0 -0
  69. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/workflow_execution.py +0 -0
  70. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  71. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/src/codemie_sdk/utils/__init__.py +0 -0
  72. {codemie_sdk_python-0.1.618 → codemie_sdk_python-0.1.620}/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.618
3
+ Version: 0.1.620
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.618"
3
+ version = "0.1.620"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -21,6 +21,7 @@ class DataSourceType(str, Enum):
21
21
  FILE = "knowledge_base_file"
22
22
  XRAY = "knowledge_base_xray"
23
23
  GOOGLE = "llm_routing_google"
24
+ GIT_FAQ = "knowledge_base_git_faq"
24
25
  PROVIDER = "provider"
25
26
  SUMMARY = "summary"
26
27
  CHUNK_SUMMARY = "chunk-summary"
@@ -82,6 +83,7 @@ class Jira(BaseModel):
82
83
  """Model for Jira-specific response fields"""
83
84
 
84
85
  jql: str | None = None
86
+ custom_fields: list[str] | None = None
85
87
 
86
88
  model_config = ConfigDict(extra="ignore")
87
89
 
@@ -145,6 +147,15 @@ class Code(BaseModel):
145
147
  docs_generation: bool = Field(False, alias="docsGeneration")
146
148
 
147
149
 
150
+ class GitFaq(BaseModel):
151
+ """Model for the Git FAQ (knowledge_base_git_faq) datasource creation"""
152
+
153
+ link: str | None = Field(..., min_length=1, max_length=1000)
154
+ branch: str | None = Field(..., min_length=1, max_length=1000)
155
+ files_filter: str | None = Field(None)
156
+ embedding_model: str | None = Field(None)
157
+
158
+
148
159
  class BaseDataSourceRequest(BaseModel):
149
160
  """Base model for all datasource creation requests"""
150
161
 
@@ -200,6 +211,15 @@ class CodeDataSourceRequest(BaseDataSourceRequest, Code):
200
211
  return ["link", "embeddings_model", "branch", "index_type"]
201
212
 
202
213
 
214
+ class GitFaqDataSourceRequest(BaseDataSourceRequest, GitFaq):
215
+ def __init__(self, **data):
216
+ super().__init__(type=DataSourceType.GIT_FAQ, **data)
217
+
218
+ @classmethod
219
+ def required_fields(cls) -> list[str]:
220
+ return ["link", "branch"]
221
+
222
+
203
223
  class JiraDataSourceRequest(BaseDataSourceRequest, Jira):
204
224
  def __init__(self, **data):
205
225
  super().__init__(type=DataSourceType.JIRA, **data)
@@ -296,6 +316,18 @@ class BaseUpdateDataSourceRequest(BaseDataSourceRequest):
296
316
  return self
297
317
 
298
318
 
319
+ class UpdateGitFaqDataSourceRequest(BaseUpdateDataSourceRequest):
320
+ """Model for Git FAQ datasource updates; source fields require full_reindex=True"""
321
+
322
+ link: str | None = Field(None)
323
+ branch: str | None = Field(None)
324
+ files_filter: str | None = Field(None)
325
+ setting_id: str | None = Field(None)
326
+
327
+ def __init__(self, **data):
328
+ super().__init__(type=DataSourceType.GIT_FAQ, **data)
329
+
330
+
299
331
  class UpdateCodeDataSourceRequest(BaseUpdateDataSourceRequest, Code):
300
332
  """Model for code repository datasource updates"""
301
333
 
@@ -416,6 +448,7 @@ class DataSource(BaseModel):
416
448
  tokens_usage: TokensUsage | None = Field(None)
417
449
  # Code specific fields
418
450
  code: Code | None = None
451
+ git_faq: GitFaq | None = None
419
452
  # Jira specific fields
420
453
  jira: Jira | None = None
421
454
  # Confluence specific fields
@@ -451,6 +484,13 @@ class DataSource(BaseModel):
451
484
  complete_state = values.get("complete_state", 0)
452
485
  if complete_state is not None:
453
486
  values["processing_info"] = {"documents_count_key": complete_state}
487
+ elif values.get("index_type") == DataSourceType.GIT_FAQ:
488
+ values["git_faq"] = {
489
+ "link": values.get("link"),
490
+ "branch": values.get("branch"),
491
+ "files_filter": values.get("files_filter"),
492
+ "setting_id": values.get("setting_id"),
493
+ }
454
494
  elif values.get("index_type") == DataSourceType.CODE:
455
495
  values["code"] = {
456
496
  "link": values.get("link"),
@@ -302,19 +302,24 @@ class DatasourceService:
302
302
  project_name: str = None,
303
303
  space: str = None,
304
304
  wiki: str = None,
305
+ **extra_kwargs,
305
306
  ) -> dict:
306
307
  """POST v1/index/health — probe datasource connectivity without indexing.
307
308
 
308
309
  Args:
309
- index_type: Type of the datasource index (e.g., "git", "xwiki")
310
+ index_type: Type of the datasource index (e.g., "git", "xwiki", "jira")
310
311
  git_url: Git repository URL (required for git type)
311
312
  setting_id: Optional integration setting ID (for authenticated repos)
312
313
  project_name: Optional project name context (defaults to empty string)
313
314
  space: xWiki space id to probe (required for xwiki type)
314
315
  wiki: xWiki wiki id to probe (defaults to "xwiki" on the backend)
316
+ **extra_kwargs: Additional payload fields forwarded verbatim (e.g.
317
+ ``jql`` and ``custom_fields`` for Jira KB health checks).
315
318
 
316
319
  Returns:
317
- dict: Response containing 'error' (None on success) and 'documents_count'
320
+ dict: Response containing 'error' (None on success), 'documents_count',
321
+ and optionally 'field_error' / 'help' when a field-level validation
322
+ error is detected.
318
323
  """
319
324
  payload: dict = {"index_type": index_type, "project_name": project_name or ""}
320
325
  if git_url is not None:
@@ -325,8 +330,33 @@ class DatasourceService:
325
330
  payload["space"] = space
326
331
  if wiki is not None:
327
332
  payload["wiki"] = wiki
333
+ payload.update(extra_kwargs)
328
334
  return self._api.post("/v1/index/health", dict, json_data=payload)
329
335
 
336
+ def get_jira_fields(self, setting_id: str, project_name: str = "") -> list:
337
+ """GET /v1/index/jira/fields — retrieve available Jira custom fields.
338
+
339
+ Returns the list of non-default Jira fields available for the given
340
+ integration, sorted custom-first then alphabetically. Used by the UI
341
+ field picker for the ``custom_fields`` datasource configuration.
342
+
343
+ Args:
344
+ setting_id: The Jira integration setting ID whose Jira instance
345
+ should be queried for available fields.
346
+ project_name: Project name context for the request.
347
+
348
+ Returns:
349
+ list: Sorted list of field dicts (``id``, ``name``, ``custom``).
350
+
351
+ Raises:
352
+ ApiError: HTTP 422 when the Jira instance is unreachable
353
+ (ConnectionException maps to VPN-specific help text).
354
+ """
355
+ return self._api.get(
356
+ f"/v1/index/jira/fields?setting_id={setting_id}&project_name={project_name}",
357
+ list[dict],
358
+ )
359
+
330
360
  def get_elasticsearch_stats(self, datasource_id: str) -> ElasticsearchStatsResponse:
331
361
  """Get Elasticsearch statistics for a specific datasource index.
332
362