letta-client 0.1.319__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 +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 +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.319.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
- {letta_client-0.1.319.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.319.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,448 @@
|
|
|
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.archive import Archive
|
|
14
|
+
from ..types.http_validation_error import HttpValidationError
|
|
15
|
+
from .types.list_archives_request_order import ListArchivesRequestOrder
|
|
16
|
+
|
|
17
|
+
# this is used as the default value for optional parameters
|
|
18
|
+
OMIT = typing.cast(typing.Any, ...)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class RawArchivesClient:
|
|
22
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
23
|
+
self._client_wrapper = client_wrapper
|
|
24
|
+
|
|
25
|
+
def list_archives(
|
|
26
|
+
self,
|
|
27
|
+
*,
|
|
28
|
+
before: typing.Optional[str] = None,
|
|
29
|
+
after: typing.Optional[str] = None,
|
|
30
|
+
limit: typing.Optional[int] = None,
|
|
31
|
+
order: typing.Optional[ListArchivesRequestOrder] = None,
|
|
32
|
+
name: typing.Optional[str] = None,
|
|
33
|
+
agent_id: typing.Optional[str] = None,
|
|
34
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
35
|
+
) -> HttpResponse[typing.List[Archive]]:
|
|
36
|
+
"""
|
|
37
|
+
Get a list of all archives for the current organization with optional filters and pagination.
|
|
38
|
+
|
|
39
|
+
Parameters
|
|
40
|
+
----------
|
|
41
|
+
before : typing.Optional[str]
|
|
42
|
+
Archive ID cursor for pagination. Returns archives that come before this archive ID in the specified sort order
|
|
43
|
+
|
|
44
|
+
after : typing.Optional[str]
|
|
45
|
+
Archive ID cursor for pagination. Returns archives that come after this archive ID in the specified sort order
|
|
46
|
+
|
|
47
|
+
limit : typing.Optional[int]
|
|
48
|
+
Maximum number of archives to return
|
|
49
|
+
|
|
50
|
+
order : typing.Optional[ListArchivesRequestOrder]
|
|
51
|
+
Sort order for archives by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
52
|
+
|
|
53
|
+
name : typing.Optional[str]
|
|
54
|
+
Filter by archive name (exact match)
|
|
55
|
+
|
|
56
|
+
agent_id : typing.Optional[str]
|
|
57
|
+
Only archives attached to this agent ID
|
|
58
|
+
|
|
59
|
+
request_options : typing.Optional[RequestOptions]
|
|
60
|
+
Request-specific configuration.
|
|
61
|
+
|
|
62
|
+
Returns
|
|
63
|
+
-------
|
|
64
|
+
HttpResponse[typing.List[Archive]]
|
|
65
|
+
Successful Response
|
|
66
|
+
"""
|
|
67
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
68
|
+
"v1/archives/",
|
|
69
|
+
method="GET",
|
|
70
|
+
params={
|
|
71
|
+
"before": before,
|
|
72
|
+
"after": after,
|
|
73
|
+
"limit": limit,
|
|
74
|
+
"order": order,
|
|
75
|
+
"name": name,
|
|
76
|
+
"agent_id": agent_id,
|
|
77
|
+
},
|
|
78
|
+
request_options=request_options,
|
|
79
|
+
)
|
|
80
|
+
try:
|
|
81
|
+
if 200 <= _response.status_code < 300:
|
|
82
|
+
_data = typing.cast(
|
|
83
|
+
typing.List[Archive],
|
|
84
|
+
construct_type(
|
|
85
|
+
type_=typing.List[Archive], # type: ignore
|
|
86
|
+
object_=_response.json(),
|
|
87
|
+
),
|
|
88
|
+
)
|
|
89
|
+
return HttpResponse(response=_response, data=_data)
|
|
90
|
+
if _response.status_code == 422:
|
|
91
|
+
raise UnprocessableEntityError(
|
|
92
|
+
headers=dict(_response.headers),
|
|
93
|
+
body=typing.cast(
|
|
94
|
+
HttpValidationError,
|
|
95
|
+
construct_type(
|
|
96
|
+
type_=HttpValidationError, # type: ignore
|
|
97
|
+
object_=_response.json(),
|
|
98
|
+
),
|
|
99
|
+
),
|
|
100
|
+
)
|
|
101
|
+
_response_json = _response.json()
|
|
102
|
+
except JSONDecodeError:
|
|
103
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
104
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
105
|
+
|
|
106
|
+
def create_archive(
|
|
107
|
+
self,
|
|
108
|
+
*,
|
|
109
|
+
name: str,
|
|
110
|
+
description: typing.Optional[str] = OMIT,
|
|
111
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
112
|
+
) -> HttpResponse[Archive]:
|
|
113
|
+
"""
|
|
114
|
+
Create a new archive.
|
|
115
|
+
|
|
116
|
+
Parameters
|
|
117
|
+
----------
|
|
118
|
+
name : str
|
|
119
|
+
|
|
120
|
+
description : typing.Optional[str]
|
|
121
|
+
|
|
122
|
+
request_options : typing.Optional[RequestOptions]
|
|
123
|
+
Request-specific configuration.
|
|
124
|
+
|
|
125
|
+
Returns
|
|
126
|
+
-------
|
|
127
|
+
HttpResponse[Archive]
|
|
128
|
+
Successful Response
|
|
129
|
+
"""
|
|
130
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
131
|
+
"v1/archives/",
|
|
132
|
+
method="POST",
|
|
133
|
+
json={
|
|
134
|
+
"name": name,
|
|
135
|
+
"description": description,
|
|
136
|
+
},
|
|
137
|
+
headers={
|
|
138
|
+
"content-type": "application/json",
|
|
139
|
+
},
|
|
140
|
+
request_options=request_options,
|
|
141
|
+
omit=OMIT,
|
|
142
|
+
)
|
|
143
|
+
try:
|
|
144
|
+
if 200 <= _response.status_code < 300:
|
|
145
|
+
_data = typing.cast(
|
|
146
|
+
Archive,
|
|
147
|
+
construct_type(
|
|
148
|
+
type_=Archive, # type: ignore
|
|
149
|
+
object_=_response.json(),
|
|
150
|
+
),
|
|
151
|
+
)
|
|
152
|
+
return HttpResponse(response=_response, data=_data)
|
|
153
|
+
if _response.status_code == 422:
|
|
154
|
+
raise UnprocessableEntityError(
|
|
155
|
+
headers=dict(_response.headers),
|
|
156
|
+
body=typing.cast(
|
|
157
|
+
HttpValidationError,
|
|
158
|
+
construct_type(
|
|
159
|
+
type_=HttpValidationError, # type: ignore
|
|
160
|
+
object_=_response.json(),
|
|
161
|
+
),
|
|
162
|
+
),
|
|
163
|
+
)
|
|
164
|
+
_response_json = _response.json()
|
|
165
|
+
except JSONDecodeError:
|
|
166
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
167
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
168
|
+
|
|
169
|
+
def modify_archive(
|
|
170
|
+
self,
|
|
171
|
+
archive_id: str,
|
|
172
|
+
*,
|
|
173
|
+
name: typing.Optional[str] = OMIT,
|
|
174
|
+
description: typing.Optional[str] = OMIT,
|
|
175
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
176
|
+
) -> HttpResponse[Archive]:
|
|
177
|
+
"""
|
|
178
|
+
Update an existing archive's name and/or description.
|
|
179
|
+
|
|
180
|
+
Parameters
|
|
181
|
+
----------
|
|
182
|
+
archive_id : str
|
|
183
|
+
|
|
184
|
+
name : typing.Optional[str]
|
|
185
|
+
|
|
186
|
+
description : typing.Optional[str]
|
|
187
|
+
|
|
188
|
+
request_options : typing.Optional[RequestOptions]
|
|
189
|
+
Request-specific configuration.
|
|
190
|
+
|
|
191
|
+
Returns
|
|
192
|
+
-------
|
|
193
|
+
HttpResponse[Archive]
|
|
194
|
+
Successful Response
|
|
195
|
+
"""
|
|
196
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
197
|
+
f"v1/archives/{jsonable_encoder(archive_id)}",
|
|
198
|
+
method="PATCH",
|
|
199
|
+
json={
|
|
200
|
+
"name": name,
|
|
201
|
+
"description": description,
|
|
202
|
+
},
|
|
203
|
+
headers={
|
|
204
|
+
"content-type": "application/json",
|
|
205
|
+
},
|
|
206
|
+
request_options=request_options,
|
|
207
|
+
omit=OMIT,
|
|
208
|
+
)
|
|
209
|
+
try:
|
|
210
|
+
if 200 <= _response.status_code < 300:
|
|
211
|
+
_data = typing.cast(
|
|
212
|
+
Archive,
|
|
213
|
+
construct_type(
|
|
214
|
+
type_=Archive, # type: ignore
|
|
215
|
+
object_=_response.json(),
|
|
216
|
+
),
|
|
217
|
+
)
|
|
218
|
+
return HttpResponse(response=_response, data=_data)
|
|
219
|
+
if _response.status_code == 422:
|
|
220
|
+
raise UnprocessableEntityError(
|
|
221
|
+
headers=dict(_response.headers),
|
|
222
|
+
body=typing.cast(
|
|
223
|
+
HttpValidationError,
|
|
224
|
+
construct_type(
|
|
225
|
+
type_=HttpValidationError, # type: ignore
|
|
226
|
+
object_=_response.json(),
|
|
227
|
+
),
|
|
228
|
+
),
|
|
229
|
+
)
|
|
230
|
+
_response_json = _response.json()
|
|
231
|
+
except JSONDecodeError:
|
|
232
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
233
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
class AsyncRawArchivesClient:
|
|
237
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
238
|
+
self._client_wrapper = client_wrapper
|
|
239
|
+
|
|
240
|
+
async def list_archives(
|
|
241
|
+
self,
|
|
242
|
+
*,
|
|
243
|
+
before: typing.Optional[str] = None,
|
|
244
|
+
after: typing.Optional[str] = None,
|
|
245
|
+
limit: typing.Optional[int] = None,
|
|
246
|
+
order: typing.Optional[ListArchivesRequestOrder] = None,
|
|
247
|
+
name: typing.Optional[str] = None,
|
|
248
|
+
agent_id: typing.Optional[str] = None,
|
|
249
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
250
|
+
) -> AsyncHttpResponse[typing.List[Archive]]:
|
|
251
|
+
"""
|
|
252
|
+
Get a list of all archives for the current organization with optional filters and pagination.
|
|
253
|
+
|
|
254
|
+
Parameters
|
|
255
|
+
----------
|
|
256
|
+
before : typing.Optional[str]
|
|
257
|
+
Archive ID cursor for pagination. Returns archives that come before this archive ID in the specified sort order
|
|
258
|
+
|
|
259
|
+
after : typing.Optional[str]
|
|
260
|
+
Archive ID cursor for pagination. Returns archives that come after this archive ID in the specified sort order
|
|
261
|
+
|
|
262
|
+
limit : typing.Optional[int]
|
|
263
|
+
Maximum number of archives to return
|
|
264
|
+
|
|
265
|
+
order : typing.Optional[ListArchivesRequestOrder]
|
|
266
|
+
Sort order for archives by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
267
|
+
|
|
268
|
+
name : typing.Optional[str]
|
|
269
|
+
Filter by archive name (exact match)
|
|
270
|
+
|
|
271
|
+
agent_id : typing.Optional[str]
|
|
272
|
+
Only archives attached to this agent ID
|
|
273
|
+
|
|
274
|
+
request_options : typing.Optional[RequestOptions]
|
|
275
|
+
Request-specific configuration.
|
|
276
|
+
|
|
277
|
+
Returns
|
|
278
|
+
-------
|
|
279
|
+
AsyncHttpResponse[typing.List[Archive]]
|
|
280
|
+
Successful Response
|
|
281
|
+
"""
|
|
282
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
283
|
+
"v1/archives/",
|
|
284
|
+
method="GET",
|
|
285
|
+
params={
|
|
286
|
+
"before": before,
|
|
287
|
+
"after": after,
|
|
288
|
+
"limit": limit,
|
|
289
|
+
"order": order,
|
|
290
|
+
"name": name,
|
|
291
|
+
"agent_id": agent_id,
|
|
292
|
+
},
|
|
293
|
+
request_options=request_options,
|
|
294
|
+
)
|
|
295
|
+
try:
|
|
296
|
+
if 200 <= _response.status_code < 300:
|
|
297
|
+
_data = typing.cast(
|
|
298
|
+
typing.List[Archive],
|
|
299
|
+
construct_type(
|
|
300
|
+
type_=typing.List[Archive], # type: ignore
|
|
301
|
+
object_=_response.json(),
|
|
302
|
+
),
|
|
303
|
+
)
|
|
304
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
305
|
+
if _response.status_code == 422:
|
|
306
|
+
raise UnprocessableEntityError(
|
|
307
|
+
headers=dict(_response.headers),
|
|
308
|
+
body=typing.cast(
|
|
309
|
+
HttpValidationError,
|
|
310
|
+
construct_type(
|
|
311
|
+
type_=HttpValidationError, # type: ignore
|
|
312
|
+
object_=_response.json(),
|
|
313
|
+
),
|
|
314
|
+
),
|
|
315
|
+
)
|
|
316
|
+
_response_json = _response.json()
|
|
317
|
+
except JSONDecodeError:
|
|
318
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
319
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
320
|
+
|
|
321
|
+
async def create_archive(
|
|
322
|
+
self,
|
|
323
|
+
*,
|
|
324
|
+
name: str,
|
|
325
|
+
description: typing.Optional[str] = OMIT,
|
|
326
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
327
|
+
) -> AsyncHttpResponse[Archive]:
|
|
328
|
+
"""
|
|
329
|
+
Create a new archive.
|
|
330
|
+
|
|
331
|
+
Parameters
|
|
332
|
+
----------
|
|
333
|
+
name : str
|
|
334
|
+
|
|
335
|
+
description : typing.Optional[str]
|
|
336
|
+
|
|
337
|
+
request_options : typing.Optional[RequestOptions]
|
|
338
|
+
Request-specific configuration.
|
|
339
|
+
|
|
340
|
+
Returns
|
|
341
|
+
-------
|
|
342
|
+
AsyncHttpResponse[Archive]
|
|
343
|
+
Successful Response
|
|
344
|
+
"""
|
|
345
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
346
|
+
"v1/archives/",
|
|
347
|
+
method="POST",
|
|
348
|
+
json={
|
|
349
|
+
"name": name,
|
|
350
|
+
"description": description,
|
|
351
|
+
},
|
|
352
|
+
headers={
|
|
353
|
+
"content-type": "application/json",
|
|
354
|
+
},
|
|
355
|
+
request_options=request_options,
|
|
356
|
+
omit=OMIT,
|
|
357
|
+
)
|
|
358
|
+
try:
|
|
359
|
+
if 200 <= _response.status_code < 300:
|
|
360
|
+
_data = typing.cast(
|
|
361
|
+
Archive,
|
|
362
|
+
construct_type(
|
|
363
|
+
type_=Archive, # type: ignore
|
|
364
|
+
object_=_response.json(),
|
|
365
|
+
),
|
|
366
|
+
)
|
|
367
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
368
|
+
if _response.status_code == 422:
|
|
369
|
+
raise UnprocessableEntityError(
|
|
370
|
+
headers=dict(_response.headers),
|
|
371
|
+
body=typing.cast(
|
|
372
|
+
HttpValidationError,
|
|
373
|
+
construct_type(
|
|
374
|
+
type_=HttpValidationError, # type: ignore
|
|
375
|
+
object_=_response.json(),
|
|
376
|
+
),
|
|
377
|
+
),
|
|
378
|
+
)
|
|
379
|
+
_response_json = _response.json()
|
|
380
|
+
except JSONDecodeError:
|
|
381
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
382
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
383
|
+
|
|
384
|
+
async def modify_archive(
|
|
385
|
+
self,
|
|
386
|
+
archive_id: str,
|
|
387
|
+
*,
|
|
388
|
+
name: typing.Optional[str] = OMIT,
|
|
389
|
+
description: typing.Optional[str] = OMIT,
|
|
390
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
391
|
+
) -> AsyncHttpResponse[Archive]:
|
|
392
|
+
"""
|
|
393
|
+
Update an existing archive's name and/or description.
|
|
394
|
+
|
|
395
|
+
Parameters
|
|
396
|
+
----------
|
|
397
|
+
archive_id : str
|
|
398
|
+
|
|
399
|
+
name : typing.Optional[str]
|
|
400
|
+
|
|
401
|
+
description : typing.Optional[str]
|
|
402
|
+
|
|
403
|
+
request_options : typing.Optional[RequestOptions]
|
|
404
|
+
Request-specific configuration.
|
|
405
|
+
|
|
406
|
+
Returns
|
|
407
|
+
-------
|
|
408
|
+
AsyncHttpResponse[Archive]
|
|
409
|
+
Successful Response
|
|
410
|
+
"""
|
|
411
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
412
|
+
f"v1/archives/{jsonable_encoder(archive_id)}",
|
|
413
|
+
method="PATCH",
|
|
414
|
+
json={
|
|
415
|
+
"name": name,
|
|
416
|
+
"description": description,
|
|
417
|
+
},
|
|
418
|
+
headers={
|
|
419
|
+
"content-type": "application/json",
|
|
420
|
+
},
|
|
421
|
+
request_options=request_options,
|
|
422
|
+
omit=OMIT,
|
|
423
|
+
)
|
|
424
|
+
try:
|
|
425
|
+
if 200 <= _response.status_code < 300:
|
|
426
|
+
_data = typing.cast(
|
|
427
|
+
Archive,
|
|
428
|
+
construct_type(
|
|
429
|
+
type_=Archive, # type: ignore
|
|
430
|
+
object_=_response.json(),
|
|
431
|
+
),
|
|
432
|
+
)
|
|
433
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
434
|
+
if _response.status_code == 422:
|
|
435
|
+
raise UnprocessableEntityError(
|
|
436
|
+
headers=dict(_response.headers),
|
|
437
|
+
body=typing.cast(
|
|
438
|
+
HttpValidationError,
|
|
439
|
+
construct_type(
|
|
440
|
+
type_=HttpValidationError, # type: ignore
|
|
441
|
+
object_=_response.json(),
|
|
442
|
+
),
|
|
443
|
+
),
|
|
444
|
+
)
|
|
445
|
+
_response_json = _response.json()
|
|
446
|
+
except JSONDecodeError:
|
|
447
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
448
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
letta_client/base_client.py
CHANGED
|
@@ -4,18 +4,17 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
import httpx
|
|
6
6
|
from .agents.client import AgentsClient, AsyncAgentsClient
|
|
7
|
+
from .archives.client import ArchivesClient, AsyncArchivesClient
|
|
7
8
|
from .batches.client import AsyncBatchesClient, BatchesClient
|
|
8
9
|
from .blocks.client import AsyncBlocksClient, BlocksClient
|
|
9
10
|
from .client_side_access_tokens.client import AsyncClientSideAccessTokensClient, ClientSideAccessTokensClient
|
|
10
11
|
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
|
11
|
-
from .embedding_models.client import AsyncEmbeddingModelsClient, EmbeddingModelsClient
|
|
12
12
|
from .environment import LettaEnvironment
|
|
13
13
|
from .folders.client import AsyncFoldersClient, FoldersClient
|
|
14
14
|
from .groups.client import AsyncGroupsClient, GroupsClient
|
|
15
15
|
from .health.client import AsyncHealthClient, HealthClient
|
|
16
16
|
from .identities.client import AsyncIdentitiesClient, IdentitiesClient
|
|
17
17
|
from .jobs.client import AsyncJobsClient, JobsClient
|
|
18
|
-
from .messages.client import AsyncMessagesClient, MessagesClient
|
|
19
18
|
from .models.client import AsyncModelsClient, ModelsClient
|
|
20
19
|
from .projects.client import AsyncProjectsClient, ProjectsClient
|
|
21
20
|
from .providers.client import AsyncProvidersClient, ProvidersClient
|
|
@@ -98,6 +97,7 @@ class LettaBase:
|
|
|
98
97
|
else httpx.Client(timeout=_defaulted_timeout),
|
|
99
98
|
timeout=_defaulted_timeout,
|
|
100
99
|
)
|
|
100
|
+
self.archives = ArchivesClient(client_wrapper=self._client_wrapper)
|
|
101
101
|
self.tools = ToolsClient(client_wrapper=self._client_wrapper)
|
|
102
102
|
self.sources = SourcesClient(client_wrapper=self._client_wrapper)
|
|
103
103
|
self.folders = FoldersClient(client_wrapper=self._client_wrapper)
|
|
@@ -105,7 +105,6 @@ class LettaBase:
|
|
|
105
105
|
self.groups = GroupsClient(client_wrapper=self._client_wrapper)
|
|
106
106
|
self.identities = IdentitiesClient(client_wrapper=self._client_wrapper)
|
|
107
107
|
self.models = ModelsClient(client_wrapper=self._client_wrapper)
|
|
108
|
-
self.embedding_models = EmbeddingModelsClient(client_wrapper=self._client_wrapper)
|
|
109
108
|
self.blocks = BlocksClient(client_wrapper=self._client_wrapper)
|
|
110
109
|
self.jobs = JobsClient(client_wrapper=self._client_wrapper)
|
|
111
110
|
self.health = HealthClient(client_wrapper=self._client_wrapper)
|
|
@@ -115,7 +114,6 @@ class LettaBase:
|
|
|
115
114
|
self.tags = TagsClient(client_wrapper=self._client_wrapper)
|
|
116
115
|
self.telemetry = TelemetryClient(client_wrapper=self._client_wrapper)
|
|
117
116
|
self.batches = BatchesClient(client_wrapper=self._client_wrapper)
|
|
118
|
-
self.messages = MessagesClient(client_wrapper=self._client_wrapper)
|
|
119
117
|
self.voice = VoiceClient(client_wrapper=self._client_wrapper)
|
|
120
118
|
self.templates = TemplatesClient(client_wrapper=self._client_wrapper)
|
|
121
119
|
self.client_side_access_tokens = ClientSideAccessTokensClient(client_wrapper=self._client_wrapper)
|
|
@@ -191,6 +189,7 @@ class AsyncLettaBase:
|
|
|
191
189
|
else httpx.AsyncClient(timeout=_defaulted_timeout),
|
|
192
190
|
timeout=_defaulted_timeout,
|
|
193
191
|
)
|
|
192
|
+
self.archives = AsyncArchivesClient(client_wrapper=self._client_wrapper)
|
|
194
193
|
self.tools = AsyncToolsClient(client_wrapper=self._client_wrapper)
|
|
195
194
|
self.sources = AsyncSourcesClient(client_wrapper=self._client_wrapper)
|
|
196
195
|
self.folders = AsyncFoldersClient(client_wrapper=self._client_wrapper)
|
|
@@ -198,7 +197,6 @@ class AsyncLettaBase:
|
|
|
198
197
|
self.groups = AsyncGroupsClient(client_wrapper=self._client_wrapper)
|
|
199
198
|
self.identities = AsyncIdentitiesClient(client_wrapper=self._client_wrapper)
|
|
200
199
|
self.models = AsyncModelsClient(client_wrapper=self._client_wrapper)
|
|
201
|
-
self.embedding_models = AsyncEmbeddingModelsClient(client_wrapper=self._client_wrapper)
|
|
202
200
|
self.blocks = AsyncBlocksClient(client_wrapper=self._client_wrapper)
|
|
203
201
|
self.jobs = AsyncJobsClient(client_wrapper=self._client_wrapper)
|
|
204
202
|
self.health = AsyncHealthClient(client_wrapper=self._client_wrapper)
|
|
@@ -208,7 +206,6 @@ class AsyncLettaBase:
|
|
|
208
206
|
self.tags = AsyncTagsClient(client_wrapper=self._client_wrapper)
|
|
209
207
|
self.telemetry = AsyncTelemetryClient(client_wrapper=self._client_wrapper)
|
|
210
208
|
self.batches = AsyncBatchesClient(client_wrapper=self._client_wrapper)
|
|
211
|
-
self.messages = AsyncMessagesClient(client_wrapper=self._client_wrapper)
|
|
212
209
|
self.voice = AsyncVoiceClient(client_wrapper=self._client_wrapper)
|
|
213
210
|
self.templates = AsyncTemplatesClient(client_wrapper=self._client_wrapper)
|
|
214
211
|
self.client_side_access_tokens = AsyncClientSideAccessTokensClient(client_wrapper=self._client_wrapper)
|