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
|
@@ -0,0 +1,176 @@
|
|
|
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 .raw_client import AsyncRawAgentsClient, RawAgentsClient
|
|
8
|
+
from .types.agents_list_request_order import AgentsListRequestOrder
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AgentsClient:
|
|
12
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
13
|
+
self._raw_client = RawAgentsClient(client_wrapper=client_wrapper)
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def with_raw_response(self) -> RawAgentsClient:
|
|
17
|
+
"""
|
|
18
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
19
|
+
|
|
20
|
+
Returns
|
|
21
|
+
-------
|
|
22
|
+
RawAgentsClient
|
|
23
|
+
"""
|
|
24
|
+
return self._raw_client
|
|
25
|
+
|
|
26
|
+
def list(
|
|
27
|
+
self,
|
|
28
|
+
folder_id: str,
|
|
29
|
+
*,
|
|
30
|
+
before: typing.Optional[str] = None,
|
|
31
|
+
after: typing.Optional[str] = None,
|
|
32
|
+
limit: typing.Optional[int] = None,
|
|
33
|
+
order: typing.Optional[AgentsListRequestOrder] = None,
|
|
34
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
35
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
36
|
+
) -> typing.List[str]:
|
|
37
|
+
"""
|
|
38
|
+
Get all agent IDs that have the specified folder attached.
|
|
39
|
+
|
|
40
|
+
Parameters
|
|
41
|
+
----------
|
|
42
|
+
folder_id : str
|
|
43
|
+
|
|
44
|
+
before : typing.Optional[str]
|
|
45
|
+
Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
|
|
46
|
+
|
|
47
|
+
after : typing.Optional[str]
|
|
48
|
+
Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
|
|
49
|
+
|
|
50
|
+
limit : typing.Optional[int]
|
|
51
|
+
Maximum number of agents to return
|
|
52
|
+
|
|
53
|
+
order : typing.Optional[AgentsListRequestOrder]
|
|
54
|
+
Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
55
|
+
|
|
56
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
57
|
+
Field to sort by
|
|
58
|
+
|
|
59
|
+
request_options : typing.Optional[RequestOptions]
|
|
60
|
+
Request-specific configuration.
|
|
61
|
+
|
|
62
|
+
Returns
|
|
63
|
+
-------
|
|
64
|
+
typing.List[str]
|
|
65
|
+
Successful Response
|
|
66
|
+
|
|
67
|
+
Examples
|
|
68
|
+
--------
|
|
69
|
+
from letta_client import Letta
|
|
70
|
+
|
|
71
|
+
client = Letta(
|
|
72
|
+
project="YOUR_PROJECT",
|
|
73
|
+
token="YOUR_TOKEN",
|
|
74
|
+
)
|
|
75
|
+
client.folders.agents.list(
|
|
76
|
+
folder_id="folder_id",
|
|
77
|
+
)
|
|
78
|
+
"""
|
|
79
|
+
_response = self._raw_client.list(
|
|
80
|
+
folder_id,
|
|
81
|
+
before=before,
|
|
82
|
+
after=after,
|
|
83
|
+
limit=limit,
|
|
84
|
+
order=order,
|
|
85
|
+
order_by=order_by,
|
|
86
|
+
request_options=request_options,
|
|
87
|
+
)
|
|
88
|
+
return _response.data
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class AsyncAgentsClient:
|
|
92
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
93
|
+
self._raw_client = AsyncRawAgentsClient(client_wrapper=client_wrapper)
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def with_raw_response(self) -> AsyncRawAgentsClient:
|
|
97
|
+
"""
|
|
98
|
+
Retrieves a raw implementation of this client that returns raw responses.
|
|
99
|
+
|
|
100
|
+
Returns
|
|
101
|
+
-------
|
|
102
|
+
AsyncRawAgentsClient
|
|
103
|
+
"""
|
|
104
|
+
return self._raw_client
|
|
105
|
+
|
|
106
|
+
async def list(
|
|
107
|
+
self,
|
|
108
|
+
folder_id: str,
|
|
109
|
+
*,
|
|
110
|
+
before: typing.Optional[str] = None,
|
|
111
|
+
after: typing.Optional[str] = None,
|
|
112
|
+
limit: typing.Optional[int] = None,
|
|
113
|
+
order: typing.Optional[AgentsListRequestOrder] = None,
|
|
114
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
115
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
116
|
+
) -> typing.List[str]:
|
|
117
|
+
"""
|
|
118
|
+
Get all agent IDs that have the specified folder attached.
|
|
119
|
+
|
|
120
|
+
Parameters
|
|
121
|
+
----------
|
|
122
|
+
folder_id : str
|
|
123
|
+
|
|
124
|
+
before : typing.Optional[str]
|
|
125
|
+
Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
|
|
126
|
+
|
|
127
|
+
after : typing.Optional[str]
|
|
128
|
+
Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
|
|
129
|
+
|
|
130
|
+
limit : typing.Optional[int]
|
|
131
|
+
Maximum number of agents to return
|
|
132
|
+
|
|
133
|
+
order : typing.Optional[AgentsListRequestOrder]
|
|
134
|
+
Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
135
|
+
|
|
136
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
137
|
+
Field to sort by
|
|
138
|
+
|
|
139
|
+
request_options : typing.Optional[RequestOptions]
|
|
140
|
+
Request-specific configuration.
|
|
141
|
+
|
|
142
|
+
Returns
|
|
143
|
+
-------
|
|
144
|
+
typing.List[str]
|
|
145
|
+
Successful Response
|
|
146
|
+
|
|
147
|
+
Examples
|
|
148
|
+
--------
|
|
149
|
+
import asyncio
|
|
150
|
+
|
|
151
|
+
from letta_client import AsyncLetta
|
|
152
|
+
|
|
153
|
+
client = AsyncLetta(
|
|
154
|
+
project="YOUR_PROJECT",
|
|
155
|
+
token="YOUR_TOKEN",
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
async def main() -> None:
|
|
160
|
+
await client.folders.agents.list(
|
|
161
|
+
folder_id="folder_id",
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
asyncio.run(main())
|
|
166
|
+
"""
|
|
167
|
+
_response = await self._raw_client.list(
|
|
168
|
+
folder_id,
|
|
169
|
+
before=before,
|
|
170
|
+
after=after,
|
|
171
|
+
limit=limit,
|
|
172
|
+
order=order,
|
|
173
|
+
order_by=order_by,
|
|
174
|
+
request_options=request_options,
|
|
175
|
+
)
|
|
176
|
+
return _response.data
|
|
@@ -0,0 +1,182 @@
|
|
|
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.agents_list_request_order import AgentsListRequestOrder
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RawAgentsClient:
|
|
18
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
19
|
+
self._client_wrapper = client_wrapper
|
|
20
|
+
|
|
21
|
+
def list(
|
|
22
|
+
self,
|
|
23
|
+
folder_id: str,
|
|
24
|
+
*,
|
|
25
|
+
before: typing.Optional[str] = None,
|
|
26
|
+
after: typing.Optional[str] = None,
|
|
27
|
+
limit: typing.Optional[int] = None,
|
|
28
|
+
order: typing.Optional[AgentsListRequestOrder] = None,
|
|
29
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
30
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
31
|
+
) -> HttpResponse[typing.List[str]]:
|
|
32
|
+
"""
|
|
33
|
+
Get all agent IDs that have the specified folder attached.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
folder_id : str
|
|
38
|
+
|
|
39
|
+
before : typing.Optional[str]
|
|
40
|
+
Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
|
|
41
|
+
|
|
42
|
+
after : typing.Optional[str]
|
|
43
|
+
Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
|
|
44
|
+
|
|
45
|
+
limit : typing.Optional[int]
|
|
46
|
+
Maximum number of agents to return
|
|
47
|
+
|
|
48
|
+
order : typing.Optional[AgentsListRequestOrder]
|
|
49
|
+
Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
50
|
+
|
|
51
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
52
|
+
Field to sort by
|
|
53
|
+
|
|
54
|
+
request_options : typing.Optional[RequestOptions]
|
|
55
|
+
Request-specific configuration.
|
|
56
|
+
|
|
57
|
+
Returns
|
|
58
|
+
-------
|
|
59
|
+
HttpResponse[typing.List[str]]
|
|
60
|
+
Successful Response
|
|
61
|
+
"""
|
|
62
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
63
|
+
f"v1/folders/{jsonable_encoder(folder_id)}/agents",
|
|
64
|
+
method="GET",
|
|
65
|
+
params={
|
|
66
|
+
"before": before,
|
|
67
|
+
"after": after,
|
|
68
|
+
"limit": limit,
|
|
69
|
+
"order": order,
|
|
70
|
+
"order_by": order_by,
|
|
71
|
+
},
|
|
72
|
+
request_options=request_options,
|
|
73
|
+
)
|
|
74
|
+
try:
|
|
75
|
+
if 200 <= _response.status_code < 300:
|
|
76
|
+
_data = typing.cast(
|
|
77
|
+
typing.List[str],
|
|
78
|
+
construct_type(
|
|
79
|
+
type_=typing.List[str], # type: ignore
|
|
80
|
+
object_=_response.json(),
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
return HttpResponse(response=_response, data=_data)
|
|
84
|
+
if _response.status_code == 422:
|
|
85
|
+
raise UnprocessableEntityError(
|
|
86
|
+
headers=dict(_response.headers),
|
|
87
|
+
body=typing.cast(
|
|
88
|
+
HttpValidationError,
|
|
89
|
+
construct_type(
|
|
90
|
+
type_=HttpValidationError, # type: ignore
|
|
91
|
+
object_=_response.json(),
|
|
92
|
+
),
|
|
93
|
+
),
|
|
94
|
+
)
|
|
95
|
+
_response_json = _response.json()
|
|
96
|
+
except JSONDecodeError:
|
|
97
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
98
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class AsyncRawAgentsClient:
|
|
102
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
103
|
+
self._client_wrapper = client_wrapper
|
|
104
|
+
|
|
105
|
+
async def list(
|
|
106
|
+
self,
|
|
107
|
+
folder_id: str,
|
|
108
|
+
*,
|
|
109
|
+
before: typing.Optional[str] = None,
|
|
110
|
+
after: typing.Optional[str] = None,
|
|
111
|
+
limit: typing.Optional[int] = None,
|
|
112
|
+
order: typing.Optional[AgentsListRequestOrder] = None,
|
|
113
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
114
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
115
|
+
) -> AsyncHttpResponse[typing.List[str]]:
|
|
116
|
+
"""
|
|
117
|
+
Get all agent IDs that have the specified folder attached.
|
|
118
|
+
|
|
119
|
+
Parameters
|
|
120
|
+
----------
|
|
121
|
+
folder_id : str
|
|
122
|
+
|
|
123
|
+
before : typing.Optional[str]
|
|
124
|
+
Agent ID cursor for pagination. Returns agents that come before this agent ID in the specified sort order
|
|
125
|
+
|
|
126
|
+
after : typing.Optional[str]
|
|
127
|
+
Agent ID cursor for pagination. Returns agents that come after this agent ID in the specified sort order
|
|
128
|
+
|
|
129
|
+
limit : typing.Optional[int]
|
|
130
|
+
Maximum number of agents to return
|
|
131
|
+
|
|
132
|
+
order : typing.Optional[AgentsListRequestOrder]
|
|
133
|
+
Sort order for agents by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
134
|
+
|
|
135
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
136
|
+
Field to sort by
|
|
137
|
+
|
|
138
|
+
request_options : typing.Optional[RequestOptions]
|
|
139
|
+
Request-specific configuration.
|
|
140
|
+
|
|
141
|
+
Returns
|
|
142
|
+
-------
|
|
143
|
+
AsyncHttpResponse[typing.List[str]]
|
|
144
|
+
Successful Response
|
|
145
|
+
"""
|
|
146
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
147
|
+
f"v1/folders/{jsonable_encoder(folder_id)}/agents",
|
|
148
|
+
method="GET",
|
|
149
|
+
params={
|
|
150
|
+
"before": before,
|
|
151
|
+
"after": after,
|
|
152
|
+
"limit": limit,
|
|
153
|
+
"order": order,
|
|
154
|
+
"order_by": order_by,
|
|
155
|
+
},
|
|
156
|
+
request_options=request_options,
|
|
157
|
+
)
|
|
158
|
+
try:
|
|
159
|
+
if 200 <= _response.status_code < 300:
|
|
160
|
+
_data = typing.cast(
|
|
161
|
+
typing.List[str],
|
|
162
|
+
construct_type(
|
|
163
|
+
type_=typing.List[str], # type: ignore
|
|
164
|
+
object_=_response.json(),
|
|
165
|
+
),
|
|
166
|
+
)
|
|
167
|
+
return AsyncHttpResponse(response=_response, data=_data)
|
|
168
|
+
if _response.status_code == 422:
|
|
169
|
+
raise UnprocessableEntityError(
|
|
170
|
+
headers=dict(_response.headers),
|
|
171
|
+
body=typing.cast(
|
|
172
|
+
HttpValidationError,
|
|
173
|
+
construct_type(
|
|
174
|
+
type_=HttpValidationError, # type: ignore
|
|
175
|
+
object_=_response.json(),
|
|
176
|
+
),
|
|
177
|
+
),
|
|
178
|
+
)
|
|
179
|
+
_response_json = _response.json()
|
|
180
|
+
except JSONDecodeError:
|
|
181
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
|
182
|
+
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
letta_client/folders/client.py
CHANGED
|
@@ -7,9 +7,11 @@ from ..core.request_options import RequestOptions
|
|
|
7
7
|
from ..types.embedding_config import EmbeddingConfig
|
|
8
8
|
from ..types.folder import Folder
|
|
9
9
|
from ..types.organization_sources_stats import OrganizationSourcesStats
|
|
10
|
+
from .agents.client import AgentsClient, AsyncAgentsClient
|
|
10
11
|
from .files.client import AsyncFilesClient, FilesClient
|
|
11
12
|
from .passages.client import AsyncPassagesClient, PassagesClient
|
|
12
13
|
from .raw_client import AsyncRawFoldersClient, RawFoldersClient
|
|
14
|
+
from .types.folders_list_request_order import FoldersListRequestOrder
|
|
13
15
|
|
|
14
16
|
# this is used as the default value for optional parameters
|
|
15
17
|
OMIT = typing.cast(typing.Any, ...)
|
|
@@ -20,6 +22,8 @@ class FoldersClient:
|
|
|
20
22
|
self._raw_client = RawFoldersClient(client_wrapper=client_wrapper)
|
|
21
23
|
self.files = FilesClient(client_wrapper=client_wrapper)
|
|
22
24
|
|
|
25
|
+
self.agents = AgentsClient(client_wrapper=client_wrapper)
|
|
26
|
+
|
|
23
27
|
self.passages = PassagesClient(client_wrapper=client_wrapper)
|
|
24
28
|
|
|
25
29
|
@property
|
|
@@ -190,7 +194,10 @@ class FoldersClient:
|
|
|
190
194
|
|
|
191
195
|
def retrieve_by_name(self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None) -> str:
|
|
192
196
|
"""
|
|
193
|
-
|
|
197
|
+
**Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
Get a folder by name.
|
|
194
201
|
|
|
195
202
|
Parameters
|
|
196
203
|
----------
|
|
@@ -219,7 +226,7 @@ class FoldersClient:
|
|
|
219
226
|
_response = self._raw_client.retrieve_by_name(folder_name, request_options=request_options)
|
|
220
227
|
return _response.data
|
|
221
228
|
|
|
222
|
-
def
|
|
229
|
+
def retrieve_metadata(
|
|
223
230
|
self,
|
|
224
231
|
*,
|
|
225
232
|
include_detailed_per_source_metadata: typing.Optional[bool] = None,
|
|
@@ -254,19 +261,47 @@ class FoldersClient:
|
|
|
254
261
|
project="YOUR_PROJECT",
|
|
255
262
|
token="YOUR_TOKEN",
|
|
256
263
|
)
|
|
257
|
-
client.folders.
|
|
264
|
+
client.folders.retrieve_metadata()
|
|
258
265
|
"""
|
|
259
|
-
_response = self._raw_client.
|
|
266
|
+
_response = self._raw_client.retrieve_metadata(
|
|
260
267
|
include_detailed_per_source_metadata=include_detailed_per_source_metadata, request_options=request_options
|
|
261
268
|
)
|
|
262
269
|
return _response.data
|
|
263
270
|
|
|
264
|
-
def list(
|
|
271
|
+
def list(
|
|
272
|
+
self,
|
|
273
|
+
*,
|
|
274
|
+
before: typing.Optional[str] = None,
|
|
275
|
+
after: typing.Optional[str] = None,
|
|
276
|
+
limit: typing.Optional[int] = None,
|
|
277
|
+
order: typing.Optional[FoldersListRequestOrder] = None,
|
|
278
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
279
|
+
name: typing.Optional[str] = None,
|
|
280
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
281
|
+
) -> typing.List[Folder]:
|
|
265
282
|
"""
|
|
266
283
|
List all data folders created by a user.
|
|
267
284
|
|
|
268
285
|
Parameters
|
|
269
286
|
----------
|
|
287
|
+
before : typing.Optional[str]
|
|
288
|
+
Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
|
|
289
|
+
|
|
290
|
+
after : typing.Optional[str]
|
|
291
|
+
Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
|
|
292
|
+
|
|
293
|
+
limit : typing.Optional[int]
|
|
294
|
+
Maximum number of folders to return
|
|
295
|
+
|
|
296
|
+
order : typing.Optional[FoldersListRequestOrder]
|
|
297
|
+
Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
298
|
+
|
|
299
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
300
|
+
Field to sort by
|
|
301
|
+
|
|
302
|
+
name : typing.Optional[str]
|
|
303
|
+
Folder name to filter by
|
|
304
|
+
|
|
270
305
|
request_options : typing.Optional[RequestOptions]
|
|
271
306
|
Request-specific configuration.
|
|
272
307
|
|
|
@@ -285,7 +320,15 @@ class FoldersClient:
|
|
|
285
320
|
)
|
|
286
321
|
client.folders.list()
|
|
287
322
|
"""
|
|
288
|
-
_response = self._raw_client.list(
|
|
323
|
+
_response = self._raw_client.list(
|
|
324
|
+
before=before,
|
|
325
|
+
after=after,
|
|
326
|
+
limit=limit,
|
|
327
|
+
order=order,
|
|
328
|
+
order_by=order_by,
|
|
329
|
+
name=name,
|
|
330
|
+
request_options=request_options,
|
|
331
|
+
)
|
|
289
332
|
return _response.data
|
|
290
333
|
|
|
291
334
|
def create(
|
|
@@ -358,45 +401,14 @@ class FoldersClient:
|
|
|
358
401
|
)
|
|
359
402
|
return _response.data
|
|
360
403
|
|
|
361
|
-
def get_agents_for_folder(
|
|
362
|
-
self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
363
|
-
) -> typing.List[str]:
|
|
364
|
-
"""
|
|
365
|
-
Get all agent IDs that have the specified folder attached.
|
|
366
|
-
|
|
367
|
-
Parameters
|
|
368
|
-
----------
|
|
369
|
-
folder_id : str
|
|
370
|
-
|
|
371
|
-
request_options : typing.Optional[RequestOptions]
|
|
372
|
-
Request-specific configuration.
|
|
373
|
-
|
|
374
|
-
Returns
|
|
375
|
-
-------
|
|
376
|
-
typing.List[str]
|
|
377
|
-
Successful Response
|
|
378
|
-
|
|
379
|
-
Examples
|
|
380
|
-
--------
|
|
381
|
-
from letta_client import Letta
|
|
382
|
-
|
|
383
|
-
client = Letta(
|
|
384
|
-
project="YOUR_PROJECT",
|
|
385
|
-
token="YOUR_TOKEN",
|
|
386
|
-
)
|
|
387
|
-
client.folders.get_agents_for_folder(
|
|
388
|
-
folder_id="folder_id",
|
|
389
|
-
)
|
|
390
|
-
"""
|
|
391
|
-
_response = self._raw_client.get_agents_for_folder(folder_id, request_options=request_options)
|
|
392
|
-
return _response.data
|
|
393
|
-
|
|
394
404
|
|
|
395
405
|
class AsyncFoldersClient:
|
|
396
406
|
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
397
407
|
self._raw_client = AsyncRawFoldersClient(client_wrapper=client_wrapper)
|
|
398
408
|
self.files = AsyncFilesClient(client_wrapper=client_wrapper)
|
|
399
409
|
|
|
410
|
+
self.agents = AsyncAgentsClient(client_wrapper=client_wrapper)
|
|
411
|
+
|
|
400
412
|
self.passages = AsyncPassagesClient(client_wrapper=client_wrapper)
|
|
401
413
|
|
|
402
414
|
@property
|
|
@@ -601,7 +613,10 @@ class AsyncFoldersClient:
|
|
|
601
613
|
self, folder_name: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
602
614
|
) -> str:
|
|
603
615
|
"""
|
|
604
|
-
|
|
616
|
+
**Deprecated**: Please use the list endpoint `GET /v1/folders?name=` instead.
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
Get a folder by name.
|
|
605
620
|
|
|
606
621
|
Parameters
|
|
607
622
|
----------
|
|
@@ -638,7 +653,7 @@ class AsyncFoldersClient:
|
|
|
638
653
|
_response = await self._raw_client.retrieve_by_name(folder_name, request_options=request_options)
|
|
639
654
|
return _response.data
|
|
640
655
|
|
|
641
|
-
async def
|
|
656
|
+
async def retrieve_metadata(
|
|
642
657
|
self,
|
|
643
658
|
*,
|
|
644
659
|
include_detailed_per_source_metadata: typing.Optional[bool] = None,
|
|
@@ -678,22 +693,50 @@ class AsyncFoldersClient:
|
|
|
678
693
|
|
|
679
694
|
|
|
680
695
|
async def main() -> None:
|
|
681
|
-
await client.folders.
|
|
696
|
+
await client.folders.retrieve_metadata()
|
|
682
697
|
|
|
683
698
|
|
|
684
699
|
asyncio.run(main())
|
|
685
700
|
"""
|
|
686
|
-
_response = await self._raw_client.
|
|
701
|
+
_response = await self._raw_client.retrieve_metadata(
|
|
687
702
|
include_detailed_per_source_metadata=include_detailed_per_source_metadata, request_options=request_options
|
|
688
703
|
)
|
|
689
704
|
return _response.data
|
|
690
705
|
|
|
691
|
-
async def list(
|
|
706
|
+
async def list(
|
|
707
|
+
self,
|
|
708
|
+
*,
|
|
709
|
+
before: typing.Optional[str] = None,
|
|
710
|
+
after: typing.Optional[str] = None,
|
|
711
|
+
limit: typing.Optional[int] = None,
|
|
712
|
+
order: typing.Optional[FoldersListRequestOrder] = None,
|
|
713
|
+
order_by: typing.Optional[typing.Literal["created_at"]] = None,
|
|
714
|
+
name: typing.Optional[str] = None,
|
|
715
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
716
|
+
) -> typing.List[Folder]:
|
|
692
717
|
"""
|
|
693
718
|
List all data folders created by a user.
|
|
694
719
|
|
|
695
720
|
Parameters
|
|
696
721
|
----------
|
|
722
|
+
before : typing.Optional[str]
|
|
723
|
+
Folder ID cursor for pagination. Returns folders that come before this folder ID in the specified sort order
|
|
724
|
+
|
|
725
|
+
after : typing.Optional[str]
|
|
726
|
+
Folder ID cursor for pagination. Returns folders that come after this folder ID in the specified sort order
|
|
727
|
+
|
|
728
|
+
limit : typing.Optional[int]
|
|
729
|
+
Maximum number of folders to return
|
|
730
|
+
|
|
731
|
+
order : typing.Optional[FoldersListRequestOrder]
|
|
732
|
+
Sort order for folders by creation time. 'asc' for oldest first, 'desc' for newest first
|
|
733
|
+
|
|
734
|
+
order_by : typing.Optional[typing.Literal["created_at"]]
|
|
735
|
+
Field to sort by
|
|
736
|
+
|
|
737
|
+
name : typing.Optional[str]
|
|
738
|
+
Folder name to filter by
|
|
739
|
+
|
|
697
740
|
request_options : typing.Optional[RequestOptions]
|
|
698
741
|
Request-specific configuration.
|
|
699
742
|
|
|
@@ -720,7 +763,15 @@ class AsyncFoldersClient:
|
|
|
720
763
|
|
|
721
764
|
asyncio.run(main())
|
|
722
765
|
"""
|
|
723
|
-
_response = await self._raw_client.list(
|
|
766
|
+
_response = await self._raw_client.list(
|
|
767
|
+
before=before,
|
|
768
|
+
after=after,
|
|
769
|
+
limit=limit,
|
|
770
|
+
order=order,
|
|
771
|
+
order_by=order_by,
|
|
772
|
+
name=name,
|
|
773
|
+
request_options=request_options,
|
|
774
|
+
)
|
|
724
775
|
return _response.data
|
|
725
776
|
|
|
726
777
|
async def create(
|
|
@@ -800,44 +851,3 @@ class AsyncFoldersClient:
|
|
|
800
851
|
request_options=request_options,
|
|
801
852
|
)
|
|
802
853
|
return _response.data
|
|
803
|
-
|
|
804
|
-
async def get_agents_for_folder(
|
|
805
|
-
self, folder_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
|
806
|
-
) -> typing.List[str]:
|
|
807
|
-
"""
|
|
808
|
-
Get all agent IDs that have the specified folder attached.
|
|
809
|
-
|
|
810
|
-
Parameters
|
|
811
|
-
----------
|
|
812
|
-
folder_id : str
|
|
813
|
-
|
|
814
|
-
request_options : typing.Optional[RequestOptions]
|
|
815
|
-
Request-specific configuration.
|
|
816
|
-
|
|
817
|
-
Returns
|
|
818
|
-
-------
|
|
819
|
-
typing.List[str]
|
|
820
|
-
Successful Response
|
|
821
|
-
|
|
822
|
-
Examples
|
|
823
|
-
--------
|
|
824
|
-
import asyncio
|
|
825
|
-
|
|
826
|
-
from letta_client import AsyncLetta
|
|
827
|
-
|
|
828
|
-
client = AsyncLetta(
|
|
829
|
-
project="YOUR_PROJECT",
|
|
830
|
-
token="YOUR_TOKEN",
|
|
831
|
-
)
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
async def main() -> None:
|
|
835
|
-
await client.folders.get_agents_for_folder(
|
|
836
|
-
folder_id="folder_id",
|
|
837
|
-
)
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
asyncio.run(main())
|
|
841
|
-
"""
|
|
842
|
-
_response = await self._raw_client.get_agents_for_folder(folder_id, request_options=request_options)
|
|
843
|
-
return _response.data
|