letta-nightly 0.7.21.dev20250521233415__py3-none-any.whl → 0.7.22.dev20250523081403__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 (50) hide show
  1. letta/__init__.py +2 -2
  2. letta/agents/base_agent.py +4 -2
  3. letta/agents/letta_agent.py +3 -10
  4. letta/agents/letta_agent_batch.py +6 -6
  5. letta/cli/cli.py +0 -316
  6. letta/cli/cli_load.py +0 -52
  7. letta/client/client.py +2 -1554
  8. letta/data_sources/connectors.py +4 -2
  9. letta/functions/ast_parsers.py +33 -43
  10. letta/groups/sleeptime_multi_agent_v2.py +49 -13
  11. letta/jobs/llm_batch_job_polling.py +3 -3
  12. letta/jobs/scheduler.py +20 -19
  13. letta/llm_api/anthropic_client.py +3 -0
  14. letta/llm_api/google_vertex_client.py +5 -0
  15. letta/llm_api/openai_client.py +5 -0
  16. letta/main.py +2 -362
  17. letta/server/db.py +5 -0
  18. letta/server/rest_api/routers/v1/agents.py +72 -43
  19. letta/server/rest_api/routers/v1/llms.py +2 -2
  20. letta/server/rest_api/routers/v1/messages.py +5 -3
  21. letta/server/rest_api/routers/v1/sandbox_configs.py +18 -18
  22. letta/server/rest_api/routers/v1/sources.py +49 -36
  23. letta/server/server.py +53 -22
  24. letta/services/agent_manager.py +797 -124
  25. letta/services/block_manager.py +14 -62
  26. letta/services/group_manager.py +37 -0
  27. letta/services/identity_manager.py +9 -0
  28. letta/services/job_manager.py +17 -0
  29. letta/services/llm_batch_manager.py +88 -64
  30. letta/services/message_manager.py +19 -0
  31. letta/services/organization_manager.py +10 -0
  32. letta/services/passage_manager.py +13 -0
  33. letta/services/per_agent_lock_manager.py +4 -0
  34. letta/services/provider_manager.py +34 -0
  35. letta/services/sandbox_config_manager.py +130 -0
  36. letta/services/source_manager.py +59 -44
  37. letta/services/step_manager.py +8 -1
  38. letta/services/tool_manager.py +21 -0
  39. letta/services/tool_sandbox/e2b_sandbox.py +4 -2
  40. letta/services/tool_sandbox/local_sandbox.py +7 -3
  41. letta/services/user_manager.py +16 -0
  42. {letta_nightly-0.7.21.dev20250521233415.dist-info → letta_nightly-0.7.22.dev20250523081403.dist-info}/METADATA +1 -1
  43. {letta_nightly-0.7.21.dev20250521233415.dist-info → letta_nightly-0.7.22.dev20250523081403.dist-info}/RECORD +46 -50
  44. letta/__main__.py +0 -3
  45. letta/benchmark/benchmark.py +0 -98
  46. letta/benchmark/constants.py +0 -14
  47. letta/cli/cli_config.py +0 -227
  48. {letta_nightly-0.7.21.dev20250521233415.dist-info → letta_nightly-0.7.22.dev20250523081403.dist-info}/LICENSE +0 -0
  49. {letta_nightly-0.7.21.dev20250521233415.dist-info → letta_nightly-0.7.22.dev20250523081403.dist-info}/WHEEL +0 -0
  50. {letta_nightly-0.7.21.dev20250521233415.dist-info → letta_nightly-0.7.22.dev20250523081403.dist-info}/entry_points.txt +0 -0
@@ -26,6 +26,7 @@ from letta.schemas.tool import Tool as PydanticTool
26
26
  from letta.schemas.tool import ToolCreate, ToolUpdate
27
27
  from letta.schemas.user import User as PydanticUser
28
28
  from letta.server.db import db_registry
29
+ from letta.tracing import trace_method
29
30
  from letta.utils import enforce_types, printd
30
31
 
31
32
  logger = get_logger(__name__)
@@ -36,6 +37,7 @@ class ToolManager:
36
37
 
37
38
  # TODO: Refactor this across the codebase to use CreateTool instead of passing in a Tool object
38
39
  @enforce_types
40
+ @trace_method
39
41
  def create_or_update_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
40
42
  """Create a new tool based on the ToolCreate schema."""
41
43
  tool_id = self.get_tool_id_by_name(tool_name=pydantic_tool.name, actor=actor)
@@ -62,6 +64,7 @@ class ToolManager:
62
64
  return tool
63
65
 
64
66
  @enforce_types
67
+ @trace_method
65
68
  async def create_or_update_tool_async(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
66
69
  """Create a new tool based on the ToolCreate schema."""
67
70
  tool_id = await self.get_tool_id_by_name_async(tool_name=pydantic_tool.name, actor=actor)
@@ -88,6 +91,7 @@ class ToolManager:
88
91
  return tool
89
92
 
90
93
  @enforce_types
94
+ @trace_method
91
95
  def create_or_update_mcp_tool(self, tool_create: ToolCreate, mcp_server_name: str, actor: PydanticUser) -> PydanticTool:
92
96
  metadata = {MCP_TOOL_TAG_NAME_PREFIX: {"server_name": mcp_server_name}}
93
97
  return self.create_or_update_tool(
@@ -98,18 +102,21 @@ class ToolManager:
98
102
  )
99
103
 
100
104
  @enforce_types
105
+ @trace_method
101
106
  def create_or_update_composio_tool(self, tool_create: ToolCreate, actor: PydanticUser) -> PydanticTool:
102
107
  return self.create_or_update_tool(
103
108
  PydanticTool(tool_type=ToolType.EXTERNAL_COMPOSIO, name=tool_create.json_schema["name"], **tool_create.model_dump()), actor
104
109
  )
105
110
 
106
111
  @enforce_types
112
+ @trace_method
107
113
  def create_or_update_langchain_tool(self, tool_create: ToolCreate, actor: PydanticUser) -> PydanticTool:
108
114
  return self.create_or_update_tool(
109
115
  PydanticTool(tool_type=ToolType.EXTERNAL_LANGCHAIN, name=tool_create.json_schema["name"], **tool_create.model_dump()), actor
110
116
  )
111
117
 
112
118
  @enforce_types
119
+ @trace_method
113
120
  def create_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
114
121
  """Create a new tool based on the ToolCreate schema."""
115
122
  with db_registry.session() as session:
@@ -125,6 +132,7 @@ class ToolManager:
125
132
  return tool.to_pydantic()
126
133
 
127
134
  @enforce_types
135
+ @trace_method
128
136
  async def create_tool_async(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
129
137
  """Create a new tool based on the ToolCreate schema."""
130
138
  async with db_registry.async_session() as session:
@@ -140,6 +148,7 @@ class ToolManager:
140
148
  return tool.to_pydantic()
141
149
 
142
150
  @enforce_types
151
+ @trace_method
143
152
  def get_tool_by_id(self, tool_id: str, actor: PydanticUser) -> PydanticTool:
144
153
  """Fetch a tool by its ID."""
145
154
  with db_registry.session() as session:
@@ -149,6 +158,7 @@ class ToolManager:
149
158
  return tool.to_pydantic()
150
159
 
151
160
  @enforce_types
161
+ @trace_method
152
162
  async def get_tool_by_id_async(self, tool_id: str, actor: PydanticUser) -> PydanticTool:
153
163
  """Fetch a tool by its ID."""
154
164
  async with db_registry.async_session() as session:
@@ -158,6 +168,7 @@ class ToolManager:
158
168
  return tool.to_pydantic()
159
169
 
160
170
  @enforce_types
171
+ @trace_method
161
172
  def get_tool_by_name(self, tool_name: str, actor: PydanticUser) -> Optional[PydanticTool]:
162
173
  """Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
163
174
  try:
@@ -168,6 +179,7 @@ class ToolManager:
168
179
  return None
169
180
 
170
181
  @enforce_types
182
+ @trace_method
171
183
  async def get_tool_by_name_async(self, tool_name: str, actor: PydanticUser) -> Optional[PydanticTool]:
172
184
  """Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
173
185
  try:
@@ -178,6 +190,7 @@ class ToolManager:
178
190
  return None
179
191
 
180
192
  @enforce_types
193
+ @trace_method
181
194
  def get_tool_id_by_name(self, tool_name: str, actor: PydanticUser) -> Optional[str]:
182
195
  """Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
183
196
  try:
@@ -188,6 +201,7 @@ class ToolManager:
188
201
  return None
189
202
 
190
203
  @enforce_types
204
+ @trace_method
191
205
  async def get_tool_id_by_name_async(self, tool_name: str, actor: PydanticUser) -> Optional[str]:
192
206
  """Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
193
207
  try:
@@ -198,6 +212,7 @@ class ToolManager:
198
212
  return None
199
213
 
200
214
  @enforce_types
215
+ @trace_method
201
216
  async def list_tools_async(self, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticTool]:
202
217
  """List all tools with optional pagination."""
203
218
  async with db_registry.async_session() as session:
@@ -223,6 +238,7 @@ class ToolManager:
223
238
  return results
224
239
 
225
240
  @enforce_types
241
+ @trace_method
226
242
  def size(
227
243
  self,
228
244
  actor: PydanticUser,
@@ -239,6 +255,7 @@ class ToolManager:
239
255
  return ToolModel.size(db_session=session, actor=actor, name=LETTA_TOOL_SET)
240
256
 
241
257
  @enforce_types
258
+ @trace_method
242
259
  def update_tool_by_id(
243
260
  self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser, updated_tool_type: Optional[ToolType] = None
244
261
  ) -> PydanticTool:
@@ -267,6 +284,7 @@ class ToolManager:
267
284
  return tool.update(db_session=session, actor=actor).to_pydantic()
268
285
 
269
286
  @enforce_types
287
+ @trace_method
270
288
  async def update_tool_by_id_async(
271
289
  self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser, updated_tool_type: Optional[ToolType] = None
272
290
  ) -> PydanticTool:
@@ -296,6 +314,7 @@ class ToolManager:
296
314
  return tool.to_pydantic()
297
315
 
298
316
  @enforce_types
317
+ @trace_method
299
318
  def delete_tool_by_id(self, tool_id: str, actor: PydanticUser) -> None:
300
319
  """Delete a tool by its ID."""
301
320
  with db_registry.session() as session:
@@ -306,6 +325,7 @@ class ToolManager:
306
325
  raise ValueError(f"Tool with id {tool_id} not found.")
307
326
 
308
327
  @enforce_types
328
+ @trace_method
309
329
  def upsert_base_tools(self, actor: PydanticUser) -> List[PydanticTool]:
310
330
  """Add default tools in base.py and multi_agent.py"""
311
331
  functions_to_schema = {}
@@ -371,6 +391,7 @@ class ToolManager:
371
391
  return tools
372
392
 
373
393
  @enforce_types
394
+ @trace_method
374
395
  async def upsert_base_tools_async(self, actor: PydanticUser) -> List[PydanticTool]:
375
396
  """Add default tools in base.py and multi_agent.py"""
376
397
  functions_to_schema = {}
@@ -53,7 +53,9 @@ class AsyncToolSandboxE2B(AsyncToolSandboxBase):
53
53
  if self.provided_sandbox_config:
54
54
  sbx_config = self.provided_sandbox_config
55
55
  else:
56
- sbx_config = self.sandbox_config_manager.get_or_create_default_sandbox_config(sandbox_type=SandboxType.E2B, actor=self.user)
56
+ sbx_config = await self.sandbox_config_manager.get_or_create_default_sandbox_config_async(
57
+ sandbox_type=SandboxType.E2B, actor=self.user
58
+ )
57
59
  # TODO: So this defaults to force recreating always
58
60
  # TODO: Eventually, provision one sandbox PER agent, and that agent re-uses that one specifically
59
61
  e2b_sandbox = await self.create_e2b_sandbox_with_metadata_hash(sandbox_config=sbx_config)
@@ -71,7 +73,7 @@ class AsyncToolSandboxE2B(AsyncToolSandboxBase):
71
73
  if self.provided_sandbox_env_vars:
72
74
  env_vars.update(self.provided_sandbox_env_vars)
73
75
  else:
74
- db_env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(
76
+ db_env_vars = await self.sandbox_config_manager.get_sandbox_env_vars_as_dict_async(
75
77
  sandbox_config_id=sbx_config.id, actor=self.user, limit=100
76
78
  )
77
79
  env_vars.update(db_env_vars)
@@ -60,14 +60,16 @@ class AsyncToolSandboxLocal(AsyncToolSandboxBase):
60
60
  additional_env_vars: Optional[Dict],
61
61
  ) -> ToolExecutionResult:
62
62
  """
63
- Unified asynchronougit pus method to run the tool in a local sandbox environment,
63
+ Unified asynchronous method to run the tool in a local sandbox environment,
64
64
  always via subprocess for multi-core parallelism.
65
65
  """
66
66
  # Get sandbox configuration
67
67
  if self.provided_sandbox_config:
68
68
  sbx_config = self.provided_sandbox_config
69
69
  else:
70
- sbx_config = self.sandbox_config_manager.get_or_create_default_sandbox_config(sandbox_type=SandboxType.LOCAL, actor=self.user)
70
+ sbx_config = await self.sandbox_config_manager.get_or_create_default_sandbox_config_async(
71
+ sandbox_type=SandboxType.LOCAL, actor=self.user
72
+ )
71
73
  local_configs = sbx_config.get_local_config()
72
74
  use_venv = local_configs.use_venv
73
75
 
@@ -76,7 +78,9 @@ class AsyncToolSandboxLocal(AsyncToolSandboxBase):
76
78
  if self.provided_sandbox_env_vars:
77
79
  env.update(self.provided_sandbox_env_vars)
78
80
  else:
79
- env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(sandbox_config_id=sbx_config.id, actor=self.user, limit=100)
81
+ env_vars = await self.sandbox_config_manager.get_sandbox_env_vars_as_dict_async(
82
+ sandbox_config_id=sbx_config.id, actor=self.user, limit=100
83
+ )
80
84
  env.update(env_vars)
81
85
 
82
86
  if agent_state:
@@ -7,6 +7,7 @@ from letta.schemas.user import User as PydanticUser
7
7
  from letta.schemas.user import UserUpdate
8
8
  from letta.server.db import db_registry
9
9
  from letta.services.organization_manager import OrganizationManager
10
+ from letta.tracing import trace_method
10
11
  from letta.utils import enforce_types
11
12
 
12
13
 
@@ -17,6 +18,7 @@ class UserManager:
17
18
  DEFAULT_USER_ID = "user-00000000-0000-4000-8000-000000000000"
18
19
 
19
20
  @enforce_types
21
+ @trace_method
20
22
  def create_default_user(self, org_id: str = OrganizationManager.DEFAULT_ORG_ID) -> PydanticUser:
21
23
  """Create the default user."""
22
24
  with db_registry.session() as session:
@@ -37,6 +39,7 @@ class UserManager:
37
39
  return user.to_pydantic()
38
40
 
39
41
  @enforce_types
42
+ @trace_method
40
43
  def create_user(self, pydantic_user: PydanticUser) -> PydanticUser:
41
44
  """Create a new user if it doesn't already exist."""
42
45
  with db_registry.session() as session:
@@ -45,6 +48,7 @@ class UserManager:
45
48
  return new_user.to_pydantic()
46
49
 
47
50
  @enforce_types
51
+ @trace_method
48
52
  async def create_actor_async(self, pydantic_user: PydanticUser) -> PydanticUser:
49
53
  """Create a new user if it doesn't already exist (async version)."""
50
54
  async with db_registry.async_session() as session:
@@ -53,6 +57,7 @@ class UserManager:
53
57
  return new_user.to_pydantic()
54
58
 
55
59
  @enforce_types
60
+ @trace_method
56
61
  def update_user(self, user_update: UserUpdate) -> PydanticUser:
57
62
  """Update user details."""
58
63
  with db_registry.session() as session:
@@ -69,6 +74,7 @@ class UserManager:
69
74
  return existing_user.to_pydantic()
70
75
 
71
76
  @enforce_types
77
+ @trace_method
72
78
  async def update_actor_async(self, user_update: UserUpdate) -> PydanticUser:
73
79
  """Update user details (async version)."""
74
80
  async with db_registry.async_session() as session:
@@ -85,6 +91,7 @@ class UserManager:
85
91
  return existing_user.to_pydantic()
86
92
 
87
93
  @enforce_types
94
+ @trace_method
88
95
  def delete_user_by_id(self, user_id: str):
89
96
  """Delete a user and their associated records (agents, sources, mappings)."""
90
97
  with db_registry.session() as session:
@@ -95,6 +102,7 @@ class UserManager:
95
102
  session.commit()
96
103
 
97
104
  @enforce_types
105
+ @trace_method
98
106
  async def delete_actor_by_id_async(self, user_id: str):
99
107
  """Delete a user and their associated records (agents, sources, mappings) asynchronously."""
100
108
  async with db_registry.async_session() as session:
@@ -103,6 +111,7 @@ class UserManager:
103
111
  await user.hard_delete_async(session)
104
112
 
105
113
  @enforce_types
114
+ @trace_method
106
115
  def get_user_by_id(self, user_id: str) -> PydanticUser:
107
116
  """Fetch a user by ID."""
108
117
  with db_registry.session() as session:
@@ -110,6 +119,7 @@ class UserManager:
110
119
  return user.to_pydantic()
111
120
 
112
121
  @enforce_types
122
+ @trace_method
113
123
  async def get_actor_by_id_async(self, actor_id: str) -> PydanticUser:
114
124
  """Fetch a user by ID asynchronously."""
115
125
  async with db_registry.async_session() as session:
@@ -117,6 +127,7 @@ class UserManager:
117
127
  return user.to_pydantic()
118
128
 
119
129
  @enforce_types
130
+ @trace_method
120
131
  def get_default_user(self) -> PydanticUser:
121
132
  """Fetch the default user. If it doesn't exist, create it."""
122
133
  try:
@@ -125,6 +136,7 @@ class UserManager:
125
136
  return self.create_default_user()
126
137
 
127
138
  @enforce_types
139
+ @trace_method
128
140
  def get_user_or_default(self, user_id: Optional[str] = None):
129
141
  """Fetch the user or default user."""
130
142
  if not user_id:
@@ -136,6 +148,7 @@ class UserManager:
136
148
  return self.get_default_user()
137
149
 
138
150
  @enforce_types
151
+ @trace_method
139
152
  async def get_default_actor_async(self) -> PydanticUser:
140
153
  """Fetch the default user asynchronously. If it doesn't exist, create it."""
141
154
  try:
@@ -145,6 +158,7 @@ class UserManager:
145
158
  return self.create_default_user(org_id=self.DEFAULT_ORG_ID)
146
159
 
147
160
  @enforce_types
161
+ @trace_method
148
162
  async def get_actor_or_default_async(self, actor_id: Optional[str] = None):
149
163
  """Fetch the user or default user asynchronously."""
150
164
  if not actor_id:
@@ -156,6 +170,7 @@ class UserManager:
156
170
  return await self.get_default_actor_async()
157
171
 
158
172
  @enforce_types
173
+ @trace_method
159
174
  def list_users(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticUser]:
160
175
  """List all users with optional pagination."""
161
176
  with db_registry.session() as session:
@@ -167,6 +182,7 @@ class UserManager:
167
182
  return [user.to_pydantic() for user in users]
168
183
 
169
184
  @enforce_types
185
+ @trace_method
170
186
  async def list_actors_async(self, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticUser]:
171
187
  """List all users with optional pagination (async version)."""
172
188
  async with db_registry.async_session() as session:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.7.21.dev20250521233415
3
+ Version: 0.7.22.dev20250523081403
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,32 +1,28 @@
1
- letta/__init__.py,sha256=c_780KBP9tBCLrZRktRoHLFWPkjdajwKwNogZtxUtQs,916
2
- letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
1
+ letta/__init__.py,sha256=AkQ-S44jf9AYGDZrBONaQfZis2Gxwo-wIMuyk9rGkyA,888
3
2
  letta/agent.py,sha256=2r6xovRHeUnmWZ6WJoIP217ryse5Q3Bkco1JXiV599w,87459
4
3
  letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- letta/agents/base_agent.py,sha256=-crUJ8raU1fe9ptsS3jBR90g74p5ueVYFjqBaZdODMQ,5431
4
+ letta/agents/base_agent.py,sha256=mdFEpYBVyFjmt6BzO9YrpJnH99RkBWZ9gnP3Q_bnbBI,5505
6
5
  letta/agents/ephemeral_agent.py,sha256=el-SUF_16vv_7OouIR-6z0pAE9Yc0PLibygvfCKwqfo,2736
7
6
  letta/agents/exceptions.py,sha256=BQY4D4w32OYHM63CM19ko7dPwZiAzUs3NbKvzmCTcJg,318
8
7
  letta/agents/helpers.py,sha256=nwmgbtxAANwUsuwZqU4SFiQ3Kc_ULk78H76Z_K6I-ZQ,6127
9
- letta/agents/letta_agent.py,sha256=Cbyx-UBpooooMW6wGIi1PLMc7tiw6Bpj2YGYSBFWxj8,32928
10
- letta/agents/letta_agent_batch.py,sha256=CCfkPcdTjAoZ1dXDVtC3bXiAMp4ss2KFr5KWsUkZW-4,27166
8
+ letta/agents/letta_agent.py,sha256=OyshUQQ0IdhS0KM6pyRMUsrMPzwjZAKsmZnJN2hPmKc,32673
9
+ letta/agents/letta_agent_batch.py,sha256=0q7L2klbWm4IsE677pR6lT0Imz71UHQgXTkEeUscOKI,27238
11
10
  letta/agents/voice_agent.py,sha256=bZX31bsf3290zuuElx93JnAoKHVoiLRuBiYhQh2aGSc,21462
12
11
  letta/agents/voice_sleeptime_agent.py,sha256=gB44pOeIQJer_XqdxSNt7Txv0JaQAv9pzsiEFO9GYdY,7346
13
- letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
14
- letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
15
- letta/cli/cli.py,sha256=Y3UC0mCvGR283sdegnqgq-6Fcwie59baXy3P0Cf0V-k,16569
16
- letta/cli/cli_config.py,sha256=MNMhIAAjXiAy2gX_gAtqiY0Ya6VNbzXJWjIcRVEZa-k,8597
17
- letta/cli/cli_load.py,sha256=vER0PwpHnsCZtCHcR2YjEXM-VVuO9jhfQibdo3gI3S0,2703
12
+ letta/cli/cli.py,sha256=tKtghlX36Rp0_HbkMosvlAapL07JXhA0vKLGTNKnxSQ,1615
13
+ letta/cli/cli_load.py,sha256=paAyDq6e-8D1ZWo8JvXIiA1N7FeKcQMSWgcr2vU_1Gs,319
18
14
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- letta/client/client.py,sha256=2QZPZ1KZf5QFa6GG_mkZeTIOyiYjfAe8ZQBMlKMLyRg,138380
15
+ letta/client/client.py,sha256=mCVob5MI5hegCHedeg88aiYwpPs8NiiLjOIoAmEFiS8,84826
20
16
  letta/client/streaming.py,sha256=UsDS_tDTsA3HgYryIDvGGmx_dWfnfQwtmEwLi4Z89Ik,4701
21
17
  letta/client/utils.py,sha256=VCGV-op5ZSmurd4yw7Vhf93XDQ0BkyBT8qsuV7EqfiU,2859
22
18
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
23
19
  letta/constants.py,sha256=c7EsZ3p3ki-MYH8ILFugpL71NeESeH-F4lTiGT3tZvE,11287
24
- letta/data_sources/connectors.py,sha256=m4ALtjlaZpSlJnlq2VMNzx0onowNpjvoa4ZjAB5SMQw,7243
20
+ letta/data_sources/connectors.py,sha256=szuEaPgjsOOg7HUFv4hOcJDSIwq7SguO_rqi2La_Mmo,7261
25
21
  letta/data_sources/connectors_helper.py,sha256=oQpVlc-BjSz9sTZ7sp4PsJSXJbBKpZPi3Dam03CURTQ,3376
26
22
  letta/embeddings.py,sha256=KvC2bl5tARpVY9xcFmw4Cwu1vN0DoH266v2mSUZqwkY,10528
27
23
  letta/errors.py,sha256=GCgFBvluPxebfz1_wB0y-82N8rlVPhGIn-x7UfV3wVU,6961
28
24
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- letta/functions/ast_parsers.py,sha256=CQI0rUoIXcLKAev_GYrXcldRIGN5ZQtk5u4FLoHe5sE,5728
25
+ letta/functions/ast_parsers.py,sha256=PnHLWg0NQM665RLmK5A1BvWwyjk2FcfqkYZPQAXEdAU,5213
30
26
  letta/functions/async_composio_toolset.py,sha256=J6iOOT_rFRS4cpOAaH6R3YDvutPr4fTgpTFHgeaUzu4,4633
31
27
  letta/functions/composio_helpers.py,sha256=mpybCYcB93HWoKrmQIqcuRQG9IH2lHWhsPQx2i8XP_8,3593
32
28
  letta/functions/function_sets/base.py,sha256=GqInIQ7hMPiuPlrHF_u7A3Gds7G1Za-mu9ML8A5Rg6k,16096
@@ -48,7 +44,7 @@ letta/groups/dynamic_multi_agent.py,sha256=OLCxhICFLYyx8wjKGPr1INc6pniEuk4YGZyZh
48
44
  letta/groups/helpers.py,sha256=AcrguRkshtXEV31eWKRfGYEVub8plHsU2kg3QpezbZw,4500
49
45
  letta/groups/round_robin_multi_agent.py,sha256=uUJff0bO68udOREiKFWeS7eEQlk3bF7hcfLSFXMScqI,6999
50
46
  letta/groups/sleeptime_multi_agent.py,sha256=umA62MpAuML-vhfkcY0nmqj2O4KAZsnEgyaNhYlPrDo,10483
51
- letta/groups/sleeptime_multi_agent_v2.py,sha256=GlIAUK1v0k-wnz7Sirm7E-FnF76xFeRyhxt0qkriros,10118
47
+ letta/groups/sleeptime_multi_agent_v2.py,sha256=Cu-iCQRIXcodq5EXE0EiUyfM3pUwiYj81LLCAyUftYg,11618
52
48
  letta/groups/supervisor_multi_agent.py,sha256=ml8Gi9gyVjPuVZjAJAkpGZDjnM7GOS50NkKf5SIutvQ,4455
53
49
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
54
50
  letta/helpers/composio_helpers.py,sha256=5SznD1Y0Y1rV4_wu-uCaZdDU2tNedk-RIX0M9-0r6yo,947
@@ -69,12 +65,12 @@ letta/interfaces/openai_streaming_interface.py,sha256=XEfjm8lvjDiP5aHr9W1PsV69Tj
69
65
  letta/interfaces/utils.py,sha256=c6jvO0dBYHh8DQnlN-B0qeNC64d3CSunhfqlFA4pJTY,278
70
66
  letta/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
67
  letta/jobs/helpers.py,sha256=kO4aj954xsQ1RAmkjY6LQQ7JEIGuhaxB1e9pzrYKHAY,914
72
- letta/jobs/llm_batch_job_polling.py,sha256=i_riKv3FXk6s8IM8xzBXIcc45TT-xUjk6peug6nhIKk,10099
73
- letta/jobs/scheduler.py,sha256=VpRyO2vuETNrarHOIWYctAkrD4WFtV57buUSHaLE89Y,10240
68
+ letta/jobs/llm_batch_job_polling.py,sha256=Qv2zkV6ziu5t0Jd3WfGu092oG6CNRBnuX8CI0fpkS8c,10136
69
+ letta/jobs/scheduler.py,sha256=yVlXWn98gidCuvBU0ikrHFWLXxdKdkL1Kw55GugVARk,10510
74
70
  letta/jobs/types.py,sha256=K8GKEnqEgAT6Kq4F2hUrBC4ZAFM9OkfOjVMStzxKuXQ,742
75
71
  letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
72
  letta/llm_api/anthropic.py,sha256=_FIeOSpvynzYf9vWG1VAB7h1xOJgOAMMSeCdD3CfBRA,47009
77
- letta/llm_api/anthropic_client.py,sha256=vKwHO3A0FdFf2YeJQaaHXzDgsPK95mVBN6X_Je9wJ3Q,25834
73
+ letta/llm_api/anthropic_client.py,sha256=SwKwhXL_lGAj9G2cAQnkeesFB0ipAiWQYSVBqqbGH_Y,25888
78
74
  letta/llm_api/aws_bedrock.py,sha256=kAPpKPRe4ZUa6fkxFbo8xwQgq4fJf3QoZEAP1LOCfaw,4168
79
75
  letta/llm_api/azure_openai.py,sha256=YAkXwKyfnJFNhB45pkJVFsoxUNB_M74rQYchtw_CN6I,5099
80
76
  letta/llm_api/azure_openai_constants.py,sha256=ZaR2IasJThijG0uhLKJThrixdAxLPD2IojfeaJ-KQMQ,294
@@ -82,14 +78,14 @@ letta/llm_api/cohere.py,sha256=IZ6LXyOFMYjWHTeNG9lvFxCdV_NIl0hY2q9SPFYXNkQ,14849
82
78
  letta/llm_api/deepseek.py,sha256=b1mSW8gnBrpAI8d2GcBpDyLYDnuC-P1UP6xJPalfQS4,12456
83
79
  letta/llm_api/google_ai_client.py,sha256=yIP4lJ1sJoryS_76FjSyzOTCOEnXZoyoo-MarR9YzU8,9401
84
80
  letta/llm_api/google_constants.py,sha256=4PKWUNNbBHgHi4K5u9YaHr_8UC3fokfI6Qb6Dfpt4mU,693
85
- letta/llm_api/google_vertex_client.py,sha256=v_UsJncxqdGQJAyMKRaT0oVR0fXa4rkRhirENeaqcHM,22703
81
+ letta/llm_api/google_vertex_client.py,sha256=OCjEp0tTsTKkDVgY-3EwHSJRfyXvAv5ikYzNfIHACaU,22814
86
82
  letta/llm_api/helpers.py,sha256=rpZInutKVKgoywreclisNSi2zVxwFinAzJIuxF6ll4I,17041
87
83
  letta/llm_api/llm_api_tools.py,sha256=gMYoEvs5vSyvjos2eYJN6_BpQ2aNpt3zvyF7D2phbqY,30044
88
84
  letta/llm_api/llm_client.py,sha256=sO9MwiSOJ_ycOFnYrQP0_g6cFkMSnrZqFDz1sUeBHD8,2098
89
85
  letta/llm_api/llm_client_base.py,sha256=nbW70WZmk9bwLPzjgJ9ATeKjm3xzfZs7vk5lQE0QJ3U,6494
90
86
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
91
87
  letta/llm_api/openai.py,sha256=428s_NFgzah6ccEZFOfI5WS0uGafYKgOgE7KN_c0KfQ,27353
92
- letta/llm_api/openai_client.py,sha256=sb77nYJZRq3L-bV9YMaHqk-rfqqg0DPo8CAzzRkIPV8,15099
88
+ letta/llm_api/openai_client.py,sha256=eh07Oxwphau_GHvB2wvrFSj7OK_ed96IA27DFDXjxKk,15210
93
89
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
94
90
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
91
  letta/local_llm/chat_completion_proxy.py,sha256=gc5gaKoHP8QaWRulDeEYPk7Onl8KdCBmpF2l9znXKeQ,13853
@@ -128,7 +124,7 @@ letta/local_llm/webui/legacy_api.py,sha256=k3H3y4qp2Fs-XmP24iSIEyvq6wjWFWBzklY3-
128
124
  letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1rlcc_-Q1JcU,538
129
125
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
130
126
  letta/log.py,sha256=FbFwU9KEX7k0FBYhPl7fJ6uQ3NO3-ZbsnM2OpcTFXjo,2217
131
- letta/main.py,sha256=_agyaYPJq70OL0goNwO34zENL2KupnTgqlg-HVcNaTY,15379
127
+ letta/main.py,sha256=wj4cawl4HP2ok-CqKVvqzSiOMahHC4t8FWxvuKKTWUA,317
132
128
  letta/memory.py,sha256=HzAQxMLCKEUhb9q6fb4ZMeoAA8s4Tu7QLBXANv8OnXY,4273
133
129
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
130
  letta/openai_backcompat/openai_object.py,sha256=GSzeCTwLpLD2fH4X8wVqzwdmoTjKK2I4PnriBY453lc,13505
@@ -256,7 +252,7 @@ letta/serialize_schemas/marshmallow_tool.py,sha256=jwU69BDCakPlYPSk-ta21kuvsURKO
256
252
  letta/serialize_schemas/pydantic_agent_schema.py,sha256=NKq70niUVMI3_lxMKc3u3rOBUhm77bIFaPRj9aidMUQ,3006
257
253
  letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
254
  letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
259
- letta/server/db.py,sha256=OMXevH9MRPn9rqKU6POai-i3oLqRGUwPlhOo_kzCpPM,9879
255
+ letta/server/db.py,sha256=Ob8_W7HXUduJS94a3d0jZ50EtSkYuv8kgOk6AjusyJ8,9985
260
256
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
261
257
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
258
  letta/server/rest_api/app.py,sha256=8Y5R_t_s4IAG7wRfdbmCeF5YT9pfGG4h6_kpUAaUwoQ,14771
@@ -270,20 +266,20 @@ letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
270
266
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
271
267
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=QBWab1fn2LXVDMtc6li3gOzmrNzDiUw5WUJsMeeMZII,5076
272
268
  letta/server/rest_api/routers/v1/__init__.py,sha256=JfSSttkEWu0W18NVVDxl8AGnd8Qhj0BXJNxntOB7070,1768
273
- letta/server/rest_api/routers/v1/agents.py,sha256=lEu6ApiFH2p8e1YMUneaUS0G_P1UZ1gFtLi5xy4Rm6Y,37176
269
+ letta/server/rest_api/routers/v1/agents.py,sha256=evL3IHe5PR2Jmo3edT6hGv2BkHd7hB1EfC4Y4z3qOVc,38631
274
270
  letta/server/rest_api/routers/v1/blocks.py,sha256=am8VeLcpWtZ1V6c9hl0q141uogijGWPbI3rlEoVzBPA,4677
275
271
  letta/server/rest_api/routers/v1/embeddings.py,sha256=P-Dvt_HNKoTyjRwkScAMg1hlB3cNxMeAQwV7bSatsKI,957
276
272
  letta/server/rest_api/routers/v1/groups.py,sha256=DT2tc4wwiq_gzmxefltEIrFSoqOntzhvmgqQy23varA,10738
277
273
  letta/server/rest_api/routers/v1/health.py,sha256=MoOjkydhGcJXTiuJrKIB0etVXiRMdTa51S8RQ8-50DQ,399
278
274
  letta/server/rest_api/routers/v1/identities.py,sha256=bPPjQd_UPMJ-IbBbaVmgwNFfbnBwF8zPGA-j3x2XeeU,7676
279
275
  letta/server/rest_api/routers/v1/jobs.py,sha256=kQzn6CrH7y2lP0LR4x7e3FsERxJ_ZstlFXqE3kek1hQ,2778
280
- letta/server/rest_api/routers/v1/llms.py,sha256=Bhs2pjXFtTXMG44X8vXUWJed3KwWjZF0dMmnX7P1eXg,1892
281
- letta/server/rest_api/routers/v1/messages.py,sha256=JvszNvPIe9mArExNInmJkcX33WInMbS5Vlds1eLqkjc,7850
276
+ letta/server/rest_api/routers/v1/llms.py,sha256=0VJuuGW9_ta0cBnSDtXd3Ngw7GjsqEN2NBf5U3b6M3I,1920
277
+ letta/server/rest_api/routers/v1/messages.py,sha256=z6K6HJlyML7LTqWizz4VU1p0MQJx6eo1BiFHObBizZs,7924
282
278
  letta/server/rest_api/routers/v1/organizations.py,sha256=r7rj-cA3shgAgM0b2JCMqjYsDIFv3ruZjU7SYbPGGqg,2831
283
279
  letta/server/rest_api/routers/v1/providers.py,sha256=qp6XT20tcZac64XDGF2QUyLhselnShrRcTDQBHExEbQ,4322
284
280
  letta/server/rest_api/routers/v1/runs.py,sha256=rq-k5kYN0On7VBNSzoPJxZcBf13hZFaDx0IUJJ04_K8,8875
285
- letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=r8w-XC5u3ve0-3oaC6IRiUSM0EMso9xYXqviulKIT_4,8590
286
- letta/server/rest_api/routers/v1/sources.py,sha256=cNDIckY1zqKUeB9xKg6jIoi-cePzyIew-OHMGeQvyqE,11222
281
+ letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=g6JE1Xcl4vQPRduPdKZL04FexHttK0ZPJuTGds_Heig,8782
282
+ letta/server/rest_api/routers/v1/sources.py,sha256=6qL59NYCTv8uJ7SBOPk09c8q90KghnehPB6NTYLVJ7Y,11896
287
283
  letta/server/rest_api/routers/v1/steps.py,sha256=ra7ttm7HDs3N52M6s80XdpwiSMTLyf776_SmEILWDvo,3276
288
284
  letta/server/rest_api/routers/v1/tags.py,sha256=ef94QitUSJ3NQVffWF1ZqANUZ2b2jRyGHp_I3UUjhno,912
289
285
  letta/server/rest_api/routers/v1/telemetry.py,sha256=z53BW3Pefi3eWy47FPJyGhFWbZicX9jPJUi5LC5c3sk,790
@@ -293,7 +289,7 @@ letta/server/rest_api/routers/v1/voice.py,sha256=NZa7ksEqXTWSqh7CqmbVMClO7wOmrql
293
289
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
294
290
  letta/server/rest_api/streaming_response.py,sha256=yYTuZHfuZ-DYYbA1Ta6axkBn5MvC6OHuVRHSiBqRNUk,3939
295
291
  letta/server/rest_api/utils.py,sha256=UVWlJI026oBB3uWxjhnA9DRlUiYtCoqBzmekI2JhvOQ,16612
296
- letta/server/server.py,sha256=x_B_V00ktUIxXuNhKnhrEwoRgmvFnZYcyk6IFMCwQuM,94962
292
+ letta/server/server.py,sha256=g2C3Nv1_fer9vv_DpUXMVWva1F8KLWe5guj1vtIv52I,96158
297
293
  letta/server/startup.sh,sha256=MRXh1RKbS5lyA7XAsk7O6Q4LEKOqnv5B-dwe0SnTHeQ,2514
298
294
  letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
299
295
  letta/server/static_files/assets/index-0e31b727.css,sha256=SBbja96uiQVLDhDOroHgM6NSl7tS4lpJRCREgSS_hA8,7672
@@ -307,28 +303,28 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
307
303
  letta/server/ws_api/protocol.py,sha256=5mDgpfNZn_kNwHnpt5Dsuw8gdNH298sgxTGed3etzYg,1836
308
304
  letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
309
305
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
- letta/services/agent_manager.py,sha256=UmoDaGw6Z4JTP-4CxRQVx7cDPBuTraTLh4soO4DKtrI,101412
311
- letta/services/block_manager.py,sha256=78OuEBvNqjZWrtRoE_u_eQuS8aTD9af_eBU0kbwXXz8,21290
312
- letta/services/group_manager.py,sha256=X5Z-0j9h95H5p3kKo8m5FZbl0HFN1slxFvcph7fTdvc,15833
306
+ letta/services/agent_manager.py,sha256=QQ-5Xfnjvbfm4MaP26yEhjWZ6WJtnmnOACAx92NTSaQ,131609
307
+ letta/services/block_manager.py,sha256=lZewHLhG5QKAceE3LIh2ty9OmAzvNu4uDGUSln3JULo,19240
308
+ letta/services/group_manager.py,sha256=zzxrPlk3FTUfiOMPwdjuVr9loxInjtXlJsO_TKReJqk,17267
313
309
  letta/services/helpers/agent_manager_helper.py,sha256=q7GfVgKI-e8k0BZS-V_PuUCjK-PYciZDoig_sYHi_Go,21334
314
310
  letta/services/helpers/noop_helper.py,sha256=OZ6wZLsdNEAg9Q2t5oFTOMK6jp-YUMBPdoyiR8M3T1c,272
315
311
  letta/services/helpers/tool_execution_helper.py,sha256=JdH6VTWFrXfwPWsWNSZFKuRFhhXp8qiDYWjbPc8PLLI,7649
316
- letta/services/identity_manager.py,sha256=BS4BWAfu69b2bmcfoZGkQhkjYpV5CfoGP9kuHm-5ZoM,10148
317
- letta/services/job_manager.py,sha256=KUFBDzhM0SQW6X8UVdXANdeez4jpX1L8y8x6oP5UbfM,22167
318
- letta/services/llm_batch_manager.py,sha256=txk2hbBXbhs7M0VdElSiG-3Vbam1UY1cCg4IBJObDz4,19370
312
+ letta/services/identity_manager.py,sha256=WZl5wTz_572FelNjnwyDX9QEDguZOsQvc9QfQTasGNI,10331
313
+ letta/services/job_manager.py,sha256=EsbMPkJwmF-5-qEKKT0c0qaHxBKJmOzB_0Is41gBTFc,22494
314
+ letta/services/llm_batch_manager.py,sha256=2Jcj2tqsspy0kR6Dwr83J4CzJYEksXXHlSA963oY5NQ,20420
319
315
  letta/services/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
316
  letta/services/mcp/base_client.py,sha256=YoRb9eKKTGaLxaMVtuH5UcC74iXyWlcyYbC5xOeGr4k,2571
321
317
  letta/services/mcp/sse_client.py,sha256=Vj0AgaadgMnpFQOWkSoPfeOI00ZvURMf3TIU7fv_DN8,1012
322
318
  letta/services/mcp/stdio_client.py,sha256=wdPzTqSRkibjt9pXhwi0Nul_z_cTAPim-OHjLc__yBE,925
323
319
  letta/services/mcp/types.py,sha256=nmcnQn2EpxXzXg5_pWPsHZobfxO6OucaUgz1bVvam7o,1411
324
- letta/services/message_manager.py,sha256=eSQCEje76PVa5rwvinTsh7Z37VhmbjXh_5CwSYTpyvs,26783
325
- letta/services/organization_manager.py,sha256=Z87kY22pWm6yOmPJCsMUVQmu0kaxyK8WGKkyYaRM2sU,3760
326
- letta/services/passage_manager.py,sha256=6-mVw6C1TWFJuaoE1CE8xaaiCPJLptfTb3k9XbhxGPQ,10419
327
- letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
328
- letta/services/provider_manager.py,sha256=l5gfCLMQ5imSoS1xT-6uFqNWEHBqXEriy6VRNkuJZ80,4758
329
- letta/services/sandbox_config_manager.py,sha256=5lNMhcJhfFrhla8otRZ2JDMCPICafcfwqATPEcp2Jjg,14740
330
- letta/services/source_manager.py,sha256=wrIMp83Q2wVxC3U0Z5y6wiJe_vkOoCZs0zJuF-Majvw,7900
331
- letta/services/step_manager.py,sha256=ut01OeEJTzILRMWPDWd87rKpRZNFqXgumIFqotPX56M,10390
320
+ letta/services/message_manager.py,sha256=61xlbsaMYRDFpP9cpbI1u6bUiU_lLUJwePTVPTHqGc0,27146
321
+ letta/services/organization_manager.py,sha256=JO8YDgw5cbG1irPDrsb00-d4S8rhrG5hHqXIieepdms,3961
322
+ letta/services/passage_manager.py,sha256=asubxcTzXefxzcAUrMEHjV-J2SvrfPjfWOlHq0R_R-g,10676
323
+ letta/services/per_agent_lock_manager.py,sha256=9CVr8PeRm4qaPs61mfHhQYe0rtbXINoFXmWeNeN3jaQ,622
324
+ letta/services/provider_manager.py,sha256=ZXoNVaEKv9gDAfyawuzVrxrUBRr6zg-rMExIxj6Y5V0,5819
325
+ letta/services/sandbox_config_manager.py,sha256=bgLZYojaIZitYl3n-sWdOEHLZukEWGc-yQ4gPZx-zJU,20822
326
+ letta/services/source_manager.py,sha256=XwqRgNQo3MAhc8uksQ0r8GvF5gpParqe27RnYs7eA3M,8761
327
+ letta/services/step_manager.py,sha256=BJpV8TVZNaWS1uaPGd1zigNHemnwOCMQteXExWYBJQ0,10530
332
328
  letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
329
  letta/services/summarizer/enums.py,sha256=szzPX2OBRRJEZsBTGYQThrNz02ELFqhuLwvOR7ozi7A,208
334
330
  letta/services/summarizer/summarizer.py,sha256=LVFZ8NLtS1lz4Pdr7M_cixFYBYsllt2vXNzTOT3Wkxc,7658
@@ -337,12 +333,12 @@ letta/services/tool_executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
337
333
  letta/services/tool_executor/tool_execution_manager.py,sha256=4LEuULGkk0OACbtqcDT7qZ8J11FZyPFkilJCEUxp9vQ,6222
338
334
  letta/services/tool_executor/tool_execution_sandbox.py,sha256=U67qpZN_phLbAU-y1g_a5jb3pRnHgbcO9hl8HElzNKQ,26410
339
335
  letta/services/tool_executor/tool_executor.py,sha256=NcmDpDrJE78RtjD-qlOVC_VmeZpIigK5BZxYrKGye5k,36950
340
- letta/services/tool_manager.py,sha256=JHvaHAtwlkPQi5VFONc2UDsn1s3rOKL8Z-Ia668aSbo,20036
336
+ letta/services/tool_manager.py,sha256=Oml8r8jg2m9stCkS5qbcFfKiv_STuAOicLPvDXodZwY,20435
341
337
  letta/services/tool_sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
342
338
  letta/services/tool_sandbox/base.py,sha256=pUnPFkEg9I5ktMuT4AOOxbTnTmZTGcTA2phLe1H1EdY,8306
343
- letta/services/tool_sandbox/e2b_sandbox.py,sha256=Leg33ECkMjXkmOEdCtr9NgSP9iHWsesWiLmuHw_Okg4,8160
344
- letta/services/tool_sandbox/local_sandbox.py,sha256=ksbraC-zcMWt3vS7kSi98uWI9L73I0h73rMayhuTWsw,10474
345
- letta/services/user_manager.py,sha256=fDtPq8q2_LrIPHyn4zyx0orrCqKlpZRoqPU_IIaiBBc,7549
339
+ letta/services/tool_sandbox/e2b_sandbox.py,sha256=x7dkuHmFUTC75N7g0rxAe5CpuWfqWmC0UuxmUE-XRNQ,8214
340
+ letta/services/tool_sandbox/local_sandbox.py,sha256=4CzQfDHLd7nNAoKhWJyU55ERB3I0OYzS4F3S-BJoZfg,10552
341
+ letta/services/user_manager.py,sha256=vO8UHk5-TzVv0zMHDTBjj1hxsXjlrG5lxAVctq7tJho,7858
346
342
  letta/settings.py,sha256=HQq5JAJiPRB1jplsOY5-VKlX0zuJglFnykiZ94vGwdU,9049
347
343
  letta/streaming_interface.py,sha256=c-T7zoMTXGXFwDWJJXrv7UypeMPXwPOmNHeuuh0b9zk,16398
348
344
  letta/streaming_utils.py,sha256=jLqFTVhUL76FeOuYk8TaRQHmPTf3HSRc2EoJwxJNK6U,11946
@@ -350,8 +346,8 @@ letta/system.py,sha256=mKxmvvekuP8mdgsebRINGBoFbUdJhxLJ260crPBNVyk,8386
350
346
  letta/tracing.py,sha256=YMb9KgoBVz7nwCPwnErk2EJEKMiQ_ohctW1nOwhHd1Y,8458
351
347
  letta/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
352
348
  letta/utils.py,sha256=W8J1FfhRADFqoyx3J8-Z1_aWyG433PBoEh_b5wdOZIg,32262
353
- letta_nightly-0.7.21.dev20250521233415.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
354
- letta_nightly-0.7.21.dev20250521233415.dist-info/METADATA,sha256=mXWQURzbwCTBvHeHA4higCLK1kyXcVFcinb4CiNzbyk,22321
355
- letta_nightly-0.7.21.dev20250521233415.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
356
- letta_nightly-0.7.21.dev20250521233415.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
357
- letta_nightly-0.7.21.dev20250521233415.dist-info/RECORD,,
349
+ letta_nightly-0.7.22.dev20250523081403.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
350
+ letta_nightly-0.7.22.dev20250523081403.dist-info/METADATA,sha256=qgI9EsbdbgD3p9Glqav-C1wM30Bv1RvjHKkN2At1cIE,22321
351
+ letta_nightly-0.7.22.dev20250523081403.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
352
+ letta_nightly-0.7.22.dev20250523081403.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
353
+ letta_nightly-0.7.22.dev20250523081403.dist-info/RECORD,,
letta/__main__.py DELETED
@@ -1,3 +0,0 @@
1
- from .main import app
2
-
3
- app()