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.
- 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 +104 -24
- letta_client/agents/messages/raw_client.py +109 -17
- 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 +39 -8
- 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 +39 -8
- 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 +16 -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 +16 -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 +16 -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.319.dist-info → letta_client-0.1.321.dist-info}/METADATA +9 -9
- {letta_client-0.1.319.dist-info → letta_client-0.1.321.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.319.dist-info → letta_client-0.1.321.dist-info}/WHEEL +0 -0
|
@@ -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.step_metrics import StepMetrics
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RawMetricsClient:
|
|
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[StepMetrics]:
|
|
24
|
+
"""
|
|
25
|
+
Get step metrics by step ID.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
step_id : str
|
|
30
|
+
|
|
31
|
+
request_options : typing.Optional[RequestOptions]
|
|
32
|
+
Request-specific configuration.
|
|
33
|
+
|
|
34
|
+
Returns
|
|
35
|
+
-------
|
|
36
|
+
HttpResponse[StepMetrics]
|
|
37
|
+
Successful Response
|
|
38
|
+
"""
|
|
39
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
40
|
+
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
41
|
+
method="GET",
|
|
42
|
+
request_options=request_options,
|
|
43
|
+
)
|
|
44
|
+
try:
|
|
45
|
+
if 200 <= _response.status_code < 300:
|
|
46
|
+
_data = typing.cast(
|
|
47
|
+
StepMetrics,
|
|
48
|
+
construct_type(
|
|
49
|
+
type_=StepMetrics, # 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 AsyncRawMetricsClient:
|
|
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[StepMetrics]:
|
|
78
|
+
"""
|
|
79
|
+
Get step metrics by step ID.
|
|
80
|
+
|
|
81
|
+
Parameters
|
|
82
|
+
----------
|
|
83
|
+
step_id : str
|
|
84
|
+
|
|
85
|
+
request_options : typing.Optional[RequestOptions]
|
|
86
|
+
Request-specific configuration.
|
|
87
|
+
|
|
88
|
+
Returns
|
|
89
|
+
-------
|
|
90
|
+
AsyncHttpResponse[StepMetrics]
|
|
91
|
+
Successful Response
|
|
92
|
+
"""
|
|
93
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
94
|
+
f"v1/steps/{jsonable_encoder(step_id)}/metrics",
|
|
95
|
+
method="GET",
|
|
96
|
+
request_options=request_options,
|
|
97
|
+
)
|
|
98
|
+
try:
|
|
99
|
+
if 200 <= _response.status_code < 300:
|
|
100
|
+
_data = typing.cast(
|
|
101
|
+
StepMetrics,
|
|
102
|
+
construct_type(
|
|
103
|
+
type_=StepMetrics, # 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/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)
|