letta-client 0.1.319__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 +104 -24
  8. letta_client/agents/messages/raw_client.py +109 -17
  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.319.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
  208. {letta_client-0.1.319.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.319.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
@@ -12,8 +12,8 @@ from ..core.unchecked_base_model import construct_type
12
12
  from ..errors.unprocessable_entity_error import UnprocessableEntityError
13
13
  from ..types.http_validation_error import HttpValidationError
14
14
  from ..types.step import Step
15
- from ..types.step_metrics import StepMetrics
16
15
  from .types.steps_list_request_feedback import StepsListRequestFeedback
16
+ from .types.steps_list_request_order import StepsListRequestOrder
17
17
 
18
18
 
19
19
  class RawStepsClient:
@@ -26,7 +26,8 @@ class RawStepsClient:
26
26
  before: typing.Optional[str] = None,
27
27
  after: typing.Optional[str] = None,
28
28
  limit: typing.Optional[int] = None,
29
- order: typing.Optional[str] = None,
29
+ order: typing.Optional[StepsListRequestOrder] = None,
30
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
30
31
  start_date: typing.Optional[str] = None,
31
32
  end_date: typing.Optional[str] = None,
32
33
  model: typing.Optional[str] = None,
@@ -40,7 +41,6 @@ class RawStepsClient:
40
41
  ) -> HttpResponse[typing.List[Step]]:
41
42
  """
42
43
  List steps with optional pagination and date filters.
43
- Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
44
44
 
45
45
  Parameters
46
46
  ----------
@@ -53,8 +53,11 @@ class RawStepsClient:
53
53
  limit : typing.Optional[int]
54
54
  Maximum number of steps to return
55
55
 
56
- order : typing.Optional[str]
57
- Sort order (asc or desc)
56
+ order : typing.Optional[StepsListRequestOrder]
57
+ Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
58
+
59
+ order_by : typing.Optional[typing.Literal["created_at"]]
60
+ Field to sort by
58
61
 
59
62
  start_date : typing.Optional[str]
60
63
  Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
@@ -99,6 +102,7 @@ class RawStepsClient:
99
102
  "after": after,
100
103
  "limit": limit,
101
104
  "order": order,
105
+ "order_by": order_by,
102
106
  "start_date": start_date,
103
107
  "end_date": end_date,
104
108
  "model": model,
@@ -184,55 +188,6 @@ class RawStepsClient:
184
188
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
185
189
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
186
190
 
187
- def retrieve_step_metrics(
188
- self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
189
- ) -> HttpResponse[StepMetrics]:
190
- """
191
- Get step metrics by step ID.
192
-
193
- Parameters
194
- ----------
195
- step_id : str
196
-
197
- request_options : typing.Optional[RequestOptions]
198
- Request-specific configuration.
199
-
200
- Returns
201
- -------
202
- HttpResponse[StepMetrics]
203
- Successful Response
204
- """
205
- _response = self._client_wrapper.httpx_client.request(
206
- f"v1/steps/{jsonable_encoder(step_id)}/metrics",
207
- method="GET",
208
- request_options=request_options,
209
- )
210
- try:
211
- if 200 <= _response.status_code < 300:
212
- _data = typing.cast(
213
- StepMetrics,
214
- construct_type(
215
- type_=StepMetrics, # type: ignore
216
- object_=_response.json(),
217
- ),
218
- )
219
- return HttpResponse(response=_response, data=_data)
220
- if _response.status_code == 422:
221
- raise UnprocessableEntityError(
222
- headers=dict(_response.headers),
223
- body=typing.cast(
224
- HttpValidationError,
225
- construct_type(
226
- type_=HttpValidationError, # type: ignore
227
- object_=_response.json(),
228
- ),
229
- ),
230
- )
231
- _response_json = _response.json()
232
- except JSONDecodeError:
233
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
234
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
235
-
236
191
 
237
192
  class AsyncRawStepsClient:
238
193
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -244,7 +199,8 @@ class AsyncRawStepsClient:
244
199
  before: typing.Optional[str] = None,
245
200
  after: typing.Optional[str] = None,
246
201
  limit: typing.Optional[int] = None,
247
- order: typing.Optional[str] = None,
202
+ order: typing.Optional[StepsListRequestOrder] = None,
203
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
248
204
  start_date: typing.Optional[str] = None,
249
205
  end_date: typing.Optional[str] = None,
250
206
  model: typing.Optional[str] = None,
@@ -258,7 +214,6 @@ class AsyncRawStepsClient:
258
214
  ) -> AsyncHttpResponse[typing.List[Step]]:
259
215
  """
260
216
  List steps with optional pagination and date filters.
261
- Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
262
217
 
263
218
  Parameters
264
219
  ----------
@@ -271,8 +226,11 @@ class AsyncRawStepsClient:
271
226
  limit : typing.Optional[int]
272
227
  Maximum number of steps to return
273
228
 
274
- order : typing.Optional[str]
275
- Sort order (asc or desc)
229
+ order : typing.Optional[StepsListRequestOrder]
230
+ Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
231
+
232
+ order_by : typing.Optional[typing.Literal["created_at"]]
233
+ Field to sort by
276
234
 
277
235
  start_date : typing.Optional[str]
278
236
  Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
@@ -317,6 +275,7 @@ class AsyncRawStepsClient:
317
275
  "after": after,
318
276
  "limit": limit,
319
277
  "order": order,
278
+ "order_by": order_by,
320
279
  "start_date": start_date,
321
280
  "end_date": end_date,
322
281
  "model": model,
@@ -403,52 +362,3 @@ class AsyncRawStepsClient:
403
362
  except JSONDecodeError:
404
363
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
405
364
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
406
-
407
- async def retrieve_step_metrics(
408
- self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
409
- ) -> AsyncHttpResponse[StepMetrics]:
410
- """
411
- Get step metrics by step ID.
412
-
413
- Parameters
414
- ----------
415
- step_id : str
416
-
417
- request_options : typing.Optional[RequestOptions]
418
- Request-specific configuration.
419
-
420
- Returns
421
- -------
422
- AsyncHttpResponse[StepMetrics]
423
- Successful Response
424
- """
425
- _response = await self._client_wrapper.httpx_client.request(
426
- f"v1/steps/{jsonable_encoder(step_id)}/metrics",
427
- method="GET",
428
- request_options=request_options,
429
- )
430
- try:
431
- if 200 <= _response.status_code < 300:
432
- _data = typing.cast(
433
- StepMetrics,
434
- construct_type(
435
- type_=StepMetrics, # type: ignore
436
- object_=_response.json(),
437
- ),
438
- )
439
- return AsyncHttpResponse(response=_response, data=_data)
440
- if _response.status_code == 422:
441
- raise UnprocessableEntityError(
442
- headers=dict(_response.headers),
443
- body=typing.cast(
444
- HttpValidationError,
445
- construct_type(
446
- type_=HttpValidationError, # type: ignore
447
- object_=_response.json(),
448
- ),
449
- ),
450
- )
451
- _response_json = _response.json()
452
- except JSONDecodeError:
453
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
454
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
@@ -0,0 +1,110 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ...core.request_options import RequestOptions
7
+ from ...types.provider_trace import ProviderTrace
8
+ from .raw_client import AsyncRawTraceClient, RawTraceClient
9
+
10
+
11
+ class TraceClient:
12
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
13
+ self._raw_client = RawTraceClient(client_wrapper=client_wrapper)
14
+
15
+ @property
16
+ def with_raw_response(self) -> RawTraceClient:
17
+ """
18
+ Retrieves a raw implementation of this client that returns raw responses.
19
+
20
+ Returns
21
+ -------
22
+ RawTraceClient
23
+ """
24
+ return self._raw_client
25
+
26
+ def retrieve(
27
+ self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
28
+ ) -> typing.Optional[ProviderTrace]:
29
+ """
30
+ Parameters
31
+ ----------
32
+ step_id : str
33
+
34
+ request_options : typing.Optional[RequestOptions]
35
+ Request-specific configuration.
36
+
37
+ Returns
38
+ -------
39
+ typing.Optional[ProviderTrace]
40
+ Successful Response
41
+
42
+ Examples
43
+ --------
44
+ from letta_client import Letta
45
+
46
+ client = Letta(
47
+ project="YOUR_PROJECT",
48
+ token="YOUR_TOKEN",
49
+ )
50
+ client.steps.trace.retrieve(
51
+ step_id="step_id",
52
+ )
53
+ """
54
+ _response = self._raw_client.retrieve(step_id, request_options=request_options)
55
+ return _response.data
56
+
57
+
58
+ class AsyncTraceClient:
59
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
60
+ self._raw_client = AsyncRawTraceClient(client_wrapper=client_wrapper)
61
+
62
+ @property
63
+ def with_raw_response(self) -> AsyncRawTraceClient:
64
+ """
65
+ Retrieves a raw implementation of this client that returns raw responses.
66
+
67
+ Returns
68
+ -------
69
+ AsyncRawTraceClient
70
+ """
71
+ return self._raw_client
72
+
73
+ async def retrieve(
74
+ self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
75
+ ) -> typing.Optional[ProviderTrace]:
76
+ """
77
+ Parameters
78
+ ----------
79
+ step_id : str
80
+
81
+ request_options : typing.Optional[RequestOptions]
82
+ Request-specific configuration.
83
+
84
+ Returns
85
+ -------
86
+ typing.Optional[ProviderTrace]
87
+ Successful Response
88
+
89
+ Examples
90
+ --------
91
+ import asyncio
92
+
93
+ from letta_client import AsyncLetta
94
+
95
+ client = AsyncLetta(
96
+ project="YOUR_PROJECT",
97
+ token="YOUR_TOKEN",
98
+ )
99
+
100
+
101
+ async def main() -> None:
102
+ await client.steps.trace.retrieve(
103
+ step_id="step_id",
104
+ )
105
+
106
+
107
+ asyncio.run(main())
108
+ """
109
+ _response = await self._raw_client.retrieve(step_id, request_options=request_options)
110
+ return _response.data
@@ -0,0 +1,122 @@
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.http_validation_error import HttpValidationError
14
+ from ...types.provider_trace import ProviderTrace
15
+
16
+
17
+ class RawTraceClient:
18
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
19
+ self._client_wrapper = client_wrapper
20
+
21
+ def retrieve(
22
+ self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
23
+ ) -> HttpResponse[typing.Optional[ProviderTrace]]:
24
+ """
25
+ Parameters
26
+ ----------
27
+ step_id : str
28
+
29
+ request_options : typing.Optional[RequestOptions]
30
+ Request-specific configuration.
31
+
32
+ Returns
33
+ -------
34
+ HttpResponse[typing.Optional[ProviderTrace]]
35
+ Successful Response
36
+ """
37
+ _response = self._client_wrapper.httpx_client.request(
38
+ f"v1/steps/{jsonable_encoder(step_id)}/trace",
39
+ method="GET",
40
+ request_options=request_options,
41
+ )
42
+ try:
43
+ if _response is None or not _response.text.strip():
44
+ return HttpResponse(response=_response, data=None)
45
+ if 200 <= _response.status_code < 300:
46
+ _data = typing.cast(
47
+ typing.Optional[ProviderTrace],
48
+ construct_type(
49
+ type_=typing.Optional[ProviderTrace], # type: ignore
50
+ object_=_response.json(),
51
+ ),
52
+ )
53
+ return HttpResponse(response=_response, data=_data)
54
+ if _response.status_code == 422:
55
+ raise UnprocessableEntityError(
56
+ headers=dict(_response.headers),
57
+ body=typing.cast(
58
+ HttpValidationError,
59
+ construct_type(
60
+ type_=HttpValidationError, # type: ignore
61
+ object_=_response.json(),
62
+ ),
63
+ ),
64
+ )
65
+ _response_json = _response.json()
66
+ except JSONDecodeError:
67
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
68
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
69
+
70
+
71
+ class AsyncRawTraceClient:
72
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
73
+ self._client_wrapper = client_wrapper
74
+
75
+ async def retrieve(
76
+ self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
77
+ ) -> AsyncHttpResponse[typing.Optional[ProviderTrace]]:
78
+ """
79
+ Parameters
80
+ ----------
81
+ step_id : str
82
+
83
+ request_options : typing.Optional[RequestOptions]
84
+ Request-specific configuration.
85
+
86
+ Returns
87
+ -------
88
+ AsyncHttpResponse[typing.Optional[ProviderTrace]]
89
+ Successful Response
90
+ """
91
+ _response = await self._client_wrapper.httpx_client.request(
92
+ f"v1/steps/{jsonable_encoder(step_id)}/trace",
93
+ method="GET",
94
+ request_options=request_options,
95
+ )
96
+ try:
97
+ if _response is None or not _response.text.strip():
98
+ return AsyncHttpResponse(response=_response, data=None)
99
+ if 200 <= _response.status_code < 300:
100
+ _data = typing.cast(
101
+ typing.Optional[ProviderTrace],
102
+ construct_type(
103
+ type_=typing.Optional[ProviderTrace], # type: ignore
104
+ object_=_response.json(),
105
+ ),
106
+ )
107
+ return AsyncHttpResponse(response=_response, data=_data)
108
+ if _response.status_code == 422:
109
+ raise UnprocessableEntityError(
110
+ headers=dict(_response.headers),
111
+ body=typing.cast(
112
+ HttpValidationError,
113
+ construct_type(
114
+ type_=HttpValidationError, # type: ignore
115
+ object_=_response.json(),
116
+ ),
117
+ ),
118
+ )
119
+ _response_json = _response.json()
120
+ except JSONDecodeError:
121
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
122
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -3,5 +3,6 @@
3
3
  # isort: skip_file
4
4
 
5
5
  from .steps_list_request_feedback import StepsListRequestFeedback
6
+ from .steps_list_request_order import StepsListRequestOrder
6
7
 
7
- __all__ = ["StepsListRequestFeedback"]
8
+ __all__ = ["StepsListRequestFeedback", "StepsListRequestOrder"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ StepsListRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -2,3 +2,6 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
+ from .types import TagsListRequestOrder
6
+
7
+ __all__ = ["TagsListRequestOrder"]
@@ -5,6 +5,7 @@ import typing
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
6
  from ..core.request_options import RequestOptions
7
7
  from .raw_client import AsyncRawTagsClient, RawTagsClient
8
+ from .types.tags_list_request_order import TagsListRequestOrder
8
9
 
9
10
 
10
11
  class TagsClient:
@@ -25,21 +26,40 @@ class TagsClient:
25
26
  def list(
26
27
  self,
27
28
  *,
29
+ before: typing.Optional[str] = None,
28
30
  after: typing.Optional[str] = None,
29
31
  limit: typing.Optional[int] = None,
32
+ order: typing.Optional[TagsListRequestOrder] = None,
33
+ order_by: typing.Optional[typing.Literal["name"]] = None,
30
34
  query_text: typing.Optional[str] = None,
35
+ name: typing.Optional[str] = None,
31
36
  request_options: typing.Optional[RequestOptions] = None,
32
37
  ) -> typing.List[str]:
33
38
  """
34
- Get a list of all tags in the database
39
+ Get the list of all agent tags that have been created.
35
40
 
36
41
  Parameters
37
42
  ----------
43
+ before : typing.Optional[str]
44
+ Tag cursor for pagination. Returns tags that come before this tag in the specified sort order
45
+
38
46
  after : typing.Optional[str]
47
+ Tag cursor for pagination. Returns tags that come after this tag in the specified sort order
39
48
 
40
49
  limit : typing.Optional[int]
50
+ Maximum number of tags to return
51
+
52
+ order : typing.Optional[TagsListRequestOrder]
53
+ Sort order for tags. 'asc' for alphabetical order, 'desc' for reverse alphabetical order
54
+
55
+ order_by : typing.Optional[typing.Literal["name"]]
56
+ Field to sort by
41
57
 
42
58
  query_text : typing.Optional[str]
59
+ Filter tags by text search. Deprecated, please use name field instead
60
+
61
+ name : typing.Optional[str]
62
+ Filter tags by name
43
63
 
44
64
  request_options : typing.Optional[RequestOptions]
45
65
  Request-specific configuration.
@@ -60,7 +80,14 @@ class TagsClient:
60
80
  client.tags.list()
61
81
  """
62
82
  _response = self._raw_client.list(
63
- after=after, limit=limit, query_text=query_text, request_options=request_options
83
+ before=before,
84
+ after=after,
85
+ limit=limit,
86
+ order=order,
87
+ order_by=order_by,
88
+ query_text=query_text,
89
+ name=name,
90
+ request_options=request_options,
64
91
  )
65
92
  return _response.data
66
93
 
@@ -83,21 +110,40 @@ class AsyncTagsClient:
83
110
  async def list(
84
111
  self,
85
112
  *,
113
+ before: typing.Optional[str] = None,
86
114
  after: typing.Optional[str] = None,
87
115
  limit: typing.Optional[int] = None,
116
+ order: typing.Optional[TagsListRequestOrder] = None,
117
+ order_by: typing.Optional[typing.Literal["name"]] = None,
88
118
  query_text: typing.Optional[str] = None,
119
+ name: typing.Optional[str] = None,
89
120
  request_options: typing.Optional[RequestOptions] = None,
90
121
  ) -> typing.List[str]:
91
122
  """
92
- Get a list of all tags in the database
123
+ Get the list of all agent tags that have been created.
93
124
 
94
125
  Parameters
95
126
  ----------
127
+ before : typing.Optional[str]
128
+ Tag cursor for pagination. Returns tags that come before this tag in the specified sort order
129
+
96
130
  after : typing.Optional[str]
131
+ Tag cursor for pagination. Returns tags that come after this tag in the specified sort order
97
132
 
98
133
  limit : typing.Optional[int]
134
+ Maximum number of tags to return
135
+
136
+ order : typing.Optional[TagsListRequestOrder]
137
+ Sort order for tags. 'asc' for alphabetical order, 'desc' for reverse alphabetical order
138
+
139
+ order_by : typing.Optional[typing.Literal["name"]]
140
+ Field to sort by
99
141
 
100
142
  query_text : typing.Optional[str]
143
+ Filter tags by text search. Deprecated, please use name field instead
144
+
145
+ name : typing.Optional[str]
146
+ Filter tags by name
101
147
 
102
148
  request_options : typing.Optional[RequestOptions]
103
149
  Request-specific configuration.
@@ -126,6 +172,13 @@ class AsyncTagsClient:
126
172
  asyncio.run(main())
127
173
  """
128
174
  _response = await self._raw_client.list(
129
- after=after, limit=limit, query_text=query_text, request_options=request_options
175
+ before=before,
176
+ after=after,
177
+ limit=limit,
178
+ order=order,
179
+ order_by=order_by,
180
+ query_text=query_text,
181
+ name=name,
182
+ request_options=request_options,
130
183
  )
131
184
  return _response.data