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