letta-nightly 0.7.6.dev20250430104233__py3-none-any.whl → 0.7.8.dev20250501064110__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 (70) hide show
  1. letta/__init__.py +1 -1
  2. letta/agent.py +8 -12
  3. letta/agents/exceptions.py +6 -0
  4. letta/agents/helpers.py +1 -1
  5. letta/agents/letta_agent.py +48 -35
  6. letta/agents/letta_agent_batch.py +6 -2
  7. letta/agents/voice_agent.py +41 -59
  8. letta/agents/{ephemeral_memory_agent.py → voice_sleeptime_agent.py} +106 -129
  9. letta/client/client.py +3 -3
  10. letta/constants.py +18 -2
  11. letta/functions/composio_helpers.py +100 -0
  12. letta/functions/function_sets/base.py +0 -10
  13. letta/functions/function_sets/voice.py +92 -0
  14. letta/functions/functions.py +4 -2
  15. letta/functions/helpers.py +19 -101
  16. letta/groups/helpers.py +1 -0
  17. letta/groups/sleeptime_multi_agent.py +5 -1
  18. letta/helpers/message_helper.py +21 -4
  19. letta/helpers/tool_execution_helper.py +1 -1
  20. letta/interfaces/anthropic_streaming_interface.py +165 -158
  21. letta/interfaces/openai_chat_completions_streaming_interface.py +1 -1
  22. letta/llm_api/anthropic.py +15 -10
  23. letta/llm_api/anthropic_client.py +5 -1
  24. letta/llm_api/google_vertex_client.py +1 -1
  25. letta/llm_api/llm_api_tools.py +7 -0
  26. letta/llm_api/llm_client.py +12 -2
  27. letta/llm_api/llm_client_base.py +4 -0
  28. letta/llm_api/openai.py +9 -3
  29. letta/llm_api/openai_client.py +18 -4
  30. letta/memory.py +3 -1
  31. letta/orm/enums.py +1 -0
  32. letta/orm/group.py +2 -0
  33. letta/orm/provider.py +10 -0
  34. letta/personas/examples/voice_memory_persona.txt +5 -0
  35. letta/prompts/system/voice_chat.txt +29 -0
  36. letta/prompts/system/voice_sleeptime.txt +74 -0
  37. letta/schemas/agent.py +14 -2
  38. letta/schemas/enums.py +11 -0
  39. letta/schemas/group.py +37 -2
  40. letta/schemas/llm_config.py +1 -0
  41. letta/schemas/llm_config_overrides.py +2 -2
  42. letta/schemas/message.py +4 -3
  43. letta/schemas/providers.py +75 -213
  44. letta/schemas/tool.py +8 -12
  45. letta/server/rest_api/app.py +12 -0
  46. letta/server/rest_api/chat_completions_interface.py +1 -1
  47. letta/server/rest_api/interface.py +8 -10
  48. letta/server/rest_api/{optimistic_json_parser.py → json_parser.py} +62 -26
  49. letta/server/rest_api/routers/v1/agents.py +1 -1
  50. letta/server/rest_api/routers/v1/embeddings.py +4 -3
  51. letta/server/rest_api/routers/v1/llms.py +4 -3
  52. letta/server/rest_api/routers/v1/providers.py +4 -1
  53. letta/server/rest_api/routers/v1/voice.py +0 -2
  54. letta/server/rest_api/utils.py +22 -33
  55. letta/server/server.py +91 -37
  56. letta/services/agent_manager.py +14 -7
  57. letta/services/group_manager.py +61 -0
  58. letta/services/helpers/agent_manager_helper.py +69 -12
  59. letta/services/message_manager.py +2 -2
  60. letta/services/passage_manager.py +13 -4
  61. letta/services/provider_manager.py +25 -14
  62. letta/services/summarizer/summarizer.py +20 -15
  63. letta/services/tool_executor/tool_execution_manager.py +1 -1
  64. letta/services/tool_executor/tool_executor.py +3 -3
  65. letta/services/tool_manager.py +32 -7
  66. {letta_nightly-0.7.6.dev20250430104233.dist-info → letta_nightly-0.7.8.dev20250501064110.dist-info}/METADATA +4 -5
  67. {letta_nightly-0.7.6.dev20250430104233.dist-info → letta_nightly-0.7.8.dev20250501064110.dist-info}/RECORD +70 -64
  68. {letta_nightly-0.7.6.dev20250430104233.dist-info → letta_nightly-0.7.8.dev20250501064110.dist-info}/LICENSE +0 -0
  69. {letta_nightly-0.7.6.dev20250430104233.dist-info → letta_nightly-0.7.8.dev20250501064110.dist-info}/WHEEL +0 -0
  70. {letta_nightly-0.7.6.dev20250430104233.dist-info → letta_nightly-0.7.8.dev20250501064110.dist-info}/entry_points.txt +0 -0
@@ -3,7 +3,8 @@ import json
3
3
  import traceback
4
4
  from typing import List, Tuple
5
5
 
6
- from letta.agents.ephemeral_memory_agent import EphemeralMemoryAgent
6
+ from letta.agents.voice_sleeptime_agent import VoiceSleeptimeAgent
7
+ from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG
7
8
  from letta.log import get_logger
8
9
  from letta.schemas.enums import MessageRole
9
10
  from letta.schemas.letta_message_content import TextContent
@@ -21,7 +22,7 @@ class Summarizer:
21
22
  """
22
23
 
23
24
  def __init__(
24
- self, mode: SummarizationMode, summarizer_agent: EphemeralMemoryAgent, message_buffer_limit: int = 10, message_buffer_min: int = 3
25
+ self, mode: SummarizationMode, summarizer_agent: VoiceSleeptimeAgent, message_buffer_limit: int = 10, message_buffer_min: int = 3
25
26
  ):
26
27
  self.mode = mode
27
28
 
@@ -77,7 +78,7 @@ class Summarizer:
77
78
 
78
79
  logger.info("Buffer length hit, evicting messages.")
79
80
 
80
- target_trim_index = len(all_in_context_messages) - self.message_buffer_min + 1
81
+ target_trim_index = len(all_in_context_messages) - self.message_buffer_min
81
82
 
82
83
  while target_trim_index < len(all_in_context_messages) and all_in_context_messages[target_trim_index].role != MessageRole.user:
83
84
  target_trim_index += 1
@@ -109,17 +110,15 @@ class Summarizer:
109
110
 
110
111
  evicted_messages_str = "\n".join(formatted_evicted_messages)
111
112
  in_context_messages_str = "\n".join(formatted_in_context_messages)
112
- summary_request_text = f"""You are a specialized memory recall agent assisting another AI agent by asynchronously reorganizing its memory storage. The LLM agent you are helping maintains a limited context window that retains only the most recent {self.message_buffer_min} messages from its conversations. The provided conversation history includes messages that are about to be evicted from its context window, as well as some additional recent messages for extra clarity and context.
113
+ summary_request_text = f"""You’re a memory-recall helper for an AI that can only keep the last {self.message_buffer_min} messages. Scan the conversation history, focusing on messages about to drop out of that window, and write crisp notes that capture any important facts or insights about the human so they aren’t lost.
113
114
 
114
- Your task is to carefully review the provided conversation history and proactively generate detailed, relevant memories about the human participant, specifically targeting information contained in messages that are about to be evicted from the context window. Your notes will help preserve critical insights, events, or facts that would otherwise be forgotten.
115
+ (Older) Evicted Messages:\n
116
+ {evicted_messages_str}\n
115
117
 
116
- (Older) Evicted Messages:
117
- {evicted_messages_str}
118
-
119
- (Newer) In-Context Messages:
118
+ (Newer) In-Context Messages:\n
120
119
  {in_context_messages_str}
121
120
  """
122
-
121
+ print(summary_request_text)
123
122
  # Fire-and-forget the summarization task
124
123
  self.fire_and_forget(
125
124
  self.summarizer_agent.step([MessageCreate(role=MessageRole.user, content=[TextContent(text=summary_request_text)])])
@@ -152,6 +151,9 @@ def format_transcript(messages: List[Message], include_system: bool = False) ->
152
151
 
153
152
  # 1) Try plain content
154
153
  if msg.content:
154
+ # Skip tool messages where the name is "send_message"
155
+ if msg.role == MessageRole.tool and msg.name == DEFAULT_MESSAGE_TOOL:
156
+ continue
155
157
  text = "".join(c.text for c in msg.content).strip()
156
158
 
157
159
  # 2) Otherwise, try extracting from function calls
@@ -159,11 +161,14 @@ def format_transcript(messages: List[Message], include_system: bool = False) ->
159
161
  parts = []
160
162
  for call in msg.tool_calls:
161
163
  args_str = call.function.arguments
162
- try:
163
- args = json.loads(args_str)
164
- # pull out a "message" field if present
165
- parts.append(args.get("message", args_str))
166
- except json.JSONDecodeError:
164
+ if call.function.name == DEFAULT_MESSAGE_TOOL:
165
+ try:
166
+ args = json.loads(args_str)
167
+ # pull out a "message" field if present
168
+ parts.append(args.get(DEFAULT_MESSAGE_TOOL_KWARG, args_str))
169
+ except json.JSONDecodeError:
170
+ parts.append(args_str)
171
+ else:
167
172
  parts.append(args_str)
168
173
  text = " ".join(parts).strip()
169
174
 
@@ -100,7 +100,7 @@ class ToolExecutionManager:
100
100
  try:
101
101
  executor = ToolExecutorFactory.get_executor(tool.tool_type)
102
102
  # TODO: Extend this async model to composio
103
- if isinstance(executor, SandboxToolExecutor):
103
+ if isinstance(executor, (SandboxToolExecutor, ExternalComposioToolExecutor)):
104
104
  result = await executor.execute(function_name, function_args, self.agent_state, tool, self.actor)
105
105
  else:
106
106
  result = executor.execute(function_name, function_args, self.agent_state, tool, self.actor)
@@ -5,7 +5,7 @@ from typing import Any, Dict, Optional
5
5
 
6
6
  from letta.constants import COMPOSIO_ENTITY_ENV_VAR_KEY, CORE_MEMORY_LINE_NUMBER_WARNING, RETRIEVAL_QUERY_DEFAULT_PAGE_SIZE
7
7
  from letta.functions.ast_parsers import coerce_dict_args_by_annotations, get_function_annotations_from_source
8
- from letta.functions.helpers import execute_composio_action, generate_composio_action_from_func_name
8
+ from letta.functions.composio_helpers import execute_composio_action_async, generate_composio_action_from_func_name
9
9
  from letta.helpers.composio_helpers import get_composio_api_key
10
10
  from letta.helpers.json_helpers import json_dumps
11
11
  from letta.schemas.agent import AgentState
@@ -486,7 +486,7 @@ class LettaMultiAgentToolExecutor(ToolExecutor):
486
486
  class ExternalComposioToolExecutor(ToolExecutor):
487
487
  """Executor for external Composio tools."""
488
488
 
489
- def execute(
489
+ async def execute(
490
490
  self,
491
491
  function_name: str,
492
492
  function_args: dict,
@@ -505,7 +505,7 @@ class ExternalComposioToolExecutor(ToolExecutor):
505
505
  composio_api_key = get_composio_api_key(actor=actor)
506
506
 
507
507
  # TODO (matt): Roll in execute_composio_action into this class
508
- function_response = execute_composio_action(
508
+ function_response = await execute_composio_action_async(
509
509
  action_name=action_name, args=function_args, api_key=composio_api_key, entity_id=entity_id
510
510
  )
511
511
 
@@ -7,6 +7,8 @@ from letta.constants import (
7
7
  BASE_MEMORY_TOOLS,
8
8
  BASE_SLEEPTIME_TOOLS,
9
9
  BASE_TOOLS,
10
+ BASE_VOICE_SLEEPTIME_CHAT_TOOLS,
11
+ BASE_VOICE_SLEEPTIME_TOOLS,
10
12
  LETTA_TOOL_SET,
11
13
  MCP_TOOL_TAG_NAME_PREFIX,
12
14
  MULTI_AGENT_TOOLS,
@@ -39,18 +41,24 @@ class ToolManager:
39
41
  @enforce_types
40
42
  def create_or_update_tool(self, pydantic_tool: PydanticTool, actor: PydanticUser) -> PydanticTool:
41
43
  """Create a new tool based on the ToolCreate schema."""
42
- tool = self.get_tool_by_name(tool_name=pydantic_tool.name, actor=actor)
43
- if tool:
44
+ tool_id = self.get_tool_id_by_name(tool_name=pydantic_tool.name, actor=actor)
45
+ if tool_id:
44
46
  # Put to dict and remove fields that should not be reset
45
47
  update_data = pydantic_tool.model_dump(exclude_unset=True, exclude_none=True)
46
48
 
47
49
  # If there's anything to update
48
50
  if update_data:
49
- tool = self.update_tool_by_id(tool.id, ToolUpdate(**update_data), actor)
51
+ # In case we want to update the tool type
52
+ # Useful if we are shuffling around base tools
53
+ updated_tool_type = None
54
+ if "tool_type" in update_data:
55
+ updated_tool_type = update_data.get("tool_type")
56
+ tool = self.update_tool_by_id(tool_id, ToolUpdate(**update_data), actor, updated_tool_type=updated_tool_type)
50
57
  else:
51
58
  printd(
52
59
  f"`create_or_update_tool` was called with user_id={actor.id}, organization_id={actor.organization_id}, name={pydantic_tool.name}, but found existing tool with nothing to update."
53
60
  )
61
+ tool = self.get_tool_by_id(tool_id, actor=actor)
54
62
  else:
55
63
  tool = self.create_tool(pydantic_tool, actor=actor)
56
64
 
@@ -112,6 +120,16 @@ class ToolManager:
112
120
  except NoResultFound:
113
121
  return None
114
122
 
123
+ @enforce_types
124
+ def get_tool_id_by_name(self, tool_name: str, actor: PydanticUser) -> Optional[str]:
125
+ """Retrieve a tool by its name and a user. We derive the organization from the user, and retrieve that tool."""
126
+ try:
127
+ with self.session_maker() as session:
128
+ tool = ToolModel.read(db_session=session, name=tool_name, actor=actor)
129
+ return tool.id
130
+ except NoResultFound:
131
+ return None
132
+
115
133
  @enforce_types
116
134
  def list_tools(self, actor: PydanticUser, after: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticTool]:
117
135
  """List all tools with optional pagination."""
@@ -154,7 +172,9 @@ class ToolManager:
154
172
  return ToolModel.size(db_session=session, actor=actor, name=LETTA_TOOL_SET)
155
173
 
156
174
  @enforce_types
157
- def update_tool_by_id(self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser) -> PydanticTool:
175
+ def update_tool_by_id(
176
+ self, tool_id: str, tool_update: ToolUpdate, actor: PydanticUser, updated_tool_type: Optional[ToolType] = None
177
+ ) -> PydanticTool:
158
178
  """Update a tool by its ID with the given ToolUpdate object."""
159
179
  with self.session_maker() as session:
160
180
  # Fetch the tool by ID
@@ -173,6 +193,9 @@ class ToolManager:
173
193
  tool.json_schema = new_schema
174
194
  tool.name = new_schema["name"]
175
195
 
196
+ if updated_tool_type:
197
+ tool.tool_type = updated_tool_type
198
+
176
199
  # Save the updated tool to the database
177
200
  return tool.update(db_session=session, actor=actor).to_pydantic()
178
201
 
@@ -190,7 +213,7 @@ class ToolManager:
190
213
  def upsert_base_tools(self, actor: PydanticUser) -> List[PydanticTool]:
191
214
  """Add default tools in base.py and multi_agent.py"""
192
215
  functions_to_schema = {}
193
- module_names = ["base", "multi_agent"]
216
+ module_names = ["base", "multi_agent", "voice"]
194
217
 
195
218
  for module_name in module_names:
196
219
  full_module_name = f"letta.functions.function_sets.{module_name}"
@@ -223,9 +246,12 @@ class ToolManager:
223
246
  elif name in BASE_SLEEPTIME_TOOLS:
224
247
  tool_type = ToolType.LETTA_SLEEPTIME_CORE
225
248
  tags = [tool_type.value]
249
+ elif name in BASE_VOICE_SLEEPTIME_TOOLS or name in BASE_VOICE_SLEEPTIME_CHAT_TOOLS:
250
+ tool_type = ToolType.LETTA_VOICE_SLEEPTIME_CORE
251
+ tags = [tool_type.value]
226
252
  else:
227
253
  raise ValueError(
228
- f"Tool name {name} is not in the list of base tool names: {BASE_TOOLS + BASE_MEMORY_TOOLS + MULTI_AGENT_TOOLS + BASE_SLEEPTIME_TOOLS}"
254
+ f"Tool name {name} is not in the list of base tool names: {BASE_TOOLS + BASE_MEMORY_TOOLS + MULTI_AGENT_TOOLS + BASE_SLEEPTIME_TOOLS + BASE_VOICE_SLEEPTIME_TOOLS + BASE_VOICE_SLEEPTIME_CHAT_TOOLS}"
229
255
  )
230
256
 
231
257
  # create to tool
@@ -243,5 +269,4 @@ class ToolManager:
243
269
  )
244
270
 
245
271
  # TODO: Delete any base tools that are stale
246
-
247
272
  return tools
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.7.6.dev20250430104233
3
+ Version: 0.7.8.dev20250501064110
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -32,7 +32,6 @@ Requires-Dist: boto3 (>=1.36.24,<2.0.0) ; extra == "bedrock"
32
32
  Requires-Dist: brotli (>=1.1.0,<2.0.0)
33
33
  Requires-Dist: colorama (>=0.4.6,<0.5.0)
34
34
  Requires-Dist: composio-core (>=0.7.7,<0.8.0)
35
- Requires-Dist: composio-langchain (>=0.7.7,<0.8.0)
36
35
  Requires-Dist: datamodel-code-generator[http] (>=0.25.0,<0.26.0)
37
36
  Requires-Dist: demjson3 (>=3.0.6,<4.0.0)
38
37
  Requires-Dist: docker (>=7.1.0,<8.0.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
@@ -51,7 +50,7 @@ Requires-Dist: isort (>=5.13.2,<6.0.0) ; extra == "dev" or extra == "all"
51
50
  Requires-Dist: jinja2 (>=3.1.5,<4.0.0)
52
51
  Requires-Dist: langchain (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
53
52
  Requires-Dist: langchain-community (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
54
- Requires-Dist: letta_client (>=0.1.124,<0.2.0)
53
+ Requires-Dist: letta_client (>=0.1.127,<0.2.0)
55
54
  Requires-Dist: llama-index (>=0.12.2,<0.13.0)
56
55
  Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
57
56
  Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "desktop" or extra == "all"
@@ -267,7 +266,7 @@ docker exec -it $(docker ps -q -f ancestor=letta/letta) letta run
267
266
  In the CLI tool, you'll be able to create new agents, or load existing agents:
268
267
  ```
269
268
  🧬 Creating new agent...
270
- ? Select LLM model: letta-free [type=openai] [ip=https://inference.memgpt.ai]
269
+ ? Select LLM model: letta-free [type=openai] [ip=https://inference.letta.com]
271
270
  ? Select embedding model: letta-free [type=hugging-face] [ip=https://embeddings.memgpt.ai]
272
271
  -> 🤖 Using persona profile: 'sam_pov'
273
272
  -> 🧑 Using human profile: 'basic'
@@ -333,7 +332,7 @@ letta run
333
332
  ```
334
333
  ```
335
334
  🧬 Creating new agent...
336
- ? Select LLM model: letta-free [type=openai] [ip=https://inference.memgpt.ai]
335
+ ? Select LLM model: letta-free [type=openai] [ip=https://inference.letta.com]
337
336
  ? Select embedding model: letta-free [type=hugging-face] [ip=https://embeddings.memgpt.ai]
338
337
  -> 🤖 Using persona profile: 'sam_pov'
339
338
  -> 🧑 Using human profile: 'basic'
@@ -1,36 +1,39 @@
1
- letta/__init__.py,sha256=NpAOglNuqPyCDdqIw6ZvUrkPChAef02s6hREmatgOc8,917
1
+ letta/__init__.py,sha256=7NeuMMH6-BuIQbQ94t0UJuFlMPOXSystOWzznQJ5Nx8,917
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=VCTvaT0skG1uj7s76GVEMKge9Q0ranjajlQtpjST4iw,72242
3
+ letta/agent.py,sha256=6WNvO40ob6YFGvn2yeCnMJ_XdvoNKBJUKmf4bgIYrYY,72093
4
4
  letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  letta/agents/base_agent.py,sha256=Nv6OzvMeAvEv4yHAMaltgWvRU9eqSEJVuUm_7NnIeJk,2354
6
6
  letta/agents/ephemeral_agent.py,sha256=el-SUF_16vv_7OouIR-6z0pAE9Yc0PLibygvfCKwqfo,2736
7
- letta/agents/ephemeral_memory_agent.py,sha256=ZbfqfGxG_e0XjLmvUT8zAXQJgCdsbY7asJtUgI8eMHw,17286
8
- letta/agents/helpers.py,sha256=sYfjJLCEQg0aaKDRIJ2Xm_fG1yivCB9wU6bSskZMPKg,2568
9
- letta/agents/letta_agent.py,sha256=Y_hqJjFcFnVU2-kdbMmtKYp4l9_yCXeHCjvo8qqI1gU,18162
10
- letta/agents/letta_agent_batch.py,sha256=YsuYKwanRAmSPwmT5NVG3oIyOjlOz08hrQgpgRNhXt0,22899
11
- letta/agents/voice_agent.py,sha256=UKRNWTVtsmdUbHxq0SOfoOL8AJESzY44aNzLZZVVt6k,23889
7
+ letta/agents/exceptions.py,sha256=BQY4D4w32OYHM63CM19ko7dPwZiAzUs3NbKvzmCTcJg,318
8
+ letta/agents/helpers.py,sha256=MBVFmi_lRAviDbQKZUw_T6PHSHqM1sLy4-_TuuTEqaY,2569
9
+ letta/agents/letta_agent.py,sha256=PJmdvjm48pkHYTMHLBRXedn7_vvqFHAF_xZSCraE448,19072
10
+ letta/agents/letta_agent_batch.py,sha256=8-uIVZMsPTPxYhwKZ9IZAkStGz9G-vzIAdTs1j9xbXg,23114
11
+ letta/agents/voice_agent.py,sha256=oqiDAiUR9WKdSfInNIdRU93uE06OZZsElTAzjk8WAzg,22650
12
+ letta/agents/voice_sleeptime_agent.py,sha256=omOOOVje2kx8zTfVZiMli_hbHbGZ_VGd5-87zzqxeKQ,17172
12
13
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
13
14
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
14
15
  letta/cli/cli.py,sha256=zJz78-qDUz-depb7VQWkg87RBKiETQU4h9DI6ukQBa8,16477
15
16
  letta/cli/cli_config.py,sha256=MNMhIAAjXiAy2gX_gAtqiY0Ya6VNbzXJWjIcRVEZa-k,8597
16
17
  letta/cli/cli_load.py,sha256=vER0PwpHnsCZtCHcR2YjEXM-VVuO9jhfQibdo3gI3S0,2703
17
18
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- letta/client/client.py,sha256=nF2KxkTMp7JUx_ITLKhsU14z0e9Uwwkux3heskQmfeE,138224
19
+ letta/client/client.py,sha256=uHSsJ9xdAZ8etKb-tIfz-xjWz-otenAxuMwWVjEbpjY,138227
19
20
  letta/client/streaming.py,sha256=UsDS_tDTsA3HgYryIDvGGmx_dWfnfQwtmEwLi4Z89Ik,4701
20
21
  letta/client/utils.py,sha256=VCGV-op5ZSmurd4yw7Vhf93XDQ0BkyBT8qsuV7EqfiU,2859
21
22
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
22
- letta/constants.py,sha256=NtcfXNpfTHxCNn4IZGtnkOLwoyaLzDADFB3lS84jwLo,8689
23
+ letta/constants.py,sha256=u82qDsb4mi2jwZ9DVz95ysMc8YNWQZkp1e-KiERuOUE,9211
23
24
  letta/data_sources/connectors.py,sha256=m4ALtjlaZpSlJnlq2VMNzx0onowNpjvoa4ZjAB5SMQw,7243
24
25
  letta/data_sources/connectors_helper.py,sha256=oQpVlc-BjSz9sTZ7sp4PsJSXJbBKpZPi3Dam03CURTQ,3376
25
26
  letta/embeddings.py,sha256=KvC2bl5tARpVY9xcFmw4Cwu1vN0DoH266v2mSUZqwkY,10528
26
27
  letta/errors.py,sha256=GCgFBvluPxebfz1_wB0y-82N8rlVPhGIn-x7UfV3wVU,6961
27
28
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
29
  letta/functions/ast_parsers.py,sha256=CQI0rUoIXcLKAev_GYrXcldRIGN5ZQtk5u4FLoHe5sE,5728
29
- letta/functions/function_sets/base.py,sha256=Z-trOG7dKbOWpJlsEBNSGlwcQnPuRXqnQ9NMed98nbY,16392
30
+ letta/functions/composio_helpers.py,sha256=rL1-sY3UYEq5AUkfwQzKu_IGrPqkpoS_Rr9oSag1Cjc,3735
31
+ letta/functions/function_sets/base.py,sha256=GqInIQ7hMPiuPlrHF_u7A3Gds7G1Za-mu9ML8A5Rg6k,16096
30
32
  letta/functions/function_sets/extras.py,sha256=mG7jCd2RUsf1w9G8mVcv26twJWpiDhbWI6VvnLZoEOk,4899
31
33
  letta/functions/function_sets/multi_agent.py,sha256=de2_wNVpWQviF1-XUkrliFvVresj6cOw7nOB61nGGW8,6899
32
- letta/functions/functions.py,sha256=No9DSb_BsXD3xwyODiEZRfmudKI3KoEK4bOtVQXFiJo,5713
33
- letta/functions/helpers.py,sha256=q-Ipwp4jB0zrw2slAVWBt2QsYbPoDkTq8PdFVoYYB6I,28043
34
+ letta/functions/function_sets/voice.py,sha256=RUI-xblR2wOPf3L5Lt7KY5SNnOkghhmIdvRTzZlDivg,3814
35
+ letta/functions/functions.py,sha256=-1zAfHnsn6CltvKRnZvWkOhMVyNFnvarIHGfYudc-CE,5819
36
+ letta/functions/helpers.py,sha256=WguTgJfpZz504MIkXl7qa3IppvdzgS1fDFYKEnNvBF4,24975
34
37
  letta/functions/interface.py,sha256=pN1gpDnLISW44gRcic1IX6I6pDwOT9UbkST_4ICuMvQ,2936
35
38
  letta/functions/mcp_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
39
  letta/functions/mcp_client/base_client.py,sha256=lFcdLMfKuQb2CQ5gfG29t83s43mXIc__N4dtg2vBkZQ,4330
@@ -40,9 +43,9 @@ letta/functions/mcp_client/stdio_client.py,sha256=2oouLGphu4S15OrYj97n9_ZYZo-GMR
40
43
  letta/functions/mcp_client/types.py,sha256=nmcnQn2EpxXzXg5_pWPsHZobfxO6OucaUgz1bVvam7o,1411
41
44
  letta/functions/schema_generator.py,sha256=OoXDHd5oZMNjljZJplEIMOMmKvxO_rfDFtAi-E9EHMA,22488
42
45
  letta/groups/dynamic_multi_agent.py,sha256=OLCxhICFLYyx8wjKGPr1INc6pniEuk4YGZyZhq2vkiY,12230
43
- letta/groups/helpers.py,sha256=pfvwIia27wKWBgWjhN12DLkHRfzNw6R9nSBZrrPEmx4,4459
46
+ letta/groups/helpers.py,sha256=AcrguRkshtXEV31eWKRfGYEVub8plHsU2kg3QpezbZw,4500
44
47
  letta/groups/round_robin_multi_agent.py,sha256=uUJff0bO68udOREiKFWeS7eEQlk3bF7hcfLSFXMScqI,6999
45
- letta/groups/sleeptime_multi_agent.py,sha256=yfi78hnCZ24Alux95dHE6s8JvlLR9LjHqKpRf7Rvpic,10217
48
+ letta/groups/sleeptime_multi_agent.py,sha256=EbJX7aa-NxxX9zZlwzEJuGST0WrzYI4Yw6RUHP6gCR4,10444
46
49
  letta/groups/sleeptime_multi_agent_v2.py,sha256=MPOjB8LMAW1R2SAEZC9TIOk12nWqEPzMp_80t8cF1Wg,10064
47
50
  letta/groups/supervisor_multi_agent.py,sha256=ml8Gi9gyVjPuVZjAJAkpGZDjnM7GOS50NkKf5SIutvQ,4455
48
51
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
@@ -50,16 +53,16 @@ letta/helpers/composio_helpers.py,sha256=5SznD1Y0Y1rV4_wu-uCaZdDU2tNedk-RIX0M9-0
50
53
  letta/helpers/converters.py,sha256=BC_K98vgRO7-_sQsjD9-JnG7XzmwluXU8Hxj9ACBoPU,13754
51
54
  letta/helpers/datetime_helpers.py,sha256=a39913WsZ3VH5p6irIuZly5XEDHm8D4b_rnvF-716_o,3044
52
55
  letta/helpers/json_helpers.py,sha256=PWZ5HhSqGXO4e563dM_8M72q7ScirjXQ4Rv1ckohaV8,396
53
- letta/helpers/message_helper.py,sha256=0nEXJDWF_McVXtdmimNk5H53CbF21-O934hl51SZnxU,1767
54
- letta/helpers/tool_execution_helper.py,sha256=Jxof1Z-NZ2quOYGQT2KLbaBYrv96NKfkBzjITYZxzs0,7590
56
+ letta/helpers/message_helper.py,sha256=50ofBfJDTTAajxTX9YOiRC-ysSDpuyBv2xBrPjrv4Ls,2231
57
+ letta/helpers/tool_execution_helper.py,sha256=BgBgVLZzbc-JTdOGwyU9miV_-zM3A30jkMpwH1otxaU,7599
55
58
  letta/helpers/tool_rule_solver.py,sha256=C7b0Rli_58wcgcCGGFiTIkd-p3yDBGTe5EUCzYE-aQs,7475
56
59
  letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
60
  letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6PA,17
58
61
  letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
59
62
  letta/interface.py,sha256=6GKasvJMASu-kcZch6Hffz1vnHuPA_ryI6cLH2bMArc,13023
60
63
  letta/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- letta/interfaces/anthropic_streaming_interface.py,sha256=9AH4iGe9Uh3l0smdCDy_1p1Qp0boqmnusJo6PkY38fU,16192
62
- letta/interfaces/openai_chat_completions_streaming_interface.py,sha256=5anzqE4ObcJPOrlEQzXGxp1X2s5Jkil01I5qTG9Loo0,4852
64
+ letta/interfaces/anthropic_streaming_interface.py,sha256=OU5Q8OwazIQ6z6AQKGWe6yEHcafnfBiCc3iaMOkbVW4,17038
65
+ letta/interfaces/openai_chat_completions_streaming_interface.py,sha256=-YdOcLElW0E8YzFGMT3b4mWHjLgxGxPh6pAkzRnj4AY,4841
63
66
  letta/interfaces/utils.py,sha256=c6jvO0dBYHh8DQnlN-B0qeNC64d3CSunhfqlFA4pJTY,278
64
67
  letta/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
68
  letta/jobs/helpers.py,sha256=kO4aj954xsQ1RAmkjY6LQQ7JEIGuhaxB1e9pzrYKHAY,914
@@ -67,8 +70,8 @@ letta/jobs/llm_batch_job_polling.py,sha256=qy1-rkm9ehS_DaSz7pvcUmsueW8gug_kubnz8
67
70
  letta/jobs/scheduler.py,sha256=nsXQTpW2YfVC8g6X35RUjguLVPV0NOku2Zt8SdDSnhg,2154
68
71
  letta/jobs/types.py,sha256=K8GKEnqEgAT6Kq4F2hUrBC4ZAFM9OkfOjVMStzxKuXQ,742
69
72
  letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- letta/llm_api/anthropic.py,sha256=gF8IbHlNSjD2vSw7MukHEJqWAUr9h0kx5OzF-C0AG0s,44521
71
- letta/llm_api/anthropic_client.py,sha256=9nQdoONlt_stvgX3hl30sgzv66_Yk_PeAnvOEO2Msgg,24418
73
+ letta/llm_api/anthropic.py,sha256=B-O2nS0WkvvgDS_hBQM_lVe33MNsBNeGZWwsll4H5cU,44721
74
+ letta/llm_api/anthropic_client.py,sha256=Be3LupDrXBqgYSy8vpxwR896lL0Tlo3VhaJ5DZTLGl4,24590
72
75
  letta/llm_api/aws_bedrock.py,sha256=kAPpKPRe4ZUa6fkxFbo8xwQgq4fJf3QoZEAP1LOCfaw,4168
73
76
  letta/llm_api/azure_openai.py,sha256=YAkXwKyfnJFNhB45pkJVFsoxUNB_M74rQYchtw_CN6I,5099
74
77
  letta/llm_api/azure_openai_constants.py,sha256=ZaR2IasJThijG0uhLKJThrixdAxLPD2IojfeaJ-KQMQ,294
@@ -76,14 +79,14 @@ letta/llm_api/cohere.py,sha256=IZ6LXyOFMYjWHTeNG9lvFxCdV_NIl0hY2q9SPFYXNkQ,14849
76
79
  letta/llm_api/deepseek.py,sha256=b1mSW8gnBrpAI8d2GcBpDyLYDnuC-P1UP6xJPalfQS4,12456
77
80
  letta/llm_api/google_ai_client.py,sha256=YRGFFYK-81nHoyjO4inoMAhlFNjj5ZjOxLqIUIaxvdc,23017
78
81
  letta/llm_api/google_constants.py,sha256=1dqwt-YwdYGnAHV5rIPfGHfE3ybPzSn_48vlNYfd-bk,588
79
- letta/llm_api/google_vertex_client.py,sha256=lTfAUTPSqwe-cuOoEgUehdwg2ZVHLqXRiu-sj6g8PJg,11645
82
+ letta/llm_api/google_vertex_client.py,sha256=MO5z1laDn2e2kQQg5ydcVdcAIy6M01pYP2UA0rLrkBw,11635
80
83
  letta/llm_api/helpers.py,sha256=sLYv30UnKBRVPuhU_KDXfKFdbkUONiDAyVEwGr86l3A,16780
81
- letta/llm_api/llm_api_tools.py,sha256=aY7QFuho384AoGJPZORFo0FyZSRNSyv9biC5bKOadaU,27660
82
- letta/llm_api/llm_client.py,sha256=JpSZWLoJsHdjlfavyhNyNf_j7N5Ks2DktDuA2PyQO70,1827
83
- letta/llm_api/llm_client_base.py,sha256=-RSVo4986iNLbOyUR3IKggKL2zWD4IBsr8ZbF8p28Ac,5935
84
+ letta/llm_api/llm_api_tools.py,sha256=GEpmPbjBjFl4ztlS5eaNHGwkAOysSVEvidTwlpLHIhg,28070
85
+ letta/llm_api/llm_client.py,sha256=H8JwcKgz6XyooP751R3dNJ9Cf8sVT8v0KQkhjh4KNqA,2274
86
+ letta/llm_api/llm_client_base.py,sha256=i8AVxpZuZqDiJpl-_O2GBdwDuxwIqle91TDyrbYtRYI,6096
84
87
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
85
- letta/llm_api/openai.py,sha256=k7-lW0jxZtXA8YYcVE_y2kTDHJpNU12C77udr-UKYdU,23473
86
- letta/llm_api/openai_client.py,sha256=L98mGTHAVkbewbAfqW5qFJ_OBGLokWguwRhplb1WZC8,13316
88
+ letta/llm_api/openai.py,sha256=ZRBnhWzWgRdyBHSNllfr1vylJD8mpPv_pzcJt0tsErc,23605
89
+ letta/llm_api/openai_client.py,sha256=-dMrtBs7wAxcOU4fpMJXCDHNnrtfiZoquxfNNOTwJ2Q,13825
87
90
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
88
91
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
92
  letta/local_llm/chat_completion_proxy.py,sha256=gc5gaKoHP8QaWRulDeEYPk7Onl8KdCBmpF2l9znXKeQ,13853
@@ -123,7 +126,7 @@ letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1
123
126
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
124
127
  letta/log.py,sha256=FbFwU9KEX7k0FBYhPl7fJ6uQ3NO3-ZbsnM2OpcTFXjo,2217
125
128
  letta/main.py,sha256=_agyaYPJq70OL0goNwO34zENL2KupnTgqlg-HVcNaTY,15379
126
- letta/memory.py,sha256=E3Xa_hiqnuHmsq0XOGUqUoxQm_es7EWYCtbOFAS23h0,4182
129
+ letta/memory.py,sha256=mQC1Sjzjuy57UZIxCFLl9rM3psV2Ot1rUhYeG3aDyg4,4297
127
130
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
131
  letta/openai_backcompat/openai_object.py,sha256=GSzeCTwLpLD2fH4X8wVqzwdmoTjKK2I4PnriBY453lc,13505
129
132
  letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
@@ -135,10 +138,10 @@ letta/orm/block.py,sha256=Hut-NAq6cDp6WXJ-2G1-5DJCZg0cB7D1X4z1taiBbS0,5591
135
138
  letta/orm/block_history.py,sha256=6-k9e5weTWKqWZgZUH2lF42vWrLhXNUJZQVJDHQEfgY,2088
136
139
  letta/orm/blocks_agents.py,sha256=W0dykl9OchAofSuAYZD5zNmhyMabPr9LTJrz-I3A0m4,983
137
140
  letta/orm/custom_columns.py,sha256=0Azc-OIObBlnlYHUOcSV0s5SzS7lGHDB62NVnhq_ERo,5228
138
- letta/orm/enums.py,sha256=u9fSiPLNqZBeKjjaG73YUrvhBjRxs-MaeR3S11OJgp0,806
141
+ letta/orm/enums.py,sha256=qRv6m6SJWBTusS8X0Ipqo1xvsXU2RVlizn7nxWspKl4,868
139
142
  letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
140
143
  letta/orm/file.py,sha256=7_p7LxityP3NQZVURQYG0kgcZhEkVuMN0Fj4h9YOe1w,1780
141
- letta/orm/group.py,sha256=GFN0_ObViH8jbPUXptiztca7gF0eQcCAOVb2LLMmRaA,1916
144
+ letta/orm/group.py,sha256=tygd3nWOmTIQ8TRzJeUA8rd9dfMDzw2XH8BfaQ4aEwI,2100
142
145
  letta/orm/groups_agents.py,sha256=1J6ZyXlTjC8CG0fXPuzfcFo_Bg0cpZSyktYRkoFOUt4,483
143
146
  letta/orm/groups_blocks.py,sha256=ou18XqI9tkb0fcecUd4eHTVmmndGuby1DIdmHM5lHF4,489
144
147
  letta/orm/identities_agents.py,sha256=cfIQ6UsbwmjxtGVmFt1ArK2zbKr9k6VWoELuISDnLSc,502
@@ -152,7 +155,7 @@ letta/orm/message.py,sha256=1IMlyvpfw1HqJel_V_tA5GxkNnJiE9mwO0mNgAIFam8,4685
152
155
  letta/orm/mixins.py,sha256=9c79Kfr-Z1hL-SDYKeoptx_yMTbBwJJBo9nrKEzSDAc,1622
153
156
  letta/orm/organization.py,sha256=STQ5x5zXoPhfagiRQX6j2lWgOqwznPp-K019MPjbY0s,3599
154
157
  letta/orm/passage.py,sha256=luoQMBAm2DwWpcGtQziMDjDP5JZZNv1pnEmx-InNHFo,3090
155
- letta/orm/provider.py,sha256=-qA9tvKTZgaM4D7CoDZZiA7zTgjaaWDV4jZvifQv_MM,805
158
+ letta/orm/provider.py,sha256=KkzZk3BYlzwH9qsoxE8jde_iKlTRMdy0n7_Do-ZDQlU,1195
156
159
  letta/orm/sandbox_config.py,sha256=DyOy_1_zCMlp13elCqPcuuA6OwUove6mrjhcpROTg50,4150
157
160
  letta/orm/source.py,sha256=z89VZUHV9K8Ew9JCYoZqUeRb1WEUKmrn0MMFkppaphE,2117
158
161
  letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
@@ -174,6 +177,7 @@ letta/personas/examples/sam_simple_pov_gpt35.txt,sha256=vP6R5GxPeO0QuMartRs3DBfS
174
177
  letta/personas/examples/sleeptime_doc_persona.txt,sha256=vVlo5bifdpIc2phV0vgdKCWeDIpun_5vQYLDEaurJQk,351
175
178
  letta/personas/examples/sleeptime_memory_persona.txt,sha256=ueMQ7ki7IEs-YUvuOH_F0dQoHJChw1w09B9kMBIM4dU,294
176
179
  letta/personas/examples/sqldb/test.db,sha256=MU5Di7exdYdtQH62Q8dfkM6YpckkcwHDiO1fed98XBY,8192
180
+ letta/personas/examples/voice_memory_persona.txt,sha256=Dq8mprWLyrGDDYS3wIrBicyMnAf4K7Vlu83ZJ4JX9Dc,340
177
181
  letta/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
182
  letta/prompts/gpt_summarize.py,sha256=sOUKcVrTRbX00yLOZVVhwKgduRRVCY64l80ptOY4Ghg,1125
179
183
  letta/prompts/gpt_system.py,sha256=qH_aR5BSwd8ctvbo_Xynietvtudpf7zLsMWsKUw9V1w,1015
@@ -193,15 +197,17 @@ letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7Gp
193
197
  letta/prompts/system/memgpt_sleeptime_chat.txt,sha256=ieHvVkJYE_4Z_vyUJS4KImBZCSQDcsUmy9IRF-FBpPE,4712
194
198
  letta/prompts/system/sleeptime.txt,sha256=leqPv-sJg5xfYFcB4CXIyq43kQitXaBg4uFNCYsFsEo,3076
195
199
  letta/prompts/system/sleeptime_doc_ingest.txt,sha256=tyzHHzyDA2ib_XRwo5h5Ku9l_f-RSBPDJZrUusrQE80,2783
200
+ letta/prompts/system/voice_chat.txt,sha256=Q_vd2Q08z6qTIVeMML0z9706NG8aAq-scxvi--h5tG4,1853
201
+ letta/prompts/system/voice_sleeptime.txt,sha256=7lTBQPCoxbfuugSrwmR-MHTuHGwvIJqU0jIOg9-YtWA,3812
196
202
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
- letta/schemas/agent.py,sha256=PJIQJW5fx4EGD_3Q3wbl4scoISSXqMVqr7Yvgvk-ZTE,17263
203
+ letta/schemas/agent.py,sha256=25AF730sVTSMtf2eslqitH682cn1Faq6apO2dOyRlDw,17868
198
204
  letta/schemas/block.py,sha256=rMWflyj982qW86dQK-9saXBHKaLCu3aUG2gQTckG3Ik,4984
199
205
  letta/schemas/embedding_config.py,sha256=ufboqW9ctSBJdhwzJRbrGtTzOTwSKfT0LY0mowpr6fs,3398
200
206
  letta/schemas/embedding_config_overrides.py,sha256=lkTa4y-EQ2RnaEKtKDM0sEAk7EwNa67REw8DGNNtGQY,84
201
- letta/schemas/enums.py,sha256=443ybuOZZL963Vt0fYhtJ6AWkIetlOKNUMG0Nz7l2Ss,1443
207
+ letta/schemas/enums.py,sha256=oZauX6-3ZlI1s25DH_ybDtayr8-UlKlDsA_IP2QY75s,1697
202
208
  letta/schemas/environment_variables.py,sha256=VRtzOjdeQdHcSHXisk7oJUQlheruxhSWNS0xqlfGzbs,2429
203
209
  letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
204
- letta/schemas/group.py,sha256=aEO0_59TEozgRMjVk7S2U4Eq4RnCr3QnbnHt-36mILM,4328
210
+ letta/schemas/group.py,sha256=0qFbCvE5gbdSAk1oXXT8xWQ02R4mS_jttJm0ASh8eCQ,6415
205
211
  letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
206
212
  letta/schemas/identity.py,sha256=-6ABqAuz-VfGcAoAX5oVyzpjBiY4jAN-gJUM-PLBQQY,3984
207
213
  letta/schemas/job.py,sha256=VFpaGj2wigAx8VRUCuep9eN7Wsx8f23PHNK8M7R1das,3711
@@ -211,10 +217,10 @@ letta/schemas/letta_message_content.py,sha256=eF2UEDofQx7S_nS1jc9MZypP4EGVWj7zdi
211
217
  letta/schemas/letta_request.py,sha256=TH00tm81Pe8D6r7IrxjKW0Hc8QE_Z4jclbc6VX0_Ybw,1542
212
218
  letta/schemas/letta_response.py,sha256=K11qneqSSE3R2twr65ZYnDzl0oBMf1N1nUnJpI4oiUs,7846
213
219
  letta/schemas/llm_batch_job.py,sha256=n9ZbWINBECRrZW6vslm-f2pk_rI_gpuxcZsqAphl9bE,2879
214
- letta/schemas/llm_config.py,sha256=6PAHBi_3ELLcFXBWinfCslPQ1SjcNZx3mptRnTwZuiw,8122
215
- letta/schemas/llm_config_overrides.py,sha256=-oRglCTcajF6UAK3RAa0FLWVuKODPI1v403fDIWMAtA,1815
220
+ letta/schemas/llm_config.py,sha256=Qqbq7EzOWgifSRWcJ2mkfFEuUQy7e7DqB8DHTjBtekU,8217
221
+ letta/schemas/llm_config_overrides.py,sha256=E6qJuVA8TwAAy3VjGitJ5jSQo5PbN-6VPcZOF5qhP9A,1815
216
222
  letta/schemas/memory.py,sha256=GOYDfPKzbWftUWO9Hv4KW7xAi1EIQmC8zpP7qvEkVHw,10245
217
- letta/schemas/message.py,sha256=Is9K5-J-V07-EiyLezsY4JBuENQTogZ_6FraOoLd_mc,49676
223
+ letta/schemas/message.py,sha256=NQLbFmp9p-pTs3ctB3NLJqmYuXfopWoejbtPYoiQ71c,49720
218
224
  letta/schemas/openai/chat_completion_request.py,sha256=XARKB7717Crt3P2A53eeBZ6hlNJcb9TJHosWwK17tFw,4210
219
225
  letta/schemas/openai/chat_completion_response.py,sha256=7SsfVNsWq_EUajmckU5KjFClkK0iXZF2jHWZZ0nr6T4,6701
220
226
  letta/schemas/openai/chat_completions.py,sha256=l0e9sT9boTD5VBU5YtJ0s7qUtCfFGB2K-gQLeEZ2LHU,3599
@@ -222,13 +228,13 @@ letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNo
222
228
  letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
223
229
  letta/schemas/organization.py,sha256=TXrHN4IBQnX-mWvRuCOH57XZSLYCVOY0wWm2_UzDQIA,1279
224
230
  letta/schemas/passage.py,sha256=RG0vkaewEu4a_NAZM-FVyMammHjqpPP0RDYAdu27g6A,3723
225
- letta/schemas/providers.py,sha256=-ApnBM9MnbxEGnf_Mulo9ZLK2AK2ciGxYhusYAUp9z4,51881
231
+ letta/schemas/providers.py,sha256=7n_-4VfHt_Tu6lyFLngo-sb8yLU2DDcSyUPaSi03QhU,49366
226
232
  letta/schemas/response_format.py,sha256=pXNsjbtpA3Tf8HsDyIa40CSmoUbVR_7n2WOfQaX4aFs,2204
227
233
  letta/schemas/run.py,sha256=SRqPRziINIiPunjOhE_NlbnQYgxTvqmbauni_yfBQRA,2085
228
234
  letta/schemas/sandbox_config.py,sha256=Qfkzw422HCQUsE3GKry94oecQGziAzGXIyd6ke8W06M,5985
229
235
  letta/schemas/source.py,sha256=IuenIFs7B8uOuYJIHXqR1E28wVSa-pUX6NkLZH7cukg,3141
230
236
  letta/schemas/step.py,sha256=WkcVnruUUOWLKwiWPn2Gfal4EQZPNLqlsd9859xhgsw,2224
231
- letta/schemas/tool.py,sha256=n1gYBORUwT4pH5NYLLfT8v97JcoI3W6mpnUsa-GzcNg,13063
237
+ letta/schemas/tool.py,sha256=k8dmXfYA_gcipAjBAwBYWsmhlkGvPnOBqrPG336QpBM,13111
232
238
  letta/schemas/tool_execution_result.py,sha256=O65Z-gwNuB2hrX0Vklw_A9uURu0sz67gxTDr1tNwvJM,804
233
239
  letta/schemas/tool_rule.py,sha256=Il0BLY-CHRuTNeH9CayZTHpg0N_Ii8viYV2isZ_HrPU,6327
234
240
  letta/schemas/usage.py,sha256=9SSTH5kUliwiVF14b-yKbDcmxQBOLg4YH5xhXDbW9UU,1281
@@ -248,28 +254,28 @@ letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
248
254
  letta/server/db.py,sha256=Jt_lWUvqTWFHfgsWUuXcDlGD3yejNBjY1P4J2vI3kL0,4935
249
255
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
250
256
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- letta/server/rest_api/app.py,sha256=OO4k3ALIMa-pWAuHsHnlafuR0PZvAHcwbLs0e-v_PWs,14198
257
+ letta/server/rest_api/app.py,sha256=4oWSU29zfmS-bUrNN7p4SisLYFLggdYgY0BIPZoGGQA,14640
252
258
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
259
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
254
260
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
255
- letta/server/rest_api/chat_completions_interface.py,sha256=0jEdQ4Bh4gz2jBCxDAgNN0-lnV4qlRwQ7QBeA5_L5bo,11100
256
- letta/server/rest_api/interface.py,sha256=c-BaECsK4szrmkDTTl52JckLxx92WR4uwK_VSaWEUdw,65943
257
- letta/server/rest_api/optimistic_json_parser.py,sha256=SS60lTp1oH2MXbHOChEnNm46xYcoAU3nInIXWDglmmw,6739
261
+ letta/server/rest_api/chat_completions_interface.py,sha256=90VOlJ2HTxZtQMDt3aCbrlbGLouj4qHkfEz6PwXtrkc,11089
262
+ letta/server/rest_api/interface.py,sha256=SdRalftQawKjmZL8x2wRtZ1LJ9wLyE00isIfmNyDKQY,65788
263
+ letta/server/rest_api/json_parser.py,sha256=IKG2xFAz_wkLfd3Z-18SKykSzCtUDjdYgTKSKaMqj1I,7813
258
264
  letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
265
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
266
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=QBWab1fn2LXVDMtc6li3gOzmrNzDiUw5WUJsMeeMZII,5076
261
267
  letta/server/rest_api/routers/v1/__init__.py,sha256=_skmAcDOK9ovHKfywRaBgigo3IvPmnUSQSR2hGVCOhY,1664
262
- letta/server/rest_api/routers/v1/agents.py,sha256=WLcxIKc2yuKqN--b0ug8tTIJTLmyI_WncX3EofuirP4,34603
268
+ letta/server/rest_api/routers/v1/agents.py,sha256=EUxdHhv_JXenrfVupNpT4-lYYG75RP0_T341vHssaZc,34640
263
269
  letta/server/rest_api/routers/v1/blocks.py,sha256=Sefvon0jLvlNh0oAzntUcDZptnutuJOf-2Wcad_45Dg,4169
264
- letta/server/rest_api/routers/v1/embeddings.py,sha256=jtfZkffCDnIfPqu9-fVLu7j3rpTOl_IuTIwJ0HQCkMA,786
270
+ letta/server/rest_api/routers/v1/embeddings.py,sha256=P-Dvt_HNKoTyjRwkScAMg1hlB3cNxMeAQwV7bSatsKI,957
265
271
  letta/server/rest_api/routers/v1/groups.py,sha256=sLXkw8kgf9fhaQwb-n0SVbyzH6-e1kdzNuqGbdvPPgo,10890
266
272
  letta/server/rest_api/routers/v1/health.py,sha256=MoOjkydhGcJXTiuJrKIB0etVXiRMdTa51S8RQ8-50DQ,399
267
273
  letta/server/rest_api/routers/v1/identities.py,sha256=fvp-0cwvb4iX1fUGPkL--9nq8YD3tIE47kYRxUgOlp4,7462
268
274
  letta/server/rest_api/routers/v1/jobs.py,sha256=4oeJfI2odNGubU_g7WSORJhn_usFsbRaD-qm86rve1E,2746
269
- letta/server/rest_api/routers/v1/llms.py,sha256=-3VBkh4vUJvrldLy2ptRnexb33psa1zPHaLiQ812xyE,877
275
+ letta/server/rest_api/routers/v1/llms.py,sha256=zU0fbpLNFpTKdmp-DkNtO0mrRRMyVQvvEx7BL2Mj-xk,958
270
276
  letta/server/rest_api/routers/v1/messages.py,sha256=3hfaiiCBiWr-wub_uzr3Vyh4IBTZYwGqeDG-2h6Xlus,5753
271
277
  letta/server/rest_api/routers/v1/organizations.py,sha256=r7rj-cA3shgAgM0b2JCMqjYsDIFv3ruZjU7SYbPGGqg,2831
272
- letta/server/rest_api/routers/v1/providers.py,sha256=MVfAUvXj_2jx8XFwSigM-8CuCfEATW60h8J5UEmAhp0,3146
278
+ letta/server/rest_api/routers/v1/providers.py,sha256=aIoCLTiWztjn573nsK1UO2UaA3iizL2woU8doK3j57U,3327
273
279
  letta/server/rest_api/routers/v1/runs.py,sha256=9nuJRjBtRgZPq3CiCEUA_3S2xPHFP5DsJxIenH5OO34,8847
274
280
  letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=9hqnnMwJ3wCwO-Bezu3Xl8i3TDSIuInw3gSeHaKUXfE,8526
275
281
  letta/server/rest_api/routers/v1/sources.py,sha256=7cCcgZm9AtUFaWlMcyovC-7f_eNhJa4EcDkZuQbNJo8,11148
@@ -277,10 +283,10 @@ letta/server/rest_api/routers/v1/steps.py,sha256=DVVwaxLNbNAgWpr2oQkrNjdS-wi0bP8
277
283
  letta/server/rest_api/routers/v1/tags.py,sha256=coydgvL6-9cuG2Hy5Ea7QY3inhTHlsf69w0tcZenBus,880
278
284
  letta/server/rest_api/routers/v1/tools.py,sha256=FXFx8J4Zs-pZ1H8andFzI5Pyv-PJkY8YMlWkZlObGdQ,19544
279
285
  letta/server/rest_api/routers/v1/users.py,sha256=G5DBHSkPfBgVHN2Wkm-rVYiLQAudwQczIq2Z3YLdbVo,2277
280
- letta/server/rest_api/routers/v1/voice.py,sha256=U78jJqJ6Gtby7UpSqvSM8_zN3NjLSWvIm85DzNUHbpY,1999
286
+ letta/server/rest_api/routers/v1/voice.py,sha256=nSwjoW5Hi9EdScGyRWXpGVooAS0X2G-mOrpLUz0NqNs,1935
281
287
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
282
- letta/server/rest_api/utils.py,sha256=bZpp_nkqcL0yF1or91dEscE-LItDJEc16NTalz5ItbU,15357
283
- letta/server/server.py,sha256=6_zoStXpAwH2UnJ-TcRNoJKlOh44_YFKG3rUEZSZNnw,82171
288
+ letta/server/rest_api/utils.py,sha256=26x9oLDc5WopM3evfBkFV3XqZlPsSaFOOWcp9v5-en8,15145
289
+ letta/server/server.py,sha256=jc8xCJJT2Z-DUl_OEBBtf-rf7PVyV4tDee-5B6Bh8YU,84769
284
290
  letta/server/startup.sh,sha256=MRXh1RKbS5lyA7XAsk7O6Q4LEKOqnv5B-dwe0SnTHeQ,2514
285
291
  letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
286
292
  letta/server/static_files/assets/index-0e31b727.css,sha256=SBbja96uiQVLDhDOroHgM6NSl7tS4lpJRCREgSS_hA8,7672
@@ -294,10 +300,10 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
294
300
  letta/server/ws_api/protocol.py,sha256=5mDgpfNZn_kNwHnpt5Dsuw8gdNH298sgxTGed3etzYg,1836
295
301
  letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
296
302
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
297
- letta/services/agent_manager.py,sha256=9BRBbAf0LXftDzke8OBzVgzOmP1FLCnsRSQggbNxeOU,71581
303
+ letta/services/agent_manager.py,sha256=FfMRz0Ewebn0OGhb9adBxga06-da3YmQ2qlh1BHOXUI,72037
298
304
  letta/services/block_manager.py,sha256=rphbpGBIEDFvCJ5GJt6A1OfbURGFQZ3WardljELQyAc,15225
299
- letta/services/group_manager.py,sha256=z1woWRRnjkWrGG_auSicXr2bJaJ653JV6PYl2N_AUfw,12224
300
- letta/services/helpers/agent_manager_helper.py,sha256=c4ssr1rN8Ef3HFdAsCuYkM6OIenrLX3ix_f4a830Gkk,17891
305
+ letta/services/group_manager.py,sha256=kAj0uq4vmeHfI9YREvZGdZFmfQRyuPsLXk-_UcyUQ24,15609
306
+ letta/services/helpers/agent_manager_helper.py,sha256=2W9DpxGOx3rK2LnpGDtQmBJh9u9sKZ_xwAUAYzAMyS0,20350
301
307
  letta/services/helpers/tool_execution_helper.py,sha256=JdH6VTWFrXfwPWsWNSZFKuRFhhXp8qiDYWjbPc8PLLI,7649
302
308
  letta/services/identity_manager.py,sha256=sjHTCPbLYRDyWCJ3qjcuKZqWqzDoEuslRsDVKQtBraE,9683
303
309
  letta/services/job_manager.py,sha256=Z9cSD-IqpiOIWE_UOTBUEIxGITrJ10JT1G3ske-0yIY,17166
@@ -307,22 +313,22 @@ letta/services/mcp/base_client.py,sha256=YoRb9eKKTGaLxaMVtuH5UcC74iXyWlcyYbC5xOe
307
313
  letta/services/mcp/sse_client.py,sha256=Vj0AgaadgMnpFQOWkSoPfeOI00ZvURMf3TIU7fv_DN8,1012
308
314
  letta/services/mcp/stdio_client.py,sha256=wdPzTqSRkibjt9pXhwi0Nul_z_cTAPim-OHjLc__yBE,925
309
315
  letta/services/mcp/types.py,sha256=nmcnQn2EpxXzXg5_pWPsHZobfxO6OucaUgz1bVvam7o,1411
310
- letta/services/message_manager.py,sha256=iRFFu7WP9GBtGKrQp5Igiqp_wonSfRKZ_Ran5X6SZZA,17946
316
+ letta/services/message_manager.py,sha256=94mY08FMF1OoxHP4m48BppBCa01eQjKTEMwP7L6wCrQ,17948
311
317
  letta/services/organization_manager.py,sha256=Ax0KmPSc_YYsYaxeld9gc7ST-J6DemHQ542DD7l7AWA,3989
312
- letta/services/passage_manager.py,sha256=4ALhe4lDdLiGQptBXdvonQ9Sv4SpNSI5TlmQ_1TRfeU,9619
318
+ letta/services/passage_manager.py,sha256=YCmb_a80ECH5yq3Glj_Qra_mV6NqTc5oB6RfybHOL00,9992
313
319
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
314
- letta/services/provider_manager.py,sha256=_gEBW0tYIf2vJEGGYxk-nvogrFI9sjFl_97MSL5WC2s,3759
320
+ letta/services/provider_manager.py,sha256=m8SxSdB6MS8YnV9pfc8UJcj5NiThxZpnDxjfl0-KLYM,3981
315
321
  letta/services/sandbox_config_manager.py,sha256=ATgZNWNpkdIQDUPy4ABsguHQba2PZf51-c4Ji60MzLE,13361
316
322
  letta/services/source_manager.py,sha256=yW88wAJoeAWtbg0FxifE352jhgOTKNiG7K-IPKXKnvg,7961
317
323
  letta/services/step_manager.py,sha256=B64iYn6Dt9yRKsSJ5vLxWQR2t-apvPLfUZyzrUsJTpI,5335
318
324
  letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
319
325
  letta/services/summarizer/enums.py,sha256=szzPX2OBRRJEZsBTGYQThrNz02ELFqhuLwvOR7ozi7A,208
320
- letta/services/summarizer/summarizer.py,sha256=Prfg6xRPZeb0EPrjdAP3p6YOFQR_T49tSUsTWvQ2Vhg,7639
326
+ letta/services/summarizer/summarizer.py,sha256=Q58viiBBIksNgi9UammrBlNDdXXqUqw7GUpARFGBmYo,7570
321
327
  letta/services/tool_executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
- letta/services/tool_executor/tool_execution_manager.py,sha256=RcmnwPougb8AxIwKdC4N9ZxTvOQqJyjI6CaVHF2HBi4,4505
328
+ letta/services/tool_executor/tool_execution_manager.py,sha256=NLkHLxxMYp0XKgu8j6YgqBVkhlG1cOioNRTd4muKJyU,4537
323
329
  letta/services/tool_executor/tool_execution_sandbox.py,sha256=9gcERJ15Y6u_6AGAVH3KGJP-85fpr2HLCV8SatQAG0w,24891
324
- letta/services/tool_executor/tool_executor.py,sha256=k2yEzLpU18SFFA6NWrf5NYbCh505ixMpnf6pnBhmV8s,27413
325
- letta/services/tool_manager.py,sha256=ZtDRk9IODlMSJgwAzI1RQVee0fqgFzNu8iFZ92qwm-c,10569
330
+ letta/services/tool_executor/tool_executor.py,sha256=KdCjTiKokAntFbXYRIapI7H1lI68JRBmPLRCc_d9zR8,27446
331
+ letta/services/tool_manager.py,sha256=OyCaGtcChb6VEJxFp_qlTs62gIApFTEeTUve3K6iCMs,11921
326
332
  letta/services/tool_sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
333
  letta/services/tool_sandbox/base.py,sha256=pUnPFkEg9I5ktMuT4AOOxbTnTmZTGcTA2phLe1H1EdY,8306
328
334
  letta/services/tool_sandbox/e2b_sandbox.py,sha256=umsXfolzM_j67izswECDdVfnlcm03wLpMoZtS6SZ0sc,6147
@@ -334,8 +340,8 @@ letta/streaming_utils.py,sha256=jLqFTVhUL76FeOuYk8TaRQHmPTf3HSRc2EoJwxJNK6U,1194
334
340
  letta/system.py,sha256=mKxmvvekuP8mdgsebRINGBoFbUdJhxLJ260crPBNVyk,8386
335
341
  letta/tracing.py,sha256=d_l8emrUMnAv3y1C9ttPZM0bnakHzP5Bgv06k-tBFrc,8308
336
342
  letta/utils.py,sha256=IZFvtj9WYcrxUbkoUUYGDxMYQYdn5SgfqsvnARGsAzc,32245
337
- letta_nightly-0.7.6.dev20250430104233.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
338
- letta_nightly-0.7.6.dev20250430104233.dist-info/METADATA,sha256=MO7LjF5G27T3WVhIGADcPXssjy3llB408qorZIhSsAM,22282
339
- letta_nightly-0.7.6.dev20250430104233.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
340
- letta_nightly-0.7.6.dev20250430104233.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
341
- letta_nightly-0.7.6.dev20250430104233.dist-info/RECORD,,
343
+ letta_nightly-0.7.8.dev20250501064110.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
344
+ letta_nightly-0.7.8.dev20250501064110.dist-info/METADATA,sha256=nUKEvoUf5yikm2vkY1bx_AZnUGOZaGUCnOSizEaJefk,22231
345
+ letta_nightly-0.7.8.dev20250501064110.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
346
+ letta_nightly-0.7.8.dev20250501064110.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
347
+ letta_nightly-0.7.8.dev20250501064110.dist-info/RECORD,,