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
@@ -0,0 +1,176 @@
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 .raw_client import AsyncRawAgentsClient, RawAgentsClient
8
+ from .types.agents_list_request_order import AgentsListRequestOrder
9
+
10
+
11
+ class AgentsClient:
12
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
13
+ self._raw_client = RawAgentsClient(client_wrapper=client_wrapper)
14
+
15
+ @property
16
+ def with_raw_response(self) -> RawAgentsClient:
17
+ """
18
+ Retrieves a raw implementation of this client that returns raw responses.
19
+
20
+ Returns
21
+ -------
22
+ RawAgentsClient
23
+ """
24
+ return self._raw_client
25
+
26
+ def list(
27
+ self,
28
+ folder_id: str,
29
+ *,
30
+ before: typing.Optional[str] = None,
31
+ after: typing.Optional[str] = None,
32
+ limit: typing.Optional[int] = None,
33
+ order: typing.Optional[AgentsListRequestOrder] = None,
34
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
35
+ request_options: typing.Optional[RequestOptions] = None,
36
+ ) -> typing.List[str]:
37
+ """
38
+ Get all agent IDs that have the specified folder attached.
39
+
40
+ Parameters
41
+ ----------
42
+ folder_id : str
43
+
44
+ before : typing.Optional[str]
45
+ Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
46
+
47
+ after : typing.Optional[str]
48
+ Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
49
+
50
+ limit : typing.Optional[int]
51
+ Maximum number of agents to return
52
+
53
+ order : typing.Optional[AgentsListRequestOrder]
54
+ Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
55
+
56
+ order_by : typing.Optional[typing.Literal["created_at"]]
57
+ Field to sort by
58
+
59
+ request_options : typing.Optional[RequestOptions]
60
+ Request-specific configuration.
61
+
62
+ Returns
63
+ -------
64
+ typing.List[str]
65
+ Successful Response
66
+
67
+ Examples
68
+ --------
69
+ from letta_client import Letta
70
+
71
+ client = Letta(
72
+ project="YOUR_PROJECT",
73
+ token="YOUR_TOKEN",
74
+ )
75
+ client.folders.agents.list(
76
+ folder_id="folder_id",
77
+ )
78
+ """
79
+ _response = self._raw_client.list(
80
+ folder_id,
81
+ before=before,
82
+ after=after,
83
+ limit=limit,
84
+ order=order,
85
+ order_by=order_by,
86
+ request_options=request_options,
87
+ )
88
+ return _response.data
89
+
90
+
91
+ class AsyncAgentsClient:
92
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
93
+ self._raw_client = AsyncRawAgentsClient(client_wrapper=client_wrapper)
94
+
95
+ @property
96
+ def with_raw_response(self) -> AsyncRawAgentsClient:
97
+ """
98
+ Retrieves a raw implementation of this client that returns raw responses.
99
+
100
+ Returns
101
+ -------
102
+ AsyncRawAgentsClient
103
+ """
104
+ return self._raw_client
105
+
106
+ async def list(
107
+ self,
108
+ folder_id: str,
109
+ *,
110
+ before: typing.Optional[str] = None,
111
+ after: typing.Optional[str] = None,
112
+ limit: typing.Optional[int] = None,
113
+ order: typing.Optional[AgentsListRequestOrder] = None,
114
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
115
+ request_options: typing.Optional[RequestOptions] = None,
116
+ ) -> typing.List[str]:
117
+ """
118
+ Get all agent IDs that have the specified folder attached.
119
+
120
+ Parameters
121
+ ----------
122
+ folder_id : str
123
+
124
+ before : typing.Optional[str]
125
+ Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
126
+
127
+ after : typing.Optional[str]
128
+ Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
129
+
130
+ limit : typing.Optional[int]
131
+ Maximum number of agents to return
132
+
133
+ order : typing.Optional[AgentsListRequestOrder]
134
+ Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
135
+
136
+ order_by : typing.Optional[typing.Literal["created_at"]]
137
+ Field to sort by
138
+
139
+ request_options : typing.Optional[RequestOptions]
140
+ Request-specific configuration.
141
+
142
+ Returns
143
+ -------
144
+ typing.List[str]
145
+ Successful Response
146
+
147
+ Examples
148
+ --------
149
+ import asyncio
150
+
151
+ from letta_client import AsyncLetta
152
+
153
+ client = AsyncLetta(
154
+ project="YOUR_PROJECT",
155
+ token="YOUR_TOKEN",
156
+ )
157
+
158
+
159
+ async def main() -> None:
160
+ await client.folders.agents.list(
161
+ folder_id="folder_id",
162
+ )
163
+
164
+
165
+ asyncio.run(main())
166
+ """
167
+ _response = await self._raw_client.list(
168
+ folder_id,
169
+ before=before,
170
+ after=after,
171
+ limit=limit,
172
+ order=order,
173
+ order_by=order_by,
174
+ request_options=request_options,
175
+ )
176
+ return _response.data
@@ -0,0 +1,182 @@
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.agents_list_request_order import AgentsListRequestOrder
15
+
16
+
17
+ class RawAgentsClient:
18
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
19
+ self._client_wrapper = client_wrapper
20
+
21
+ def list(
22
+ self,
23
+ folder_id: str,
24
+ *,
25
+ before: typing.Optional[str] = None,
26
+ after: typing.Optional[str] = None,
27
+ limit: typing.Optional[int] = None,
28
+ order: typing.Optional[AgentsListRequestOrder] = None,
29
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
30
+ request_options: typing.Optional[RequestOptions] = None,
31
+ ) -> HttpResponse[typing.List[str]]:
32
+ """
33
+ Get all agent IDs that have the specified folder attached.
34
+
35
+ Parameters
36
+ ----------
37
+ folder_id : str
38
+
39
+ before : typing.Optional[str]
40
+ Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
41
+
42
+ after : typing.Optional[str]
43
+ Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
44
+
45
+ limit : typing.Optional[int]
46
+ Maximum number of agents to return
47
+
48
+ order : typing.Optional[AgentsListRequestOrder]
49
+ Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
50
+
51
+ order_by : typing.Optional[typing.Literal["created_at"]]
52
+ Field to sort by
53
+
54
+ request_options : typing.Optional[RequestOptions]
55
+ Request-specific configuration.
56
+
57
+ Returns
58
+ -------
59
+ HttpResponse[typing.List[str]]
60
+ Successful Response
61
+ """
62
+ _response = self._client_wrapper.httpx_client.request(
63
+ f"v1/folders/{jsonable_encoder(folder_id)}/agents",
64
+ method="GET",
65
+ params={
66
+ "before": before,
67
+ "after": after,
68
+ "limit": limit,
69
+ "order": order,
70
+ "order_by": order_by,
71
+ },
72
+ request_options=request_options,
73
+ )
74
+ try:
75
+ if 200 <= _response.status_code < 300:
76
+ _data = typing.cast(
77
+ typing.List[str],
78
+ construct_type(
79
+ type_=typing.List[str], # type: ignore
80
+ object_=_response.json(),
81
+ ),
82
+ )
83
+ return HttpResponse(response=_response, data=_data)
84
+ if _response.status_code == 422:
85
+ raise UnprocessableEntityError(
86
+ headers=dict(_response.headers),
87
+ body=typing.cast(
88
+ HttpValidationError,
89
+ construct_type(
90
+ type_=HttpValidationError, # type: ignore
91
+ object_=_response.json(),
92
+ ),
93
+ ),
94
+ )
95
+ _response_json = _response.json()
96
+ except JSONDecodeError:
97
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
98
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
99
+
100
+
101
+ class AsyncRawAgentsClient:
102
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
103
+ self._client_wrapper = client_wrapper
104
+
105
+ async def list(
106
+ self,
107
+ folder_id: str,
108
+ *,
109
+ before: typing.Optional[str] = None,
110
+ after: typing.Optional[str] = None,
111
+ limit: typing.Optional[int] = None,
112
+ order: typing.Optional[AgentsListRequestOrder] = None,
113
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
114
+ request_options: typing.Optional[RequestOptions] = None,
115
+ ) -> AsyncHttpResponse[typing.List[str]]:
116
+ """
117
+ Get all agent IDs that have the specified folder attached.
118
+
119
+ Parameters
120
+ ----------
121
+ folder_id : str
122
+
123
+ before : typing.Optional[str]
124
+ Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
125
+
126
+ after : typing.Optional[str]
127
+ Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
128
+
129
+ limit : typing.Optional[int]
130
+ Maximum number of agents to return
131
+
132
+ order : typing.Optional[AgentsListRequestOrder]
133
+ Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
134
+
135
+ order_by : typing.Optional[typing.Literal["created_at"]]
136
+ Field to sort by
137
+
138
+ request_options : typing.Optional[RequestOptions]
139
+ Request-specific configuration.
140
+
141
+ Returns
142
+ -------
143
+ AsyncHttpResponse[typing.List[str]]
144
+ Successful Response
145
+ """
146
+ _response = await self._client_wrapper.httpx_client.request(
147
+ f"v1/folders/{jsonable_encoder(folder_id)}/agents",
148
+ method="GET",
149
+ params={
150
+ "before": before,
151
+ "after": after,
152
+ "limit": limit,
153
+ "order": order,
154
+ "order_by": order_by,
155
+ },
156
+ request_options=request_options,
157
+ )
158
+ try:
159
+ if 200 <= _response.status_code < 300:
160
+ _data = typing.cast(
161
+ typing.List[str],
162
+ construct_type(
163
+ type_=typing.List[str], # type: ignore
164
+ object_=_response.json(),
165
+ ),
166
+ )
167
+ return AsyncHttpResponse(response=_response, data=_data)
168
+ if _response.status_code == 422:
169
+ raise UnprocessableEntityError(
170
+ headers=dict(_response.headers),
171
+ body=typing.cast(
172
+ HttpValidationError,
173
+ construct_type(
174
+ type_=HttpValidationError, # type: ignore
175
+ object_=_response.json(),
176
+ ),
177
+ ),
178
+ )
179
+ _response_json = _response.json()
180
+ except JSONDecodeError:
181
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
182
+ 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 .agents_list_request_order import AgentsListRequestOrder
6
+
7
+ __all__ = ["AgentsListRequestOrder"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ AgentsListRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -7,9 +7,11 @@ from ..core.request_options import RequestOptions
7
7
  from ..types.embedding_config import EmbeddingConfig
8
8
  from ..types.folder import Folder
9
9
  from ..types.organization_sources_stats import OrganizationSourcesStats
10
+ from .agents.client import AgentsClient, AsyncAgentsClient
10
11
  from .files.client import AsyncFilesClient, FilesClient
11
12
  from .passages.client import AsyncPassagesClient, PassagesClient
12
13
  from .raw_client import AsyncRawFoldersClient, RawFoldersClient
14
+ from .types.folders_list_request_order import FoldersListRequestOrder
13
15
 
14
16
  # this is used as the default value for optional parameters
15
17
  OMIT = typing.cast(typing.Any, ...)
@@ -20,6 +22,8 @@ class FoldersClient:
20
22
  self._raw_client = RawFoldersClient(client_wrapper=client_wrapper)
21
23
  self.files = FilesClient(client_wrapper=client_wrapper)
22
24
 
25
+ self.agents = AgentsClient(client_wrapper=client_wrapper)
26
+
23
27
  self.passages = PassagesClient(client_wrapper=client_wrapper)
24
28
 
25
29
  @property
@@ -190,7 +194,10 @@ class FoldersClient:
190
194
 
191
195
  def retrieve_by_name(self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None) -> str:
192
196
  """
193
- Get a folder by name
197
+ **Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
198
+
199
+
200
+ Get a folder by name.
194
201
 
195
202
  Parameters
196
203
  ----------
@@ -219,7 +226,7 @@ class FoldersClient:
219
226
  _response = self._raw_client.retrieve_by_name(folder_name, request_options=request_options)
220
227
  return _response.data
221
228
 
222
- def get_folders_metadata(
229
+ def retrieve_metadata(
223
230
  self,
224
231
  *,
225
232
  include_detailed_per_source_metadata: typing.Optional[bool] = None,
@@ -254,19 +261,47 @@ class FoldersClient:
254
261
  project="YOUR_PROJECT",
255
262
  token="YOUR_TOKEN",
256
263
  )
257
- client.folders.get_folders_metadata()
264
+ client.folders.retrieve_metadata()
258
265
  """
259
- _response = self._raw_client.get_folders_metadata(
266
+ _response = self._raw_client.retrieve_metadata(
260
267
  include_detailed_per_source_metadata=include_detailed_per_source_metadata, request_options=request_options
261
268
  )
262
269
  return _response.data
263
270
 
264
- def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> typing.List[Folder]:
271
+ def list(
272
+ self,
273
+ *,
274
+ before: typing.Optional[str] = None,
275
+ after: typing.Optional[str] = None,
276
+ limit: typing.Optional[int] = None,
277
+ order: typing.Optional[FoldersListRequestOrder] = None,
278
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
279
+ name: typing.Optional[str] = None,
280
+ request_options: typing.Optional[RequestOptions] = None,
281
+ ) -> typing.List[Folder]:
265
282
  """
266
283
  List all data folders created by a user.
267
284
 
268
285
  Parameters
269
286
  ----------
287
+ before : typing.Optional[str]
288
+ Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
289
+
290
+ after : typing.Optional[str]
291
+ Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
292
+
293
+ limit : typing.Optional[int]
294
+ Maximum number of folders to return
295
+
296
+ order : typing.Optional[FoldersListRequestOrder]
297
+ Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
298
+
299
+ order_by : typing.Optional[typing.Literal["created_at"]]
300
+ Field to sort by
301
+
302
+ name : typing.Optional[str]
303
+ Folder name to filter by
304
+
270
305
  request_options : typing.Optional[RequestOptions]
271
306
  Request-specific configuration.
272
307
 
@@ -285,7 +320,15 @@ class FoldersClient:
285
320
  )
286
321
  client.folders.list()
287
322
  """
288
- _response = self._raw_client.list(request_options=request_options)
323
+ _response = self._raw_client.list(
324
+ before=before,
325
+ after=after,
326
+ limit=limit,
327
+ order=order,
328
+ order_by=order_by,
329
+ name=name,
330
+ request_options=request_options,
331
+ )
289
332
  return _response.data
290
333
 
291
334
  def create(
@@ -358,45 +401,14 @@ class FoldersClient:
358
401
  )
359
402
  return _response.data
360
403
 
361
- def get_agents_for_folder(
362
- self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
363
- ) -> typing.List[str]:
364
- """
365
- Get all agent IDs that have the specified folder attached.
366
-
367
- Parameters
368
- ----------
369
- folder_id : str
370
-
371
- request_options : typing.Optional[RequestOptions]
372
- Request-specific configuration.
373
-
374
- Returns
375
- -------
376
- typing.List[str]
377
- Successful Response
378
-
379
- Examples
380
- --------
381
- from letta_client import Letta
382
-
383
- client = Letta(
384
- project="YOUR_PROJECT",
385
- token="YOUR_TOKEN",
386
- )
387
- client.folders.get_agents_for_folder(
388
- folder_id="folder_id",
389
- )
390
- """
391
- _response = self._raw_client.get_agents_for_folder(folder_id, request_options=request_options)
392
- return _response.data
393
-
394
404
 
395
405
  class AsyncFoldersClient:
396
406
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
397
407
  self._raw_client = AsyncRawFoldersClient(client_wrapper=client_wrapper)
398
408
  self.files = AsyncFilesClient(client_wrapper=client_wrapper)
399
409
 
410
+ self.agents = AsyncAgentsClient(client_wrapper=client_wrapper)
411
+
400
412
  self.passages = AsyncPassagesClient(client_wrapper=client_wrapper)
401
413
 
402
414
  @property
@@ -601,7 +613,10 @@ class AsyncFoldersClient:
601
613
  self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None
602
614
  ) -> str:
603
615
  """
604
- Get a folder by name
616
+ **Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
617
+
618
+
619
+ Get a folder by name.
605
620
 
606
621
  Parameters
607
622
  ----------
@@ -638,7 +653,7 @@ class AsyncFoldersClient:
638
653
  _response = await self._raw_client.retrieve_by_name(folder_name, request_options=request_options)
639
654
  return _response.data
640
655
 
641
- async def get_folders_metadata(
656
+ async def retrieve_metadata(
642
657
  self,
643
658
  *,
644
659
  include_detailed_per_source_metadata: typing.Optional[bool] = None,
@@ -678,22 +693,50 @@ class AsyncFoldersClient:
678
693
 
679
694
 
680
695
  async def main() -> None:
681
- await client.folders.get_folders_metadata()
696
+ await client.folders.retrieve_metadata()
682
697
 
683
698
 
684
699
  asyncio.run(main())
685
700
  """
686
- _response = await self._raw_client.get_folders_metadata(
701
+ _response = await self._raw_client.retrieve_metadata(
687
702
  include_detailed_per_source_metadata=include_detailed_per_source_metadata, request_options=request_options
688
703
  )
689
704
  return _response.data
690
705
 
691
- async def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> typing.List[Folder]:
706
+ async def list(
707
+ self,
708
+ *,
709
+ before: typing.Optional[str] = None,
710
+ after: typing.Optional[str] = None,
711
+ limit: typing.Optional[int] = None,
712
+ order: typing.Optional[FoldersListRequestOrder] = None,
713
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
714
+ name: typing.Optional[str] = None,
715
+ request_options: typing.Optional[RequestOptions] = None,
716
+ ) -> typing.List[Folder]:
692
717
  """
693
718
  List all data folders created by a user.
694
719
 
695
720
  Parameters
696
721
  ----------
722
+ before : typing.Optional[str]
723
+ Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
724
+
725
+ after : typing.Optional[str]
726
+ Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
727
+
728
+ limit : typing.Optional[int]
729
+ Maximum number of folders to return
730
+
731
+ order : typing.Optional[FoldersListRequestOrder]
732
+ Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
733
+
734
+ order_by : typing.Optional[typing.Literal["created_at"]]
735
+ Field to sort by
736
+
737
+ name : typing.Optional[str]
738
+ Folder name to filter by
739
+
697
740
  request_options : typing.Optional[RequestOptions]
698
741
  Request-specific configuration.
699
742
 
@@ -720,7 +763,15 @@ class AsyncFoldersClient:
720
763
 
721
764
  asyncio.run(main())
722
765
  """
723
- _response = await self._raw_client.list(request_options=request_options)
766
+ _response = await self._raw_client.list(
767
+ before=before,
768
+ after=after,
769
+ limit=limit,
770
+ order=order,
771
+ order_by=order_by,
772
+ name=name,
773
+ request_options=request_options,
774
+ )
724
775
  return _response.data
725
776
 
726
777
  async def create(
@@ -800,44 +851,3 @@ class AsyncFoldersClient:
800
851
  request_options=request_options,
801
852
  )
802
853
  return _response.data
803
-
804
- async def get_agents_for_folder(
805
- self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
806
- ) -> typing.List[str]:
807
- """
808
- Get all agent IDs that have the specified folder attached.
809
-
810
- Parameters
811
- ----------
812
- folder_id : str
813
-
814
- request_options : typing.Optional[RequestOptions]
815
- Request-specific configuration.
816
-
817
- Returns
818
- -------
819
- typing.List[str]
820
- Successful Response
821
-
822
- Examples
823
- --------
824
- import asyncio
825
-
826
- from letta_client import AsyncLetta
827
-
828
- client = AsyncLetta(
829
- project="YOUR_PROJECT",
830
- token="YOUR_TOKEN",
831
- )
832
-
833
-
834
- async def main() -> None:
835
- await client.folders.get_agents_for_folder(
836
- folder_id="folder_id",
837
- )
838
-
839
-
840
- asyncio.run(main())
841
- """
842
- _response = await self._raw_client.get_agents_for_folder(folder_id, request_options=request_options)
843
- return _response.data
@@ -2,3 +2,6 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
+ from .types import FilesListRequestOrder
6
+
7
+ __all__ = ["FilesListRequestOrder"]