letta-client 0.1.319__py3-none-any.whl → 0.1.321__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 +39 -8
  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 +39 -8
  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 +16 -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 +16 -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 +16 -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.321.dist-info}/METADATA +9 -9
  208. {letta_client-0.1.319.dist-info → letta_client-0.1.321.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.321.dist-info}/WHEEL +0 -0
@@ -15,6 +15,7 @@ from ..types.embedding_config import EmbeddingConfig
15
15
  from ..types.folder import Folder
16
16
  from ..types.http_validation_error import HttpValidationError
17
17
  from ..types.organization_sources_stats import OrganizationSourcesStats
18
+ from .types.folders_list_request_order import FoldersListRequestOrder
18
19
 
19
20
  # this is used as the default value for optional parameters
20
21
  OMIT = typing.cast(typing.Any, ...)
@@ -258,7 +259,10 @@ class RawFoldersClient:
258
259
  self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None
259
260
  ) -> HttpResponse[str]:
260
261
  """
261
- Get a folder by name
262
+ **Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
263
+
264
+
265
+ Get a folder by name.
262
266
 
263
267
  Parameters
264
268
  ----------
@@ -303,7 +307,7 @@ class RawFoldersClient:
303
307
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
304
308
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
305
309
 
306
- def get_folders_metadata(
310
+ def retrieve_metadata(
307
311
  self,
308
312
  *,
309
313
  include_detailed_per_source_metadata: typing.Optional[bool] = None,
@@ -364,12 +368,40 @@ class RawFoldersClient:
364
368
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
365
369
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
366
370
 
367
- def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[typing.List[Folder]]:
371
+ def list(
372
+ self,
373
+ *,
374
+ before: typing.Optional[str] = None,
375
+ after: typing.Optional[str] = None,
376
+ limit: typing.Optional[int] = None,
377
+ order: typing.Optional[FoldersListRequestOrder] = None,
378
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
379
+ name: typing.Optional[str] = None,
380
+ request_options: typing.Optional[RequestOptions] = None,
381
+ ) -> HttpResponse[typing.List[Folder]]:
368
382
  """
369
383
  List all data folders created by a user.
370
384
 
371
385
  Parameters
372
386
  ----------
387
+ before : typing.Optional[str]
388
+ Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
389
+
390
+ after : typing.Optional[str]
391
+ Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
392
+
393
+ limit : typing.Optional[int]
394
+ Maximum number of folders to return
395
+
396
+ order : typing.Optional[FoldersListRequestOrder]
397
+ Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
398
+
399
+ order_by : typing.Optional[typing.Literal["created_at"]]
400
+ Field to sort by
401
+
402
+ name : typing.Optional[str]
403
+ Folder name to filter by
404
+
373
405
  request_options : typing.Optional[RequestOptions]
374
406
  Request-specific configuration.
375
407
 
@@ -381,6 +413,14 @@ class RawFoldersClient:
381
413
  _response = self._client_wrapper.httpx_client.request(
382
414
  "v1/folders/",
383
415
  method="GET",
416
+ params={
417
+ "before": before,
418
+ "after": after,
419
+ "limit": limit,
420
+ "order": order,
421
+ "order_by": order_by,
422
+ "name": name,
423
+ },
384
424
  request_options=request_options,
385
425
  )
386
426
  try:
@@ -501,55 +541,6 @@ class RawFoldersClient:
501
541
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
502
542
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
503
543
 
504
- def get_agents_for_folder(
505
- self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
506
- ) -> HttpResponse[typing.List[str]]:
507
- """
508
- Get all agent IDs that have the specified folder attached.
509
-
510
- Parameters
511
- ----------
512
- folder_id : str
513
-
514
- request_options : typing.Optional[RequestOptions]
515
- Request-specific configuration.
516
-
517
- Returns
518
- -------
519
- HttpResponse[typing.List[str]]
520
- Successful Response
521
- """
522
- _response = self._client_wrapper.httpx_client.request(
523
- f"v1/folders/{jsonable_encoder(folder_id)}/agents",
524
- method="GET",
525
- request_options=request_options,
526
- )
527
- try:
528
- if 200 <= _response.status_code < 300:
529
- _data = typing.cast(
530
- typing.List[str],
531
- construct_type(
532
- type_=typing.List[str], # type: ignore
533
- object_=_response.json(),
534
- ),
535
- )
536
- return HttpResponse(response=_response, data=_data)
537
- if _response.status_code == 422:
538
- raise UnprocessableEntityError(
539
- headers=dict(_response.headers),
540
- body=typing.cast(
541
- HttpValidationError,
542
- construct_type(
543
- type_=HttpValidationError, # type: ignore
544
- object_=_response.json(),
545
- ),
546
- ),
547
- )
548
- _response_json = _response.json()
549
- except JSONDecodeError:
550
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
551
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
552
-
553
544
 
554
545
  class AsyncRawFoldersClient:
555
546
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -789,7 +780,10 @@ class AsyncRawFoldersClient:
789
780
  self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None
790
781
  ) -> AsyncHttpResponse[str]:
791
782
  """
792
- Get a folder by name
783
+ **Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
784
+
785
+
786
+ Get a folder by name.
793
787
 
794
788
  Parameters
795
789
  ----------
@@ -834,7 +828,7 @@ class AsyncRawFoldersClient:
834
828
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
835
829
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
836
830
 
837
- async def get_folders_metadata(
831
+ async def retrieve_metadata(
838
832
  self,
839
833
  *,
840
834
  include_detailed_per_source_metadata: typing.Optional[bool] = None,
@@ -896,13 +890,39 @@ class AsyncRawFoldersClient:
896
890
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
897
891
 
898
892
  async def list(
899
- self, *, request_options: typing.Optional[RequestOptions] = None
893
+ self,
894
+ *,
895
+ before: typing.Optional[str] = None,
896
+ after: typing.Optional[str] = None,
897
+ limit: typing.Optional[int] = None,
898
+ order: typing.Optional[FoldersListRequestOrder] = None,
899
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
900
+ name: typing.Optional[str] = None,
901
+ request_options: typing.Optional[RequestOptions] = None,
900
902
  ) -> AsyncHttpResponse[typing.List[Folder]]:
901
903
  """
902
904
  List all data folders created by a user.
903
905
 
904
906
  Parameters
905
907
  ----------
908
+ before : typing.Optional[str]
909
+ Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
910
+
911
+ after : typing.Optional[str]
912
+ Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
913
+
914
+ limit : typing.Optional[int]
915
+ Maximum number of folders to return
916
+
917
+ order : typing.Optional[FoldersListRequestOrder]
918
+ Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
919
+
920
+ order_by : typing.Optional[typing.Literal["created_at"]]
921
+ Field to sort by
922
+
923
+ name : typing.Optional[str]
924
+ Folder name to filter by
925
+
906
926
  request_options : typing.Optional[RequestOptions]
907
927
  Request-specific configuration.
908
928
 
@@ -914,6 +934,14 @@ class AsyncRawFoldersClient:
914
934
  _response = await self._client_wrapper.httpx_client.request(
915
935
  "v1/folders/",
916
936
  method="GET",
937
+ params={
938
+ "before": before,
939
+ "after": after,
940
+ "limit": limit,
941
+ "order": order,
942
+ "order_by": order_by,
943
+ "name": name,
944
+ },
917
945
  request_options=request_options,
918
946
  )
919
947
  try:
@@ -1033,52 +1061,3 @@ class AsyncRawFoldersClient:
1033
1061
  except JSONDecodeError:
1034
1062
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1035
1063
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
1036
-
1037
- async def get_agents_for_folder(
1038
- self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
1039
- ) -> AsyncHttpResponse[typing.List[str]]:
1040
- """
1041
- Get all agent IDs that have the specified folder attached.
1042
-
1043
- Parameters
1044
- ----------
1045
- folder_id : str
1046
-
1047
- request_options : typing.Optional[RequestOptions]
1048
- Request-specific configuration.
1049
-
1050
- Returns
1051
- -------
1052
- AsyncHttpResponse[typing.List[str]]
1053
- Successful Response
1054
- """
1055
- _response = await self._client_wrapper.httpx_client.request(
1056
- f"v1/folders/{jsonable_encoder(folder_id)}/agents",
1057
- method="GET",
1058
- request_options=request_options,
1059
- )
1060
- try:
1061
- if 200 <= _response.status_code < 300:
1062
- _data = typing.cast(
1063
- typing.List[str],
1064
- construct_type(
1065
- type_=typing.List[str], # type: ignore
1066
- object_=_response.json(),
1067
- ),
1068
- )
1069
- return AsyncHttpResponse(response=_response, data=_data)
1070
- if _response.status_code == 422:
1071
- raise UnprocessableEntityError(
1072
- headers=dict(_response.headers),
1073
- body=typing.cast(
1074
- HttpValidationError,
1075
- construct_type(
1076
- type_=HttpValidationError, # type: ignore
1077
- object_=_response.json(),
1078
- ),
1079
- ),
1080
- )
1081
- _response_json = _response.json()
1082
- except JSONDecodeError:
1083
- raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1084
- 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 .folders_list_request_order import FoldersListRequestOrder
6
+
7
+ __all__ = ["FoldersListRequestOrder"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ FoldersListRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -2,14 +2,16 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .types import GroupCreateManagerConfig, GroupUpdateManagerConfig
5
+ from .types import GroupCreateManagerConfig, GroupUpdateManagerConfig, GroupsListRequestOrder
6
6
  from . import messages
7
- from .messages import LettaStreamingResponse, MessagesModifyRequest, MessagesModifyResponse
7
+ from .messages import LettaStreamingResponse, MessagesListRequestOrder, MessagesModifyRequest, MessagesModifyResponse
8
8
 
9
9
  __all__ = [
10
10
  "GroupCreateManagerConfig",
11
11
  "GroupUpdateManagerConfig",
12
+ "GroupsListRequestOrder",
12
13
  "LettaStreamingResponse",
14
+ "MessagesListRequestOrder",
13
15
  "MessagesModifyRequest",
14
16
  "MessagesModifyResponse",
15
17
  "messages",
@@ -10,6 +10,7 @@ from .messages.client import AsyncMessagesClient, MessagesClient
10
10
  from .raw_client import AsyncRawGroupsClient, RawGroupsClient
11
11
  from .types.group_create_manager_config import GroupCreateManagerConfig
12
12
  from .types.group_update_manager_config import GroupUpdateManagerConfig
13
+ from .types.groups_list_request_order import GroupsListRequestOrder
13
14
 
14
15
  # this is used as the default value for optional parameters
15
16
  OMIT = typing.cast(typing.Any, ...)
@@ -38,6 +39,8 @@ class GroupsClient:
38
39
  before: typing.Optional[str] = None,
39
40
  after: typing.Optional[str] = None,
40
41
  limit: typing.Optional[int] = None,
42
+ order: typing.Optional[GroupsListRequestOrder] = None,
43
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
41
44
  project_id: typing.Optional[str] = None,
42
45
  request_options: typing.Optional[RequestOptions] = None,
43
46
  ) -> typing.List[Group]:
@@ -50,13 +53,19 @@ class GroupsClient:
50
53
  Search groups by manager type
51
54
 
52
55
  before : typing.Optional[str]
53
- Cursor for pagination
56
+ Group ID cursor for pagination. Returns groups that come before this group ID in the specified sort order
54
57
 
55
58
  after : typing.Optional[str]
56
- Cursor for pagination
59
+ Group ID cursor for pagination. Returns groups that come after this group ID in the specified sort order
57
60
 
58
61
  limit : typing.Optional[int]
59
- Limit for pagination
62
+ Maximum number of groups to return
63
+
64
+ order : typing.Optional[GroupsListRequestOrder]
65
+ Sort order for groups by creation time. 'asc' for oldest first, 'desc' for newest first
66
+
67
+ order_by : typing.Optional[typing.Literal["created_at"]]
68
+ Field to sort by
60
69
 
61
70
  project_id : typing.Optional[str]
62
71
  Search groups by project id
@@ -84,6 +93,8 @@ class GroupsClient:
84
93
  before=before,
85
94
  after=after,
86
95
  limit=limit,
96
+ order=order,
97
+ order_by=order_by,
87
98
  project_id=project_id,
88
99
  request_options=request_options,
89
100
  )
@@ -334,6 +345,8 @@ class AsyncGroupsClient:
334
345
  before: typing.Optional[str] = None,
335
346
  after: typing.Optional[str] = None,
336
347
  limit: typing.Optional[int] = None,
348
+ order: typing.Optional[GroupsListRequestOrder] = None,
349
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
337
350
  project_id: typing.Optional[str] = None,
338
351
  request_options: typing.Optional[RequestOptions] = None,
339
352
  ) -> typing.List[Group]:
@@ -346,13 +359,19 @@ class AsyncGroupsClient:
346
359
  Search groups by manager type
347
360
 
348
361
  before : typing.Optional[str]
349
- Cursor for pagination
362
+ Group ID cursor for pagination. Returns groups that come before this group ID in the specified sort order
350
363
 
351
364
  after : typing.Optional[str]
352
- Cursor for pagination
365
+ Group ID cursor for pagination. Returns groups that come after this group ID in the specified sort order
353
366
 
354
367
  limit : typing.Optional[int]
355
- Limit for pagination
368
+ Maximum number of groups to return
369
+
370
+ order : typing.Optional[GroupsListRequestOrder]
371
+ Sort order for groups by creation time. 'asc' for oldest first, 'desc' for newest first
372
+
373
+ order_by : typing.Optional[typing.Literal["created_at"]]
374
+ Field to sort by
356
375
 
357
376
  project_id : typing.Optional[str]
358
377
  Search groups by project id
@@ -388,6 +407,8 @@ class AsyncGroupsClient:
388
407
  before=before,
389
408
  after=after,
390
409
  limit=limit,
410
+ order=order,
411
+ order_by=order_by,
391
412
  project_id=project_id,
392
413
  request_options=request_options,
393
414
  )
@@ -2,6 +2,6 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .types import LettaStreamingResponse, MessagesModifyRequest, MessagesModifyResponse
5
+ from .types import LettaStreamingResponse, MessagesListRequestOrder, MessagesModifyRequest, MessagesModifyResponse
6
6
 
7
- __all__ = ["LettaStreamingResponse", "MessagesModifyRequest", "MessagesModifyResponse"]
7
+ __all__ = ["LettaStreamingResponse", "MessagesListRequestOrder", "MessagesModifyRequest", "MessagesModifyResponse"]
@@ -11,6 +11,7 @@ from ...types.letta_streaming_request_messages_item import LettaStreamingRequest
11
11
  from ...types.message_type import MessageType
12
12
  from .raw_client import AsyncRawMessagesClient, RawMessagesClient
13
13
  from .types.letta_streaming_response import LettaStreamingResponse
14
+ from .types.messages_list_request_order import MessagesListRequestOrder
14
15
  from .types.messages_modify_request import MessagesModifyRequest
15
16
  from .types.messages_modify_response import MessagesModifyResponse
16
17
 
@@ -37,9 +38,11 @@ class MessagesClient:
37
38
  self,
38
39
  group_id: str,
39
40
  *,
40
- after: typing.Optional[str] = None,
41
41
  before: typing.Optional[str] = None,
42
+ after: typing.Optional[str] = None,
42
43
  limit: typing.Optional[int] = None,
44
+ order: typing.Optional[MessagesListRequestOrder] = None,
45
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
43
46
  use_assistant_message: typing.Optional[bool] = None,
44
47
  assistant_message_tool_name: typing.Optional[str] = None,
45
48
  assistant_message_tool_kwarg: typing.Optional[str] = None,
@@ -52,14 +55,20 @@ class MessagesClient:
52
55
  ----------
53
56
  group_id : str
54
57
 
55
- after : typing.Optional[str]
56
- Message after which to retrieve the returned messages.
57
-
58
58
  before : typing.Optional[str]
59
- Message before which to retrieve the returned messages.
59
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
60
+
61
+ after : typing.Optional[str]
62
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
60
63
 
61
64
  limit : typing.Optional[int]
62
- Maximum number of messages to retrieve.
65
+ Maximum number of messages to retrieve
66
+
67
+ order : typing.Optional[MessagesListRequestOrder]
68
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
69
+
70
+ order_by : typing.Optional[typing.Literal["created_at"]]
71
+ Field to sort by
63
72
 
64
73
  use_assistant_message : typing.Optional[bool]
65
74
  Whether to use assistant messages
@@ -92,9 +101,11 @@ class MessagesClient:
92
101
  """
93
102
  _response = self._raw_client.list(
94
103
  group_id,
95
- after=after,
96
104
  before=before,
105
+ after=after,
97
106
  limit=limit,
107
+ order=order,
108
+ order_by=order_by,
98
109
  use_assistant_message=use_assistant_message,
99
110
  assistant_message_tool_name=assistant_message_tool_name,
100
111
  assistant_message_tool_kwarg=assistant_message_tool_kwarg,
@@ -167,7 +178,7 @@ class MessagesClient:
167
178
  role="user",
168
179
  content=[
169
180
  TextContent(
170
- text="text",
181
+ text="The sky above the port was the color of television, tuned to a dead channel.",
171
182
  )
172
183
  ],
173
184
  )
@@ -265,7 +276,7 @@ class MessagesClient:
265
276
  role="user",
266
277
  content=[
267
278
  TextContent(
268
- text="text",
279
+ text="The sky above the port was the color of television, tuned to a dead channel.",
269
280
  )
270
281
  ],
271
282
  )
@@ -389,9 +400,11 @@ class AsyncMessagesClient:
389
400
  self,
390
401
  group_id: str,
391
402
  *,
392
- after: typing.Optional[str] = None,
393
403
  before: typing.Optional[str] = None,
404
+ after: typing.Optional[str] = None,
394
405
  limit: typing.Optional[int] = None,
406
+ order: typing.Optional[MessagesListRequestOrder] = None,
407
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
395
408
  use_assistant_message: typing.Optional[bool] = None,
396
409
  assistant_message_tool_name: typing.Optional[str] = None,
397
410
  assistant_message_tool_kwarg: typing.Optional[str] = None,
@@ -404,14 +417,20 @@ class AsyncMessagesClient:
404
417
  ----------
405
418
  group_id : str
406
419
 
407
- after : typing.Optional[str]
408
- Message after which to retrieve the returned messages.
409
-
410
420
  before : typing.Optional[str]
411
- Message before which to retrieve the returned messages.
421
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
422
+
423
+ after : typing.Optional[str]
424
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
412
425
 
413
426
  limit : typing.Optional[int]
414
- Maximum number of messages to retrieve.
427
+ Maximum number of messages to retrieve
428
+
429
+ order : typing.Optional[MessagesListRequestOrder]
430
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
431
+
432
+ order_by : typing.Optional[typing.Literal["created_at"]]
433
+ Field to sort by
415
434
 
416
435
  use_assistant_message : typing.Optional[bool]
417
436
  Whether to use assistant messages
@@ -452,9 +471,11 @@ class AsyncMessagesClient:
452
471
  """
453
472
  _response = await self._raw_client.list(
454
473
  group_id,
455
- after=after,
456
474
  before=before,
475
+ after=after,
457
476
  limit=limit,
477
+ order=order,
478
+ order_by=order_by,
458
479
  use_assistant_message=use_assistant_message,
459
480
  assistant_message_tool_name=assistant_message_tool_name,
460
481
  assistant_message_tool_kwarg=assistant_message_tool_kwarg,
@@ -532,7 +553,7 @@ class AsyncMessagesClient:
532
553
  role="user",
533
554
  content=[
534
555
  TextContent(
535
- text="text",
556
+ text="The sky above the port was the color of television, tuned to a dead channel.",
536
557
  )
537
558
  ],
538
559
  )
@@ -638,7 +659,7 @@ class AsyncMessagesClient:
638
659
  role="user",
639
660
  content=[
640
661
  TextContent(
641
- text="text",
662
+ text="The sky above the port was the color of television, tuned to a dead channel.",
642
663
  )
643
664
  ],
644
665
  )
@@ -21,6 +21,7 @@ from ...types.letta_response import LettaResponse
21
21
  from ...types.letta_streaming_request_messages_item import LettaStreamingRequestMessagesItem
22
22
  from ...types.message_type import MessageType
23
23
  from .types.letta_streaming_response import LettaStreamingResponse
24
+ from .types.messages_list_request_order import MessagesListRequestOrder
24
25
  from .types.messages_modify_request import MessagesModifyRequest
25
26
  from .types.messages_modify_response import MessagesModifyResponse
26
27
 
@@ -36,9 +37,11 @@ class RawMessagesClient:
36
37
  self,
37
38
  group_id: str,
38
39
  *,
39
- after: typing.Optional[str] = None,
40
40
  before: typing.Optional[str] = None,
41
+ after: typing.Optional[str] = None,
41
42
  limit: typing.Optional[int] = None,
43
+ order: typing.Optional[MessagesListRequestOrder] = None,
44
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
42
45
  use_assistant_message: typing.Optional[bool] = None,
43
46
  assistant_message_tool_name: typing.Optional[str] = None,
44
47
  assistant_message_tool_kwarg: typing.Optional[str] = None,
@@ -51,14 +54,20 @@ class RawMessagesClient:
51
54
  ----------
52
55
  group_id : str
53
56
 
54
- after : typing.Optional[str]
55
- Message after which to retrieve the returned messages.
56
-
57
57
  before : typing.Optional[str]
58
- Message before which to retrieve the returned messages.
58
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
59
+
60
+ after : typing.Optional[str]
61
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
59
62
 
60
63
  limit : typing.Optional[int]
61
- Maximum number of messages to retrieve.
64
+ Maximum number of messages to retrieve
65
+
66
+ order : typing.Optional[MessagesListRequestOrder]
67
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
68
+
69
+ order_by : typing.Optional[typing.Literal["created_at"]]
70
+ Field to sort by
62
71
 
63
72
  use_assistant_message : typing.Optional[bool]
64
73
  Whether to use assistant messages
@@ -81,9 +90,11 @@ class RawMessagesClient:
81
90
  f"v1/groups/{jsonable_encoder(group_id)}/messages",
82
91
  method="GET",
83
92
  params={
84
- "after": after,
85
93
  "before": before,
94
+ "after": after,
86
95
  "limit": limit,
96
+ "order": order,
97
+ "order_by": order_by,
87
98
  "use_assistant_message": use_assistant_message,
88
99
  "assistant_message_tool_name": assistant_message_tool_name,
89
100
  "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
@@ -468,9 +479,11 @@ class AsyncRawMessagesClient:
468
479
  self,
469
480
  group_id: str,
470
481
  *,
471
- after: typing.Optional[str] = None,
472
482
  before: typing.Optional[str] = None,
483
+ after: typing.Optional[str] = None,
473
484
  limit: typing.Optional[int] = None,
485
+ order: typing.Optional[MessagesListRequestOrder] = None,
486
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
474
487
  use_assistant_message: typing.Optional[bool] = None,
475
488
  assistant_message_tool_name: typing.Optional[str] = None,
476
489
  assistant_message_tool_kwarg: typing.Optional[str] = None,
@@ -483,14 +496,20 @@ class AsyncRawMessagesClient:
483
496
  ----------
484
497
  group_id : str
485
498
 
486
- after : typing.Optional[str]
487
- Message after which to retrieve the returned messages.
488
-
489
499
  before : typing.Optional[str]
490
- Message before which to retrieve the returned messages.
500
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
501
+
502
+ after : typing.Optional[str]
503
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
491
504
 
492
505
  limit : typing.Optional[int]
493
- Maximum number of messages to retrieve.
506
+ Maximum number of messages to retrieve
507
+
508
+ order : typing.Optional[MessagesListRequestOrder]
509
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
510
+
511
+ order_by : typing.Optional[typing.Literal["created_at"]]
512
+ Field to sort by
494
513
 
495
514
  use_assistant_message : typing.Optional[bool]
496
515
  Whether to use assistant messages
@@ -513,9 +532,11 @@ class AsyncRawMessagesClient:
513
532
  f"v1/groups/{jsonable_encoder(group_id)}/messages",
514
533
  method="GET",
515
534
  params={
516
- "after": after,
517
535
  "before": before,
536
+ "after": after,
518
537
  "limit": limit,
538
+ "order": order,
539
+ "order_by": order_by,
519
540
  "use_assistant_message": use_assistant_message,
520
541
  "assistant_message_tool_name": assistant_message_tool_name,
521
542
  "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
@@ -3,7 +3,8 @@
3
3
  # isort: skip_file
4
4
 
5
5
  from .letta_streaming_response import LettaStreamingResponse
6
+ from .messages_list_request_order import MessagesListRequestOrder
6
7
  from .messages_modify_request import MessagesModifyRequest
7
8
  from .messages_modify_response import MessagesModifyResponse
8
9
 
9
- __all__ = ["LettaStreamingResponse", "MessagesModifyRequest", "MessagesModifyResponse"]
10
+ __all__ = ["LettaStreamingResponse", "MessagesListRequestOrder", "MessagesModifyRequest", "MessagesModifyResponse"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ MessagesListRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]