letta-client 0.1.0__py3-none-any.whl → 0.1.4__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.
Files changed (193) hide show
  1. letta/__init__.py +277 -0
  2. letta/agents/__init__.py +44 -0
  3. letta/agents/archival_memory/__init__.py +2 -0
  4. letta/agents/archival_memory/client.py +591 -0
  5. letta/agents/client.py +2604 -0
  6. letta/agents/context/__init__.py +2 -0
  7. letta/agents/context/client.py +145 -0
  8. letta/agents/memory/__init__.py +5 -0
  9. letta/agents/memory/client.py +149 -0
  10. letta/agents/memory/messages/__init__.py +2 -0
  11. letta/agents/memory/messages/client.py +147 -0
  12. letta/agents/memory_blocks/__init__.py +2 -0
  13. letta/agents/memory_blocks/client.py +364 -0
  14. letta/agents/messages/__init__.py +5 -0
  15. letta/agents/messages/client.py +787 -0
  16. letta/agents/messages/types/__init__.py +7 -0
  17. letta/agents/messages/types/letta_streaming_response.py +20 -0
  18. letta/agents/messages/types/messages_list_response.py +7 -0
  19. letta/agents/messages/types/messages_list_response_item.py +13 -0
  20. letta/agents/recall_memory/__init__.py +2 -0
  21. letta/agents/recall_memory/client.py +147 -0
  22. letta/agents/sources/__init__.py +2 -0
  23. letta/agents/sources/client.py +145 -0
  24. letta/agents/tools/__init__.py +2 -0
  25. letta/agents/tools/client.py +408 -0
  26. letta/agents/types/__init__.py +39 -0
  27. letta/agents/types/agents_get_agent_variables_response.py +19 -0
  28. letta/agents/types/agents_migrate_response.py +19 -0
  29. letta/agents/types/agents_search_deployed_agents_request_combinator.py +5 -0
  30. letta/agents/types/agents_search_deployed_agents_request_search_item.py +16 -0
  31. letta/agents/types/agents_search_deployed_agents_request_search_item_direction.py +27 -0
  32. letta/agents/types/agents_search_deployed_agents_request_search_item_direction_direction.py +5 -0
  33. letta/agents/types/agents_search_deployed_agents_request_search_item_direction_value.py +7 -0
  34. letta/agents/types/agents_search_deployed_agents_request_search_item_operator.py +24 -0
  35. letta/agents/types/agents_search_deployed_agents_request_search_item_operator_operator.py +7 -0
  36. letta/agents/types/agents_search_deployed_agents_request_search_item_zero.py +20 -0
  37. letta/agents/types/create_agent_request_tool_rules_item.py +9 -0
  38. letta/agents/types/update_agent_tool_rules_item.py +9 -0
  39. letta/blocks/__init__.py +2 -0
  40. letta/blocks/client.py +1054 -0
  41. letta/client.py +164 -0
  42. letta/core/__init__.py +47 -0
  43. letta/core/api_error.py +15 -0
  44. letta/core/client_wrapper.py +76 -0
  45. letta/core/datetime_utils.py +28 -0
  46. letta/core/file.py +67 -0
  47. letta/core/http_client.py +499 -0
  48. letta/core/jsonable_encoder.py +101 -0
  49. letta/core/pydantic_utilities.py +296 -0
  50. letta/core/query_encoder.py +58 -0
  51. letta/core/remove_none_from_dict.py +11 -0
  52. letta/core/request_options.py +35 -0
  53. letta/core/serialization.py +272 -0
  54. letta/environment.py +8 -0
  55. letta/errors/__init__.py +8 -0
  56. letta/errors/conflict_error.py +9 -0
  57. letta/errors/internal_server_error.py +9 -0
  58. letta/errors/not_found_error.py +9 -0
  59. letta/errors/unprocessable_entity_error.py +9 -0
  60. letta/health/__init__.py +2 -0
  61. letta/health/client.py +108 -0
  62. letta/jobs/__init__.py +2 -0
  63. letta/jobs/client.py +503 -0
  64. letta/models/__init__.py +2 -0
  65. letta/models/client.py +201 -0
  66. letta/sources/__init__.py +5 -0
  67. letta/sources/client.py +1154 -0
  68. letta/sources/files/__init__.py +2 -0
  69. letta/sources/files/client.py +436 -0
  70. letta/sources/passages/__init__.py +2 -0
  71. letta/sources/passages/client.py +145 -0
  72. letta/tools/__init__.py +2 -0
  73. letta/tools/client.py +1823 -0
  74. letta/types/__init__.py +231 -0
  75. letta/types/action_model.py +36 -0
  76. letta/types/action_parameters_model.py +26 -0
  77. letta/types/action_response_model.py +26 -0
  78. letta/types/agent_state.py +139 -0
  79. letta/types/agent_state_tool_rules_item.py +9 -0
  80. letta/types/agent_type.py +8 -0
  81. letta/types/app_auth_scheme.py +34 -0
  82. letta/types/app_auth_scheme_auth_mode.py +7 -0
  83. letta/types/app_model.py +44 -0
  84. letta/types/archival_memory_summary.py +22 -0
  85. letta/types/assistant_file.py +33 -0
  86. letta/types/assistant_message_input.py +23 -0
  87. letta/types/assistant_message_output.py +23 -0
  88. letta/types/auth_request.py +22 -0
  89. letta/types/auth_response.py +29 -0
  90. letta/types/auth_scheme_field.py +30 -0
  91. letta/types/block.py +91 -0
  92. letta/types/block_update.py +60 -0
  93. letta/types/chat_completion_request.py +49 -0
  94. letta/types/chat_completion_request_function_call.py +6 -0
  95. letta/types/chat_completion_request_messages_item.py +11 -0
  96. letta/types/chat_completion_request_stop.py +5 -0
  97. letta/types/chat_completion_request_tool_choice.py +8 -0
  98. letta/types/chat_completion_response.py +32 -0
  99. letta/types/child_tool_rule.py +33 -0
  100. letta/types/choice.py +25 -0
  101. letta/types/conditional_tool_rule.py +43 -0
  102. letta/types/conflict_error_body.py +21 -0
  103. letta/types/context_window_overview.py +105 -0
  104. letta/types/create_assistant_file_request.py +22 -0
  105. letta/types/create_assistant_request.py +57 -0
  106. letta/types/create_block.py +56 -0
  107. letta/types/delete_assistant_file_response.py +28 -0
  108. letta/types/delete_assistant_response.py +28 -0
  109. letta/types/e_2_b_sandbox_config.py +32 -0
  110. letta/types/embedding_config.py +77 -0
  111. letta/types/embedding_config_embedding_endpoint_type.py +26 -0
  112. letta/types/file_metadata.py +82 -0
  113. letta/types/function_call_input.py +19 -0
  114. letta/types/function_call_output.py +20 -0
  115. letta/types/function_schema.py +21 -0
  116. letta/types/health.py +24 -0
  117. letta/types/http_validation_error.py +20 -0
  118. letta/types/init_tool_rule.py +29 -0
  119. letta/types/internal_server_error_body.py +19 -0
  120. letta/types/job.py +79 -0
  121. letta/types/job_status.py +5 -0
  122. letta/types/letta_request.py +33 -0
  123. letta/types/letta_response.py +37 -0
  124. letta/types/letta_schemas_letta_message_tool_call.py +21 -0
  125. letta/types/letta_schemas_message_message.py +103 -0
  126. letta/types/letta_schemas_openai_chat_completion_request_tool.py +21 -0
  127. letta/types/letta_schemas_openai_chat_completion_request_tool_call.py +24 -0
  128. letta/types/letta_schemas_openai_chat_completion_request_tool_call_function.py +20 -0
  129. letta/types/letta_schemas_openai_chat_completion_response_message.py +24 -0
  130. letta/types/letta_schemas_openai_chat_completion_response_tool_call.py +22 -0
  131. letta/types/letta_schemas_openai_chat_completions_tool_call_function.py +27 -0
  132. letta/types/letta_schemas_openai_chat_completions_tool_call_input.py +29 -0
  133. letta/types/letta_schemas_openai_chat_completions_tool_call_output.py +29 -0
  134. letta/types/letta_schemas_tool_tool.py +88 -0
  135. letta/types/letta_usage_statistics.py +48 -0
  136. letta/types/llm_config.py +65 -0
  137. letta/types/llm_config_model_endpoint_type.py +26 -0
  138. letta/types/local_sandbox_config.py +32 -0
  139. letta/types/log_prob_token.py +21 -0
  140. letta/types/memory.py +32 -0
  141. letta/types/message_content_log_prob.py +23 -0
  142. letta/types/message_create.py +37 -0
  143. letta/types/message_create_role.py +5 -0
  144. letta/types/message_role.py +5 -0
  145. letta/types/not_found_error_body.py +19 -0
  146. letta/types/not_found_error_body_message.py +11 -0
  147. letta/types/open_ai_assistant.py +67 -0
  148. letta/types/organization.py +33 -0
  149. letta/types/organization_create.py +22 -0
  150. letta/types/passage.py +107 -0
  151. letta/types/reasoning_message.py +32 -0
  152. letta/types/recall_memory_summary.py +22 -0
  153. letta/types/response_format.py +19 -0
  154. letta/types/sandbox_config.py +59 -0
  155. letta/types/sandbox_config_create.py +23 -0
  156. letta/types/sandbox_config_create_config.py +7 -0
  157. letta/types/sandbox_config_update.py +27 -0
  158. letta/types/sandbox_config_update_config.py +7 -0
  159. letta/types/sandbox_environment_variable.py +68 -0
  160. letta/types/sandbox_environment_variable_create.py +32 -0
  161. letta/types/sandbox_environment_variable_update.py +36 -0
  162. letta/types/sandbox_type.py +5 -0
  163. letta/types/source.py +85 -0
  164. letta/types/system_message_input.py +21 -0
  165. letta/types/system_message_output.py +32 -0
  166. letta/types/terminal_tool_rule.py +29 -0
  167. letta/types/tool_call_delta.py +21 -0
  168. letta/types/tool_call_function_output.py +27 -0
  169. letta/types/tool_call_message.py +33 -0
  170. letta/types/tool_call_message_tool_call.py +7 -0
  171. letta/types/tool_create.py +57 -0
  172. letta/types/tool_function_choice.py +21 -0
  173. letta/types/tool_input.py +21 -0
  174. letta/types/tool_message.py +21 -0
  175. letta/types/tool_return_message.py +41 -0
  176. letta/types/tool_return_message_status.py +5 -0
  177. letta/types/tool_rule_type.py +10 -0
  178. letta/types/usage_statistics.py +21 -0
  179. letta/types/user.py +57 -0
  180. letta/types/user_create.py +27 -0
  181. letta/types/user_message_input.py +22 -0
  182. letta/types/user_message_input_content.py +5 -0
  183. letta/types/user_message_output.py +32 -0
  184. letta/types/user_update.py +32 -0
  185. letta/types/validation_error.py +22 -0
  186. letta/types/validation_error_loc_item.py +5 -0
  187. letta/version.py +3 -0
  188. letta_client-0.1.4.dist-info/METADATA +189 -0
  189. letta_client-0.1.4.dist-info/RECORD +191 -0
  190. {letta_client-0.1.0.dist-info → letta_client-0.1.4.dist-info}/WHEEL +1 -1
  191. letta_client-0.1.0.dist-info/METADATA +0 -15
  192. letta_client-0.1.0.dist-info/RECORD +0 -4
  193. /letta_client/__init__.py → /letta/py.typed +0 -0
@@ -0,0 +1,2 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
@@ -0,0 +1,436 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ...core.client_wrapper import SyncClientWrapper
5
+ from ... import core
6
+ from ...core.request_options import RequestOptions
7
+ from ...types.job import Job
8
+ from ...core.jsonable_encoder import jsonable_encoder
9
+ from ...core.pydantic_utilities import parse_obj_as
10
+ from ...errors.unprocessable_entity_error import UnprocessableEntityError
11
+ from ...types.http_validation_error import HttpValidationError
12
+ from json.decoder import JSONDecodeError
13
+ from ...core.api_error import ApiError
14
+ from ...types.file_metadata import FileMetadata
15
+ from ...core.client_wrapper import AsyncClientWrapper
16
+
17
+ # this is used as the default value for optional parameters
18
+ OMIT = typing.cast(typing.Any, ...)
19
+
20
+
21
+ class FilesClient:
22
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
23
+ self._client_wrapper = client_wrapper
24
+
25
+ def upload(
26
+ self, source_id: str, *, file: core.File, request_options: typing.Optional[RequestOptions] = None
27
+ ) -> Job:
28
+ """
29
+ Upload a file to a data source.
30
+
31
+ Parameters
32
+ ----------
33
+ source_id : str
34
+
35
+ file : core.File
36
+ See core.File for more documentation
37
+
38
+ request_options : typing.Optional[RequestOptions]
39
+ Request-specific configuration.
40
+
41
+ Returns
42
+ -------
43
+ Job
44
+ Successful Response
45
+
46
+ Examples
47
+ --------
48
+ from letta import Letta
49
+
50
+ client = Letta(
51
+ token="YOUR_TOKEN",
52
+ )
53
+ client.sources.files.upload(
54
+ source_id="source_id",
55
+ )
56
+ """
57
+ _response = self._client_wrapper.httpx_client.request(
58
+ f"v1/sources/{jsonable_encoder(source_id)}/upload",
59
+ method="POST",
60
+ data={},
61
+ files={
62
+ "file": file,
63
+ },
64
+ request_options=request_options,
65
+ omit=OMIT,
66
+ )
67
+ try:
68
+ if 200 <= _response.status_code < 300:
69
+ return typing.cast(
70
+ Job,
71
+ parse_obj_as(
72
+ type_=Job, # type: ignore
73
+ object_=_response.json(),
74
+ ),
75
+ )
76
+ if _response.status_code == 422:
77
+ raise UnprocessableEntityError(
78
+ typing.cast(
79
+ HttpValidationError,
80
+ parse_obj_as(
81
+ type_=HttpValidationError, # type: ignore
82
+ object_=_response.json(),
83
+ ),
84
+ )
85
+ )
86
+ _response_json = _response.json()
87
+ except JSONDecodeError:
88
+ raise ApiError(status_code=_response.status_code, body=_response.text)
89
+ raise ApiError(status_code=_response.status_code, body=_response_json)
90
+
91
+ def list(
92
+ self,
93
+ source_id: str,
94
+ *,
95
+ limit: typing.Optional[int] = None,
96
+ cursor: typing.Optional[str] = None,
97
+ request_options: typing.Optional[RequestOptions] = None,
98
+ ) -> typing.List[FileMetadata]:
99
+ """
100
+ List paginated files associated with a data source.
101
+
102
+ Parameters
103
+ ----------
104
+ source_id : str
105
+
106
+ limit : typing.Optional[int]
107
+ Number of files to return
108
+
109
+ cursor : typing.Optional[str]
110
+ Pagination cursor to fetch the next set of results
111
+
112
+ request_options : typing.Optional[RequestOptions]
113
+ Request-specific configuration.
114
+
115
+ Returns
116
+ -------
117
+ typing.List[FileMetadata]
118
+ Successful Response
119
+
120
+ Examples
121
+ --------
122
+ from letta import Letta
123
+
124
+ client = Letta(
125
+ token="YOUR_TOKEN",
126
+ )
127
+ client.sources.files.list(
128
+ source_id="source_id",
129
+ )
130
+ """
131
+ _response = self._client_wrapper.httpx_client.request(
132
+ f"v1/sources/{jsonable_encoder(source_id)}/files",
133
+ method="GET",
134
+ params={
135
+ "limit": limit,
136
+ "cursor": cursor,
137
+ },
138
+ request_options=request_options,
139
+ )
140
+ try:
141
+ if 200 <= _response.status_code < 300:
142
+ return typing.cast(
143
+ typing.List[FileMetadata],
144
+ parse_obj_as(
145
+ type_=typing.List[FileMetadata], # type: ignore
146
+ object_=_response.json(),
147
+ ),
148
+ )
149
+ if _response.status_code == 422:
150
+ raise UnprocessableEntityError(
151
+ typing.cast(
152
+ HttpValidationError,
153
+ parse_obj_as(
154
+ type_=HttpValidationError, # type: ignore
155
+ object_=_response.json(),
156
+ ),
157
+ )
158
+ )
159
+ _response_json = _response.json()
160
+ except JSONDecodeError:
161
+ raise ApiError(status_code=_response.status_code, body=_response.text)
162
+ raise ApiError(status_code=_response.status_code, body=_response_json)
163
+
164
+ def delete(self, source_id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
165
+ """
166
+ Delete a data source.
167
+
168
+ Parameters
169
+ ----------
170
+ source_id : str
171
+
172
+ file_id : str
173
+
174
+ request_options : typing.Optional[RequestOptions]
175
+ Request-specific configuration.
176
+
177
+ Returns
178
+ -------
179
+ None
180
+
181
+ Examples
182
+ --------
183
+ from letta import Letta
184
+
185
+ client = Letta(
186
+ token="YOUR_TOKEN",
187
+ )
188
+ client.sources.files.delete(
189
+ source_id="source_id",
190
+ file_id="file_id",
191
+ )
192
+ """
193
+ _response = self._client_wrapper.httpx_client.request(
194
+ f"v1/sources/{jsonable_encoder(source_id)}/{jsonable_encoder(file_id)}",
195
+ method="DELETE",
196
+ request_options=request_options,
197
+ )
198
+ try:
199
+ if 200 <= _response.status_code < 300:
200
+ return
201
+ if _response.status_code == 422:
202
+ raise UnprocessableEntityError(
203
+ typing.cast(
204
+ HttpValidationError,
205
+ parse_obj_as(
206
+ type_=HttpValidationError, # type: ignore
207
+ object_=_response.json(),
208
+ ),
209
+ )
210
+ )
211
+ _response_json = _response.json()
212
+ except JSONDecodeError:
213
+ raise ApiError(status_code=_response.status_code, body=_response.text)
214
+ raise ApiError(status_code=_response.status_code, body=_response_json)
215
+
216
+
217
+ class AsyncFilesClient:
218
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
219
+ self._client_wrapper = client_wrapper
220
+
221
+ async def upload(
222
+ self, source_id: str, *, file: core.File, request_options: typing.Optional[RequestOptions] = None
223
+ ) -> Job:
224
+ """
225
+ Upload a file to a data source.
226
+
227
+ Parameters
228
+ ----------
229
+ source_id : str
230
+
231
+ file : core.File
232
+ See core.File for more documentation
233
+
234
+ request_options : typing.Optional[RequestOptions]
235
+ Request-specific configuration.
236
+
237
+ Returns
238
+ -------
239
+ Job
240
+ Successful Response
241
+
242
+ Examples
243
+ --------
244
+ import asyncio
245
+
246
+ from letta import AsyncLetta
247
+
248
+ client = AsyncLetta(
249
+ token="YOUR_TOKEN",
250
+ )
251
+
252
+
253
+ async def main() -> None:
254
+ await client.sources.files.upload(
255
+ source_id="source_id",
256
+ )
257
+
258
+
259
+ asyncio.run(main())
260
+ """
261
+ _response = await self._client_wrapper.httpx_client.request(
262
+ f"v1/sources/{jsonable_encoder(source_id)}/upload",
263
+ method="POST",
264
+ data={},
265
+ files={
266
+ "file": file,
267
+ },
268
+ request_options=request_options,
269
+ omit=OMIT,
270
+ )
271
+ try:
272
+ if 200 <= _response.status_code < 300:
273
+ return typing.cast(
274
+ Job,
275
+ parse_obj_as(
276
+ type_=Job, # type: ignore
277
+ object_=_response.json(),
278
+ ),
279
+ )
280
+ if _response.status_code == 422:
281
+ raise UnprocessableEntityError(
282
+ typing.cast(
283
+ HttpValidationError,
284
+ parse_obj_as(
285
+ type_=HttpValidationError, # type: ignore
286
+ object_=_response.json(),
287
+ ),
288
+ )
289
+ )
290
+ _response_json = _response.json()
291
+ except JSONDecodeError:
292
+ raise ApiError(status_code=_response.status_code, body=_response.text)
293
+ raise ApiError(status_code=_response.status_code, body=_response_json)
294
+
295
+ async def list(
296
+ self,
297
+ source_id: str,
298
+ *,
299
+ limit: typing.Optional[int] = None,
300
+ cursor: typing.Optional[str] = None,
301
+ request_options: typing.Optional[RequestOptions] = None,
302
+ ) -> typing.List[FileMetadata]:
303
+ """
304
+ List paginated files associated with a data source.
305
+
306
+ Parameters
307
+ ----------
308
+ source_id : str
309
+
310
+ limit : typing.Optional[int]
311
+ Number of files to return
312
+
313
+ cursor : typing.Optional[str]
314
+ Pagination cursor to fetch the next set of results
315
+
316
+ request_options : typing.Optional[RequestOptions]
317
+ Request-specific configuration.
318
+
319
+ Returns
320
+ -------
321
+ typing.List[FileMetadata]
322
+ Successful Response
323
+
324
+ Examples
325
+ --------
326
+ import asyncio
327
+
328
+ from letta import AsyncLetta
329
+
330
+ client = AsyncLetta(
331
+ token="YOUR_TOKEN",
332
+ )
333
+
334
+
335
+ async def main() -> None:
336
+ await client.sources.files.list(
337
+ source_id="source_id",
338
+ )
339
+
340
+
341
+ asyncio.run(main())
342
+ """
343
+ _response = await self._client_wrapper.httpx_client.request(
344
+ f"v1/sources/{jsonable_encoder(source_id)}/files",
345
+ method="GET",
346
+ params={
347
+ "limit": limit,
348
+ "cursor": cursor,
349
+ },
350
+ request_options=request_options,
351
+ )
352
+ try:
353
+ if 200 <= _response.status_code < 300:
354
+ return typing.cast(
355
+ typing.List[FileMetadata],
356
+ parse_obj_as(
357
+ type_=typing.List[FileMetadata], # type: ignore
358
+ object_=_response.json(),
359
+ ),
360
+ )
361
+ if _response.status_code == 422:
362
+ raise UnprocessableEntityError(
363
+ typing.cast(
364
+ HttpValidationError,
365
+ parse_obj_as(
366
+ type_=HttpValidationError, # type: ignore
367
+ object_=_response.json(),
368
+ ),
369
+ )
370
+ )
371
+ _response_json = _response.json()
372
+ except JSONDecodeError:
373
+ raise ApiError(status_code=_response.status_code, body=_response.text)
374
+ raise ApiError(status_code=_response.status_code, body=_response_json)
375
+
376
+ async def delete(
377
+ self, source_id: str, file_id: str, *, request_options: typing.Optional[RequestOptions] = None
378
+ ) -> None:
379
+ """
380
+ Delete a data source.
381
+
382
+ Parameters
383
+ ----------
384
+ source_id : str
385
+
386
+ file_id : str
387
+
388
+ request_options : typing.Optional[RequestOptions]
389
+ Request-specific configuration.
390
+
391
+ Returns
392
+ -------
393
+ None
394
+
395
+ Examples
396
+ --------
397
+ import asyncio
398
+
399
+ from letta import AsyncLetta
400
+
401
+ client = AsyncLetta(
402
+ token="YOUR_TOKEN",
403
+ )
404
+
405
+
406
+ async def main() -> None:
407
+ await client.sources.files.delete(
408
+ source_id="source_id",
409
+ file_id="file_id",
410
+ )
411
+
412
+
413
+ asyncio.run(main())
414
+ """
415
+ _response = await self._client_wrapper.httpx_client.request(
416
+ f"v1/sources/{jsonable_encoder(source_id)}/{jsonable_encoder(file_id)}",
417
+ method="DELETE",
418
+ request_options=request_options,
419
+ )
420
+ try:
421
+ if 200 <= _response.status_code < 300:
422
+ return
423
+ if _response.status_code == 422:
424
+ raise UnprocessableEntityError(
425
+ typing.cast(
426
+ HttpValidationError,
427
+ parse_obj_as(
428
+ type_=HttpValidationError, # type: ignore
429
+ object_=_response.json(),
430
+ ),
431
+ )
432
+ )
433
+ _response_json = _response.json()
434
+ except JSONDecodeError:
435
+ raise ApiError(status_code=_response.status_code, body=_response.text)
436
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -0,0 +1,2 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
@@ -0,0 +1,145 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ...core.client_wrapper import SyncClientWrapper
4
+ import typing
5
+ from ...core.request_options import RequestOptions
6
+ from ...types.passage import Passage
7
+ from ...core.jsonable_encoder import jsonable_encoder
8
+ from ...core.pydantic_utilities import parse_obj_as
9
+ from ...errors.unprocessable_entity_error import UnprocessableEntityError
10
+ from ...types.http_validation_error import HttpValidationError
11
+ from json.decoder import JSONDecodeError
12
+ from ...core.api_error import ApiError
13
+ from ...core.client_wrapper import AsyncClientWrapper
14
+
15
+
16
+ class PassagesClient:
17
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
18
+ self._client_wrapper = client_wrapper
19
+
20
+ def list(self, source_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> typing.List[Passage]:
21
+ """
22
+ List all passages associated with a data source.
23
+
24
+ Parameters
25
+ ----------
26
+ source_id : str
27
+
28
+ request_options : typing.Optional[RequestOptions]
29
+ Request-specific configuration.
30
+
31
+ Returns
32
+ -------
33
+ typing.List[Passage]
34
+ Successful Response
35
+
36
+ Examples
37
+ --------
38
+ from letta import Letta
39
+
40
+ client = Letta(
41
+ token="YOUR_TOKEN",
42
+ )
43
+ client.sources.passages.list(
44
+ source_id="source_id",
45
+ )
46
+ """
47
+ _response = self._client_wrapper.httpx_client.request(
48
+ f"v1/sources/{jsonable_encoder(source_id)}/passages",
49
+ method="GET",
50
+ request_options=request_options,
51
+ )
52
+ try:
53
+ if 200 <= _response.status_code < 300:
54
+ return typing.cast(
55
+ typing.List[Passage],
56
+ parse_obj_as(
57
+ type_=typing.List[Passage], # type: ignore
58
+ object_=_response.json(),
59
+ ),
60
+ )
61
+ if _response.status_code == 422:
62
+ raise UnprocessableEntityError(
63
+ typing.cast(
64
+ HttpValidationError,
65
+ parse_obj_as(
66
+ type_=HttpValidationError, # type: ignore
67
+ object_=_response.json(),
68
+ ),
69
+ )
70
+ )
71
+ _response_json = _response.json()
72
+ except JSONDecodeError:
73
+ raise ApiError(status_code=_response.status_code, body=_response.text)
74
+ raise ApiError(status_code=_response.status_code, body=_response_json)
75
+
76
+
77
+ class AsyncPassagesClient:
78
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
79
+ self._client_wrapper = client_wrapper
80
+
81
+ async def list(
82
+ self, source_id: str, *, request_options: typing.Optional[RequestOptions] = None
83
+ ) -> typing.List[Passage]:
84
+ """
85
+ List all passages associated with a data source.
86
+
87
+ Parameters
88
+ ----------
89
+ source_id : str
90
+
91
+ request_options : typing.Optional[RequestOptions]
92
+ Request-specific configuration.
93
+
94
+ Returns
95
+ -------
96
+ typing.List[Passage]
97
+ Successful Response
98
+
99
+ Examples
100
+ --------
101
+ import asyncio
102
+
103
+ from letta import AsyncLetta
104
+
105
+ client = AsyncLetta(
106
+ token="YOUR_TOKEN",
107
+ )
108
+
109
+
110
+ async def main() -> None:
111
+ await client.sources.passages.list(
112
+ source_id="source_id",
113
+ )
114
+
115
+
116
+ asyncio.run(main())
117
+ """
118
+ _response = await self._client_wrapper.httpx_client.request(
119
+ f"v1/sources/{jsonable_encoder(source_id)}/passages",
120
+ method="GET",
121
+ request_options=request_options,
122
+ )
123
+ try:
124
+ if 200 <= _response.status_code < 300:
125
+ return typing.cast(
126
+ typing.List[Passage],
127
+ parse_obj_as(
128
+ type_=typing.List[Passage], # type: ignore
129
+ object_=_response.json(),
130
+ ),
131
+ )
132
+ if _response.status_code == 422:
133
+ raise UnprocessableEntityError(
134
+ typing.cast(
135
+ HttpValidationError,
136
+ parse_obj_as(
137
+ type_=HttpValidationError, # type: ignore
138
+ object_=_response.json(),
139
+ ),
140
+ )
141
+ )
142
+ _response_json = _response.json()
143
+ except JSONDecodeError:
144
+ raise ApiError(status_code=_response.status_code, body=_response.text)
145
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -0,0 +1,2 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+