codemie-sdk-python 0.1.699__tar.gz → 0.1.701__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 (81) hide show
  1. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/datasource.py +6 -2
  4. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/project.py +5 -0
  5. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/analytics.py +29 -6
  6. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/project.py +6 -0
  7. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/README.md +0 -0
  8. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/__init__.py +0 -0
  9. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/auth/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/auth/credentials.py +0 -0
  11. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/builders/__init__.py +0 -0
  12. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/builders/workflow/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/builders/workflow/builder.py +0 -0
  14. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/builders/workflow/definition.py +0 -0
  15. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/builders/workflow/publish.py +0 -0
  16. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/client/__init__.py +0 -0
  17. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/client/client.py +0 -0
  18. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/exceptions.py +0 -0
  19. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/__init__.py +0 -0
  20. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/a2a.py +0 -0
  21. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/activity_event.py +0 -0
  22. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/admin.py +0 -0
  23. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/analytics.py +0 -0
  24. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/assistant.py +0 -0
  25. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/categories.py +0 -0
  26. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/common.py +0 -0
  27. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/conversation.py +0 -0
  28. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/cost_center.py +0 -0
  29. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/errors.py +0 -0
  30. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/file_operation.py +0 -0
  31. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/guardrails.py +0 -0
  32. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/integration.py +0 -0
  33. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/llm.py +0 -0
  34. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/mcp_config.py +0 -0
  35. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/mermaid.py +0 -0
  36. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/skill.py +0 -0
  37. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/task.py +0 -0
  38. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/user.py +0 -0
  39. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  40. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  41. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  42. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/vendor_runtime.py +0 -0
  43. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  44. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workflow.py +0 -0
  45. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  46. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workflow_state.py +0 -0
  47. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  48. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workflow_transition.py +0 -0
  49. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/models/workspace.py +0 -0
  50. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/a2a.py +0 -0
  51. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/activity_event.py +0 -0
  52. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/admin.py +0 -0
  53. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/assistant.py +0 -0
  54. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/categories.py +0 -0
  55. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  56. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/conversation.py +0 -0
  57. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/cost_center.py +0 -0
  58. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/customer_config_service.py +0 -0
  59. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/datasource.py +0 -0
  60. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/dynamic_config.py +0 -0
  61. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/files.py +0 -0
  62. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/integration.py +0 -0
  63. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/llm.py +0 -0
  64. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/mcp_configs.py +0 -0
  65. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/mermaid.py +0 -0
  66. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/project_budget_groups.py +0 -0
  67. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/skill.py +0 -0
  68. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/task.py +0 -0
  69. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/user.py +0 -0
  70. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  71. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  72. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  73. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/vendor_runtime.py +0 -0
  74. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  75. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/webhook.py +0 -0
  76. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/workflow.py +0 -0
  77. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/workflow_execution.py +0 -0
  78. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  79. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/services/workspace.py +0 -0
  80. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/utils/__init__.py +0 -0
  81. {codemie_sdk_python-0.1.699 → codemie_sdk_python-0.1.701}/src/codemie_sdk/utils/http.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codemie-sdk-python
3
- Version: 0.1.699
3
+ Version: 0.1.701
4
4
  Summary: CodeMie SDK for Python
5
5
  License: Apache-2.0
6
6
  Author: CodeMie
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemie-sdk-python"
3
- version = "0.1.699"
3
+ version = "0.1.701"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = ["CodeMie"]
6
6
  license = "Apache-2.0"
@@ -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(False, alias="projectSpaceVisible")
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(False, alias="projectSpaceVisible")
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",
@@ -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(self, events: list[dict]) -> dict:
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 (an empty object on success)
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={"Content-Type": "application/x-ndjson"},
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(self, events: list[dict]) -> None:
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={"Content-Type": "application/x-ndjson"},
626
+ extra_headers=headers,
610
627
  )
611
628
 
612
- def ingest_cli_analytics_logs(self, payload: dict) -> None:
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
 
@@ -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(