codemie-sdk-python 0.1.699__py3-none-any.whl → 0.1.701__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/models/datasource.py +6 -2
- codemie_sdk/models/project.py +5 -0
- codemie_sdk/services/analytics.py +29 -6
- codemie_sdk/services/project.py +6 -0
- {codemie_sdk_python-0.1.699.dist-info → codemie_sdk_python-0.1.701.dist-info}/METADATA +1 -1
- {codemie_sdk_python-0.1.699.dist-info → codemie_sdk_python-0.1.701.dist-info}/RECORD +7 -7
- {codemie_sdk_python-0.1.699.dist-info → codemie_sdk_python-0.1.701.dist-info}/WHEEL +0 -0
codemie_sdk/models/datasource.py
CHANGED
|
@@ -394,7 +394,9 @@ class CodeAnalysisDataSourceRequest(BaseModel):
|
|
|
394
394
|
name: str = Field(..., description="Datasource name")
|
|
395
395
|
description: str | None = Field(None, description="Datasource description")
|
|
396
396
|
project_name: str = Field(..., description="Project name")
|
|
397
|
-
project_space_visible: bool = Field(
|
|
397
|
+
project_space_visible: bool = Field(
|
|
398
|
+
False, description="Make the datasource visible to the whole project"
|
|
399
|
+
)
|
|
398
400
|
branch: str | None = Field(None, description="Git branch")
|
|
399
401
|
api_url: str = Field(..., description="Repository URL")
|
|
400
402
|
access_token: str = Field(..., description="Access token for repository")
|
|
@@ -412,7 +414,9 @@ class CodeExplorationDataSourceRequest(BaseModel):
|
|
|
412
414
|
name: str = Field(..., description="Datasource name")
|
|
413
415
|
description: str | None = Field(None, description="Datasource description")
|
|
414
416
|
project_name: str = Field(..., description="Project name")
|
|
415
|
-
project_space_visible: bool = Field(
|
|
417
|
+
project_space_visible: bool = Field(
|
|
418
|
+
False, description="Make the datasource visible to the whole project"
|
|
419
|
+
)
|
|
416
420
|
code_analysis_datasource_ids: list[str] = Field(
|
|
417
421
|
...,
|
|
418
422
|
alias="code_analysis_datasource_ids",
|
codemie_sdk/models/project.py
CHANGED
|
@@ -81,6 +81,7 @@ class ProjectListItem(BaseModel):
|
|
|
81
81
|
budgets: list[ProjectBudgetItem] | None = []
|
|
82
82
|
chargeback_enabled: bool = False
|
|
83
83
|
chargeback_attribution: str = "project"
|
|
84
|
+
cli_analytics_enabled: bool | None = None
|
|
84
85
|
|
|
85
86
|
|
|
86
87
|
class PaginationInfo(BaseModel):
|
|
@@ -119,6 +120,7 @@ class ProjectDetailResponse(BaseModel):
|
|
|
119
120
|
cost_center_name: str | None = None
|
|
120
121
|
members: list[ProjectMember]
|
|
121
122
|
chargeback_attribution: str = "project"
|
|
123
|
+
cli_analytics_enabled: bool | None = None
|
|
122
124
|
|
|
123
125
|
|
|
124
126
|
class ProjectCreateRequest(BaseModel):
|
|
@@ -134,6 +136,7 @@ class ProjectCreateRequest(BaseModel):
|
|
|
134
136
|
)
|
|
135
137
|
description: str | None = Field(default=None, description="Project description")
|
|
136
138
|
cost_center_id: UUID | None = None
|
|
139
|
+
cli_analytics_enabled: bool | None = None
|
|
137
140
|
|
|
138
141
|
|
|
139
142
|
class ProjectCreateResponse(BaseModel):
|
|
@@ -151,6 +154,7 @@ class ProjectCreateResponse(BaseModel):
|
|
|
151
154
|
cost_center_name: str | None = None
|
|
152
155
|
enforce_member_spend_limits: bool = False
|
|
153
156
|
chargeback_attribution: str = "project"
|
|
157
|
+
cli_analytics_enabled: bool | None = None
|
|
154
158
|
|
|
155
159
|
|
|
156
160
|
# PATCH /v1/projects/{name} returns the same shape as the create response
|
|
@@ -174,6 +178,7 @@ class ProjectUpdateRequest(BaseModel):
|
|
|
174
178
|
clear_cost_center: bool = False
|
|
175
179
|
enforce_member_spend_limits: bool | None = None
|
|
176
180
|
chargeback_attribution: str | None = None
|
|
181
|
+
cli_analytics_enabled: bool | None = None
|
|
177
182
|
|
|
178
183
|
|
|
179
184
|
class ProjectOwnershipUpdateRequest(BaseModel):
|
|
@@ -550,7 +550,9 @@ class AnalyticsService:
|
|
|
550
550
|
wrap_response=False,
|
|
551
551
|
)
|
|
552
552
|
|
|
553
|
-
def send_cli_hook_events(
|
|
553
|
+
def send_cli_hook_events(
|
|
554
|
+
self, events: list[dict], project: str | None = None
|
|
555
|
+
) -> dict:
|
|
554
556
|
"""POST /v1/analytics/cli-analytics/event-hooks — ingest CLI plugin hook events.
|
|
555
557
|
|
|
556
558
|
The events are sent as NDJSON (one JSON object per line), the format the
|
|
@@ -559,16 +561,23 @@ class AnalyticsService:
|
|
|
559
561
|
|
|
560
562
|
Args:
|
|
561
563
|
events: Hook events, e.g. ``{"type": "agent.session.start", "session_id": ...}``
|
|
564
|
+
project: Project name sent as ``X-CodeMie-Project``; the server discards
|
|
565
|
+
the batch (HTTP 200) when it is missing, unknown or has CLI analytics
|
|
566
|
+
disabled. None sends no header.
|
|
562
567
|
|
|
563
568
|
Returns:
|
|
564
|
-
Ingest response body
|
|
569
|
+
Ingest response body: an empty object on success, or the discard body
|
|
570
|
+
``{"accepted": 0, "dropped": N, "reason": ...}`` (never raised on)
|
|
565
571
|
"""
|
|
566
572
|
body = "\n".join(json.dumps(event) for event in events) + "\n"
|
|
573
|
+
headers = {"Content-Type": "application/x-ndjson"}
|
|
574
|
+
if project is not None:
|
|
575
|
+
headers["X-CodeMie-Project"] = project
|
|
567
576
|
return self._api.post(
|
|
568
577
|
"/v1/analytics/cli-analytics/event-hooks",
|
|
569
578
|
dict,
|
|
570
579
|
data=body.encode("utf-8"),
|
|
571
|
-
extra_headers=
|
|
580
|
+
extra_headers=headers,
|
|
572
581
|
wrap_response=False,
|
|
573
582
|
)
|
|
574
583
|
|
|
@@ -591,7 +600,9 @@ class AnalyticsService:
|
|
|
591
600
|
|
|
592
601
|
# ── CLI Analytics: /v1/analytics/cli-analytics/* ─────────────────────────
|
|
593
602
|
|
|
594
|
-
def ingest_cli_analytics_event_hooks(
|
|
603
|
+
def ingest_cli_analytics_event_hooks(
|
|
604
|
+
self, events: list[dict], project: str | None = None
|
|
605
|
+
) -> None:
|
|
595
606
|
"""POST /v1/analytics/cli-analytics/event-hooks — send CLI hook events.
|
|
596
607
|
|
|
597
608
|
The endpoint takes NDJSON (one event per line); each event is posted as
|
|
@@ -599,26 +610,38 @@ class AnalyticsService:
|
|
|
599
610
|
|
|
600
611
|
Args:
|
|
601
612
|
events: Hook events, e.g. ``agent.session.start``, ``agent.usage.request``
|
|
613
|
+
project: Project name sent as ``X-CodeMie-Project``. The server stores the
|
|
614
|
+
batch only for an existing project with CLI analytics enabled that the
|
|
615
|
+
sender may use; otherwise it answers HTTP 200 and discards it.
|
|
602
616
|
"""
|
|
617
|
+
headers = {"Content-Type": "application/x-ndjson"}
|
|
618
|
+
if project is not None:
|
|
619
|
+
headers["X-CodeMie-Project"] = project
|
|
603
620
|
for event in events:
|
|
604
621
|
self._api.post(
|
|
605
622
|
"/v1/analytics/cli-analytics/event-hooks",
|
|
606
623
|
dict,
|
|
607
624
|
json_data=event,
|
|
608
625
|
wrap_response=False,
|
|
609
|
-
extra_headers=
|
|
626
|
+
extra_headers=headers,
|
|
610
627
|
)
|
|
611
628
|
|
|
612
|
-
def ingest_cli_analytics_logs(
|
|
629
|
+
def ingest_cli_analytics_logs(
|
|
630
|
+
self, payload: dict, project: str | None = None
|
|
631
|
+
) -> None:
|
|
613
632
|
"""POST /v1/analytics/cli-analytics/logs — send OTLP logs as JSON.
|
|
614
633
|
|
|
615
634
|
Args:
|
|
616
635
|
payload: An OTLP ``ExportLogsServiceRequest`` in its JSON form
|
|
636
|
+
project: Project name sent as ``X-CodeMie-Project`` (see
|
|
637
|
+
``ingest_cli_analytics_event_hooks`` for the server behaviour)
|
|
617
638
|
"""
|
|
639
|
+
headers = {"X-CodeMie-Project": project} if project is not None else None
|
|
618
640
|
self._api.post(
|
|
619
641
|
"/v1/analytics/cli-analytics/logs",
|
|
620
642
|
dict,
|
|
621
643
|
json_data=payload,
|
|
644
|
+
extra_headers=headers,
|
|
622
645
|
wrap_response=False,
|
|
623
646
|
)
|
|
624
647
|
|
codemie_sdk/services/project.py
CHANGED
|
@@ -57,6 +57,7 @@ class ProjectService:
|
|
|
57
57
|
description: str | None = None,
|
|
58
58
|
cost_center_id: UUID | None = None,
|
|
59
59
|
display_name: str | None = None,
|
|
60
|
+
cli_analytics_enabled: bool | None = None,
|
|
60
61
|
) -> ProjectCreateResponse:
|
|
61
62
|
"""Create a new shared project.
|
|
62
63
|
|
|
@@ -65,6 +66,7 @@ class ProjectService:
|
|
|
65
66
|
description: Project description (optional)
|
|
66
67
|
cost_center_id: Optional cost center ID
|
|
67
68
|
display_name: Human-friendly display name (max 150 chars)
|
|
69
|
+
cli_analytics_enabled: Enable CLI analytics ingestion (None = not sent)
|
|
68
70
|
|
|
69
71
|
Returns:
|
|
70
72
|
ProjectCreateResponse with project details
|
|
@@ -77,6 +79,7 @@ class ProjectService:
|
|
|
77
79
|
description=description,
|
|
78
80
|
cost_center_id=cost_center_id,
|
|
79
81
|
display_name=display_name,
|
|
82
|
+
cli_analytics_enabled=cli_analytics_enabled,
|
|
80
83
|
)
|
|
81
84
|
|
|
82
85
|
return self._api.post(
|
|
@@ -163,6 +166,7 @@ class ProjectService:
|
|
|
163
166
|
enforce_member_spend_limits: bool | None = None,
|
|
164
167
|
display_name: str | None = None,
|
|
165
168
|
chargeback_attribution: str | None = None,
|
|
169
|
+
cli_analytics_enabled: bool | None = None,
|
|
166
170
|
) -> ProjectUpdateResponse:
|
|
167
171
|
"""Update a project.
|
|
168
172
|
|
|
@@ -177,6 +181,7 @@ class ProjectService:
|
|
|
177
181
|
enforce_member_spend_limits: Enable/disable per-member spend enforcement
|
|
178
182
|
display_name: Human-friendly display name (max 150 chars)
|
|
179
183
|
chargeback_attribution: Chargeback attribution mode ("project" or "cost_center")
|
|
184
|
+
cli_analytics_enabled: Enable/disable CLI analytics ingestion (None = not sent)
|
|
180
185
|
|
|
181
186
|
Returns:
|
|
182
187
|
ProjectUpdateResponse with updated project details
|
|
@@ -194,6 +199,7 @@ class ProjectService:
|
|
|
194
199
|
enforce_member_spend_limits=enforce_member_spend_limits,
|
|
195
200
|
display_name=display_name,
|
|
196
201
|
chargeback_attribution=chargeback_attribution,
|
|
202
|
+
cli_analytics_enabled=cli_analytics_enabled,
|
|
197
203
|
)
|
|
198
204
|
|
|
199
205
|
return self._api.patch(
|
|
@@ -19,7 +19,7 @@ codemie_sdk/models/categories.py,sha256=eq7_sw-sevNLeWpjaW3N055Xcgbbevs0Bl_rj--m
|
|
|
19
19
|
codemie_sdk/models/common.py,sha256=ipNNdQlv4Ct1UyIAknjJbrdjjvv0lZJYK6dnPm8wai4,1170
|
|
20
20
|
codemie_sdk/models/conversation.py,sha256=r5gV5BD-Euj4OfeLYn6NBiO-S6uFQtwACVobvFgLUcA,10204
|
|
21
21
|
codemie_sdk/models/cost_center.py,sha256=X2hyQ2iewtbG5y9X5qUh1roZ0MJs_i7Vh0Ojh9aut8I,1597
|
|
22
|
-
codemie_sdk/models/datasource.py,sha256=
|
|
22
|
+
codemie_sdk/models/datasource.py,sha256=NOI7w9pVBhEvDnAM8PpeZc8108y7_angEdOfFQIgpK0,17110
|
|
23
23
|
codemie_sdk/models/errors.py,sha256=tQXoPUhM2U95NoyTxsSSJws8PQ-Fr3iOQQ8IjJCsx78,11658
|
|
24
24
|
codemie_sdk/models/file_operation.py,sha256=h5UBCCAbQQGm1EavF0AHn_dNE2t_Cc9be20lv_K5Vo8,722
|
|
25
25
|
codemie_sdk/models/guardrails.py,sha256=813PRnu9VEF6hoUB-lw5xG_qAZXPic38qL40AwYkSMQ,2114
|
|
@@ -27,7 +27,7 @@ codemie_sdk/models/integration.py,sha256=yBV28vZ8oN0oNRNHdDPL3UUSJqNga1YodABIfX8
|
|
|
27
27
|
codemie_sdk/models/llm.py,sha256=ViADvsSAkc85YQyPUkGE3ZvMc5pnHWHO0_rOkLSTfu4,1333
|
|
28
28
|
codemie_sdk/models/mcp_config.py,sha256=mvD2utb4fthjNGAIkZKEkTtHSQQyF2WEYrA7tn-e0Lo,2184
|
|
29
29
|
codemie_sdk/models/mermaid.py,sha256=dhRgX-itvfyrt0LUg5pbSo0CTH5PewiegqcZn3hWggU,675
|
|
30
|
-
codemie_sdk/models/project.py,sha256=
|
|
30
|
+
codemie_sdk/models/project.py,sha256=9nMsPNw0mUHud2sAISXrJx2lXz9VKw2Dn-ABq53UgZ8,7600
|
|
31
31
|
codemie_sdk/models/skill.py,sha256=KE4lsF8TMxIQa_UE0oRDMT6XIEHqKjsDyi0HYKEp1mM,6918
|
|
32
32
|
codemie_sdk/models/task.py,sha256=YHu5DRnECS2wnqIWZ_YH8Z72p1I4aV3xWFW5joxN_8Q,1442
|
|
33
33
|
codemie_sdk/models/user.py,sha256=YqPWzTgIKF-7Jw6aV7RD__su1iahEJPGaDR6Px-B4bU,3848
|
|
@@ -45,7 +45,7 @@ codemie_sdk/models/workspace.py,sha256=xYnVO1Pnd0l0PSBe2pwP80C2ZvYBc2ESo6OH_G0cO
|
|
|
45
45
|
codemie_sdk/services/a2a.py,sha256=JI_heDKmQ1qYGIES_6qPosHRyVb73tKs4v7uTGpzXx4,1026
|
|
46
46
|
codemie_sdk/services/activity_event.py,sha256=KoD0DyeqJ0CmQPA4PAXH4uGIAQCgcJbYwDnv-MCckGc,3630
|
|
47
47
|
codemie_sdk/services/admin.py,sha256=yk1xdBXDjpdW4OMOdBaURkZhAxak9h-TppKyhStLekc,4006
|
|
48
|
-
codemie_sdk/services/analytics.py,sha256=
|
|
48
|
+
codemie_sdk/services/analytics.py,sha256=yTvBSzDPG2r0BCBukDlnnElvFxLNniyCb8qtYu6foZU,24328
|
|
49
49
|
codemie_sdk/services/assistant.py,sha256=4pgwUXyqego0SUThX2B6FHtsPYmvPzKgr92TEgxAIoA,28835
|
|
50
50
|
codemie_sdk/services/categories.py,sha256=1qd98JCcMNdpbos0O1WpMApT6TurE7OuI7zoYewnwk8,5030
|
|
51
51
|
codemie_sdk/services/codemie_guardrails.py,sha256=O3yCeIQYG8W7z-sVRR4Cw9UVncqP9lPVNxUSaUZrh7I,2833
|
|
@@ -59,7 +59,7 @@ codemie_sdk/services/integration.py,sha256=n4ggDedJ2GCI5mTgZNfrYE49uzLsp_BKYKMdT
|
|
|
59
59
|
codemie_sdk/services/llm.py,sha256=GQWIi359f99uU4YRnAdpbyae1kXp1G5OpVgJNIIn7-8,1132
|
|
60
60
|
codemie_sdk/services/mcp_configs.py,sha256=MrCiWJ6-ezXE9NOTgOfHDhfyQokaumGp1rwB4IAKXzs,2466
|
|
61
61
|
codemie_sdk/services/mermaid.py,sha256=7cLykdrJVW576raUbON3yhuWnbGaXl8rX1QfVwbu2JE,2246
|
|
62
|
-
codemie_sdk/services/project.py,sha256=
|
|
62
|
+
codemie_sdk/services/project.py,sha256=IRwFZi9L1UNAW9Z37FnZXaw6527mvSzvtj-oq5_lzWg,14690
|
|
63
63
|
codemie_sdk/services/project_budget_groups.py,sha256=B7QJt3sh_LV3lfwALZlxUq0SLR30BWafHcS6eHyOh8Y,5471
|
|
64
64
|
codemie_sdk/services/skill.py,sha256=0mExdeKTMNqkEpKafD0ya1WyLj9CMCFaprkggKYqnQg,13216
|
|
65
65
|
codemie_sdk/services/task.py,sha256=UaYh__xGF7VKWCJKPrncVjTvx46Gz1AN9XczPVL71oA,1052
|
|
@@ -76,6 +76,6 @@ codemie_sdk/services/workflow_execution_state.py,sha256=u1xmGvaHjqvQS5ujhyvJ_Ac7
|
|
|
76
76
|
codemie_sdk/services/workspace.py,sha256=eLwZ0fhi1BfOesrXaQlTdOll8q7ENP9b_jb5eybKSVw,5038
|
|
77
77
|
codemie_sdk/utils/__init__.py,sha256=EzK_UrS5KHmAnE73Hci9LaObB5omjVUhIq4svh0gfwo,137
|
|
78
78
|
codemie_sdk/utils/http.py,sha256=PWejBKa5pwzQ5eLVhdN8lYKEu1B1QtwGTRmZfnGFL6c,14158
|
|
79
|
-
codemie_sdk_python-0.1.
|
|
80
|
-
codemie_sdk_python-0.1.
|
|
81
|
-
codemie_sdk_python-0.1.
|
|
79
|
+
codemie_sdk_python-0.1.701.dist-info/METADATA,sha256=ye87_G2DgsAEL7He18o7mhNeb9h6rxXdXTrnH8Ry2kw,47938
|
|
80
|
+
codemie_sdk_python-0.1.701.dist-info/WHEEL,sha256=L-WvLdSBvJWHXv5zrQxDvNRnIgoBzLUpcbuiw19KCuQ,88
|
|
81
|
+
codemie_sdk_python-0.1.701.dist-info/RECORD,,
|
|
File without changes
|