codai-sdk 0.2.1__tar.gz → 0.3.0__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.
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/CHANGELOG.md +16 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/PKG-INFO +1 -1
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/pyproject.toml +1 -1
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/__init__.py +11 -1
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/_operations.py +45 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/_types.py +1009 -3
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/__init__.py +19 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/core.py +13 -0
- codai_sdk-0.3.0/src/codai/resources/environments.py +183 -0
- codai_sdk-0.3.0/src/codai/resources/triggers.py +107 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/tests/test_resources.py +48 -1
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.github/dependabot.yml +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.github/pull_request_template.md +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.github/workflows/publish.yml +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/.gitignore +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/CODE_OF_CONDUCT.md +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/CONTRIBUTING.md +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/LICENSE +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/README.md +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/SECURITY.md +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/examples/agent.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/examples/chat.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/examples/feedback.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/examples/streaming.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/scripts/gen-types.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/scripts/smoke_local.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/_http.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/_base.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/agents.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/chat.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/messages.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/platform.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/responses.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/src/codai/resources/sessions.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/tests/conftest.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/tests/test_http.py +0 -0
- {codai_sdk-0.2.1 → codai_sdk-0.3.0}/tests/test_parity.py +0 -0
|
@@ -6,6 +6,22 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.3.0] - 2026-09-25
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Projects + environments resources (26 operations), restoring full parity with the gateway
|
|
14
|
+
OpenAPI (88 operations): `projects.{list,create,get,update,delete}`,
|
|
15
|
+
`environments.{list,create,enroll,get,update,start,stop,archive,destroy,enroll_token}`,
|
|
16
|
+
`environments.members.{list,add,set_ssh_key,set_role,remove}`,
|
|
17
|
+
`environments.ports.{list,set,remove}` and `environments.secrets.{list,set,remove}`.
|
|
18
|
+
`enroll`, `create` and `enroll_token` are never retried (the enrolment token is single-use).
|
|
19
|
+
- `_types.py` regenerated: `Project*` and `Environment*` TypedDicts.
|
|
20
|
+
- `system_one.create({"state", "questions"})` — typed decisions from codai-s1 (`POST /v1/systemone`,
|
|
21
|
+
Choice / Score / Noul with calibrated probabilities). Raises on 503 `s1_unavailable`; keep a fallback.
|
|
22
|
+
- `triggers.*`, `notifications.*`, `environments.members.ssh_cert`, `environments.ssh_ca`,
|
|
23
|
+
`environments.tasks.{list,create,get}` — parity with the TypeScript SDK.
|
|
24
|
+
|
|
9
25
|
## [0.2.1] - 2026-09-24
|
|
10
26
|
|
|
11
27
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: codai-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Official Python SDK for the codai AI gateway — chat, messages, responses, streaming, agents, sessions, hosts, tasks, account.
|
|
5
5
|
Project-URL: Homepage, https://codai.ro
|
|
6
6
|
Project-URL: Repository, https://github.com/codai-ro/codai-sdk-python
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "codai-sdk"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "Official Python SDK for the codai AI gateway — chat, messages, responses, streaming, agents, sessions, hosts, tasks, account."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -43,20 +43,25 @@ from .resources import (
|
|
|
43
43
|
ChatStream,
|
|
44
44
|
Devices,
|
|
45
45
|
Embeddings,
|
|
46
|
+
Environments,
|
|
46
47
|
EphemeralToken,
|
|
47
48
|
Feedback,
|
|
48
49
|
Health,
|
|
49
50
|
Hosts,
|
|
50
51
|
Messages,
|
|
51
52
|
Models,
|
|
53
|
+
Notifications,
|
|
52
54
|
Orgs,
|
|
53
55
|
PhoneModels,
|
|
56
|
+
Projects,
|
|
54
57
|
Receipts,
|
|
55
58
|
Responses,
|
|
56
59
|
Sessions,
|
|
60
|
+
SystemOne,
|
|
57
61
|
Tasks,
|
|
58
62
|
Tokens,
|
|
59
63
|
Tools,
|
|
64
|
+
Triggers,
|
|
60
65
|
)
|
|
61
66
|
|
|
62
67
|
__all__ = [
|
|
@@ -75,7 +80,7 @@ __all__ = [
|
|
|
75
80
|
"frame_json",
|
|
76
81
|
"read_sse",
|
|
77
82
|
]
|
|
78
|
-
__version__ = "0.
|
|
83
|
+
__version__ = "0.3.0"
|
|
79
84
|
|
|
80
85
|
|
|
81
86
|
class _CallableGroup:
|
|
@@ -134,6 +139,7 @@ class Codai:
|
|
|
134
139
|
self.messages = Messages(http)
|
|
135
140
|
self.responses = Responses(http)
|
|
136
141
|
self.audio = Audio(http)
|
|
142
|
+
self.system_one = SystemOne(http)
|
|
137
143
|
self.tokens = Tokens(http)
|
|
138
144
|
self.health = Health(http)
|
|
139
145
|
self.agents = Agents(http)
|
|
@@ -143,9 +149,13 @@ class Codai:
|
|
|
143
149
|
self.devices = Devices(http)
|
|
144
150
|
self.hosts = Hosts(http)
|
|
145
151
|
self.orgs = Orgs(http)
|
|
152
|
+
self.projects = Projects(http)
|
|
153
|
+
self.environments = Environments(http)
|
|
146
154
|
self.account = Account(http)
|
|
147
155
|
self.receipt = Receipts(http)
|
|
148
156
|
self.phone_models = PhoneModels(http)
|
|
157
|
+
self.triggers = Triggers(http)
|
|
158
|
+
self.notifications = Notifications(http)
|
|
149
159
|
|
|
150
160
|
self.chat: Any = _CallableGroup(Chat(http), self._legacy_chat)
|
|
151
161
|
self.embeddings: Any = _CallableGroup(Embeddings(http), self._legacy_embeddings)
|
|
@@ -16,6 +16,7 @@ OPERATION_METHODS: Dict[str, str] = {
|
|
|
16
16
|
"createMessage": "messages.create",
|
|
17
17
|
# Embeddings & Audio
|
|
18
18
|
"createEmbeddings": "embeddings.create",
|
|
19
|
+
"createSystemOne": "system_one.create",
|
|
19
20
|
"createTranscription": "audio.transcribe",
|
|
20
21
|
"createSpeech": "audio.speech",
|
|
21
22
|
"createEphemeralToken": "tokens.create",
|
|
@@ -78,6 +79,50 @@ OPERATION_METHODS: Dict[str, str] = {
|
|
|
78
79
|
"listOrgMembers": "orgs.members.list",
|
|
79
80
|
"addOrgMember": "orgs.members.add",
|
|
80
81
|
"removeOrgMember": "orgs.members.remove",
|
|
82
|
+
# Projects
|
|
83
|
+
"listProjects": "projects.list",
|
|
84
|
+
"createProject": "projects.create",
|
|
85
|
+
"getProject": "projects.get",
|
|
86
|
+
"updateProject": "projects.update",
|
|
87
|
+
"deleteProject": "projects.delete",
|
|
88
|
+
# Environments
|
|
89
|
+
"listEnvironments": "environments.list",
|
|
90
|
+
"createEnvironment": "environments.create",
|
|
91
|
+
"enrollEnvironment": "environments.enroll",
|
|
92
|
+
"getEnvironment": "environments.get",
|
|
93
|
+
"updateEnvironment": "environments.update",
|
|
94
|
+
"startEnvironment": "environments.start",
|
|
95
|
+
"stopEnvironment": "environments.stop",
|
|
96
|
+
"archiveEnvironment": "environments.archive",
|
|
97
|
+
"destroyEnvironment": "environments.destroy",
|
|
98
|
+
"createEnvironmentEnrollToken": "environments.enroll_token",
|
|
99
|
+
"listEnvironmentMembers": "environments.members.list",
|
|
100
|
+
"addEnvironmentMember": "environments.members.add",
|
|
101
|
+
"setMyEnvironmentSshKey": "environments.members.set_ssh_key",
|
|
102
|
+
"setEnvironmentMemberRole": "environments.members.set_role",
|
|
103
|
+
"removeEnvironmentMember": "environments.members.remove",
|
|
104
|
+
"listEnvironmentPorts": "environments.ports.list",
|
|
105
|
+
"setEnvironmentPort": "environments.ports.set",
|
|
106
|
+
"removeEnvironmentPort": "environments.ports.remove",
|
|
107
|
+
"listEnvironmentSecrets": "environments.secrets.list",
|
|
108
|
+
"setEnvironmentSecret": "environments.secrets.set",
|
|
109
|
+
"removeEnvironmentSecret": "environments.secrets.remove",
|
|
110
|
+
"issueMyEnvironmentSshCert": "environments.members.ssh_cert",
|
|
111
|
+
"getEnvironmentSshCa": "environments.ssh_ca",
|
|
112
|
+
"listEnvironmentTasks": "environments.tasks.list",
|
|
113
|
+
"createEnvironmentTask": "environments.tasks.create",
|
|
114
|
+
"getEnvironmentTask": "environments.tasks.get",
|
|
115
|
+
"listTriggers": "triggers.list",
|
|
116
|
+
"createTrigger": "triggers.create",
|
|
117
|
+
"updateTrigger": "triggers.update",
|
|
118
|
+
"deleteTrigger": "triggers.delete",
|
|
119
|
+
"rotateTriggerSecret": "triggers.rotate_secret",
|
|
120
|
+
"setTriggerSecret": "triggers.set_secret",
|
|
121
|
+
"testTrigger": "triggers.test",
|
|
122
|
+
"listTriggerEvents": "triggers.events",
|
|
123
|
+
"receiveTriggerHook": "triggers.fire_hook",
|
|
124
|
+
"listNotifications": "notifications.list",
|
|
125
|
+
"markNotificationsRead": "notifications.mark_read",
|
|
81
126
|
# Account
|
|
82
127
|
"getAccount": "account.get",
|
|
83
128
|
"patchAccount": "account.update",
|