codemie-sdk-python 0.1.503__py3-none-any.whl → 0.1.504__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
@@ -148,7 +148,12 @@ from .models.skill import (
148
148
  SkillPagination,
149
149
  )
150
150
  from .services.skill import SkillService
151
- from .models.assistant import BuiltinSubagent
151
+ from .models.assistant import (
152
+ BuiltinSubagent,
153
+ AssistantProjectFeature,
154
+ AssistantProjectMappingRequest,
155
+ AssistantProjectMappingResponse,
156
+ )
152
157
 
153
158
  __version__ = "0.2.12"
154
159
  __all__ = [
@@ -264,4 +269,7 @@ __all__ = [
264
269
  "SkillPagination",
265
270
  "SkillService",
266
271
  "BuiltinSubagent",
272
+ "AssistantProjectFeature",
273
+ "AssistantProjectMappingRequest",
274
+ "AssistantProjectMappingResponse",
267
275
  ]
@@ -607,3 +607,26 @@ class ReactionRequest(BaseModel):
607
607
  model_config = ConfigDict(extra="ignore", use_enum_values=True)
608
608
 
609
609
  reaction: ReactionType = Field(description="Reaction type: 'like' or 'dislike'")
610
+
611
+
612
+ class AssistantProjectFeature(str, Enum):
613
+ """Enum for assistant project feature discriminators."""
614
+
615
+ teams = "teams"
616
+
617
+
618
+ class AssistantProjectMappingRequest(BaseModel):
619
+ """Request body for enabling an assistant for a project feature."""
620
+
621
+ model_config = ConfigDict(extra="ignore", use_enum_values=True)
622
+
623
+ project_name: str = Field(description="Project identifier")
624
+ feature: AssistantProjectFeature = Field(description="Feature discriminator")
625
+
626
+
627
+ class AssistantProjectMappingResponse(BaseModel):
628
+ """Response for assistant project mapping operations."""
629
+
630
+ model_config = ConfigDict(extra="ignore")
631
+
632
+ message: str = Field(description="Operation result message")
@@ -28,6 +28,9 @@ from ..models.assistant import (
28
28
  ExportAssistantPayload,
29
29
  AssistantEvaluationRequest,
30
30
  ReactionRequest,
31
+ AssistantProjectFeature,
32
+ AssistantProjectMappingRequest,
33
+ AssistantProjectMappingResponse,
31
34
  )
32
35
  from ..models.common import PaginationParams
33
36
  from ..utils import ApiRequestHandler, TokenSource
@@ -607,3 +610,81 @@ class AssistantService:
607
610
  Response from the API
608
611
  """
609
612
  return self._api.delete(f"/v1/assistants/{assistant_id}/reactions", dict)
613
+
614
+ def list_project_mapping(
615
+ self,
616
+ feature: Union[AssistantProjectFeature, str],
617
+ project: str,
618
+ page: int = 0,
619
+ per_page: int = 12,
620
+ ) -> list[Assistant]:
621
+ """List assistants enabled for a project feature.
622
+
623
+ Args:
624
+ feature: Feature discriminator (e.g. "teams")
625
+ project: Project name (application name)
626
+ page: 0-indexed page number
627
+ per_page: Items per page (max 100)
628
+
629
+ Returns:
630
+ List of assistants mapped to the project feature
631
+ """
632
+ params = {
633
+ "feature": feature if isinstance(feature, str) else feature.value,
634
+ "project": project,
635
+ "page": page,
636
+ "per_page": per_page,
637
+ }
638
+ return self._api.get(
639
+ "/v1/assistants/projects/mapping", list[Assistant], params=params
640
+ )
641
+
642
+ def enable_project_mapping(
643
+ self,
644
+ assistant_id: str,
645
+ request: AssistantProjectMappingRequest,
646
+ ) -> AssistantProjectMappingResponse:
647
+ """Enable an assistant for a project feature.
648
+
649
+ Idempotent: returns 200 whether the mapping already existed or not.
650
+
651
+ Args:
652
+ assistant_id: UUID of the assistant
653
+ request: Mapping request with project_name and feature
654
+
655
+ Returns:
656
+ AssistantProjectMappingResponse with confirmation message
657
+ """
658
+ return self._api.post(
659
+ f"/v1/assistants/{assistant_id}/projects/mapping",
660
+ AssistantProjectMappingResponse,
661
+ json_data=request.model_dump(exclude_none=True),
662
+ wrap_response=False,
663
+ )
664
+
665
+ def disable_project_mapping(
666
+ self,
667
+ assistant_id: str,
668
+ project: str,
669
+ feature: Union[AssistantProjectFeature, str],
670
+ ) -> AssistantProjectMappingResponse:
671
+ """Disable an assistant for a project feature.
672
+
673
+ Args:
674
+ assistant_id: UUID of the assistant
675
+ project: Project name
676
+ feature: Feature discriminator (e.g. "teams")
677
+
678
+ Returns:
679
+ AssistantProjectMappingResponse with confirmation message
680
+ """
681
+ params = {
682
+ "project": project,
683
+ "feature": feature if isinstance(feature, str) else feature.value,
684
+ }
685
+ return self._api.delete(
686
+ f"/v1/assistants/{assistant_id}/projects/mapping",
687
+ AssistantProjectMappingResponse,
688
+ params=params,
689
+ wrap_response=False,
690
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemie-sdk-python
3
- Version: 0.1.503
3
+ Version: 0.1.504
4
4
  Summary: CodeMie SDK for Python
5
5
  Author: Vadym Vlasenko
6
6
  Author-email: vadym_vlasenko@epam.com
@@ -353,6 +353,48 @@ response = client.assistants.chat_with_version("assistant-id", version_number=2,
353
353
  print(response.generated)
354
354
  ```
355
355
 
356
+ #### Project Feature Mapping
357
+
358
+ Control which assistants have a feature enabled per project. Currently the only supported feature is `teams`.
359
+
360
+ 1. **List assistants with a feature enabled for a project**
361
+ ```python
362
+ from codemie_sdk import AssistantProjectFeature
363
+
364
+ assistants = client.assistants.list_project_mapping(
365
+ feature=AssistantProjectFeature.teams,
366
+ project="my-project",
367
+ page=0,
368
+ per_page=12,
369
+ )
370
+ for a in assistants:
371
+ print(a.name)
372
+ ```
373
+
374
+ 2. **Enable a feature for an assistant on a project**
375
+ ```python
376
+ from codemie_sdk import AssistantProjectFeature, AssistantProjectMappingRequest
377
+
378
+ request = AssistantProjectMappingRequest(
379
+ project_name="my-project",
380
+ feature=AssistantProjectFeature.teams,
381
+ )
382
+ response = client.assistants.enable_project_mapping("assistant-id", request)
383
+ print(response.message)
384
+ ```
385
+
386
+ 3. **Disable a feature for an assistant on a project**
387
+ ```python
388
+ from codemie_sdk import AssistantProjectFeature
389
+
390
+ response = client.assistants.disable_project_mapping(
391
+ "assistant-id",
392
+ project="my-project",
393
+ feature=AssistantProjectFeature.teams,
394
+ )
395
+ print(response.message)
396
+ ```
397
+
356
398
  ### Datasource Service
357
399
 
358
400
  The Datasource service enables managing various types of data sources in CodeMie, including code repositories, Confluence spaces, Jira projects, files, and Google documents.
@@ -1,4 +1,4 @@
1
- codemie_sdk/__init__.py,sha256=etnHL9r4gggqlHhQ4hQPDxVHHYSNUT-L5UlWHXJ4Fpg,7693
1
+ codemie_sdk/__init__.py,sha256=_UfLtQJ46-DnFEbmO46FbyASz6T1pUkXUjPmSzsIwzk,7912
2
2
  codemie_sdk/auth/__init__.py,sha256=IksEj223xEZtJ-cQ0AT9L0Bs9psIJ8QNzDXrPTUQ3xQ,126
3
3
  codemie_sdk/auth/credentials.py,sha256=hO0X3EQWZSlIm0ABhiJo4fIIndm2blB0JZWMaWvsuTE,7774
4
4
  codemie_sdk/client/__init__.py,sha256=yf6C39MmrJ6gK9ZHMhBeynKwUUYVSUTQbKxU8-4qpKg,101
@@ -7,7 +7,7 @@ codemie_sdk/exceptions.py,sha256=uuzvtvYBMzrNGt7Q4k5RVq0Pd8eJ_tR2tLy3pF2ICDs,114
7
7
  codemie_sdk/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  codemie_sdk/models/admin.py,sha256=2UGaO60ZrHHcDcV9thYBVxDyUCvtfPQhs10WswhGFJs,2298
9
9
  codemie_sdk/models/analytics.py,sha256=B29Cqt2Mvqohfjz-keRV5gFBpTKw_iIkF2ARxmEUv-Y,4953
10
- codemie_sdk/models/assistant.py,sha256=zdUOMEn9xG6STER6IfoltkC0hTA2UZXwkpaTRZiFC40,20784
10
+ codemie_sdk/models/assistant.py,sha256=kq-2mDApNdAWtV4-Dx3BJhdvhLpw_IGaYly8Dwy9NFA,21475
11
11
  codemie_sdk/models/categories.py,sha256=eq7_sw-sevNLeWpjaW3N055Xcgbbevs0Bl_rj--maUk,2303
12
12
  codemie_sdk/models/common.py,sha256=ipNNdQlv4Ct1UyIAknjJbrdjjvv0lZJYK6dnPm8wai4,1170
13
13
  codemie_sdk/models/conversation.py,sha256=Sxgg2qvrHsDK2nKIeOrbv7wCdqZ9uSoq-e6nT4D1y_w,6288
@@ -33,7 +33,7 @@ codemie_sdk/models/workflow_state.py,sha256=uP1yLYwPpgPc17xpLwjanvlRzK6zT9qMZR-f
33
33
  codemie_sdk/models/workflow_thoughts.py,sha256=9fE380lMvC23fq677EI_JTk48Nf2jyPg3-mpj9VTx54,579
34
34
  codemie_sdk/services/admin.py,sha256=yk1xdBXDjpdW4OMOdBaURkZhAxak9h-TppKyhStLekc,4006
35
35
  codemie_sdk/services/analytics.py,sha256=HosMPk8B_kmuU5XcJhy5Mjx3ZjIwZAQB0LwDPsdH7SI,14882
36
- codemie_sdk/services/assistant.py,sha256=8rV41Eex0Hgqzsy2LFV3uSphfCyAvlGeSKhPBTdjlYs,20700
36
+ codemie_sdk/services/assistant.py,sha256=1RWZl8LZEea1GB9AAUqu5W2CWL-8th0RENJL7Tcsf3A,23303
37
37
  codemie_sdk/services/categories.py,sha256=1qd98JCcMNdpbos0O1WpMApT6TurE7OuI7zoYewnwk8,5030
38
38
  codemie_sdk/services/codemie_guardrails.py,sha256=O3yCeIQYG8W7z-sVRR4Cw9UVncqP9lPVNxUSaUZrh7I,2833
39
39
  codemie_sdk/services/conversation.py,sha256=lYdNbiA1PeyN3qt0ZuHOIWDgVtP0keNXsDGQ-X-uluU,10447
@@ -57,6 +57,6 @@ codemie_sdk/services/workflow_execution.py,sha256=Nnf_ZJQrK9HiRyCRuUjUu3jXmbH3sn
57
57
  codemie_sdk/services/workflow_execution_state.py,sha256=u1xmGvaHjqvQS5ujhyvJ_Ac7ByjKem2Qe8q0swsmoWw,2045
58
58
  codemie_sdk/utils/__init__.py,sha256=EzK_UrS5KHmAnE73Hci9LaObB5omjVUhIq4svh0gfwo,137
59
59
  codemie_sdk/utils/http.py,sha256=yKWx-K9cFbpstVt0qran42e6MESm0f6XVd8MIctaD5Y,12546
60
- codemie_sdk_python-0.1.503.dist-info/METADATA,sha256=PqokQMw-4RB3JGTlE70W2LpA6HOmiUwrC2gDBAJ8f9Q,36801
61
- codemie_sdk_python-0.1.503.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
62
- codemie_sdk_python-0.1.503.dist-info/RECORD,,
60
+ codemie_sdk_python-0.1.504.dist-info/METADATA,sha256=0MZPRQ0QpfQOLEHMmswMVNiZ9XekC4BieKTRCIhvaFY,37915
61
+ codemie_sdk_python-0.1.504.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
62
+ codemie_sdk_python-0.1.504.dist-info/RECORD,,