letta-client 0.1.318__py3-none-any.whl → 0.1.320__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.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

Files changed (211) hide show
  1. letta_client/__init__.py +51 -9
  2. letta_client/agents/__init__.py +6 -2
  3. letta_client/agents/client.py +50 -213
  4. letta_client/agents/files/client.py +51 -6
  5. letta_client/agents/files/raw_client.py +94 -9
  6. letta_client/agents/messages/__init__.py +2 -2
  7. letta_client/agents/messages/client.py +116 -26
  8. letta_client/agents/messages/raw_client.py +121 -19
  9. letta_client/agents/messages/types/__init__.py +2 -2
  10. letta_client/agents/messages/types/{messages_preview_raw_payload_request.py → messages_preview_request.py} +1 -1
  11. letta_client/agents/raw_client.py +50 -253
  12. letta_client/agents/types/__init__.py +4 -0
  13. letta_client/agents/types/agents_list_request_order.py +5 -0
  14. letta_client/agents/types/agents_list_request_order_by.py +5 -0
  15. letta_client/archives/__init__.py +7 -0
  16. letta_client/archives/client.py +362 -0
  17. letta_client/archives/raw_client.py +448 -0
  18. letta_client/archives/types/__init__.py +7 -0
  19. letta_client/archives/types/list_archives_request_order.py +5 -0
  20. letta_client/base_client.py +3 -6
  21. letta_client/batches/__init__.py +5 -0
  22. letta_client/batches/client.py +68 -8
  23. letta_client/batches/messages/__init__.py +7 -0
  24. letta_client/{messages → batches/messages}/client.py +50 -43
  25. letta_client/{messages → batches/messages}/raw_client.py +52 -45
  26. letta_client/batches/messages/types/__init__.py +7 -0
  27. letta_client/batches/messages/types/messages_list_request_order.py +5 -0
  28. letta_client/batches/raw_client.py +71 -6
  29. letta_client/batches/types/__init__.py +7 -0
  30. letta_client/batches/types/batches_list_request_order.py +5 -0
  31. letta_client/blocks/__init__.py +3 -1
  32. letta_client/blocks/agents/__init__.py +3 -0
  33. letta_client/blocks/agents/client.py +57 -2
  34. letta_client/blocks/agents/raw_client.py +51 -0
  35. letta_client/blocks/agents/types/__init__.py +7 -0
  36. letta_client/blocks/agents/types/agents_list_request_order.py +5 -0
  37. letta_client/blocks/client.py +25 -4
  38. letta_client/blocks/raw_client.py +25 -4
  39. letta_client/blocks/types/__init__.py +7 -0
  40. letta_client/blocks/types/blocks_list_request_order.py +5 -0
  41. letta_client/core/client_wrapper.py +2 -2
  42. letta_client/errors/__init__.py +9 -1
  43. letta_client/errors/internal_server_error.py +10 -0
  44. letta_client/folders/__init__.py +14 -2
  45. letta_client/folders/agents/__init__.py +7 -0
  46. letta_client/folders/agents/client.py +176 -0
  47. letta_client/folders/agents/raw_client.py +182 -0
  48. letta_client/folders/agents/types/__init__.py +7 -0
  49. letta_client/folders/agents/types/agents_list_request_order.py +5 -0
  50. letta_client/folders/client.py +96 -86
  51. letta_client/folders/files/__init__.py +3 -0
  52. letta_client/folders/files/client.py +49 -10
  53. letta_client/folders/files/raw_client.py +41 -10
  54. letta_client/folders/files/types/__init__.py +7 -0
  55. letta_client/folders/files/types/files_list_request_order.py +5 -0
  56. letta_client/folders/passages/__init__.py +3 -0
  57. letta_client/folders/passages/client.py +43 -14
  58. letta_client/folders/passages/raw_client.py +35 -14
  59. letta_client/folders/passages/types/__init__.py +7 -0
  60. letta_client/folders/passages/types/passages_list_request_order.py +5 -0
  61. letta_client/folders/raw_client.py +83 -104
  62. letta_client/folders/types/__init__.py +7 -0
  63. letta_client/folders/types/folders_list_request_order.py +5 -0
  64. letta_client/groups/__init__.py +4 -2
  65. letta_client/groups/client.py +27 -6
  66. letta_client/groups/messages/__init__.py +2 -2
  67. letta_client/groups/messages/client.py +39 -18
  68. letta_client/groups/messages/raw_client.py +35 -14
  69. letta_client/groups/messages/types/__init__.py +2 -1
  70. letta_client/groups/messages/types/messages_list_request_order.py +5 -0
  71. letta_client/groups/raw_client.py +27 -6
  72. letta_client/groups/types/__init__.py +2 -1
  73. letta_client/groups/types/groups_list_request_order.py +5 -0
  74. letta_client/identities/__init__.py +12 -2
  75. letta_client/identities/agents/__init__.py +7 -0
  76. letta_client/identities/agents/client.py +177 -0
  77. letta_client/identities/agents/raw_client.py +183 -0
  78. letta_client/identities/agents/types/__init__.py +7 -0
  79. letta_client/identities/agents/types/agents_list_request_order.py +5 -0
  80. letta_client/identities/blocks/__init__.py +7 -0
  81. letta_client/identities/blocks/client.py +177 -0
  82. letta_client/identities/blocks/raw_client.py +183 -0
  83. letta_client/identities/blocks/types/__init__.py +7 -0
  84. letta_client/identities/blocks/types/blocks_list_request_order.py +5 -0
  85. letta_client/identities/client.py +37 -0
  86. letta_client/identities/raw_client.py +27 -0
  87. letta_client/identities/types/__init__.py +7 -0
  88. letta_client/identities/types/identities_list_request_order.py +5 -0
  89. letta_client/jobs/client.py +10 -2
  90. letta_client/jobs/raw_client.py +10 -2
  91. letta_client/models/__init__.py +3 -0
  92. letta_client/models/client.py +3 -0
  93. letta_client/{embedding_models → models/embeddings}/client.py +14 -14
  94. letta_client/{embedding_models → models/embeddings}/raw_client.py +10 -10
  95. letta_client/providers/__init__.py +3 -0
  96. letta_client/providers/client.py +151 -82
  97. letta_client/providers/raw_client.py +165 -72
  98. letta_client/providers/types/__init__.py +7 -0
  99. letta_client/providers/types/providers_list_request_order.py +5 -0
  100. letta_client/runs/__init__.py +2 -1
  101. letta_client/runs/client.py +21 -0
  102. letta_client/runs/messages/__init__.py +3 -0
  103. letta_client/runs/messages/client.py +15 -49
  104. letta_client/runs/messages/raw_client.py +13 -49
  105. letta_client/runs/messages/types/__init__.py +7 -0
  106. letta_client/runs/messages/types/messages_list_request_order.py +5 -0
  107. letta_client/runs/raw_client.py +21 -0
  108. letta_client/steps/__init__.py +13 -3
  109. letta_client/steps/client.py +32 -83
  110. letta_client/steps/feedback/client.py +21 -6
  111. letta_client/steps/feedback/raw_client.py +29 -6
  112. letta_client/steps/messages/__init__.py +7 -0
  113. letta_client/steps/messages/client.py +177 -0
  114. letta_client/steps/messages/raw_client.py +183 -0
  115. letta_client/steps/messages/types/__init__.py +8 -0
  116. letta_client/steps/messages/types/messages_list_request_order.py +5 -0
  117. letta_client/steps/messages/types/messages_list_response_item.py +25 -0
  118. letta_client/steps/metrics/client.py +110 -0
  119. letta_client/steps/metrics/raw_client.py +122 -0
  120. letta_client/steps/raw_client.py +17 -107
  121. letta_client/steps/trace/__init__.py +4 -0
  122. letta_client/steps/trace/client.py +110 -0
  123. letta_client/steps/trace/raw_client.py +122 -0
  124. letta_client/steps/types/__init__.py +2 -1
  125. letta_client/steps/types/steps_list_request_order.py +5 -0
  126. letta_client/tags/__init__.py +3 -0
  127. letta_client/tags/client.py +57 -4
  128. letta_client/tags/raw_client.py +49 -2
  129. letta_client/tags/types/__init__.py +7 -0
  130. letta_client/tags/types/tags_list_request_order.py +5 -0
  131. letta_client/telemetry/client.py +8 -0
  132. letta_client/telemetry/raw_client.py +8 -0
  133. letta_client/templates/__init__.py +64 -0
  134. letta_client/templates/agents/__init__.py +58 -0
  135. letta_client/templates/agents/types/__init__.py +66 -0
  136. letta_client/templates/agents/types/agents_create_response.py +6 -0
  137. letta_client/templates/agents/types/agents_create_response_group.py +52 -0
  138. letta_client/templates/agents/types/agents_create_response_group_base_template_id.py +12 -0
  139. letta_client/templates/agents/types/agents_create_response_group_base_template_id_item.py +5 -0
  140. letta_client/templates/agents/types/agents_create_response_group_deployment_id.py +12 -0
  141. letta_client/templates/agents/types/agents_create_response_group_deployment_id_item.py +5 -0
  142. letta_client/templates/agents/types/agents_create_response_group_hidden.py +12 -0
  143. letta_client/templates/agents/types/agents_create_response_group_hidden_item.py +5 -0
  144. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id.py +14 -0
  145. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id_item.py +5 -0
  146. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id.py +12 -0
  147. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id_item.py +5 -0
  148. letta_client/templates/agents/types/agents_create_response_group_manager_type.py +7 -0
  149. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length.py +14 -0
  150. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length_item.py +5 -0
  151. letta_client/templates/agents/types/agents_create_response_group_max_turns.py +12 -0
  152. letta_client/templates/agents/types/agents_create_response_group_max_turns_item.py +5 -0
  153. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length.py +14 -0
  154. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length_item.py +5 -0
  155. letta_client/templates/agents/types/agents_create_response_group_project_id.py +12 -0
  156. letta_client/templates/agents/types/agents_create_response_group_project_id_item.py +5 -0
  157. letta_client/templates/agents/types/agents_create_response_group_shared_block_ids.py +5 -0
  158. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency.py +14 -0
  159. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency_item.py +5 -0
  160. letta_client/templates/agents/types/agents_create_response_group_template_id.py +12 -0
  161. letta_client/templates/agents/types/agents_create_response_group_template_id_item.py +5 -0
  162. letta_client/templates/agents/types/agents_create_response_group_termination_token.py +12 -0
  163. letta_client/templates/agents/types/agents_create_response_group_termination_token_item.py +5 -0
  164. letta_client/templates/agents/types/agents_create_response_group_turns_counter.py +12 -0
  165. letta_client/templates/agents/types/agents_create_response_group_turns_counter_item.py +5 -0
  166. letta_client/templates/client.py +260 -0
  167. letta_client/templates/raw_client.py +395 -0
  168. letta_client/templates/types/__init__.py +8 -0
  169. letta_client/templates/types/templates_get_template_snapshot_response.py +4 -0
  170. letta_client/templates/types/templates_get_template_snapshot_response_blocks_item.py +1 -0
  171. letta_client/templates/types/templates_get_template_snapshot_response_relationships_item.py +23 -0
  172. letta_client/templates/types/templates_migrate_deployment_response.py +21 -0
  173. letta_client/templates/types/templates_set_current_template_from_snapshot_response.py +21 -0
  174. letta_client/tools/__init__.py +2 -0
  175. letta_client/tools/client.py +47 -20
  176. letta_client/tools/raw_client.py +43 -26
  177. letta_client/tools/types/__init__.py +2 -0
  178. letta_client/tools/types/tools_list_request_order.py +5 -0
  179. letta_client/types/__init__.py +10 -2
  180. letta_client/types/agent_state.py +5 -0
  181. letta_client/types/archive.py +77 -0
  182. letta_client/types/batch_job.py +6 -0
  183. letta_client/types/{body_export_agent_serialized.py → body_export_agent.py} +1 -1
  184. letta_client/types/child_tool_rule.py +1 -1
  185. letta_client/types/conditional_tool_rule.py +1 -1
  186. letta_client/types/continue_tool_rule.py +1 -1
  187. letta_client/types/deployment_entity.py +2 -0
  188. letta_client/types/init_tool_rule.py +1 -1
  189. letta_client/types/internal_server_error_body.py +20 -0
  190. letta_client/types/internal_template_agent_create.py +5 -0
  191. letta_client/types/job.py +6 -0
  192. letta_client/types/letta_schemas_agent_file_agent_schema.py +5 -0
  193. letta_client/types/max_count_per_step_tool_rule.py +1 -1
  194. letta_client/types/memory.py +7 -1
  195. letta_client/types/memory_agent_type.py +7 -0
  196. letta_client/types/parent_tool_rule.py +1 -1
  197. letta_client/types/required_before_exit_tool_rule.py +1 -1
  198. letta_client/types/requires_approval_tool_rule.py +1 -1
  199. letta_client/types/run.py +6 -0
  200. letta_client/types/source.py +6 -0
  201. letta_client/types/step.py +1 -1
  202. letta_client/types/stop_reason_type.py +1 -0
  203. letta_client/types/terminal_tool_rule.py +1 -1
  204. letta_client/types/vector_db_provider.py +5 -0
  205. letta_client/voice/client.py +2 -8
  206. letta_client/voice/raw_client.py +0 -8
  207. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
  208. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/RECORD +211 -114
  209. /letta_client/{embedding_models → models/embeddings}/__init__.py +0 -0
  210. /letta_client/{messages → steps/metrics}/__init__.py +0 -0
  211. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
@@ -0,0 +1,448 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.request_options import RequestOptions
11
+ from ..core.unchecked_base_model import construct_type
12
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
13
+ from ..types.archive import Archive
14
+ from ..types.http_validation_error import HttpValidationError
15
+ from .types.list_archives_request_order import ListArchivesRequestOrder
16
+
17
+ # this is used as the default value for optional parameters
18
+ OMIT = typing.cast(typing.Any, ...)
19
+
20
+
21
+ class RawArchivesClient:
22
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
23
+ self._client_wrapper = client_wrapper
24
+
25
+ def list_archives(
26
+ self,
27
+ *,
28
+ before: typing.Optional[str] = None,
29
+ after: typing.Optional[str] = None,
30
+ limit: typing.Optional[int] = None,
31
+ order: typing.Optional[ListArchivesRequestOrder] = None,
32
+ name: typing.Optional[str] = None,
33
+ agent_id: typing.Optional[str] = None,
34
+ request_options: typing.Optional[RequestOptions] = None,
35
+ ) -> HttpResponse[typing.List[Archive]]:
36
+ """
37
+ Get a list of all archives for the current organization with optional filters and pagination.
38
+
39
+ Parameters
40
+ ----------
41
+ before : typing.Optional[str]
42
+ Archive ID cursor for pagination. Returns archives that come before this archive ID in the specified sort order
43
+
44
+ after : typing.Optional[str]
45
+ Archive ID cursor for pagination. Returns archives that come after this archive ID in the specified sort order
46
+
47
+ limit : typing.Optional[int]
48
+ Maximum number of archives to return
49
+
50
+ order : typing.Optional[ListArchivesRequestOrder]
51
+ Sort order for archives by creation time. 'asc' for oldest first, 'desc' for newest first
52
+
53
+ name : typing.Optional[str]
54
+ Filter by archive name (exact match)
55
+
56
+ agent_id : typing.Optional[str]
57
+ Only archives attached to this agent ID
58
+
59
+ request_options : typing.Optional[RequestOptions]
60
+ Request-specific configuration.
61
+
62
+ Returns
63
+ -------
64
+ HttpResponse[typing.List[Archive]]
65
+ Successful Response
66
+ """
67
+ _response = self._client_wrapper.httpx_client.request(
68
+ "v1/archives/",
69
+ method="GET",
70
+ params={
71
+ "before": before,
72
+ "after": after,
73
+ "limit": limit,
74
+ "order": order,
75
+ "name": name,
76
+ "agent_id": agent_id,
77
+ },
78
+ request_options=request_options,
79
+ )
80
+ try:
81
+ if 200 <= _response.status_code < 300:
82
+ _data = typing.cast(
83
+ typing.List[Archive],
84
+ construct_type(
85
+ type_=typing.List[Archive], # type: ignore
86
+ object_=_response.json(),
87
+ ),
88
+ )
89
+ return HttpResponse(response=_response, data=_data)
90
+ if _response.status_code == 422:
91
+ raise UnprocessableEntityError(
92
+ headers=dict(_response.headers),
93
+ body=typing.cast(
94
+ HttpValidationError,
95
+ construct_type(
96
+ type_=HttpValidationError, # type: ignore
97
+ object_=_response.json(),
98
+ ),
99
+ ),
100
+ )
101
+ _response_json = _response.json()
102
+ except JSONDecodeError:
103
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
104
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
105
+
106
+ def create_archive(
107
+ self,
108
+ *,
109
+ name: str,
110
+ description: typing.Optional[str] = OMIT,
111
+ request_options: typing.Optional[RequestOptions] = None,
112
+ ) -> HttpResponse[Archive]:
113
+ """
114
+ Create a new archive.
115
+
116
+ Parameters
117
+ ----------
118
+ name : str
119
+
120
+ description : typing.Optional[str]
121
+
122
+ request_options : typing.Optional[RequestOptions]
123
+ Request-specific configuration.
124
+
125
+ Returns
126
+ -------
127
+ HttpResponse[Archive]
128
+ Successful Response
129
+ """
130
+ _response = self._client_wrapper.httpx_client.request(
131
+ "v1/archives/",
132
+ method="POST",
133
+ json={
134
+ "name": name,
135
+ "description": description,
136
+ },
137
+ headers={
138
+ "content-type": "application/json",
139
+ },
140
+ request_options=request_options,
141
+ omit=OMIT,
142
+ )
143
+ try:
144
+ if 200 <= _response.status_code < 300:
145
+ _data = typing.cast(
146
+ Archive,
147
+ construct_type(
148
+ type_=Archive, # type: ignore
149
+ object_=_response.json(),
150
+ ),
151
+ )
152
+ return HttpResponse(response=_response, data=_data)
153
+ if _response.status_code == 422:
154
+ raise UnprocessableEntityError(
155
+ headers=dict(_response.headers),
156
+ body=typing.cast(
157
+ HttpValidationError,
158
+ construct_type(
159
+ type_=HttpValidationError, # type: ignore
160
+ object_=_response.json(),
161
+ ),
162
+ ),
163
+ )
164
+ _response_json = _response.json()
165
+ except JSONDecodeError:
166
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
167
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
168
+
169
+ def modify_archive(
170
+ self,
171
+ archive_id: str,
172
+ *,
173
+ name: typing.Optional[str] = OMIT,
174
+ description: typing.Optional[str] = OMIT,
175
+ request_options: typing.Optional[RequestOptions] = None,
176
+ ) -> HttpResponse[Archive]:
177
+ """
178
+ Update an existing archive's name and/or description.
179
+
180
+ Parameters
181
+ ----------
182
+ archive_id : str
183
+
184
+ name : typing.Optional[str]
185
+
186
+ description : typing.Optional[str]
187
+
188
+ request_options : typing.Optional[RequestOptions]
189
+ Request-specific configuration.
190
+
191
+ Returns
192
+ -------
193
+ HttpResponse[Archive]
194
+ Successful Response
195
+ """
196
+ _response = self._client_wrapper.httpx_client.request(
197
+ f"v1/archives/{jsonable_encoder(archive_id)}",
198
+ method="PATCH",
199
+ json={
200
+ "name": name,
201
+ "description": description,
202
+ },
203
+ headers={
204
+ "content-type": "application/json",
205
+ },
206
+ request_options=request_options,
207
+ omit=OMIT,
208
+ )
209
+ try:
210
+ if 200 <= _response.status_code < 300:
211
+ _data = typing.cast(
212
+ Archive,
213
+ construct_type(
214
+ type_=Archive, # type: ignore
215
+ object_=_response.json(),
216
+ ),
217
+ )
218
+ return HttpResponse(response=_response, data=_data)
219
+ if _response.status_code == 422:
220
+ raise UnprocessableEntityError(
221
+ headers=dict(_response.headers),
222
+ body=typing.cast(
223
+ HttpValidationError,
224
+ construct_type(
225
+ type_=HttpValidationError, # type: ignore
226
+ object_=_response.json(),
227
+ ),
228
+ ),
229
+ )
230
+ _response_json = _response.json()
231
+ except JSONDecodeError:
232
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
233
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
234
+
235
+
236
+ class AsyncRawArchivesClient:
237
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
238
+ self._client_wrapper = client_wrapper
239
+
240
+ async def list_archives(
241
+ self,
242
+ *,
243
+ before: typing.Optional[str] = None,
244
+ after: typing.Optional[str] = None,
245
+ limit: typing.Optional[int] = None,
246
+ order: typing.Optional[ListArchivesRequestOrder] = None,
247
+ name: typing.Optional[str] = None,
248
+ agent_id: typing.Optional[str] = None,
249
+ request_options: typing.Optional[RequestOptions] = None,
250
+ ) -> AsyncHttpResponse[typing.List[Archive]]:
251
+ """
252
+ Get a list of all archives for the current organization with optional filters and pagination.
253
+
254
+ Parameters
255
+ ----------
256
+ before : typing.Optional[str]
257
+ Archive ID cursor for pagination. Returns archives that come before this archive ID in the specified sort order
258
+
259
+ after : typing.Optional[str]
260
+ Archive ID cursor for pagination. Returns archives that come after this archive ID in the specified sort order
261
+
262
+ limit : typing.Optional[int]
263
+ Maximum number of archives to return
264
+
265
+ order : typing.Optional[ListArchivesRequestOrder]
266
+ Sort order for archives by creation time. 'asc' for oldest first, 'desc' for newest first
267
+
268
+ name : typing.Optional[str]
269
+ Filter by archive name (exact match)
270
+
271
+ agent_id : typing.Optional[str]
272
+ Only archives attached to this agent ID
273
+
274
+ request_options : typing.Optional[RequestOptions]
275
+ Request-specific configuration.
276
+
277
+ Returns
278
+ -------
279
+ AsyncHttpResponse[typing.List[Archive]]
280
+ Successful Response
281
+ """
282
+ _response = await self._client_wrapper.httpx_client.request(
283
+ "v1/archives/",
284
+ method="GET",
285
+ params={
286
+ "before": before,
287
+ "after": after,
288
+ "limit": limit,
289
+ "order": order,
290
+ "name": name,
291
+ "agent_id": agent_id,
292
+ },
293
+ request_options=request_options,
294
+ )
295
+ try:
296
+ if 200 <= _response.status_code < 300:
297
+ _data = typing.cast(
298
+ typing.List[Archive],
299
+ construct_type(
300
+ type_=typing.List[Archive], # type: ignore
301
+ object_=_response.json(),
302
+ ),
303
+ )
304
+ return AsyncHttpResponse(response=_response, data=_data)
305
+ if _response.status_code == 422:
306
+ raise UnprocessableEntityError(
307
+ headers=dict(_response.headers),
308
+ body=typing.cast(
309
+ HttpValidationError,
310
+ construct_type(
311
+ type_=HttpValidationError, # type: ignore
312
+ object_=_response.json(),
313
+ ),
314
+ ),
315
+ )
316
+ _response_json = _response.json()
317
+ except JSONDecodeError:
318
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
319
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
320
+
321
+ async def create_archive(
322
+ self,
323
+ *,
324
+ name: str,
325
+ description: typing.Optional[str] = OMIT,
326
+ request_options: typing.Optional[RequestOptions] = None,
327
+ ) -> AsyncHttpResponse[Archive]:
328
+ """
329
+ Create a new archive.
330
+
331
+ Parameters
332
+ ----------
333
+ name : str
334
+
335
+ description : typing.Optional[str]
336
+
337
+ request_options : typing.Optional[RequestOptions]
338
+ Request-specific configuration.
339
+
340
+ Returns
341
+ -------
342
+ AsyncHttpResponse[Archive]
343
+ Successful Response
344
+ """
345
+ _response = await self._client_wrapper.httpx_client.request(
346
+ "v1/archives/",
347
+ method="POST",
348
+ json={
349
+ "name": name,
350
+ "description": description,
351
+ },
352
+ headers={
353
+ "content-type": "application/json",
354
+ },
355
+ request_options=request_options,
356
+ omit=OMIT,
357
+ )
358
+ try:
359
+ if 200 <= _response.status_code < 300:
360
+ _data = typing.cast(
361
+ Archive,
362
+ construct_type(
363
+ type_=Archive, # type: ignore
364
+ object_=_response.json(),
365
+ ),
366
+ )
367
+ return AsyncHttpResponse(response=_response, data=_data)
368
+ if _response.status_code == 422:
369
+ raise UnprocessableEntityError(
370
+ headers=dict(_response.headers),
371
+ body=typing.cast(
372
+ HttpValidationError,
373
+ construct_type(
374
+ type_=HttpValidationError, # type: ignore
375
+ object_=_response.json(),
376
+ ),
377
+ ),
378
+ )
379
+ _response_json = _response.json()
380
+ except JSONDecodeError:
381
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
382
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
383
+
384
+ async def modify_archive(
385
+ self,
386
+ archive_id: str,
387
+ *,
388
+ name: typing.Optional[str] = OMIT,
389
+ description: typing.Optional[str] = OMIT,
390
+ request_options: typing.Optional[RequestOptions] = None,
391
+ ) -> AsyncHttpResponse[Archive]:
392
+ """
393
+ Update an existing archive's name and/or description.
394
+
395
+ Parameters
396
+ ----------
397
+ archive_id : str
398
+
399
+ name : typing.Optional[str]
400
+
401
+ description : typing.Optional[str]
402
+
403
+ request_options : typing.Optional[RequestOptions]
404
+ Request-specific configuration.
405
+
406
+ Returns
407
+ -------
408
+ AsyncHttpResponse[Archive]
409
+ Successful Response
410
+ """
411
+ _response = await self._client_wrapper.httpx_client.request(
412
+ f"v1/archives/{jsonable_encoder(archive_id)}",
413
+ method="PATCH",
414
+ json={
415
+ "name": name,
416
+ "description": description,
417
+ },
418
+ headers={
419
+ "content-type": "application/json",
420
+ },
421
+ request_options=request_options,
422
+ omit=OMIT,
423
+ )
424
+ try:
425
+ if 200 <= _response.status_code < 300:
426
+ _data = typing.cast(
427
+ Archive,
428
+ construct_type(
429
+ type_=Archive, # type: ignore
430
+ object_=_response.json(),
431
+ ),
432
+ )
433
+ return AsyncHttpResponse(response=_response, data=_data)
434
+ if _response.status_code == 422:
435
+ raise UnprocessableEntityError(
436
+ headers=dict(_response.headers),
437
+ body=typing.cast(
438
+ HttpValidationError,
439
+ construct_type(
440
+ type_=HttpValidationError, # type: ignore
441
+ object_=_response.json(),
442
+ ),
443
+ ),
444
+ )
445
+ _response_json = _response.json()
446
+ except JSONDecodeError:
447
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
448
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .list_archives_request_order import ListArchivesRequestOrder
6
+
7
+ __all__ = ["ListArchivesRequestOrder"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ListArchivesRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -4,18 +4,17 @@ import typing
4
4
 
5
5
  import httpx
6
6
  from .agents.client import AgentsClient, AsyncAgentsClient
7
+ from .archives.client import ArchivesClient, AsyncArchivesClient
7
8
  from .batches.client import AsyncBatchesClient, BatchesClient
8
9
  from .blocks.client import AsyncBlocksClient, BlocksClient
9
10
  from .client_side_access_tokens.client import AsyncClientSideAccessTokensClient, ClientSideAccessTokensClient
10
11
  from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
11
- from .embedding_models.client import AsyncEmbeddingModelsClient, EmbeddingModelsClient
12
12
  from .environment import LettaEnvironment
13
13
  from .folders.client import AsyncFoldersClient, FoldersClient
14
14
  from .groups.client import AsyncGroupsClient, GroupsClient
15
15
  from .health.client import AsyncHealthClient, HealthClient
16
16
  from .identities.client import AsyncIdentitiesClient, IdentitiesClient
17
17
  from .jobs.client import AsyncJobsClient, JobsClient
18
- from .messages.client import AsyncMessagesClient, MessagesClient
19
18
  from .models.client import AsyncModelsClient, ModelsClient
20
19
  from .projects.client import AsyncProjectsClient, ProjectsClient
21
20
  from .providers.client import AsyncProvidersClient, ProvidersClient
@@ -98,6 +97,7 @@ class LettaBase:
98
97
  else httpx.Client(timeout=_defaulted_timeout),
99
98
  timeout=_defaulted_timeout,
100
99
  )
100
+ self.archives = ArchivesClient(client_wrapper=self._client_wrapper)
101
101
  self.tools = ToolsClient(client_wrapper=self._client_wrapper)
102
102
  self.sources = SourcesClient(client_wrapper=self._client_wrapper)
103
103
  self.folders = FoldersClient(client_wrapper=self._client_wrapper)
@@ -105,7 +105,6 @@ class LettaBase:
105
105
  self.groups = GroupsClient(client_wrapper=self._client_wrapper)
106
106
  self.identities = IdentitiesClient(client_wrapper=self._client_wrapper)
107
107
  self.models = ModelsClient(client_wrapper=self._client_wrapper)
108
- self.embedding_models = EmbeddingModelsClient(client_wrapper=self._client_wrapper)
109
108
  self.blocks = BlocksClient(client_wrapper=self._client_wrapper)
110
109
  self.jobs = JobsClient(client_wrapper=self._client_wrapper)
111
110
  self.health = HealthClient(client_wrapper=self._client_wrapper)
@@ -115,7 +114,6 @@ class LettaBase:
115
114
  self.tags = TagsClient(client_wrapper=self._client_wrapper)
116
115
  self.telemetry = TelemetryClient(client_wrapper=self._client_wrapper)
117
116
  self.batches = BatchesClient(client_wrapper=self._client_wrapper)
118
- self.messages = MessagesClient(client_wrapper=self._client_wrapper)
119
117
  self.voice = VoiceClient(client_wrapper=self._client_wrapper)
120
118
  self.templates = TemplatesClient(client_wrapper=self._client_wrapper)
121
119
  self.client_side_access_tokens = ClientSideAccessTokensClient(client_wrapper=self._client_wrapper)
@@ -191,6 +189,7 @@ class AsyncLettaBase:
191
189
  else httpx.AsyncClient(timeout=_defaulted_timeout),
192
190
  timeout=_defaulted_timeout,
193
191
  )
192
+ self.archives = AsyncArchivesClient(client_wrapper=self._client_wrapper)
194
193
  self.tools = AsyncToolsClient(client_wrapper=self._client_wrapper)
195
194
  self.sources = AsyncSourcesClient(client_wrapper=self._client_wrapper)
196
195
  self.folders = AsyncFoldersClient(client_wrapper=self._client_wrapper)
@@ -198,7 +197,6 @@ class AsyncLettaBase:
198
197
  self.groups = AsyncGroupsClient(client_wrapper=self._client_wrapper)
199
198
  self.identities = AsyncIdentitiesClient(client_wrapper=self._client_wrapper)
200
199
  self.models = AsyncModelsClient(client_wrapper=self._client_wrapper)
201
- self.embedding_models = AsyncEmbeddingModelsClient(client_wrapper=self._client_wrapper)
202
200
  self.blocks = AsyncBlocksClient(client_wrapper=self._client_wrapper)
203
201
  self.jobs = AsyncJobsClient(client_wrapper=self._client_wrapper)
204
202
  self.health = AsyncHealthClient(client_wrapper=self._client_wrapper)
@@ -208,7 +206,6 @@ class AsyncLettaBase:
208
206
  self.tags = AsyncTagsClient(client_wrapper=self._client_wrapper)
209
207
  self.telemetry = AsyncTelemetryClient(client_wrapper=self._client_wrapper)
210
208
  self.batches = AsyncBatchesClient(client_wrapper=self._client_wrapper)
211
- self.messages = AsyncMessagesClient(client_wrapper=self._client_wrapper)
212
209
  self.voice = AsyncVoiceClient(client_wrapper=self._client_wrapper)
213
210
  self.templates = AsyncTemplatesClient(client_wrapper=self._client_wrapper)
214
211
  self.client_side_access_tokens = AsyncClientSideAccessTokensClient(client_wrapper=self._client_wrapper)
@@ -2,3 +2,8 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
+ from .types import BatchesListRequestOrder
6
+ from . import messages
7
+ from .messages import MessagesListRequestOrder
8
+
9
+ __all__ = ["BatchesListRequestOrder", "MessagesListRequestOrder", "messages"]