letta-client 0.1.318__py3-none-any.whl → 0.1.320__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of letta-client might be problematic. Click here for more details.
- letta_client/__init__.py +51 -9
- letta_client/agents/__init__.py +6 -2
- letta_client/agents/client.py +50 -213
- letta_client/agents/files/client.py +51 -6
- letta_client/agents/files/raw_client.py +94 -9
- letta_client/agents/messages/__init__.py +2 -2
- letta_client/agents/messages/client.py +116 -26
- letta_client/agents/messages/raw_client.py +121 -19
- letta_client/agents/messages/types/__init__.py +2 -2
- letta_client/agents/messages/types/{messages_preview_raw_payload_request.py → messages_preview_request.py} +1 -1
- letta_client/agents/raw_client.py +50 -253
- letta_client/agents/types/__init__.py +4 -0
- letta_client/agents/types/agents_list_request_order.py +5 -0
- letta_client/agents/types/agents_list_request_order_by.py +5 -0
- letta_client/archives/__init__.py +7 -0
- letta_client/archives/client.py +362 -0
- letta_client/archives/raw_client.py +448 -0
- letta_client/archives/types/__init__.py +7 -0
- letta_client/archives/types/list_archives_request_order.py +5 -0
- letta_client/base_client.py +3 -6
- letta_client/batches/__init__.py +5 -0
- letta_client/batches/client.py +68 -8
- letta_client/batches/messages/__init__.py +7 -0
- letta_client/{messages → batches/messages}/client.py +50 -43
- letta_client/{messages → batches/messages}/raw_client.py +52 -45
- letta_client/batches/messages/types/__init__.py +7 -0
- letta_client/batches/messages/types/messages_list_request_order.py +5 -0
- letta_client/batches/raw_client.py +71 -6
- letta_client/batches/types/__init__.py +7 -0
- letta_client/batches/types/batches_list_request_order.py +5 -0
- letta_client/blocks/__init__.py +3 -1
- letta_client/blocks/agents/__init__.py +3 -0
- letta_client/blocks/agents/client.py +57 -2
- letta_client/blocks/agents/raw_client.py +51 -0
- letta_client/blocks/agents/types/__init__.py +7 -0
- letta_client/blocks/agents/types/agents_list_request_order.py +5 -0
- letta_client/blocks/client.py +25 -4
- letta_client/blocks/raw_client.py +25 -4
- letta_client/blocks/types/__init__.py +7 -0
- letta_client/blocks/types/blocks_list_request_order.py +5 -0
- letta_client/core/client_wrapper.py +2 -2
- letta_client/errors/__init__.py +9 -1
- letta_client/errors/internal_server_error.py +10 -0
- letta_client/folders/__init__.py +14 -2
- letta_client/folders/agents/__init__.py +7 -0
- letta_client/folders/agents/client.py +176 -0
- letta_client/folders/agents/raw_client.py +182 -0
- letta_client/folders/agents/types/__init__.py +7 -0
- letta_client/folders/agents/types/agents_list_request_order.py +5 -0
- letta_client/folders/client.py +96 -86
- letta_client/folders/files/__init__.py +3 -0
- letta_client/folders/files/client.py +49 -10
- letta_client/folders/files/raw_client.py +41 -10
- letta_client/folders/files/types/__init__.py +7 -0
- letta_client/folders/files/types/files_list_request_order.py +5 -0
- letta_client/folders/passages/__init__.py +3 -0
- letta_client/folders/passages/client.py +43 -14
- letta_client/folders/passages/raw_client.py +35 -14
- letta_client/folders/passages/types/__init__.py +7 -0
- letta_client/folders/passages/types/passages_list_request_order.py +5 -0
- letta_client/folders/raw_client.py +83 -104
- letta_client/folders/types/__init__.py +7 -0
- letta_client/folders/types/folders_list_request_order.py +5 -0
- letta_client/groups/__init__.py +4 -2
- letta_client/groups/client.py +27 -6
- letta_client/groups/messages/__init__.py +2 -2
- letta_client/groups/messages/client.py +39 -18
- letta_client/groups/messages/raw_client.py +35 -14
- letta_client/groups/messages/types/__init__.py +2 -1
- letta_client/groups/messages/types/messages_list_request_order.py +5 -0
- letta_client/groups/raw_client.py +27 -6
- letta_client/groups/types/__init__.py +2 -1
- letta_client/groups/types/groups_list_request_order.py +5 -0
- letta_client/identities/__init__.py +12 -2
- letta_client/identities/agents/__init__.py +7 -0
- letta_client/identities/agents/client.py +177 -0
- letta_client/identities/agents/raw_client.py +183 -0
- letta_client/identities/agents/types/__init__.py +7 -0
- letta_client/identities/agents/types/agents_list_request_order.py +5 -0
- letta_client/identities/blocks/__init__.py +7 -0
- letta_client/identities/blocks/client.py +177 -0
- letta_client/identities/blocks/raw_client.py +183 -0
- letta_client/identities/blocks/types/__init__.py +7 -0
- letta_client/identities/blocks/types/blocks_list_request_order.py +5 -0
- letta_client/identities/client.py +37 -0
- letta_client/identities/raw_client.py +27 -0
- letta_client/identities/types/__init__.py +7 -0
- letta_client/identities/types/identities_list_request_order.py +5 -0
- letta_client/jobs/client.py +10 -2
- letta_client/jobs/raw_client.py +10 -2
- letta_client/models/__init__.py +3 -0
- letta_client/models/client.py +3 -0
- letta_client/{embedding_models → models/embeddings}/client.py +14 -14
- letta_client/{embedding_models → models/embeddings}/raw_client.py +10 -10
- letta_client/providers/__init__.py +3 -0
- letta_client/providers/client.py +151 -82
- letta_client/providers/raw_client.py +165 -72
- letta_client/providers/types/__init__.py +7 -0
- letta_client/providers/types/providers_list_request_order.py +5 -0
- letta_client/runs/__init__.py +2 -1
- letta_client/runs/client.py +21 -0
- letta_client/runs/messages/__init__.py +3 -0
- letta_client/runs/messages/client.py +15 -49
- letta_client/runs/messages/raw_client.py +13 -49
- letta_client/runs/messages/types/__init__.py +7 -0
- letta_client/runs/messages/types/messages_list_request_order.py +5 -0
- letta_client/runs/raw_client.py +21 -0
- letta_client/steps/__init__.py +13 -3
- letta_client/steps/client.py +32 -83
- letta_client/steps/feedback/client.py +21 -6
- letta_client/steps/feedback/raw_client.py +29 -6
- letta_client/steps/messages/__init__.py +7 -0
- letta_client/steps/messages/client.py +177 -0
- letta_client/steps/messages/raw_client.py +183 -0
- letta_client/steps/messages/types/__init__.py +8 -0
- letta_client/steps/messages/types/messages_list_request_order.py +5 -0
- letta_client/steps/messages/types/messages_list_response_item.py +25 -0
- letta_client/steps/metrics/client.py +110 -0
- letta_client/steps/metrics/raw_client.py +122 -0
- letta_client/steps/raw_client.py +17 -107
- letta_client/steps/trace/__init__.py +4 -0
- letta_client/steps/trace/client.py +110 -0
- letta_client/steps/trace/raw_client.py +122 -0
- letta_client/steps/types/__init__.py +2 -1
- letta_client/steps/types/steps_list_request_order.py +5 -0
- letta_client/tags/__init__.py +3 -0
- letta_client/tags/client.py +57 -4
- letta_client/tags/raw_client.py +49 -2
- letta_client/tags/types/__init__.py +7 -0
- letta_client/tags/types/tags_list_request_order.py +5 -0
- letta_client/telemetry/client.py +8 -0
- letta_client/telemetry/raw_client.py +8 -0
- letta_client/templates/__init__.py +64 -0
- letta_client/templates/agents/__init__.py +58 -0
- letta_client/templates/agents/types/__init__.py +66 -0
- letta_client/templates/agents/types/agents_create_response.py +6 -0
- letta_client/templates/agents/types/agents_create_response_group.py +52 -0
- letta_client/templates/agents/types/agents_create_response_group_base_template_id.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_base_template_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_deployment_id.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_deployment_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_hidden.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_hidden_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id.py +14 -0
- letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_manager_agent_id.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_manager_agent_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_manager_type.py +7 -0
- letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length.py +14 -0
- letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_max_turns.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_max_turns_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length.py +14 -0
- letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_project_id.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_project_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_shared_block_ids.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency.py +14 -0
- letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_template_id.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_template_id_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_termination_token.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_termination_token_item.py +5 -0
- letta_client/templates/agents/types/agents_create_response_group_turns_counter.py +12 -0
- letta_client/templates/agents/types/agents_create_response_group_turns_counter_item.py +5 -0
- letta_client/templates/client.py +260 -0
- letta_client/templates/raw_client.py +395 -0
- letta_client/templates/types/__init__.py +8 -0
- letta_client/templates/types/templates_get_template_snapshot_response.py +4 -0
- letta_client/templates/types/templates_get_template_snapshot_response_blocks_item.py +1 -0
- letta_client/templates/types/templates_get_template_snapshot_response_relationships_item.py +23 -0
- letta_client/templates/types/templates_migrate_deployment_response.py +21 -0
- letta_client/templates/types/templates_set_current_template_from_snapshot_response.py +21 -0
- letta_client/tools/__init__.py +2 -0
- letta_client/tools/client.py +47 -20
- letta_client/tools/raw_client.py +43 -26
- letta_client/tools/types/__init__.py +2 -0
- letta_client/tools/types/tools_list_request_order.py +5 -0
- letta_client/types/__init__.py +10 -2
- letta_client/types/agent_state.py +5 -0
- letta_client/types/archive.py +77 -0
- letta_client/types/batch_job.py +6 -0
- letta_client/types/{body_export_agent_serialized.py → body_export_agent.py} +1 -1
- letta_client/types/child_tool_rule.py +1 -1
- letta_client/types/conditional_tool_rule.py +1 -1
- letta_client/types/continue_tool_rule.py +1 -1
- letta_client/types/deployment_entity.py +2 -0
- letta_client/types/init_tool_rule.py +1 -1
- letta_client/types/internal_server_error_body.py +20 -0
- letta_client/types/internal_template_agent_create.py +5 -0
- letta_client/types/job.py +6 -0
- letta_client/types/letta_schemas_agent_file_agent_schema.py +5 -0
- letta_client/types/max_count_per_step_tool_rule.py +1 -1
- letta_client/types/memory.py +7 -1
- letta_client/types/memory_agent_type.py +7 -0
- letta_client/types/parent_tool_rule.py +1 -1
- letta_client/types/required_before_exit_tool_rule.py +1 -1
- letta_client/types/requires_approval_tool_rule.py +1 -1
- letta_client/types/run.py +6 -0
- letta_client/types/source.py +6 -0
- letta_client/types/step.py +1 -1
- letta_client/types/stop_reason_type.py +1 -0
- letta_client/types/terminal_tool_rule.py +1 -1
- letta_client/types/vector_db_provider.py +5 -0
- letta_client/voice/client.py +2 -8
- letta_client/voice/raw_client.py +0 -8
- {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
- {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/RECORD +211 -114
- /letta_client/{embedding_models → models/embeddings}/__init__.py +0 -0
- /letta_client/{messages → steps/metrics}/__init__.py +0 -0
- {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
letta_client/steps/raw_client.py
CHANGED
|
@@ -12,8 +12,8 @@ from ..core.unchecked_base_model import construct_type
|
|
|
12
12
|
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
|
13
13
|
from ..types.http_validation_error import HttpValidationError
|
|
14
14
|
from ..types.step import Step
|
|
15
|
-
from ..types.step_metrics import StepMetrics
|
|
16
15
|
from .types.steps_list_request_feedback import StepsListRequestFeedback
|
|
16
|
+
from .types.steps_list_request_order import StepsListRequestOrder
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class RawStepsClient:
|
|
@@ -26,7 +26,8 @@ class RawStepsClient:
|
|
|
26
26
|
before: typing.Optional[str] = None,
|
|
27
27
|
after: typing.Optional[str] = None,
|
|
28
28
|
limit: typing.Optional[int] = None,
|
|
29
|
-
order: typing.Optional[
|
|
29
|
+
order: typing.Optional[StepsListRequestOrder] = None,
|
|
30
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
30
31
|
start_date: typing.Optional[str] = None,
|
|
31
32
|
end_date: typing.Optional[str] = None,
|
|
32
33
|
model: typing.Optional[str] = None,
|
|
@@ -40,7 +41,6 @@ class RawStepsClient:
|
|
|
40
41
|
) -> HttpResponse[typing.List[Step]]:
|
|
41
42
|
"""
|
|
42
43
|
List steps with optional pagination and date filters.
|
|
43
|
-
Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
|
|
44
44
|
|
|
45
45
|
Parameters
|
|
46
46
|
----------
|
|
@@ -53,8 +53,11 @@ class RawStepsClient:
|
|
|
53
53
|
limit : typing.Optional[int]
|
|
54
54
|
Maximum number of steps to return
|
|
55
55
|
|
|
56
|
-
order : typing.Optional[
|
|
57
|
-
Sort order
|
|
56
|
+
order : typing.Optional[StepsListRequestOrder]
|
|
57
|
+
Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
58
|
+
|
|
59
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
60
|
+
Field to sort by
|
|
58
61
|
|
|
59
62
|
start_date : typing.Optional[str]
|
|
60
63
|
Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
|
|
@@ -99,6 +102,7 @@ class RawStepsClient:
|
|
|
99
102
|
"after": after,
|
|
100
103
|
"limit": limit,
|
|
101
104
|
"order": order,
|
|
105
|
+
"order_by": order_by,
|
|
102
106
|
"start_date": start_date,
|
|
103
107
|
"end_date": end_date,
|
|
104
108
|
"model": model,
|
|
@@ -184,55 +188,6 @@ class RawStepsClient:
|
|
|
184
188
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
185
189
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
186
190
|
|
|
187
|
-
def retrieve_step_metrics(
|
|
188
|
-
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
189
|
-
) -> HttpResponse[StepMetrics]:
|
|
190
|
-
"""
|
|
191
|
-
Get step metrics by step ID.
|
|
192
|
-
|
|
193
|
-
Parameters
|
|
194
|
-
----------
|
|
195
|
-
step_id : str
|
|
196
|
-
|
|
197
|
-
request_options : typing.Optional[RequestOptions]
|
|
198
|
-
Request-specific configuration.
|
|
199
|
-
|
|
200
|
-
Returns
|
|
201
|
-
-------
|
|
202
|
-
HttpResponse[StepMetrics]
|
|
203
|
-
Successful Response
|
|
204
|
-
"""
|
|
205
|
-
_response = self._client_wrapper.httpx_client.request(
|
|
206
|
-
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
207
|
-
method="GET",
|
|
208
|
-
request_options=request_options,
|
|
209
|
-
)
|
|
210
|
-
try:
|
|
211
|
-
if 200 <= _response.status_code < 300:
|
|
212
|
-
_data = typing.cast(
|
|
213
|
-
StepMetrics,
|
|
214
|
-
construct_type(
|
|
215
|
-
type_=StepMetrics, # type: ignore
|
|
216
|
-
object_=_response.json(),
|
|
217
|
-
),
|
|
218
|
-
)
|
|
219
|
-
return HttpResponse(response=_response, data=_data)
|
|
220
|
-
if _response.status_code == 422:
|
|
221
|
-
raise UnprocessableEntityError(
|
|
222
|
-
headers=dict(_response.headers),
|
|
223
|
-
body=typing.cast(
|
|
224
|
-
HttpValidationError,
|
|
225
|
-
construct_type(
|
|
226
|
-
type_=HttpValidationError, # type: ignore
|
|
227
|
-
object_=_response.json(),
|
|
228
|
-
),
|
|
229
|
-
),
|
|
230
|
-
)
|
|
231
|
-
_response_json = _response.json()
|
|
232
|
-
except JSONDecodeError:
|
|
233
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
234
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
235
|
-
|
|
236
191
|
|
|
237
192
|
class AsyncRawStepsClient:
|
|
238
193
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
@@ -244,7 +199,8 @@ class AsyncRawStepsClient:
|
|
|
244
199
|
before: typing.Optional[str] = None,
|
|
245
200
|
after: typing.Optional[str] = None,
|
|
246
201
|
limit: typing.Optional[int] = None,
|
|
247
|
-
order: typing.Optional[
|
|
202
|
+
order: typing.Optional[StepsListRequestOrder] = None,
|
|
203
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
248
204
|
start_date: typing.Optional[str] = None,
|
|
249
205
|
end_date: typing.Optional[str] = None,
|
|
250
206
|
model: typing.Optional[str] = None,
|
|
@@ -258,7 +214,6 @@ class AsyncRawStepsClient:
|
|
|
258
214
|
) -> AsyncHttpResponse[typing.List[Step]]:
|
|
259
215
|
"""
|
|
260
216
|
List steps with optional pagination and date filters.
|
|
261
|
-
Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
|
|
262
217
|
|
|
263
218
|
Parameters
|
|
264
219
|
----------
|
|
@@ -271,8 +226,11 @@ class AsyncRawStepsClient:
|
|
|
271
226
|
limit : typing.Optional[int]
|
|
272
227
|
Maximum number of steps to return
|
|
273
228
|
|
|
274
|
-
order : typing.Optional[
|
|
275
|
-
Sort order
|
|
229
|
+
order : typing.Optional[StepsListRequestOrder]
|
|
230
|
+
Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
231
|
+
|
|
232
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
233
|
+
Field to sort by
|
|
276
234
|
|
|
277
235
|
start_date : typing.Optional[str]
|
|
278
236
|
Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
|
|
@@ -317,6 +275,7 @@ class AsyncRawStepsClient:
|
|
|
317
275
|
"after": after,
|
|
318
276
|
"limit": limit,
|
|
319
277
|
"order": order,
|
|
278
|
+
"order_by": order_by,
|
|
320
279
|
"start_date": start_date,
|
|
321
280
|
"end_date": end_date,
|
|
322
281
|
"model": model,
|
|
@@ -403,52 +362,3 @@ class AsyncRawStepsClient:
|
|
|
403
362
|
except JSONDecodeError:
|
|
404
363
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
405
364
|
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
406
|
-
|
|
407
|
-
async def retrieve_step_metrics(
|
|
408
|
-
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
409
|
-
) -> AsyncHttpResponse[StepMetrics]:
|
|
410
|
-
"""
|
|
411
|
-
Get step metrics by step ID.
|
|
412
|
-
|
|
413
|
-
Parameters
|
|
414
|
-
----------
|
|
415
|
-
step_id : str
|
|
416
|
-
|
|
417
|
-
request_options : typing.Optional[RequestOptions]
|
|
418
|
-
Request-specific configuration.
|
|
419
|
-
|
|
420
|
-
Returns
|
|
421
|
-
-------
|
|
422
|
-
AsyncHttpResponse[StepMetrics]
|
|
423
|
-
Successful Response
|
|
424
|
-
"""
|
|
425
|
-
_response = await self._client_wrapper.httpx_client.request(
|
|
426
|
-
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
427
|
-
method="GET",
|
|
428
|
-
request_options=request_options,
|
|
429
|
-
)
|
|
430
|
-
try:
|
|
431
|
-
if 200 <= _response.status_code < 300:
|
|
432
|
-
_data = typing.cast(
|
|
433
|
-
StepMetrics,
|
|
434
|
-
construct_type(
|
|
435
|
-
type_=StepMetrics, # type: ignore
|
|
436
|
-
object_=_response.json(),
|
|
437
|
-
),
|
|
438
|
-
)
|
|
439
|
-
return AsyncHttpResponse(response=_response, data=_data)
|
|
440
|
-
if _response.status_code == 422:
|
|
441
|
-
raise UnprocessableEntityError(
|
|
442
|
-
headers=dict(_response.headers),
|
|
443
|
-
body=typing.cast(
|
|
444
|
-
HttpValidationError,
|
|
445
|
-
construct_type(
|
|
446
|
-
type_=HttpValidationError, # type: ignore
|
|
447
|
-
object_=_response.json(),
|
|
448
|
-
),
|
|
449
|
-
),
|
|
450
|
-
)
|
|
451
|
-
_response_json = _response.json()
|
|
452
|
-
except JSONDecodeError:
|
|
453
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
454
|
-
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
|
+
from ...core.request_options import RequestOptions
|
|
7
|
+
from ...types.provider_trace import ProviderTrace
|
|
8
|
+
from .raw_client import AsyncRawTraceClient, RawTraceClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TraceClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
13
|
+
self._raw_client = RawTraceClient(client_wrapper=client_wrapper)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def with_raw_response(self) -> RawTraceClient:
|
|
17
|
+
"""
|
|
18
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
RawTraceClient
|
|
23
|
+
"""
|
|
24
|
+
return self._raw_client
|
|
25
|
+
|
|
26
|
+
def retrieve(
|
|
27
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
28
|
+
) -> typing.Optional[ProviderTrace]:
|
|
29
|
+
"""
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
step_id : str
|
|
33
|
+
|
|
34
|
+
request_options : typing.Optional[RequestOptions]
|
|
35
|
+
Request-specific configuration.
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
-------
|
|
39
|
+
typing.Optional[ProviderTrace]
|
|
40
|
+
Successful Response
|
|
41
|
+
|
|
42
|
+
Examples
|
|
43
|
+
--------
|
|
44
|
+
from letta_client import Letta
|
|
45
|
+
|
|
46
|
+
client = Letta(
|
|
47
|
+
project="YOUR_PROJECT",
|
|
48
|
+
token="YOUR_TOKEN",
|
|
49
|
+
)
|
|
50
|
+
client.steps.trace.retrieve(
|
|
51
|
+
step_id="step_id",
|
|
52
|
+
)
|
|
53
|
+
"""
|
|
54
|
+
_response = self._raw_client.retrieve(step_id, request_options=request_options)
|
|
55
|
+
return _response.data
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class AsyncTraceClient:
|
|
59
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
60
|
+
self._raw_client = AsyncRawTraceClient(client_wrapper=client_wrapper)
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def with_raw_response(self) -> AsyncRawTraceClient:
|
|
64
|
+
"""
|
|
65
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
66
|
+
|
|
67
|
+
Returns
|
|
68
|
+
-------
|
|
69
|
+
AsyncRawTraceClient
|
|
70
|
+
"""
|
|
71
|
+
return self._raw_client
|
|
72
|
+
|
|
73
|
+
async def retrieve(
|
|
74
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
75
|
+
) -> typing.Optional[ProviderTrace]:
|
|
76
|
+
"""
|
|
77
|
+
Parameters
|
|
78
|
+
----------
|
|
79
|
+
step_id : str
|
|
80
|
+
|
|
81
|
+
request_options : typing.Optional[RequestOptions]
|
|
82
|
+
Request-specific configuration.
|
|
83
|
+
|
|
84
|
+
Returns
|
|
85
|
+
-------
|
|
86
|
+
typing.Optional[ProviderTrace]
|
|
87
|
+
Successful Response
|
|
88
|
+
|
|
89
|
+
Examples
|
|
90
|
+
--------
|
|
91
|
+
import asyncio
|
|
92
|
+
|
|
93
|
+
from letta_client import AsyncLetta
|
|
94
|
+
|
|
95
|
+
client = AsyncLetta(
|
|
96
|
+
project="YOUR_PROJECT",
|
|
97
|
+
token="YOUR_TOKEN",
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
async def main() -> None:
|
|
102
|
+
await client.steps.trace.retrieve(
|
|
103
|
+
step_id="step_id",
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
asyncio.run(main())
|
|
108
|
+
"""
|
|
109
|
+
_response = await self._raw_client.retrieve(step_id, request_options=request_options)
|
|
110
|
+
return _response.data
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from json.decoder import JSONDecodeError
|
|
5
|
+
|
|
6
|
+
from ...core.api_error import ApiError
|
|
7
|
+
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
8
|
+
from ...core.http_response import AsyncHttpResponse, HttpResponse
|
|
9
|
+
from ...core.jsonable_encoder import jsonable_encoder
|
|
10
|
+
from ...core.request_options import RequestOptions
|
|
11
|
+
from ...core.unchecked_base_model import construct_type
|
|
12
|
+
from ...errors.unprocessable_entity_error import UnprocessableEntityError
|
|
13
|
+
from ...types.http_validation_error import HttpValidationError
|
|
14
|
+
from ...types.provider_trace import ProviderTrace
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RawTraceClient:
|
|
18
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
19
|
+
self._client_wrapper = client_wrapper
|
|
20
|
+
|
|
21
|
+
def retrieve(
|
|
22
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
23
|
+
) -> HttpResponse[typing.Optional[ProviderTrace]]:
|
|
24
|
+
"""
|
|
25
|
+
Parameters
|
|
26
|
+
----------
|
|
27
|
+
step_id : str
|
|
28
|
+
|
|
29
|
+
request_options : typing.Optional[RequestOptions]
|
|
30
|
+
Request-specific configuration.
|
|
31
|
+
|
|
32
|
+
Returns
|
|
33
|
+
-------
|
|
34
|
+
HttpResponse[typing.Optional[ProviderTrace]]
|
|
35
|
+
Successful Response
|
|
36
|
+
"""
|
|
37
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
38
|
+
f"v1/steps/{jsonable_encoder(step_id)}/trace",
|
|
39
|
+
method="GET",
|
|
40
|
+
request_options=request_options,
|
|
41
|
+
)
|
|
42
|
+
try:
|
|
43
|
+
if _response is None or not _response.text.strip():
|
|
44
|
+
return HttpResponse(response=_response, data=None)
|
|
45
|
+
if 200 <= _response.status_code < 300:
|
|
46
|
+
_data = typing.cast(
|
|
47
|
+
typing.Optional[ProviderTrace],
|
|
48
|
+
construct_type(
|
|
49
|
+
type_=typing.Optional[ProviderTrace], # type: ignore
|
|
50
|
+
object_=_response.json(),
|
|
51
|
+
),
|
|
52
|
+
)
|
|
53
|
+
return HttpResponse(response=_response, data=_data)
|
|
54
|
+
if _response.status_code == 422:
|
|
55
|
+
raise UnprocessableEntityError(
|
|
56
|
+
headers=dict(_response.headers),
|
|
57
|
+
body=typing.cast(
|
|
58
|
+
HttpValidationError,
|
|
59
|
+
construct_type(
|
|
60
|
+
type_=HttpValidationError, # type: ignore
|
|
61
|
+
object_=_response.json(),
|
|
62
|
+
),
|
|
63
|
+
),
|
|
64
|
+
)
|
|
65
|
+
_response_json = _response.json()
|
|
66
|
+
except JSONDecodeError:
|
|
67
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
68
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class AsyncRawTraceClient:
|
|
72
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
73
|
+
self._client_wrapper = client_wrapper
|
|
74
|
+
|
|
75
|
+
async def retrieve(
|
|
76
|
+
self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
77
|
+
) -> AsyncHttpResponse[typing.Optional[ProviderTrace]]:
|
|
78
|
+
"""
|
|
79
|
+
Parameters
|
|
80
|
+
----------
|
|
81
|
+
step_id : str
|
|
82
|
+
|
|
83
|
+
request_options : typing.Optional[RequestOptions]
|
|
84
|
+
Request-specific configuration.
|
|
85
|
+
|
|
86
|
+
Returns
|
|
87
|
+
-------
|
|
88
|
+
AsyncHttpResponse[typing.Optional[ProviderTrace]]
|
|
89
|
+
Successful Response
|
|
90
|
+
"""
|
|
91
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
92
|
+
f"v1/steps/{jsonable_encoder(step_id)}/trace",
|
|
93
|
+
method="GET",
|
|
94
|
+
request_options=request_options,
|
|
95
|
+
)
|
|
96
|
+
try:
|
|
97
|
+
if _response is None or not _response.text.strip():
|
|
98
|
+
return AsyncHttpResponse(response=_response, data=None)
|
|
99
|
+
if 200 <= _response.status_code < 300:
|
|
100
|
+
_data = typing.cast(
|
|
101
|
+
typing.Optional[ProviderTrace],
|
|
102
|
+
construct_type(
|
|
103
|
+
type_=typing.Optional[ProviderTrace], # type: ignore
|
|
104
|
+
object_=_response.json(),
|
|
105
|
+
),
|
|
106
|
+
)
|
|
107
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
108
|
+
if _response.status_code == 422:
|
|
109
|
+
raise UnprocessableEntityError(
|
|
110
|
+
headers=dict(_response.headers),
|
|
111
|
+
body=typing.cast(
|
|
112
|
+
HttpValidationError,
|
|
113
|
+
construct_type(
|
|
114
|
+
type_=HttpValidationError, # type: ignore
|
|
115
|
+
object_=_response.json(),
|
|
116
|
+
),
|
|
117
|
+
),
|
|
118
|
+
)
|
|
119
|
+
_response_json = _response.json()
|
|
120
|
+
except JSONDecodeError:
|
|
121
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
122
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
letta_client/tags/__init__.py
CHANGED
letta_client/tags/client.py
CHANGED
|
@@ -5,6 +5,7 @@ import typing
|
|
|
5
5
|
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
6
6
|
from ..core.request_options import RequestOptions
|
|
7
7
|
from .raw_client import AsyncRawTagsClient, RawTagsClient
|
|
8
|
+
from .types.tags_list_request_order import TagsListRequestOrder
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class TagsClient:
|
|
@@ -25,21 +26,40 @@ class TagsClient:
|
|
|
25
26
|
def list(
|
|
26
27
|
self,
|
|
27
28
|
*,
|
|
29
|
+
before: typing.Optional[str] = None,
|
|
28
30
|
after: typing.Optional[str] = None,
|
|
29
31
|
limit: typing.Optional[int] = None,
|
|
32
|
+
order: typing.Optional[TagsListRequestOrder] = None,
|
|
33
|
+
order_by: typing.Optional[typing.Literal["name"]] = None,
|
|
30
34
|
query_text: typing.Optional[str] = None,
|
|
35
|
+
name: typing.Optional[str] = None,
|
|
31
36
|
request_options: typing.Optional[RequestOptions] = None,
|
|
32
37
|
) -> typing.List[str]:
|
|
33
38
|
"""
|
|
34
|
-
Get
|
|
39
|
+
Get the list of all agent tags that have been created.
|
|
35
40
|
|
|
36
41
|
Parameters
|
|
37
42
|
----------
|
|
43
|
+
before : typing.Optional[str]
|
|
44
|
+
Tag cursor for pagination. Returns tags that come before this tag in the specified sort order
|
|
45
|
+
|
|
38
46
|
after : typing.Optional[str]
|
|
47
|
+
Tag cursor for pagination. Returns tags that come after this tag in the specified sort order
|
|
39
48
|
|
|
40
49
|
limit : typing.Optional[int]
|
|
50
|
+
Maximum number of tags to return
|
|
51
|
+
|
|
52
|
+
order : typing.Optional[TagsListRequestOrder]
|
|
53
|
+
Sort order for tags. 'asc' for alphabetical order, 'desc' for reverse alphabetical order
|
|
54
|
+
|
|
55
|
+
order_by : typing.Optional[typing.Literal["name"]]
|
|
56
|
+
Field to sort by
|
|
41
57
|
|
|
42
58
|
query_text : typing.Optional[str]
|
|
59
|
+
Filter tags by text search. Deprecated, please use name field instead
|
|
60
|
+
|
|
61
|
+
name : typing.Optional[str]
|
|
62
|
+
Filter tags by name
|
|
43
63
|
|
|
44
64
|
request_options : typing.Optional[RequestOptions]
|
|
45
65
|
Request-specific configuration.
|
|
@@ -60,7 +80,14 @@ class TagsClient:
|
|
|
60
80
|
client.tags.list()
|
|
61
81
|
"""
|
|
62
82
|
_response = self._raw_client.list(
|
|
63
|
-
|
|
83
|
+
before=before,
|
|
84
|
+
after=after,
|
|
85
|
+
limit=limit,
|
|
86
|
+
order=order,
|
|
87
|
+
order_by=order_by,
|
|
88
|
+
query_text=query_text,
|
|
89
|
+
name=name,
|
|
90
|
+
request_options=request_options,
|
|
64
91
|
)
|
|
65
92
|
return _response.data
|
|
66
93
|
|
|
@@ -83,21 +110,40 @@ class AsyncTagsClient:
|
|
|
83
110
|
async def list(
|
|
84
111
|
self,
|
|
85
112
|
*,
|
|
113
|
+
before: typing.Optional[str] = None,
|
|
86
114
|
after: typing.Optional[str] = None,
|
|
87
115
|
limit: typing.Optional[int] = None,
|
|
116
|
+
order: typing.Optional[TagsListRequestOrder] = None,
|
|
117
|
+
order_by: typing.Optional[typing.Literal["name"]] = None,
|
|
88
118
|
query_text: typing.Optional[str] = None,
|
|
119
|
+
name: typing.Optional[str] = None,
|
|
89
120
|
request_options: typing.Optional[RequestOptions] = None,
|
|
90
121
|
) -> typing.List[str]:
|
|
91
122
|
"""
|
|
92
|
-
Get
|
|
123
|
+
Get the list of all agent tags that have been created.
|
|
93
124
|
|
|
94
125
|
Parameters
|
|
95
126
|
----------
|
|
127
|
+
before : typing.Optional[str]
|
|
128
|
+
Tag cursor for pagination. Returns tags that come before this tag in the specified sort order
|
|
129
|
+
|
|
96
130
|
after : typing.Optional[str]
|
|
131
|
+
Tag cursor for pagination. Returns tags that come after this tag in the specified sort order
|
|
97
132
|
|
|
98
133
|
limit : typing.Optional[int]
|
|
134
|
+
Maximum number of tags to return
|
|
135
|
+
|
|
136
|
+
order : typing.Optional[TagsListRequestOrder]
|
|
137
|
+
Sort order for tags. 'asc' for alphabetical order, 'desc' for reverse alphabetical order
|
|
138
|
+
|
|
139
|
+
order_by : typing.Optional[typing.Literal["name"]]
|
|
140
|
+
Field to sort by
|
|
99
141
|
|
|
100
142
|
query_text : typing.Optional[str]
|
|
143
|
+
Filter tags by text search. Deprecated, please use name field instead
|
|
144
|
+
|
|
145
|
+
name : typing.Optional[str]
|
|
146
|
+
Filter tags by name
|
|
101
147
|
|
|
102
148
|
request_options : typing.Optional[RequestOptions]
|
|
103
149
|
Request-specific configuration.
|
|
@@ -126,6 +172,13 @@ class AsyncTagsClient:
|
|
|
126
172
|
asyncio.run(main())
|
|
127
173
|
"""
|
|
128
174
|
_response = await self._raw_client.list(
|
|
129
|
-
|
|
175
|
+
before=before,
|
|
176
|
+
after=after,
|
|
177
|
+
limit=limit,
|
|
178
|
+
order=order,
|
|
179
|
+
order_by=order_by,
|
|
180
|
+
query_text=query_text,
|
|
181
|
+
name=name,
|
|
182
|
+
request_options=request_options,
|
|
130
183
|
)
|
|
131
184
|
return _response.data
|