letta-nightly 0.7.13.dev20250511104036__py3-none-any.whl → 0.7.14.dev20250513020711__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.
- letta/__init__.py +1 -1
- letta/agent.py +14 -17
- letta/agents/base_agent.py +112 -1
- letta/agents/letta_agent.py +35 -55
- letta/agents/letta_agent_batch.py +22 -45
- letta/agents/voice_agent.py +10 -42
- letta/functions/schema_generator.py +7 -3
- letta/llm_api/anthropic.py +4 -2
- letta/llm_api/openai.py +4 -2
- letta/orm/agents_tags.py +5 -2
- letta/orm/blocks_agents.py +3 -1
- letta/orm/sqlalchemy_base.py +91 -1
- letta/schemas/message.py +1 -1
- letta/serialize_schemas/marshmallow_agent.py +4 -4
- letta/server/db.py +180 -88
- letta/server/rest_api/app.py +6 -3
- letta/server/rest_api/chat_completions_interface.py +1 -0
- letta/server/rest_api/interface.py +54 -16
- letta/server/rest_api/routers/v1/sources.py +1 -0
- letta/server/server.py +1 -2
- letta/services/agent_manager.py +40 -31
- letta/services/block_manager.py +61 -34
- letta/services/group_manager.py +11 -15
- letta/services/identity_manager.py +9 -13
- letta/services/job_manager.py +12 -17
- letta/services/llm_batch_manager.py +17 -21
- letta/services/message_manager.py +53 -31
- letta/services/organization_manager.py +7 -14
- letta/services/passage_manager.py +6 -10
- letta/services/provider_manager.py +5 -9
- letta/services/sandbox_config_manager.py +13 -17
- letta/services/source_manager.py +13 -17
- letta/services/step_manager.py +5 -9
- letta/services/tool_manager.py +9 -14
- letta/services/user_manager.py +7 -12
- letta/settings.py +2 -0
- letta/streaming_interface.py +2 -0
- letta/utils.py +1 -1
- {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/METADATA +2 -1
- {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/RECORD +43 -43
- {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/LICENSE +0 -0
- {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/WHEEL +0 -0
- {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/entry_points.txt +0 -0
letta/services/tool_manager.py
CHANGED
@@ -23,6 +23,7 @@ from letta.orm.tool import Tool as ToolModel
|
|
23
23
|
from letta.schemas.tool import Tool as PydanticTool
|
24
24
|
from letta.schemas.tool import ToolCreate, ToolUpdate
|
25
25
|
from letta.schemas.user import User as PydanticUser
|
26
|
+
from letta.server.db import db_registry
|
26
27
|
from letta.utils import enforce_types, printd
|
27
28
|
|
28
29
|
logger = get_logger(__name__)
|
@@ -31,12 +32,6 @@ logger = get_logger(__name__)
|
|
31
32
|
class ToolManager:
|
32
33
|
"""Manager class to handle business logic related to Tools."""
|
33
34
|
|
34
|
-
def __init__(self):
|
35
|
-
# Fetching the db_context similarly as in OrganizationManager
|
36
|
-
from letta.server.db import db_context
|
37
|
-
|
38
|
-
self.session_maker = db_context
|
39
|
-
|
40
35
|
# TODO: Refactor this across the codebase to use CreateTool instead of passing in a Tool object
|
41
36
|
@enforce_types
|
42
37
|
def create_or_update_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
|
@@ -89,7 +84,7 @@ class ToolManager:
|
|
89
84
|
@enforce_types
|
90
85
|
def create_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
|
91
86
|
"""Create a new tool based on the ToolCreate schema."""
|
92
|
-
with
|
87
|
+
with db_registry.session() as session:
|
93
88
|
# Set the organization id at the ORM layer
|
94
89
|
pydantic_tool.organization_id = actor.organization_id
|
95
90
|
# Auto-generate description if not provided
|
@@ -104,7 +99,7 @@ class ToolManager:
|
|
104
99
|
@enforce_types
|
105
100
|
def get_tool_by_id(self, tool_id: str, actor: PydanticUser) -> PydanticTool:
|
106
101
|
"""Fetch a tool by its ID."""
|
107
|
-
with
|
102
|
+
with db_registry.session() as session:
|
108
103
|
# Retrieve tool by id using the Tool model's read method
|
109
104
|
tool = ToolModel.read(db_session=session, identifier=tool_id, actor=actor)
|
110
105
|
# Convert the SQLAlchemy Tool object to PydanticTool
|
@@ -114,7 +109,7 @@ class ToolManager:
|
|
114
109
|
def get_tool_by_name(self, tool_name: str, actor: PydanticUser) -> Optional[PydanticTool]:
|
115
110
|
"""Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
|
116
111
|
try:
|
117
|
-
with
|
112
|
+
with db_registry.session() as session:
|
118
113
|
tool = ToolModel.read(db_session=session, name=tool_name, actor=actor)
|
119
114
|
return tool.to_pydantic()
|
120
115
|
except NoResultFound:
|
@@ -124,7 +119,7 @@ class ToolManager:
|
|
124
119
|
def get_tool_id_by_name(self, tool_name: str, actor: PydanticUser) -> Optional[str]:
|
125
120
|
"""Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
|
126
121
|
try:
|
127
|
-
with
|
122
|
+
with db_registry.session() as session:
|
128
123
|
tool = ToolModel.read(db_session=session, name=tool_name, actor=actor)
|
129
124
|
return tool.id
|
130
125
|
except NoResultFound:
|
@@ -133,7 +128,7 @@ class ToolManager:
|
|
133
128
|
@enforce_types
|
134
129
|
def list_tools(self, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticTool]:
|
135
130
|
"""List all tools with optional pagination."""
|
136
|
-
with
|
131
|
+
with db_registry.session() as session:
|
137
132
|
tools = ToolModel.list(
|
138
133
|
db_session=session,
|
139
134
|
after=after,
|
@@ -166,7 +161,7 @@ class ToolManager:
|
|
166
161
|
|
167
162
|
If include_builtin is True, it will also count the built-in tools.
|
168
163
|
"""
|
169
|
-
with
|
164
|
+
with db_registry.session() as session:
|
170
165
|
if include_base_tools:
|
171
166
|
return ToolModel.size(db_session=session, actor=actor)
|
172
167
|
return ToolModel.size(db_session=session, actor=actor, name=LETTA_TOOL_SET)
|
@@ -176,7 +171,7 @@ class ToolManager:
|
|
176
171
|
self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser, updated_tool_type: Optional[ToolType] = None
|
177
172
|
) -> PydanticTool:
|
178
173
|
"""Update a tool by its ID with the given ToolUpdate object."""
|
179
|
-
with
|
174
|
+
with db_registry.session() as session:
|
180
175
|
# Fetch the tool by ID
|
181
176
|
tool = ToolModel.read(db_session=session, identifier=tool_id, actor=actor)
|
182
177
|
|
@@ -202,7 +197,7 @@ class ToolManager:
|
|
202
197
|
@enforce_types
|
203
198
|
def delete_tool_by_id(self, tool_id: str, actor: PydanticUser) -> None:
|
204
199
|
"""Delete a tool by its ID."""
|
205
|
-
with
|
200
|
+
with db_registry.session() as session:
|
206
201
|
try:
|
207
202
|
tool = ToolModel.read(db_session=session, identifier=tool_id, actor=actor)
|
208
203
|
tool.hard_delete(db_session=session, actor=actor)
|
letta/services/user_manager.py
CHANGED
@@ -5,6 +5,7 @@ from letta.orm.organization import Organization as OrganizationModel
|
|
5
5
|
from letta.orm.user import User as UserModel
|
6
6
|
from letta.schemas.user import User as PydanticUser
|
7
7
|
from letta.schemas.user import UserUpdate
|
8
|
+
from letta.server.db import db_registry
|
8
9
|
from letta.services.organization_manager import OrganizationManager
|
9
10
|
from letta.utils import enforce_types
|
10
11
|
|
@@ -15,16 +16,10 @@ class UserManager:
|
|
15
16
|
DEFAULT_USER_NAME = "default_user"
|
16
17
|
DEFAULT_USER_ID = "user-00000000-0000-4000-8000-000000000000"
|
17
18
|
|
18
|
-
def __init__(self):
|
19
|
-
# Fetching the db_context similarly as in OrganizationManager
|
20
|
-
from letta.server.db import db_context
|
21
|
-
|
22
|
-
self.session_maker = db_context
|
23
|
-
|
24
19
|
@enforce_types
|
25
20
|
def create_default_user(self, org_id: str = OrganizationManager.DEFAULT_ORG_ID) -> PydanticUser:
|
26
21
|
"""Create the default user."""
|
27
|
-
with
|
22
|
+
with db_registry.session() as session:
|
28
23
|
# Make sure the org id exists
|
29
24
|
try:
|
30
25
|
OrganizationModel.read(db_session=session, identifier=org_id)
|
@@ -44,7 +39,7 @@ class UserManager:
|
|
44
39
|
@enforce_types
|
45
40
|
def create_user(self, pydantic_user: PydanticUser) -> PydanticUser:
|
46
41
|
"""Create a new user if it doesn't already exist."""
|
47
|
-
with
|
42
|
+
with db_registry.session() as session:
|
48
43
|
new_user = UserModel(**pydantic_user.model_dump(to_orm=True))
|
49
44
|
new_user.create(session)
|
50
45
|
return new_user.to_pydantic()
|
@@ -52,7 +47,7 @@ class UserManager:
|
|
52
47
|
@enforce_types
|
53
48
|
def update_user(self, user_update: UserUpdate) -> PydanticUser:
|
54
49
|
"""Update user details."""
|
55
|
-
with
|
50
|
+
with db_registry.session() as session:
|
56
51
|
# Retrieve the existing user by ID
|
57
52
|
existing_user = UserModel.read(db_session=session, identifier=user_update.id)
|
58
53
|
|
@@ -68,7 +63,7 @@ class UserManager:
|
|
68
63
|
@enforce_types
|
69
64
|
def delete_user_by_id(self, user_id: str):
|
70
65
|
"""Delete a user and their associated records (agents, sources, mappings)."""
|
71
|
-
with
|
66
|
+
with db_registry.session() as session:
|
72
67
|
# Delete from user table
|
73
68
|
user = UserModel.read(db_session=session, identifier=user_id)
|
74
69
|
user.hard_delete(session)
|
@@ -78,7 +73,7 @@ class UserManager:
|
|
78
73
|
@enforce_types
|
79
74
|
def get_user_by_id(self, user_id: str) -> PydanticUser:
|
80
75
|
"""Fetch a user by ID."""
|
81
|
-
with
|
76
|
+
with db_registry.session() as session:
|
82
77
|
user = UserModel.read(db_session=session, identifier=user_id)
|
83
78
|
return user.to_pydantic()
|
84
79
|
|
@@ -104,7 +99,7 @@ class UserManager:
|
|
104
99
|
@enforce_types
|
105
100
|
def list_users(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticUser]:
|
106
101
|
"""List all users with optional pagination."""
|
107
|
-
with
|
102
|
+
with db_registry.session() as session:
|
108
103
|
users = UserModel.list(
|
109
104
|
db_session=session,
|
110
105
|
after=after,
|
letta/settings.py
CHANGED
@@ -203,6 +203,8 @@ class Settings(BaseSettings):
|
|
203
203
|
use_experimental: bool = False
|
204
204
|
use_vertex_structured_outputs_experimental: bool = False
|
205
205
|
use_vertex_async_loop_experimental: bool = False
|
206
|
+
experimental_enable_async_db_engine: bool = False
|
207
|
+
experimental_skip_rebuild_memory: bool = False
|
206
208
|
|
207
209
|
# LLM provider client settings
|
208
210
|
httpx_max_retries: int = 5
|
letta/streaming_interface.py
CHANGED
@@ -56,6 +56,7 @@ class AgentChunkStreamingInterface(ABC):
|
|
56
56
|
expect_reasoning_content: bool = False,
|
57
57
|
name: Optional[str] = None,
|
58
58
|
message_index: int = 0,
|
59
|
+
prev_message_type: Optional[str] = None,
|
59
60
|
):
|
60
61
|
"""Process a streaming chunk from an OpenAI-compatible server"""
|
61
62
|
raise NotImplementedError
|
@@ -108,6 +109,7 @@ class StreamingCLIInterface(AgentChunkStreamingInterface):
|
|
108
109
|
expect_reasoning_content: bool = False,
|
109
110
|
name: Optional[str] = None,
|
110
111
|
message_index: int = 0,
|
112
|
+
prev_message_type: Optional[str] = None,
|
111
113
|
):
|
112
114
|
assert len(chunk.choices) == 1, chunk
|
113
115
|
|
letta/utils.py
CHANGED
@@ -812,7 +812,7 @@ def printd(*args, **kwargs):
|
|
812
812
|
print(*args, **kwargs)
|
813
813
|
|
814
814
|
|
815
|
-
def united_diff(str1, str2):
|
815
|
+
def united_diff(str1: str, str2: str) -> str:
|
816
816
|
lines1 = str1.splitlines(True)
|
817
817
|
lines2 = str2.splitlines(True)
|
818
818
|
diff = difflib.unified_diff(lines1, lines2)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: letta-nightly
|
3
|
-
Version: 0.7.
|
3
|
+
Version: 0.7.14.dev20250513020711
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
5
5
|
License: Apache License
|
6
6
|
Author: Letta Team
|
@@ -26,6 +26,7 @@ Requires-Dist: aiomultiprocess (>=0.9.1,<0.10.0)
|
|
26
26
|
Requires-Dist: alembic (>=1.13.3,<2.0.0)
|
27
27
|
Requires-Dist: anthropic (>=0.49.0,<0.50.0)
|
28
28
|
Requires-Dist: apscheduler (>=3.11.0,<4.0.0)
|
29
|
+
Requires-Dist: asyncpg (>=0.30.0,<0.31.0)
|
29
30
|
Requires-Dist: autoflake (>=2.3.0,<3.0.0) ; extra == "dev" or extra == "all"
|
30
31
|
Requires-Dist: black[jupyter] (>=24.2.0,<25.0.0) ; extra == "dev" or extra == "all"
|
31
32
|
Requires-Dist: boto3 (>=1.36.24,<2.0.0) ; extra == "bedrock"
|
@@ -1,14 +1,14 @@
|
|
1
|
-
letta/__init__.py,sha256=
|
1
|
+
letta/__init__.py,sha256=7Ep42kC5nugZGxpjAao1Kw_lhwmHtPAKOX5qpVNCODs,916
|
2
2
|
letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
|
3
|
-
letta/agent.py,sha256=
|
3
|
+
letta/agent.py,sha256=Arm-3QuE8nJ8X25HZ2CBnYhs_3j-9ztkjSHKXFwIlpI,71966
|
4
4
|
letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
letta/agents/base_agent.py,sha256=
|
5
|
+
letta/agents/base_agent.py,sha256=pR-6k87V7R1oJBInS5LPPCC05h3v6gaZ7chb08WG5CQ,8087
|
6
6
|
letta/agents/ephemeral_agent.py,sha256=el-SUF_16vv_7OouIR-6z0pAE9Yc0PLibygvfCKwqfo,2736
|
7
7
|
letta/agents/exceptions.py,sha256=BQY4D4w32OYHM63CM19ko7dPwZiAzUs3NbKvzmCTcJg,318
|
8
8
|
letta/agents/helpers.py,sha256=yAiRTS0sanXmI6fsoQ6LXXDteNaxZ8fY_K66rsGEFT4,4007
|
9
|
-
letta/agents/letta_agent.py,sha256=
|
10
|
-
letta/agents/letta_agent_batch.py,sha256=
|
11
|
-
letta/agents/voice_agent.py,sha256=
|
9
|
+
letta/agents/letta_agent.py,sha256=lAoEVAVHw4YRebUNyU7gq8XcGCYUnnpkSqD41WKeyWE,18302
|
10
|
+
letta/agents/letta_agent_batch.py,sha256=uUmmhF-zmaJc18CMFvmDArxnMljUpYOkJc3RrFaGHUg,24543
|
11
|
+
letta/agents/voice_agent.py,sha256=wCF2adlbDTEk_P3UrGPCHZy4IGvw75TUGDePW6N-sGA,21402
|
12
12
|
letta/agents/voice_sleeptime_agent.py,sha256=Joi3-8emTpV7v86OR_HGYXblkulrNaHhudCvPmMyXz0,7274
|
13
13
|
letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
|
14
14
|
letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
|
@@ -42,7 +42,7 @@ letta/functions/mcp_client/exceptions.py,sha256=IE5SLCuMK7hK9V1QsJafPo6u0S0OwqRv
|
|
42
42
|
letta/functions/mcp_client/sse_client.py,sha256=XOLnWIcrjBEkZ-IksgnHKSdVds3pC2E8OPkIhCNxloo,1470
|
43
43
|
letta/functions/mcp_client/stdio_client.py,sha256=2oouLGphu4S15OrYj97n9_ZYZo-GMRWNLWwaw-U4TNs,4562
|
44
44
|
letta/functions/mcp_client/types.py,sha256=nmcnQn2EpxXzXg5_pWPsHZobfxO6OucaUgz1bVvam7o,1411
|
45
|
-
letta/functions/schema_generator.py,sha256=
|
45
|
+
letta/functions/schema_generator.py,sha256=wBjMJQSGkUFCezTROh9QbWLMjrwiR4vJ2wKx26EmZXU,22731
|
46
46
|
letta/groups/dynamic_multi_agent.py,sha256=OLCxhICFLYyx8wjKGPr1INc6pniEuk4YGZyZhq2vkiY,12230
|
47
47
|
letta/groups/helpers.py,sha256=AcrguRkshtXEV31eWKRfGYEVub8plHsU2kg3QpezbZw,4500
|
48
48
|
letta/groups/round_robin_multi_agent.py,sha256=uUJff0bO68udOREiKFWeS7eEQlk3bF7hcfLSFXMScqI,6999
|
@@ -71,7 +71,7 @@ letta/jobs/llm_batch_job_polling.py,sha256=qy1-rkm9ehS_DaSz7pvcUmsueW8gug_kubnz8
|
|
71
71
|
letta/jobs/scheduler.py,sha256=VpRyO2vuETNrarHOIWYctAkrD4WFtV57buUSHaLE89Y,10240
|
72
72
|
letta/jobs/types.py,sha256=K8GKEnqEgAT6Kq4F2hUrBC4ZAFM9OkfOjVMStzxKuXQ,742
|
73
73
|
letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
|
-
letta/llm_api/anthropic.py,sha256=
|
74
|
+
letta/llm_api/anthropic.py,sha256=lfAmDDBnojs34pvGu6wuY8KtgWMzmjzoHZrb-wP1bfM,46330
|
75
75
|
letta/llm_api/anthropic_client.py,sha256=Bk7_MjNpfDVPRBiU3xHsuRVkmGQhQYdhgsavuTjGI4M,24715
|
76
76
|
letta/llm_api/aws_bedrock.py,sha256=kAPpKPRe4ZUa6fkxFbo8xwQgq4fJf3QoZEAP1LOCfaw,4168
|
77
77
|
letta/llm_api/azure_openai.py,sha256=YAkXwKyfnJFNhB45pkJVFsoxUNB_M74rQYchtw_CN6I,5099
|
@@ -86,7 +86,7 @@ letta/llm_api/llm_api_tools.py,sha256=YbslnPRFiJwaxRMhZ4T8K8SgByw73Ck61k3KNLScPr
|
|
86
86
|
letta/llm_api/llm_client.py,sha256=qJ92biZVCXyRESzZX3ODeMd-kcgkYtJGdp6oVjV7PBc,2074
|
87
87
|
letta/llm_api/llm_client_base.py,sha256=eID0J0l4VITZDL5765xEDvV8WLL4WzwQAzFEsC7ea6I,6067
|
88
88
|
letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
|
89
|
-
letta/llm_api/openai.py,sha256=
|
89
|
+
letta/llm_api/openai.py,sha256=AG6mljvunOc9meWE_B7j4wmVg55Sjv77The5Pqwr0rY,25796
|
90
90
|
letta/llm_api/openai_client.py,sha256=NACYguMG_4nb5LqqdnR6XiD9RLqNLpn5TeHUzRL9VMc,15294
|
91
91
|
letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
|
92
92
|
letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -133,11 +133,11 @@ letta/openai_backcompat/openai_object.py,sha256=GSzeCTwLpLD2fH4X8wVqzwdmoTjKK2I4
|
|
133
133
|
letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
|
134
134
|
letta/orm/__init__.py,sha256=sLJwaOdpm0Ts2EnE00v_zV39m_q7N4sLXvdmTw1KQic,1276
|
135
135
|
letta/orm/agent.py,sha256=yIKrK8PHZ8QFXwJ9OKE5flqlCjZEIKno_yYnv58QGdk,9217
|
136
|
-
letta/orm/agents_tags.py,sha256=
|
136
|
+
letta/orm/agents_tags.py,sha256=IM9UxHtcispiieh0EnOIGTk--nGK9XaS6v3jl_cjcWo,1011
|
137
137
|
letta/orm/base.py,sha256=PNAsqGngx8X4pcH8xndD6GFx9pyFwwaywjRCQXd12EI,3090
|
138
138
|
letta/orm/block.py,sha256=Hut-NAq6cDp6WXJ-2G1-5DJCZg0cB7D1X4z1taiBbS0,5591
|
139
139
|
letta/orm/block_history.py,sha256=6-k9e5weTWKqWZgZUH2lF42vWrLhXNUJZQVJDHQEfgY,2088
|
140
|
-
letta/orm/blocks_agents.py,sha256=
|
140
|
+
letta/orm/blocks_agents.py,sha256=NttkDNp6-sZ-uDkRzowibXkUmuMZ0YX8F3f17oszSTg,1128
|
141
141
|
letta/orm/custom_columns.py,sha256=0Azc-OIObBlnlYHUOcSV0s5SzS7lGHDB62NVnhq_ERo,5228
|
142
142
|
letta/orm/enums.py,sha256=qRv6m6SJWBTusS8X0Ipqo1xvsXU2RVlizn7nxWspKl4,868
|
143
143
|
letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
|
@@ -160,7 +160,7 @@ letta/orm/provider.py,sha256=KxIyUijtFapxXsgD86tWCRt1sG0TIETEyqlHEUWB7Fg,1312
|
|
160
160
|
letta/orm/sandbox_config.py,sha256=DyOy_1_zCMlp13elCqPcuuA6OwUove6mrjhcpROTg50,4150
|
161
161
|
letta/orm/source.py,sha256=rtehzez80rRrJigXeRBgTlfTZEUy6cVqDizWEN2tvuY,2224
|
162
162
|
letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
|
163
|
-
letta/orm/sqlalchemy_base.py,sha256=
|
163
|
+
letta/orm/sqlalchemy_base.py,sha256=Y9Jd-6xXBwZxgUWmE29Uazh1Xv26shH3EAyqjcLjzr8,31106
|
164
164
|
letta/orm/sqlite_functions.py,sha256=JCScKiRlYCKxy9hChQ8wsk4GMKknZE24MunnG3fM1Gw,4255
|
165
165
|
letta/orm/step.py,sha256=fjm7fLtYLCtFM6Mj6e2boP6P7dHSFG24Nem85VfVqHg,3216
|
166
166
|
letta/orm/tool.py,sha256=ft3BDA7Pt-zsXLyPvS_Z_Ibis6H6vY20F7Li7p6nPu8,2652
|
@@ -221,7 +221,7 @@ letta/schemas/llm_batch_job.py,sha256=i8m58-EFF0xGD7cYfu-LRlbvYZwv5y2B14ckmuRQ_I
|
|
221
221
|
letta/schemas/llm_config.py,sha256=0sXsJm4fYHsggfXhkJMpeiiZ62xtGPOqr-nPlqmWN7c,8651
|
222
222
|
letta/schemas/llm_config_overrides.py,sha256=E6qJuVA8TwAAy3VjGitJ5jSQo5PbN-6VPcZOF5qhP9A,1815
|
223
223
|
letta/schemas/memory.py,sha256=GOYDfPKzbWftUWO9Hv4KW7xAi1EIQmC8zpP7qvEkVHw,10245
|
224
|
-
letta/schemas/message.py,sha256=
|
224
|
+
letta/schemas/message.py,sha256=98vA5w2IzA-9fyF9JGpmYKsyg6uyWQqx5mBZVIlFQzU,51165
|
225
225
|
letta/schemas/openai/chat_completion_request.py,sha256=XARKB7717Crt3P2A53eeBZ6hlNJcb9TJHosWwK17tFw,4210
|
226
226
|
letta/schemas/openai/chat_completion_response.py,sha256=f2JZWh5mVz9pk19Iji8EnQD9NKq-sI2SVQkPeZHzzTQ,7067
|
227
227
|
letta/schemas/openai/chat_completions.py,sha256=l0e9sT9boTD5VBU5YtJ0s7qUtCfFGB2K-gQLeEZ2LHU,3599
|
@@ -241,7 +241,7 @@ letta/schemas/tool_rule.py,sha256=Il0BLY-CHRuTNeH9CayZTHpg0N_Ii8viYV2isZ_HrPU,63
|
|
241
241
|
letta/schemas/usage.py,sha256=9SSTH5kUliwiVF14b-yKbDcmxQBOLg4YH5xhXDbW9UU,1281
|
242
242
|
letta/schemas/user.py,sha256=V32Tgl6oqB3KznkxUz12y7agkQicjzW7VocSpj78i6Q,1526
|
243
243
|
letta/serialize_schemas/__init__.py,sha256=cosMjvWz7cubC1azbUofzYrcDBTuSgjJImUdsrSs3p0,77
|
244
|
-
letta/serialize_schemas/marshmallow_agent.py,sha256=
|
244
|
+
letta/serialize_schemas/marshmallow_agent.py,sha256=SKQaxCv0mKJ2buev_Ffj1rXX0jPyQcUM-sKEKsm9iD4,5422
|
245
245
|
letta/serialize_schemas/marshmallow_agent_environment_variable.py,sha256=9RYJkaNH2UiRoIFzrNklVAGl3uMmu3n6NwzFdviPPVA,653
|
246
246
|
letta/serialize_schemas/marshmallow_base.py,sha256=GP0ImCRfJ-BqNKe-T44Feal18pmFQG-p8JllOsSSNRk,1379
|
247
247
|
letta/serialize_schemas/marshmallow_block.py,sha256=8u4y1APVgaSdrOu12O-m5rRl9xEKAnUNlcs1Iik9BCo,459
|
@@ -252,15 +252,15 @@ letta/serialize_schemas/marshmallow_tool.py,sha256=jwU69BDCakPlYPSk-ta21kuvsURKO
|
|
252
252
|
letta/serialize_schemas/pydantic_agent_schema.py,sha256=NKq70niUVMI3_lxMKc3u3rOBUhm77bIFaPRj9aidMUQ,3006
|
253
253
|
letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
254
254
|
letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
|
255
|
-
letta/server/db.py,sha256=
|
255
|
+
letta/server/db.py,sha256=209vKw_Gfjmn6cKCUKTe2fRBK5sr50shhXq2kfdJ2tY,9308
|
256
256
|
letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
|
257
257
|
letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
258
|
-
letta/server/rest_api/app.py,sha256=
|
258
|
+
letta/server/rest_api/app.py,sha256=8Y5R_t_s4IAG7wRfdbmCeF5YT9pfGG4h6_kpUAaUwoQ,14771
|
259
259
|
letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
260
260
|
letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
|
261
261
|
letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
|
262
|
-
letta/server/rest_api/chat_completions_interface.py,sha256
|
263
|
-
letta/server/rest_api/interface.py,sha256=
|
262
|
+
letta/server/rest_api/chat_completions_interface.py,sha256=-7wO7pNBWXMqblVkJpuZ8JPJ-LjudLTtT6BJu-q_XAM,11138
|
263
|
+
letta/server/rest_api/interface.py,sha256=3Vm7pW4oaLxzzpzYCE4F9Og-AFDwZBi9nXstChrT6qI,68927
|
264
264
|
letta/server/rest_api/json_parser.py,sha256=IKG2xFAz_wkLfd3Z-18SKykSzCtUDjdYgTKSKaMqj1I,7813
|
265
265
|
letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
266
266
|
letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -279,7 +279,7 @@ letta/server/rest_api/routers/v1/organizations.py,sha256=r7rj-cA3shgAgM0b2JCMqjY
|
|
279
279
|
letta/server/rest_api/routers/v1/providers.py,sha256=qp6XT20tcZac64XDGF2QUyLhselnShrRcTDQBHExEbQ,4322
|
280
280
|
letta/server/rest_api/routers/v1/runs.py,sha256=9nuJRjBtRgZPq3CiCEUA_3S2xPHFP5DsJxIenH5OO34,8847
|
281
281
|
letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=9hqnnMwJ3wCwO-Bezu3Xl8i3TDSIuInw3gSeHaKUXfE,8526
|
282
|
-
letta/server/rest_api/routers/v1/sources.py,sha256=
|
282
|
+
letta/server/rest_api/routers/v1/sources.py,sha256=cNDIckY1zqKUeB9xKg6jIoi-cePzyIew-OHMGeQvyqE,11222
|
283
283
|
letta/server/rest_api/routers/v1/steps.py,sha256=ra7ttm7HDs3N52M6s80XdpwiSMTLyf776_SmEILWDvo,3276
|
284
284
|
letta/server/rest_api/routers/v1/tags.py,sha256=coydgvL6-9cuG2Hy5Ea7QY3inhTHlsf69w0tcZenBus,880
|
285
285
|
letta/server/rest_api/routers/v1/tools.py,sha256=FXFx8J4Zs-pZ1H8andFzI5Pyv-PJkY8YMlWkZlObGdQ,19544
|
@@ -287,7 +287,7 @@ letta/server/rest_api/routers/v1/users.py,sha256=G5DBHSkPfBgVHN2Wkm-rVYiLQAudwQc
|
|
287
287
|
letta/server/rest_api/routers/v1/voice.py,sha256=nSwjoW5Hi9EdScGyRWXpGVooAS0X2G-mOrpLUz0NqNs,1935
|
288
288
|
letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
|
289
289
|
letta/server/rest_api/utils.py,sha256=n5ZwtCtF3Oa4b9NFQ8l9f13v4eOI4mWdWNQqFp5d3A0,16516
|
290
|
-
letta/server/server.py,sha256=
|
290
|
+
letta/server/server.py,sha256=sDUNw6YW0DVm6Ih3PkaymGbKKkEApU49_iXPfSKXRSk,86520
|
291
291
|
letta/server/startup.sh,sha256=MRXh1RKbS5lyA7XAsk7O6Q4LEKOqnv5B-dwe0SnTHeQ,2514
|
292
292
|
letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
|
293
293
|
letta/server/static_files/assets/index-0e31b727.css,sha256=SBbja96uiQVLDhDOroHgM6NSl7tS4lpJRCREgSS_hA8,7672
|
@@ -301,27 +301,27 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
|
|
301
301
|
letta/server/ws_api/protocol.py,sha256=5mDgpfNZn_kNwHnpt5Dsuw8gdNH298sgxTGed3etzYg,1836
|
302
302
|
letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
|
303
303
|
letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
304
|
-
letta/services/agent_manager.py,sha256=
|
305
|
-
letta/services/block_manager.py,sha256=
|
306
|
-
letta/services/group_manager.py,sha256=
|
304
|
+
letta/services/agent_manager.py,sha256=LBdJ5-APQyjjPJWWuVs9TUtwbTKAguWDqVi1uP_vWoc,72479
|
305
|
+
letta/services/block_manager.py,sha256=hIV1OyUMI2GzbAD6Niswg1XJCoHFubxGxO1vzrnaY2I,18332
|
306
|
+
letta/services/group_manager.py,sha256=X5Z-0j9h95H5p3kKo8m5FZbl0HFN1slxFvcph7fTdvc,15833
|
307
307
|
letta/services/helpers/agent_manager_helper.py,sha256=2W9DpxGOx3rK2LnpGDtQmBJh9u9sKZ_xwAUAYzAMyS0,20350
|
308
308
|
letta/services/helpers/tool_execution_helper.py,sha256=JdH6VTWFrXfwPWsWNSZFKuRFhhXp8qiDYWjbPc8PLLI,7649
|
309
|
-
letta/services/identity_manager.py,sha256=
|
310
|
-
letta/services/job_manager.py,sha256=
|
311
|
-
letta/services/llm_batch_manager.py,sha256=
|
309
|
+
letta/services/identity_manager.py,sha256=qe_MgemGVmxEs5MPX8FLBph1e1Pj5DDGU0RUsh4feS8,9618
|
310
|
+
letta/services/job_manager.py,sha256=J56YwMSAC3sBNlUs1Pgst7Yg5gjWEVsLZnVr762b6xs,17034
|
311
|
+
letta/services/llm_batch_manager.py,sha256=_13RTdA7qFtLa1qEKccaAs-ZnZgZO_J-W5DipCcTVS4,19224
|
312
312
|
letta/services/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
313
313
|
letta/services/mcp/base_client.py,sha256=YoRb9eKKTGaLxaMVtuH5UcC74iXyWlcyYbC5xOeGr4k,2571
|
314
314
|
letta/services/mcp/sse_client.py,sha256=Vj0AgaadgMnpFQOWkSoPfeOI00ZvURMf3TIU7fv_DN8,1012
|
315
315
|
letta/services/mcp/stdio_client.py,sha256=wdPzTqSRkibjt9pXhwi0Nul_z_cTAPim-OHjLc__yBE,925
|
316
316
|
letta/services/mcp/types.py,sha256=nmcnQn2EpxXzXg5_pWPsHZobfxO6OucaUgz1bVvam7o,1411
|
317
|
-
letta/services/message_manager.py,sha256
|
318
|
-
letta/services/organization_manager.py,sha256=
|
319
|
-
letta/services/passage_manager.py,sha256=
|
317
|
+
letta/services/message_manager.py,sha256=WJvlfPIhmSKFNSejnbv-zRmgqM93I68bSK_PKaymJ_E,19045
|
318
|
+
letta/services/organization_manager.py,sha256=Z87kY22pWm6yOmPJCsMUVQmu0kaxyK8WGKkyYaRM2sU,3760
|
319
|
+
letta/services/passage_manager.py,sha256=dyaZdNZtuftwDrFyy8Sjv8UGmZAbHJTHgAJVdTzpua0,9924
|
320
320
|
letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
|
321
|
-
letta/services/provider_manager.py,sha256=
|
322
|
-
letta/services/sandbox_config_manager.py,sha256=
|
323
|
-
letta/services/source_manager.py,sha256=
|
324
|
-
letta/services/step_manager.py,sha256=
|
321
|
+
letta/services/provider_manager.py,sha256=l5gfCLMQ5imSoS1xT-6uFqNWEHBqXEriy6VRNkuJZ80,4758
|
322
|
+
letta/services/sandbox_config_manager.py,sha256=tN6TYyOSNOZ3daX2QdbJcyGtUvczQc3-YZ-7dn5yLyE,13300
|
323
|
+
letta/services/source_manager.py,sha256=wrIMp83Q2wVxC3U0Z5y6wiJe_vkOoCZs0zJuF-Majvw,7900
|
324
|
+
letta/services/step_manager.py,sha256=8uMg991nxatKs0xyUfNZJqnMmgu3s7d5WgpqSujjymM,5266
|
325
325
|
letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
326
326
|
letta/services/summarizer/enums.py,sha256=szzPX2OBRRJEZsBTGYQThrNz02ELFqhuLwvOR7ozi7A,208
|
327
327
|
letta/services/summarizer/summarizer.py,sha256=LVFZ8NLtS1lz4Pdr7M_cixFYBYsllt2vXNzTOT3Wkxc,7658
|
@@ -329,20 +329,20 @@ letta/services/tool_executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
329
329
|
letta/services/tool_executor/tool_execution_manager.py,sha256=NLkHLxxMYp0XKgu8j6YgqBVkhlG1cOioNRTd4muKJyU,4537
|
330
330
|
letta/services/tool_executor/tool_execution_sandbox.py,sha256=9gcERJ15Y6u_6AGAVH3KGJP-85fpr2HLCV8SatQAG0w,24891
|
331
331
|
letta/services/tool_executor/tool_executor.py,sha256=KdCjTiKokAntFbXYRIapI7H1lI68JRBmPLRCc_d9zR8,27446
|
332
|
-
letta/services/tool_manager.py,sha256=
|
332
|
+
letta/services/tool_manager.py,sha256=qp2h6mfPtZvl0JhN3MAc9C2kSliOF5SK0_Yeq_UfOZM,11786
|
333
333
|
letta/services/tool_sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
334
334
|
letta/services/tool_sandbox/base.py,sha256=pUnPFkEg9I5ktMuT4AOOxbTnTmZTGcTA2phLe1H1EdY,8306
|
335
335
|
letta/services/tool_sandbox/e2b_sandbox.py,sha256=umsXfolzM_j67izswECDdVfnlcm03wLpMoZtS6SZ0sc,6147
|
336
336
|
letta/services/tool_sandbox/local_sandbox.py,sha256=ksbraC-zcMWt3vS7kSi98uWI9L73I0h73rMayhuTWsw,10474
|
337
|
-
letta/services/user_manager.py,sha256=
|
338
|
-
letta/settings.py,sha256=
|
339
|
-
letta/streaming_interface.py,sha256=
|
337
|
+
letta/services/user_manager.py,sha256=lMOBMsFVrUgzlo6Y0b7O9geH3a0wpKuIJnRlGCqQ4oQ,4292
|
338
|
+
letta/settings.py,sha256=h0d3tN3W3dEri5xlBthGwDUQBwaz_oZopy2vwRiILXA,8770
|
339
|
+
letta/streaming_interface.py,sha256=c-T7zoMTXGXFwDWJJXrv7UypeMPXwPOmNHeuuh0b9zk,16398
|
340
340
|
letta/streaming_utils.py,sha256=jLqFTVhUL76FeOuYk8TaRQHmPTf3HSRc2EoJwxJNK6U,11946
|
341
341
|
letta/system.py,sha256=mKxmvvekuP8mdgsebRINGBoFbUdJhxLJ260crPBNVyk,8386
|
342
342
|
letta/tracing.py,sha256=j9uyBbx02erQZ307XmZmZSNyzQt-d7ZDB7vhFhjDlsU,8448
|
343
|
-
letta/utils.py,sha256=
|
344
|
-
letta_nightly-0.7.
|
345
|
-
letta_nightly-0.7.
|
346
|
-
letta_nightly-0.7.
|
347
|
-
letta_nightly-0.7.
|
348
|
-
letta_nightly-0.7.
|
343
|
+
letta/utils.py,sha256=W8J1FfhRADFqoyx3J8-Z1_aWyG433PBoEh_b5wdOZIg,32262
|
344
|
+
letta_nightly-0.7.14.dev20250513020711.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
|
345
|
+
letta_nightly-0.7.14.dev20250513020711.dist-info/METADATA,sha256=-HgYrQ-mH6kiG7bkpvyee71IOqjb-HCPTtsr-CbpAks,22274
|
346
|
+
letta_nightly-0.7.14.dev20250513020711.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
347
|
+
letta_nightly-0.7.14.dev20250513020711.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
|
348
|
+
letta_nightly-0.7.14.dev20250513020711.dist-info/RECORD,,
|
File without changes
|
File without changes
|