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.
Files changed (43) hide show
  1. letta/__init__.py +1 -1
  2. letta/agent.py +14 -17
  3. letta/agents/base_agent.py +112 -1
  4. letta/agents/letta_agent.py +35 -55
  5. letta/agents/letta_agent_batch.py +22 -45
  6. letta/agents/voice_agent.py +10 -42
  7. letta/functions/schema_generator.py +7 -3
  8. letta/llm_api/anthropic.py +4 -2
  9. letta/llm_api/openai.py +4 -2
  10. letta/orm/agents_tags.py +5 -2
  11. letta/orm/blocks_agents.py +3 -1
  12. letta/orm/sqlalchemy_base.py +91 -1
  13. letta/schemas/message.py +1 -1
  14. letta/serialize_schemas/marshmallow_agent.py +4 -4
  15. letta/server/db.py +180 -88
  16. letta/server/rest_api/app.py +6 -3
  17. letta/server/rest_api/chat_completions_interface.py +1 -0
  18. letta/server/rest_api/interface.py +54 -16
  19. letta/server/rest_api/routers/v1/sources.py +1 -0
  20. letta/server/server.py +1 -2
  21. letta/services/agent_manager.py +40 -31
  22. letta/services/block_manager.py +61 -34
  23. letta/services/group_manager.py +11 -15
  24. letta/services/identity_manager.py +9 -13
  25. letta/services/job_manager.py +12 -17
  26. letta/services/llm_batch_manager.py +17 -21
  27. letta/services/message_manager.py +53 -31
  28. letta/services/organization_manager.py +7 -14
  29. letta/services/passage_manager.py +6 -10
  30. letta/services/provider_manager.py +5 -9
  31. letta/services/sandbox_config_manager.py +13 -17
  32. letta/services/source_manager.py +13 -17
  33. letta/services/step_manager.py +5 -9
  34. letta/services/tool_manager.py +9 -14
  35. letta/services/user_manager.py +7 -12
  36. letta/settings.py +2 -0
  37. letta/streaming_interface.py +2 -0
  38. letta/utils.py +1 -1
  39. {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/METADATA +2 -1
  40. {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/RECORD +43 -43
  41. {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/LICENSE +0 -0
  42. {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/WHEEL +0 -0
  43. {letta_nightly-0.7.13.dev20250511104036.dist-info → letta_nightly-0.7.14.dev20250513020711.dist-info}/entry_points.txt +0 -0
@@ -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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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)
@@ -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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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 self.session_maker() as session:
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
@@ -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.13.dev20250511104036
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=Y_QgodpFyn8eKt2ZRmuBOCwIS1xN_KmXBrjVm8KdcaQ,916
1
+ letta/__init__.py,sha256=7Ep42kC5nugZGxpjAao1Kw_lhwmHtPAKOX5qpVNCODs,916
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=052xuXY4psY0BGDrtZ8XviOTpKhERSFrzKZnTsuIEvY,72125
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=Nv6OzvMeAvEv4yHAMaltgWvRU9eqSEJVuUm_7NnIeJk,2354
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=CwpHUjcwfmuhNhxEbTP0gXoIOlEaFW_Kcp56K45PWzg,19396
10
- letta/agents/letta_agent_batch.py,sha256=HPeqcaaBbTUR6rVdqfvWfWEcdxTsR9P8koDBmEHvXXE,25847
11
- letta/agents/voice_agent.py,sha256=YHaGCy3A35lB3bxXMXldIHUsXt76kC88Ti34EDs3zzA,23168
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=OoXDHd5oZMNjljZJplEIMOMmKvxO_rfDFtAi-E9EHMA,22488
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=bAk0WpQecz343rfQa1AUG3MI8WQPnE5LBueABje0mQM,46182
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=KZ9UrL2aIC29o389f4yfF9_LP8UKYRyN4YUgBQuGhYU,25648
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=dYSnHz4IWBjyOiQ4RJomX3P0QN76JTlEZEw5eJM6Emg,925
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=W0dykl9OchAofSuAYZD5zNmhyMabPr9LTJrz-I3A0m4,983
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=GAYUfniRNWkSVkhj6I1e5yzfy5H93aopBY72x8kO-cg,27238
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=qHGNuhymW_qAbuPcb0CPRUYrrlBlWj5Pu4Oh2b7ag7Q,51143
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=re6o-zQozSghMNQCo4aGm82BCQV0iRfBe7XUhZIRXJE,5433
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=Jt_lWUvqTWFHfgsWUuXcDlGD3yejNBjY1P4J2vI3kL0,4935
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=WoAfqDrSkb86Wq0lAvTWJqoxys9e-kgKaS11sGb8Xzg,14715
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=90VOlJ2HTxZtQMDt3aCbrlbGLouj4qHkfEz6PwXtrkc,11089
263
- letta/server/rest_api/interface.py,sha256=ypBXEySUQ0tR-CSKfn3RiK28uOggB5gjA_mq3uRMKW4,65929
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=F20RmcWg9lwFVj0-kF6iKUOm2YIft0j6xoNt0dqjpwc,11173
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=fWg6a01RaaWkjguO6tzehlJWWycs5H7azLve5XJ0MiQ,86594
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=FfMRz0Ewebn0OGhb9adBxga06-da3YmQ2qlh1BHOXUI,72037
305
- letta/services/block_manager.py,sha256=rAwOX9MYGSWYlzQsUtS_UXJwoh7jD-5O6aL8VWnA7fw,17327
306
- letta/services/group_manager.py,sha256=EKYeD3MyJknpZBsH850pqIPZJmsphgEfI8hL-uOZbvU,15896
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=sjHTCPbLYRDyWCJ3qjcuKZqWqzDoEuslRsDVKQtBraE,9683
310
- letta/services/job_manager.py,sha256=Z9cSD-IqpiOIWE_UOTBUEIxGITrJ10JT1G3ske-0yIY,17166
311
- letta/services/llm_batch_manager.py,sha256=zw-CcyW9NbtXrv26lxpzgfEK7TEVb54uJpHNftGwS3A,19281
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=-TpbWU_6w1nlc2nfGKfyopyy8b-SSIiHqxIso6mWuoA,17949
318
- letta/services/organization_manager.py,sha256=Ax0KmPSc_YYsYaxeld9gc7ST-J6DemHQ542DD7l7AWA,3989
319
- letta/services/passage_manager.py,sha256=YCmb_a80ECH5yq3Glj_Qra_mV6NqTc5oB6RfybHOL00,9992
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=BkCgTvdTjDq7YthEsyvnpPST4xbxFwrRbYuD50iMBm8,4827
322
- letta/services/sandbox_config_manager.py,sha256=ATgZNWNpkdIQDUPy4ABsguHQba2PZf51-c4Ji60MzLE,13361
323
- letta/services/source_manager.py,sha256=yW88wAJoeAWtbg0FxifE352jhgOTKNiG7K-IPKXKnvg,7961
324
- letta/services/step_manager.py,sha256=B64iYn6Dt9yRKsSJ5vLxWQR2t-apvPLfUZyzrUsJTpI,5335
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=OyCaGtcChb6VEJxFp_qlTs62gIApFTEeTUve3K6iCMs,11921
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=_aoiQy73B4Jm_uVDrfAUrg2TnOYa_tJLRUwa3fF5ASY,4429
338
- letta/settings.py,sha256=2SCkE8SppUQmhHWrytR52bbKEJcQmJzkzHNFfGCdsK8,8665
339
- letta/streaming_interface.py,sha256=kDSc5bnodgGzAuLcnq4Zf7p-uS6cdyxSIZ5U_JA_8FU,16300
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=IZFvtj9WYcrxUbkoUUYGDxMYQYdn5SgfqsvnARGsAzc,32245
344
- letta_nightly-0.7.13.dev20250511104036.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
345
- letta_nightly-0.7.13.dev20250511104036.dist-info/METADATA,sha256=44DVPXU-OJNTFnSU82OLiCp6V9l91kTq47aJ0Cpptjc,22232
346
- letta_nightly-0.7.13.dev20250511104036.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
347
- letta_nightly-0.7.13.dev20250511104036.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
348
- letta_nightly-0.7.13.dev20250511104036.dist-info/RECORD,,
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,,