letta-nightly 0.6.37.dev20250311104150__py3-none-any.whl → 0.6.38.dev20250312104155__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of letta-nightly might be problematic. Click here for more details.

Files changed (30) hide show
  1. letta/__init__.py +1 -1
  2. letta/agent.py +34 -12
  3. letta/client/client.py +1 -50
  4. letta/constants.py +1 -1
  5. letta/functions/function_sets/multi_agent.py +9 -8
  6. letta/functions/helpers.py +33 -6
  7. letta/llm_api/google_ai_client.py +332 -0
  8. letta/llm_api/google_vertex_client.py +214 -0
  9. letta/llm_api/llm_client.py +48 -0
  10. letta/llm_api/llm_client_base.py +129 -0
  11. letta/orm/step.py +1 -0
  12. letta/schemas/block.py +4 -48
  13. letta/schemas/letta_message.py +26 -0
  14. letta/schemas/message.py +1 -1
  15. letta/schemas/step.py +1 -0
  16. letta/serialize_schemas/agent.py +8 -1
  17. letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +2 -7
  18. letta/server/rest_api/routers/v1/agents.py +12 -8
  19. letta/server/rest_api/routers/v1/steps.py +2 -0
  20. letta/server/rest_api/routers/v1/voice.py +3 -6
  21. letta/services/agent_manager.py +56 -3
  22. letta/services/helpers/agent_manager_helper.py +12 -1
  23. letta/services/identity_manager.py +7 -1
  24. letta/services/message_manager.py +40 -0
  25. letta/services/step_manager.py +8 -1
  26. {letta_nightly-0.6.37.dev20250311104150.dist-info → letta_nightly-0.6.38.dev20250312104155.dist-info}/METADATA +18 -17
  27. {letta_nightly-0.6.37.dev20250311104150.dist-info → letta_nightly-0.6.38.dev20250312104155.dist-info}/RECORD +30 -26
  28. {letta_nightly-0.6.37.dev20250311104150.dist-info → letta_nightly-0.6.38.dev20250312104155.dist-info}/LICENSE +0 -0
  29. {letta_nightly-0.6.37.dev20250311104150.dist-info → letta_nightly-0.6.38.dev20250312104155.dist-info}/WHEEL +0 -0
  30. {letta_nightly-0.6.37.dev20250311104150.dist-info → letta_nightly-0.6.38.dev20250312104155.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Optional
2
2
 
3
3
  import httpx
4
4
  import openai
5
- from fastapi import APIRouter, Body, Depends, Header, HTTPException
5
+ from fastapi import APIRouter, Body, Depends, Header
6
6
  from fastapi.responses import StreamingResponse
7
7
  from openai.types.chat.completion_create_params import CompletionCreateParams
8
8
 
@@ -22,7 +22,7 @@ logger = get_logger(__name__)
22
22
 
23
23
 
24
24
  @router.post(
25
- "/chat/completions",
25
+ "/{agent_id}/chat/completions",
26
26
  response_model=None,
27
27
  operation_id="create_voice_chat_completions",
28
28
  responses={
@@ -35,16 +35,13 @@ logger = get_logger(__name__)
35
35
  },
36
36
  )
37
37
  async def create_voice_chat_completions(
38
+ agent_id: str,
38
39
  completion_request: CompletionCreateParams = Body(...),
39
40
  server: "SyncServer" = Depends(get_letta_server),
40
41
  user_id: Optional[str] = Header(None, alias="user_id"),
41
42
  ):
42
43
  actor = server.user_manager.get_user_or_default(user_id=user_id)
43
44
 
44
- agent_id = str(completion_request.get("user", None))
45
- if agent_id is None:
46
- raise HTTPException(status_code=400, detail="Must pass agent_id in the 'user' field")
47
-
48
45
  # Also parse the user's new input
49
46
  input_message = UserMessage(**get_messages_from_completion_request(completion_request)[-1])
50
47
 
@@ -358,6 +358,49 @@ class AgentManager:
358
358
 
359
359
  return [agent.to_pydantic() for agent in agents]
360
360
 
361
+ @enforce_types
362
+ def list_agents_matching_tags(
363
+ self,
364
+ actor: PydanticUser,
365
+ match_all: List[str],
366
+ match_some: List[str],
367
+ limit: Optional[int] = 50,
368
+ ) -> List[PydanticAgentState]:
369
+ """
370
+ Retrieves agents in the same organization that match all specified `match_all` tags
371
+ and at least one tag from `match_some`. The query is optimized for efficiency by
372
+ leveraging indexed filtering and aggregation.
373
+
374
+ Args:
375
+ actor (PydanticUser): The user requesting the agent list.
376
+ match_all (List[str]): Agents must have all these tags.
377
+ match_some (List[str]): Agents must have at least one of these tags.
378
+ limit (Optional[int]): Maximum number of agents to return.
379
+
380
+ Returns:
381
+ List[PydanticAgentState: The filtered list of matching agents.
382
+ """
383
+ with self.session_maker() as session:
384
+ query = select(AgentModel).where(AgentModel.organization_id == actor.organization_id)
385
+
386
+ if match_all:
387
+ # Subquery to find agent IDs that contain all match_all tags
388
+ subquery = (
389
+ select(AgentsTags.agent_id)
390
+ .where(AgentsTags.tag.in_(match_all))
391
+ .group_by(AgentsTags.agent_id)
392
+ .having(func.count(AgentsTags.tag) == literal(len(match_all)))
393
+ )
394
+ query = query.where(AgentModel.id.in_(subquery))
395
+
396
+ if match_some:
397
+ # Ensures agents match at least one tag in match_some
398
+ query = query.join(AgentsTags).where(AgentsTags.tag.in_(match_some))
399
+
400
+ query = query.group_by(AgentModel.id).limit(limit)
401
+
402
+ return list(session.execute(query).scalars())
403
+
361
404
  @enforce_types
362
405
  def get_agent_by_id(self, agent_id: str, actor: PydanticUser) -> PydanticAgentState:
363
406
  """Fetch an agent by its ID."""
@@ -401,7 +444,12 @@ class AgentManager:
401
444
 
402
445
  @enforce_types
403
446
  def deserialize(
404
- self, serialized_agent: dict, actor: PydanticUser, append_copy_suffix: bool = True, override_existing_tools: bool = True
447
+ self,
448
+ serialized_agent: dict,
449
+ actor: PydanticUser,
450
+ append_copy_suffix: bool = True,
451
+ override_existing_tools: bool = True,
452
+ project_id: Optional[str] = None,
405
453
  ) -> PydanticAgentState:
406
454
  tool_data_list = serialized_agent.pop("tools", [])
407
455
 
@@ -410,7 +458,9 @@ class AgentManager:
410
458
  agent = schema.load(serialized_agent, session=session)
411
459
  if append_copy_suffix:
412
460
  agent.name += "_copy"
413
- agent.create(session, actor=actor)
461
+ if project_id:
462
+ agent.project_id = project_id
463
+ agent = agent.create(session, actor=actor)
414
464
  pydantic_agent = agent.to_pydantic()
415
465
 
416
466
  # Need to do this separately as there's some fancy upsert logic that SqlAlchemy cannot handle
@@ -548,6 +598,7 @@ class AgentManager:
548
598
  system_prompt=agent_state.system,
549
599
  in_context_memory=agent_state.memory,
550
600
  in_context_memory_last_edit=memory_edit_timestamp,
601
+ recent_passages=self.list_passages(actor=actor, agent_id=agent_id, ascending=False, limit=10),
551
602
  )
552
603
 
553
604
  diff = united_diff(curr_system_message_openai["content"], new_system_message_str)
@@ -718,7 +769,9 @@ class AgentManager:
718
769
  # Commit the changes
719
770
  agent.update(session, actor=actor)
720
771
 
721
- # Add system messsage alert to agent
772
+ # Force rebuild of system prompt so that the agent is updated with passage count
773
+ # and recent passages and add system message alert to agent
774
+ self.rebuild_system_prompt(agent_id=agent_id, actor=actor, force=True)
722
775
  self.append_system_message(
723
776
  agent_id=agent_id,
724
777
  content=DATA_SOURCE_ATTACH_ALERT,
@@ -13,6 +13,7 @@ from letta.schemas.agent import AgentState, AgentType
13
13
  from letta.schemas.enums import MessageRole
14
14
  from letta.schemas.memory import Memory
15
15
  from letta.schemas.message import Message, MessageCreate, TextContent
16
+ from letta.schemas.passage import Passage as PydanticPassage
16
17
  from letta.schemas.tool_rule import ToolRule
17
18
  from letta.schemas.user import User
18
19
  from letta.system import get_initial_boot_messages, get_login_event
@@ -99,7 +100,10 @@ def derive_system_message(agent_type: AgentType, system: Optional[str] = None):
99
100
 
100
101
  # TODO: This code is kind of wonky and deserves a rewrite
101
102
  def compile_memory_metadata_block(
102
- memory_edit_timestamp: datetime.datetime, previous_message_count: int = 0, archival_memory_size: int = 0
103
+ memory_edit_timestamp: datetime.datetime,
104
+ previous_message_count: int = 0,
105
+ archival_memory_size: int = 0,
106
+ recent_passages: List[PydanticPassage] = None,
103
107
  ) -> str:
104
108
  # Put the timestamp in the local timezone (mimicking get_local_time())
105
109
  timestamp_str = memory_edit_timestamp.astimezone().strftime("%Y-%m-%d %I:%M:%S %p %Z%z").strip()
@@ -110,6 +114,11 @@ def compile_memory_metadata_block(
110
114
  f"### Memory [last modified: {timestamp_str}]",
111
115
  f"{previous_message_count} previous messages between you and the user are stored in recall memory (use functions to access them)",
112
116
  f"{archival_memory_size} total memories you created are stored in archival memory (use functions to access them)",
117
+ (
118
+ f"Most recent archival passages {len(recent_passages)} recent passages: {[passage.text for passage in recent_passages]}"
119
+ if recent_passages is not None
120
+ else ""
121
+ ),
113
122
  "\nCore memory shown below (limited in size, additional information stored in archival / recall memory):",
114
123
  ]
115
124
  )
@@ -146,6 +155,7 @@ def compile_system_message(
146
155
  template_format: Literal["f-string", "mustache", "jinja2"] = "f-string",
147
156
  previous_message_count: int = 0,
148
157
  archival_memory_size: int = 0,
158
+ recent_passages: Optional[List[PydanticPassage]] = None,
149
159
  ) -> str:
150
160
  """Prepare the final/full system message that will be fed into the LLM API
151
161
 
@@ -170,6 +180,7 @@ def compile_system_message(
170
180
  memory_edit_timestamp=in_context_memory_last_edit,
171
181
  previous_message_count=previous_message_count,
172
182
  archival_memory_size=archival_memory_size,
183
+ recent_passages=recent_passages,
173
184
  )
174
185
  full_memory_string = memory_metadata_string + "\n" + in_context_memory.compile()
175
186
 
@@ -78,7 +78,13 @@ class IdentityManager:
78
78
  if existing_identity is None:
79
79
  return self.create_identity(identity=identity, actor=actor)
80
80
  else:
81
- identity_update = IdentityUpdate(name=identity.name, identity_type=identity.identity_type, agent_ids=identity.agent_ids)
81
+ identity_update = IdentityUpdate(
82
+ name=identity.name,
83
+ identifier_key=identity.identifier_key,
84
+ identity_type=identity.identity_type,
85
+ agent_ids=identity.agent_ids,
86
+ properties=identity.properties,
87
+ )
82
88
  return self._update_identity(
83
89
  session=session, existing_identity=existing_identity, identity=identity_update, actor=actor, replace=True
84
90
  )
@@ -1,3 +1,4 @@
1
+ import json
1
2
  from typing import List, Optional
2
3
 
3
4
  from sqlalchemy import and_, or_
@@ -7,6 +8,7 @@ from letta.orm.agent import Agent as AgentModel
7
8
  from letta.orm.errors import NoResultFound
8
9
  from letta.orm.message import Message as MessageModel
9
10
  from letta.schemas.enums import MessageRole
11
+ from letta.schemas.letta_message import LettaMessageUpdateUnion
10
12
  from letta.schemas.message import Message as PydanticMessage
11
13
  from letta.schemas.message import MessageUpdate
12
14
  from letta.schemas.user import User as PydanticUser
@@ -64,6 +66,44 @@ class MessageManager:
64
66
  """Create multiple messages."""
65
67
  return [self.create_message(m, actor=actor) for m in pydantic_msgs]
66
68
 
69
+ @enforce_types
70
+ def update_message_by_letta_message(
71
+ self, message_id: str, letta_message_update: LettaMessageUpdateUnion, actor: PydanticUser
72
+ ) -> PydanticMessage:
73
+ """
74
+ Updated the underlying messages table giving an update specified to the user-facing LettaMessage
75
+ """
76
+ message = self.get_message_by_id(message_id=message_id, actor=actor)
77
+ if letta_message_update.message_type == "assistant_message":
78
+ # modify the tool call for send_message
79
+ # TODO: fix this if we add parallel tool calls
80
+ # TODO: note this only works if the AssistantMessage is generated by the standard send_message
81
+ assert (
82
+ message.tool_calls[0].function.name == "send_message"
83
+ ), f"Expected the first tool call to be send_message, but got {message.tool_calls[0].function.name}"
84
+ original_args = json.loads(message.tool_calls[0].function.arguments)
85
+ original_args["message"] = letta_message_update.content # override the assistant message
86
+ update_tool_call = message.tool_calls[0].__deepcopy__()
87
+ update_tool_call.function.arguments = json.dumps(original_args)
88
+
89
+ update_message = MessageUpdate(tool_calls=[update_tool_call])
90
+ elif letta_message_update.message_type == "reasoning_message":
91
+ update_message = MessageUpdate(content=letta_message_update.reasoning)
92
+ elif letta_message_update.message_type == "user_message" or letta_message_update.message_type == "system_message":
93
+ update_message = MessageUpdate(content=letta_message_update.content)
94
+ else:
95
+ raise ValueError(f"Unsupported message type for modification: {letta_message_update.message_type}")
96
+
97
+ message = self.update_message_by_id(message_id=message_id, message_update=update_message, actor=actor)
98
+
99
+ # convert back to LettaMessage
100
+ for letta_msg in message.to_letta_message(use_assistant_message=True):
101
+ if letta_msg.message_type == letta_message_update.message_type:
102
+ return letta_msg
103
+
104
+ # raise error if message type got modified
105
+ raise ValueError(f"Message type got modified: {letta_message_update.message_type}")
106
+
67
107
  @enforce_types
68
108
  def update_message_by_id(self, message_id: str, message_update: MessageUpdate, actor: PydanticUser) -> PydanticMessage:
69
109
  """
@@ -33,10 +33,15 @@ class StepManager:
33
33
  limit: Optional[int] = 50,
34
34
  order: Optional[str] = None,
35
35
  model: Optional[str] = None,
36
+ agent_id: Optional[str] = None,
36
37
  ) -> List[PydanticStep]:
37
38
  """List all jobs with optional pagination and status filter."""
38
39
  with self.session_maker() as session:
39
- filter_kwargs = {"organization_id": actor.organization_id, "model": model}
40
+ filter_kwargs = {"organization_id": actor.organization_id}
41
+ if model:
42
+ filter_kwargs["model"] = model
43
+ if agent_id:
44
+ filter_kwargs["agent_id"] = agent_id
40
45
 
41
46
  steps = StepModel.list(
42
47
  db_session=session,
@@ -54,6 +59,7 @@ class StepManager:
54
59
  def log_step(
55
60
  self,
56
61
  actor: PydanticUser,
62
+ agent_id: str,
57
63
  provider_name: str,
58
64
  model: str,
59
65
  model_endpoint: Optional[str],
@@ -65,6 +71,7 @@ class StepManager:
65
71
  step_data = {
66
72
  "origin": None,
67
73
  "organization_id": actor.organization_id,
74
+ "agent_id": agent_id,
68
75
  "provider_id": provider_id,
69
76
  "provider_name": provider_name,
70
77
  "model": model,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.37.dev20250311104150
3
+ Version: 0.6.38.dev20250312104155
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.12
14
14
  Provides-Extra: all
15
15
  Provides-Extra: bedrock
16
16
  Provides-Extra: cloud-tool-sandbox
17
+ Provides-Extra: desktop
17
18
  Provides-Extra: dev
18
19
  Provides-Extra: external-tools
19
20
  Provides-Extra: google
@@ -28,17 +29,17 @@ Requires-Dist: black[jupyter] (>=24.2.0,<25.0.0) ; extra == "dev" or extra == "a
28
29
  Requires-Dist: boto3 (>=1.36.24,<2.0.0) ; extra == "bedrock"
29
30
  Requires-Dist: brotli (>=1.1.0,<2.0.0)
30
31
  Requires-Dist: colorama (>=0.4.6,<0.5.0)
31
- Requires-Dist: composio-core (>=0.7.2,<0.8.0)
32
- Requires-Dist: composio-langchain (>=0.7.2,<0.8.0)
33
- Requires-Dist: datamodel-code-generator[http] (>=0.25.0,<0.26.0)
34
- Requires-Dist: datasets (>=2.14.6,<3.0.0) ; extra == "dev" or extra == "all"
32
+ Requires-Dist: composio-core (>=0.7.7,<0.8.0)
33
+ Requires-Dist: composio-langchain (>=0.7.7,<0.8.0)
34
+ Requires-Dist: datamodel-code-generator[http] (>=0.25.0,<0.26.0) ; extra == "desktop" or extra == "all"
35
+ Requires-Dist: datasets (>=2.14.6,<3.0.0) ; extra == "dev" or extra == "desktop" or extra == "all"
35
36
  Requires-Dist: demjson3 (>=3.0.6,<4.0.0)
36
- Requires-Dist: docker (>=7.1.0,<8.0.0) ; extra == "external-tools" or extra == "all"
37
+ Requires-Dist: docker (>=7.1.0,<8.0.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
37
38
  Requires-Dist: docstring-parser (>=0.16,<0.17)
38
39
  Requires-Dist: docx2txt (>=0.8,<0.9)
39
40
  Requires-Dist: e2b-code-interpreter (>=1.0.3,<2.0.0) ; extra == "cloud-tool-sandbox"
40
41
  Requires-Dist: faker (>=36.1.0,<37.0.0)
41
- Requires-Dist: fastapi (>=0.115.6,<0.116.0) ; extra == "server" or extra == "all"
42
+ Requires-Dist: fastapi (>=0.115.6,<0.116.0) ; extra == "server" or extra == "desktop" or extra == "all"
42
43
  Requires-Dist: google-genai (>=1.1.0,<2.0.0) ; extra == "google"
43
44
  Requires-Dist: grpcio (>=1.68.1,<2.0.0)
44
45
  Requires-Dist: grpcio-tools (>=1.68.1,<2.0.0)
@@ -47,12 +48,12 @@ Requires-Dist: httpx (>=0.28.0,<0.29.0)
47
48
  Requires-Dist: httpx-sse (>=0.4.0,<0.5.0)
48
49
  Requires-Dist: isort (>=5.13.2,<6.0.0) ; extra == "dev" or extra == "all"
49
50
  Requires-Dist: jinja2 (>=3.1.5,<4.0.0)
50
- Requires-Dist: langchain (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "all"
51
- Requires-Dist: langchain-community (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "all"
51
+ Requires-Dist: langchain (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
52
+ Requires-Dist: langchain-community (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "desktop" or extra == "all"
52
53
  Requires-Dist: letta_client (>=0.1.54,<0.2.0)
53
54
  Requires-Dist: llama-index (>=0.12.2,<0.13.0)
54
55
  Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
55
- Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "all"
56
+ Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "desktop" or extra == "all"
56
57
  Requires-Dist: marshmallow-sqlalchemy (>=1.4.1,<2.0.0)
57
58
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
58
59
  Requires-Dist: numpy (>=1.26.2,<2.0.0)
@@ -63,16 +64,16 @@ Requires-Dist: opentelemetry-instrumentation-requests (==0.51b0)
63
64
  Requires-Dist: opentelemetry-sdk (==1.30.0)
64
65
  Requires-Dist: pathvalidate (>=3.2.1,<4.0.0)
65
66
  Requires-Dist: pexpect (>=4.9.0,<5.0.0) ; extra == "dev" or extra == "all"
66
- Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "all"
67
- Requires-Dist: pgvector (>=0.2.3,<0.3.0) ; extra == "postgres" or extra == "all"
67
+ Requires-Dist: pg8000 (>=1.30.3,<2.0.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
68
+ Requires-Dist: pgvector (>=0.2.3,<0.3.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
68
69
  Requires-Dist: pre-commit (>=3.5.0,<4.0.0) ; extra == "dev" or extra == "all"
69
70
  Requires-Dist: prettytable (>=3.9.0,<4.0.0)
70
- Requires-Dist: psycopg2 (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "all"
71
- Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "all"
71
+ Requires-Dist: psycopg2 (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
72
+ Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "desktop" or extra == "all"
72
73
  Requires-Dist: pydantic (>=2.7.4,<2.10.0)
73
74
  Requires-Dist: pydantic-settings (>=2.2.1,<3.0.0)
74
75
  Requires-Dist: pyhumps (>=3.8.0,<4.0.0)
75
- Requires-Dist: pyright (>=1.1.347,<2.0.0) ; extra == "dev" or extra == "all"
76
+ Requires-Dist: pyright (>=1.1.347,<2.0.0) ; extra == "dev" or extra == "desktop" or extra == "all"
76
77
  Requires-Dist: pytest-asyncio (>=0.23.2,<0.24.0) ; extra == "dev" or extra == "all"
77
78
  Requires-Dist: pytest-order (>=1.2.0,<2.0.0) ; extra == "dev" or extra == "all"
78
79
  Requires-Dist: python-box (>=7.1.1,<8.0.0)
@@ -90,8 +91,8 @@ Requires-Dist: sqlalchemy-utils (>=0.41.2,<0.42.0)
90
91
  Requires-Dist: sqlmodel (>=0.0.16,<0.0.17)
91
92
  Requires-Dist: tqdm (>=4.66.1,<5.0.0)
92
93
  Requires-Dist: typer[all] (>=0.9.0,<0.10.0)
93
- Requires-Dist: uvicorn (>=0.24.0.post1,<0.25.0) ; extra == "server" or extra == "all"
94
- Requires-Dist: wikipedia (>=1.4.0,<2.0.0) ; extra == "external-tools" or extra == "tests" or extra == "all"
94
+ Requires-Dist: uvicorn (>=0.24.0.post1,<0.25.0) ; extra == "server" or extra == "desktop" or extra == "all"
95
+ Requires-Dist: wikipedia (>=1.4.0,<2.0.0) ; extra == "external-tools" or extra == "tests" or extra == "desktop" or extra == "all"
95
96
  Description-Content-Type: text/markdown
96
97
 
97
98
  <p align="center">
@@ -1,6 +1,6 @@
1
- letta/__init__.py,sha256=dygpre5_iDLqGclnvhkq6BPMUZ8uZ8GWBua27pnkvGM,918
1
+ letta/__init__.py,sha256=_G0k0AZTJzGGwOZm0tg_LWPG5xPGtcckEWRzbfR08GY,918
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=IcLnwnJNeVFJhpU3mJg-609sg_eWBZP8OwfCvEqcN-k,64398
3
+ letta/agent.py,sha256=OJkvScBj89k6DPbMUg1TpeYuh9LuE6yzhOoCHQFCZOY,65503
4
4
  letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  letta/agents/base_agent.py,sha256=8IMB7UK4ft-Wi-ZYjX7akqQUhk_cSswRgepqeZyvCMs,1550
6
6
  letta/agents/ephemeral_agent.py,sha256=XOQ5rj3cn7i7Imr_aFaL8DbH7oAizrHbmUy8QZuz9yk,2704
@@ -11,11 +11,11 @@ letta/cli/cli.py,sha256=zJz78-qDUz-depb7VQWkg87RBKiETQU4h9DI6ukQBa8,16477
11
11
  letta/cli/cli_config.py,sha256=MNMhIAAjXiAy2gX_gAtqiY0Ya6VNbzXJWjIcRVEZa-k,8597
12
12
  letta/cli/cli_load.py,sha256=vER0PwpHnsCZtCHcR2YjEXM-VVuO9jhfQibdo3gI3S0,2703
13
13
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- letta/client/client.py,sha256=G2X1QBXOQORzVwViRNax2EPSYwzdxw_L2RiTFS-SS9Q,139150
14
+ letta/client/client.py,sha256=wUhjvA2isZI0-2l0vM3-7lgNZOtjAxF85-F75jZj0eE,137450
15
15
  letta/client/streaming.py,sha256=lN9vamc07sfQlRbFif327GvURLUPhx-4AC_oUOPvs6w,4543
16
16
  letta/client/utils.py,sha256=VCGV-op5ZSmurd4yw7Vhf93XDQ0BkyBT8qsuV7EqfiU,2859
17
17
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
18
- letta/constants.py,sha256=MvctT-wAIq4CKlYn3XerWAYsqiJj7ydJqqCCuwJLQa0,7675
18
+ letta/constants.py,sha256=S-z4e_yBCQHAPZyJxR7M0OrAabZKvqgHh3Jd0na9fEQ,7671
19
19
  letta/data_sources/connectors.py,sha256=R2AssXpqS7wN6VI8AfxvqaZs5S1ZACc4E_FewmR9iZI,7022
20
20
  letta/data_sources/connectors_helper.py,sha256=oQpVlc-BjSz9sTZ7sp4PsJSXJbBKpZPi3Dam03CURTQ,3376
21
21
  letta/embeddings.py,sha256=zqlfbN3aCgSOlNd9M2NW9zrwx4WwQzketb8oa5BzzE8,10831
@@ -24,9 +24,9 @@ letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  letta/functions/ast_parsers.py,sha256=CQI0rUoIXcLKAev_GYrXcldRIGN5ZQtk5u4FLoHe5sE,5728
25
25
  letta/functions/function_sets/base.py,sha256=M3_1Pge2GiyITp_U73T_Sd9O2rFoNlbuT8KgzMjexfs,5999
26
26
  letta/functions/function_sets/extras.py,sha256=R1a97EKepEPDxJKsxQPFdXXWQrkVppOvKbEkRc_79tc,4852
27
- letta/functions/function_sets/multi_agent.py,sha256=BcMeod0-lMhnKeaVWJp2T1PzRV0qvCuTWAPMJxAbgHI,4073
27
+ letta/functions/function_sets/multi_agent.py,sha256=MmLw42ztpjoZj6bPR6BKq9ttRWa9NMwuod48YQq5Qzw,4024
28
28
  letta/functions/functions.py,sha256=NyWLh7a-f4mXti5vM1oWDwXzfA58VmVVqL03O9vosKY,5672
29
- letta/functions/helpers.py,sha256=QA953uRT_syzTJs3iju2TbK9tH71m08hZXL5-BmUK2c,26704
29
+ letta/functions/helpers.py,sha256=XTpSqTdSTUUp2AagX3th30NFlzF1M6nVj6eErH1nzv4,27054
30
30
  letta/functions/interface.py,sha256=s_PPp5WDvGH_y9KUpMlORkdC141ITczFk3wsevrrUD8,2866
31
31
  letta/functions/schema_generator.py,sha256=dLM8pQ9UP1vP9cnKHgA-UhGllMNvyEIjsO-r47RP9LM,20765
32
32
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
@@ -51,10 +51,14 @@ letta/llm_api/azure_openai_constants.py,sha256=ZaR2IasJThijG0uhLKJThrixdAxLPD2Io
51
51
  letta/llm_api/cohere.py,sha256=A5uUoxoRsXsaMDCIIWiVXeyCbiQ7gUfiASb8Ovv2I_o,14852
52
52
  letta/llm_api/deepseek.py,sha256=b1mSW8gnBrpAI8d2GcBpDyLYDnuC-P1UP6xJPalfQS4,12456
53
53
  letta/llm_api/google_ai.py,sha256=oeGH6dTKfNTQ1Ip4HWkZ5KkVoujdru6XjQPWsirRBSM,18162
54
+ letta/llm_api/google_ai_client.py,sha256=114KoGp-6AecNE5BITHdjEvXnhqw6m4FSPrbwrl_Bkg,14486
54
55
  letta/llm_api/google_constants.py,sha256=ZdABT9l9l-qKcV2QCkVsv9kQbttx6JyIJoOWS8IMS5o,448
55
56
  letta/llm_api/google_vertex.py,sha256=-8ERH8YPsQIAi6ZuYNcvny7Jz-Q4IFIbV7xqDspUUD4,14399
57
+ letta/llm_api/google_vertex_client.py,sha256=Cu1AVKxLCSvip1h8lleJ8voatSH2d6XnGmQjdKqmVoo,9648
56
58
  letta/llm_api/helpers.py,sha256=pXBemF43Ywbwub5dc5V7Slw5K7lNlO0ae8dQBOXgDHs,16773
57
59
  letta/llm_api/llm_api_tools.py,sha256=OHhwSWRwl4Ubv8_g-zoQZvgWYIkK5PWy6yzLeArIcf8,28427
60
+ letta/llm_api/llm_client.py,sha256=u7nnmtSgwhqNDiaNmv6i0G-I-WgwLH35uxJnXM0C33o,1767
61
+ letta/llm_api/llm_client_base.py,sha256=754JOj33J2kowxSYdP7hkQ_dx47zZ5qCQXy2w5NiywM,4881
58
62
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
59
63
  letta/llm_api/openai.py,sha256=UnCh2NYYJWpwUai6P2enFop3K_5JS4-VHuoFoBx7yRs,22398
60
64
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
@@ -125,7 +129,7 @@ letta/orm/source.py,sha256=z89VZUHV9K8Ew9JCYoZqUeRb1WEUKmrn0MMFkppaphE,2117
125
129
  letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
126
130
  letta/orm/sqlalchemy_base.py,sha256=8037lD9w5vY7rXhqmXg1mG78UywdHczef7-XGhW7b1U,22511
127
131
  letta/orm/sqlite_functions.py,sha256=JCScKiRlYCKxy9hChQ8wsk4GMKknZE24MunnG3fM1Gw,4255
128
- letta/orm/step.py,sha256=Y5hJa7KFJmfIGB21kYBYtooH6esfqUsKK-bh3ZTpHQk,3094
132
+ letta/orm/step.py,sha256=fjm7fLtYLCtFM6Mj6e2boP6P7dHSFG24Nem85VfVqHg,3216
129
133
  letta/orm/tool.py,sha256=x58lmVG5IhXTVt82CnoN-ExuObnQCbeSMx_yOhUMmA4,2515
130
134
  letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
131
135
  letta/orm/user.py,sha256=rK5N5ViDxmesZMqVVHB7FcQNpcSoM-hB42MyI6q3MnI,1004
@@ -158,7 +162,7 @@ letta/prompts/system/memgpt_offline_memory.txt,sha256=rWEJeF-6aiinjkJM9hgLUYCmlE
158
162
  letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7GpBq6crxb8bYedQfJ0ADoPgg,3949
159
163
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
164
  letta/schemas/agent.py,sha256=4pTHrTV_FYyJuujtSglRsJQ2ouF0FRYWNmvObbLeL2g,14123
161
- letta/schemas/block.py,sha256=FYYmRWjH4d4QHMUx_nmIXjv_qJna_l-Ip_4i51wDBPA,5942
165
+ letta/schemas/block.py,sha256=rMWflyj982qW86dQK-9saXBHKaLCu3aUG2gQTckG3Ik,4984
162
166
  letta/schemas/embedding_config.py,sha256=ufboqW9ctSBJdhwzJRbrGtTzOTwSKfT0LY0mowpr6fs,3398
163
167
  letta/schemas/embedding_config_overrides.py,sha256=lkTa4y-EQ2RnaEKtKDM0sEAk7EwNa67REw8DGNNtGQY,84
164
168
  letta/schemas/enums.py,sha256=jfuke35XP_AKfHHBnH1rx1wYjUDWqgDsKnRxdrCpTKA,1213
@@ -168,13 +172,13 @@ letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
168
172
  letta/schemas/identity.py,sha256=028DseEyCErZ_fifQdFp4ON5QKlDWp-6hrrlekqko_g,2883
169
173
  letta/schemas/job.py,sha256=MX9EiLDDIeHm3q52ImOjp7UzXEdYTXAWWobRCAxwV0w,2225
170
174
  letta/schemas/letta_base.py,sha256=DuMqiNFmYwTAsXUHYdX--EWgtFUVzph5ptLZvu7aguI,3988
171
- letta/schemas/letta_message.py,sha256=QHzIEwnEJEkE02biCwyQo5IvL2fVq_whBRQD3vPYO48,9837
175
+ letta/schemas/letta_message.py,sha256=3AXGiSwXf9m3Ta2A0Z8BlCq80n4fRC3c66V7LkiDUHw,10648
172
176
  letta/schemas/letta_request.py,sha256=dzy3kwb5j2QLaSV0sDlwISEMt2xxH3IiK-vR9xJV65k,1123
173
177
  letta/schemas/letta_response.py,sha256=pq-SxXQy5yZo1-DiAwV2mMURlUvz1Uu7HHR_tB1hMho,7139
174
178
  letta/schemas/llm_config.py,sha256=bqq4LGE9layPcnnkzd_8d2SB8o1x8XdDzfd2ZkYQwcY,5611
175
179
  letta/schemas/llm_config_overrides.py,sha256=-oRglCTcajF6UAK3RAa0FLWVuKODPI1v403fDIWMAtA,1815
176
180
  letta/schemas/memory.py,sha256=GOYDfPKzbWftUWO9Hv4KW7xAi1EIQmC8zpP7qvEkVHw,10245
177
- letta/schemas/message.py,sha256=dJHjvF8K-tHZMXvvPu51AKeo48L6YSo_HulORqFLSpM,38840
181
+ letta/schemas/message.py,sha256=saWK-hhPjPryE8VeqQhxSlJ5aN-SiDVLnnegELIn0h8,38841
178
182
  letta/schemas/openai/chat_completion_request.py,sha256=3tALmbBV2pv1CcqzNLBxxIPOQ8Z85woucT7FN0fuDic,3402
179
183
  letta/schemas/openai/chat_completion_response.py,sha256=koEb_NTiz5YsAAX81Z0cSqSFX4a6MdD2lhoXtxF_rw4,4100
180
184
  letta/schemas/openai/chat_completions.py,sha256=l0e9sT9boTD5VBU5YtJ0s7qUtCfFGB2K-gQLeEZ2LHU,3599
@@ -186,13 +190,13 @@ letta/schemas/providers.py,sha256=2Ijzjj1gPETiFyl8yb4ZbwaTljw5WSCdGayAgCsBeYE,43
186
190
  letta/schemas/run.py,sha256=SRqPRziINIiPunjOhE_NlbnQYgxTvqmbauni_yfBQRA,2085
187
191
  letta/schemas/sandbox_config.py,sha256=SZCo3FSMz-DIBMKGu0atT4tsVFXGsqMFPaJnjrxpkX4,5993
188
192
  letta/schemas/source.py,sha256=-BQVolcXA2ziCu2ztR6cbTdGUc8G7vGJy7rvpdf1hpg,2880
189
- letta/schemas/step.py,sha256=8rfOW4gbEIB7yp05pqmZn4P3U3XrvXeUd9lPg9yh6x8,2122
193
+ letta/schemas/step.py,sha256=WkcVnruUUOWLKwiWPn2Gfal4EQZPNLqlsd9859xhgsw,2224
190
194
  letta/schemas/tool.py,sha256=3K3csZrk0m9e1lg05tNrO5WCTBiCT9lS-WCVL8jM7mk,11201
191
195
  letta/schemas/tool_rule.py,sha256=2YQZba4fXS3u4j8pIk7BDujfq8rnxSVMwJSyaVgApH4,2149
192
196
  letta/schemas/usage.py,sha256=8oYRH-JX0PfjIu2zkT5Uu3UWQ7Unnz_uHiO8hRGI4m0,912
193
197
  letta/schemas/user.py,sha256=V32Tgl6oqB3KznkxUz12y7agkQicjzW7VocSpj78i6Q,1526
194
198
  letta/serialize_schemas/__init__.py,sha256=mflGEZvM3NuMG9Q6dccEdVk73BUHoX-v7hmfk025Gmc,64
195
- letta/serialize_schemas/agent.py,sha256=AyQJYjQ5Af8GpccpjD32dRwAScJ__Uv5R0-Sx3KIj0k,3149
199
+ letta/serialize_schemas/agent.py,sha256=BqtIBiMbGnupr6CGCF4Z4wKtkT90ACnxLN0qcRgkieM,3281
196
200
  letta/serialize_schemas/agent_environment_variable.py,sha256=IDcivP-xB1j6Fn0onSM4T1l4CSlXhOLWNmKHG2psOoU,641
197
201
  letta/serialize_schemas/base.py,sha256=X5cs1U4P0Vjem4SKNCYBiSAIboThJdM2Oyphu_Nl9Ag,2040
198
202
  letta/serialize_schemas/block.py,sha256=BeZ2FZO59IWUHiPMSNKlZMi9dH9Gbys0rJpsoCFBjdg,420
@@ -214,9 +218,9 @@ letta/server/rest_api/interface.py,sha256=0FHLtFKHYyjLIpKUmA87cbd9A1m_yBIh3uB5Jl
214
218
  letta/server/rest_api/optimistic_json_parser.py,sha256=1z4d9unmxMb0ou7owJ62uUQoNjNYf21FmaNdg0ZcqUU,6567
215
219
  letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
220
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
- letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=yJo_oiv75QsD324lC0uR2B9su9WG1FxabQhAJKS--6s,5530
221
+ letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=OgjWs4zJaIi5Ps67iCTeOLmLXcW0S5Xccd-TcNa9obQ,5321
218
222
  letta/server/rest_api/routers/v1/__init__.py,sha256=Zi2th-okqT_RWAjB8MYGHX8CpHt1OSRyO5V8SJEp6UU,1361
219
- letta/server/rest_api/routers/v1/agents.py,sha256=eA_gHr2fj2gpRaimwla9fNI1IXzhkgMQlxx37KQFIoM,29335
223
+ letta/server/rest_api/routers/v1/agents.py,sha256=EN1QIeC5IRwn7ZPRAhYltOBfX3sO6tFManZe60DbH-Y,29464
220
224
  letta/server/rest_api/routers/v1/blocks.py,sha256=0j7JX2BQzk31RyhvPZeEb-zh9ImXsVU4_8y5XMiR_WA,3900
221
225
  letta/server/rest_api/routers/v1/health.py,sha256=MoOjkydhGcJXTiuJrKIB0etVXiRMdTa51S8RQ8-50DQ,399
222
226
  letta/server/rest_api/routers/v1/identities.py,sha256=gRTcOXxbpiTzQzzVA_I1Sc9aUSKhW6YcQcJb__HxOX4,5957
@@ -227,11 +231,11 @@ letta/server/rest_api/routers/v1/providers.py,sha256=qyZsNTXgLVsoLZoCVY4qaqiG34z
227
231
  letta/server/rest_api/routers/v1/runs.py,sha256=-2_YA2nuxcLqiPjG9CPHeZbyrtlNQZnAsaNohGn5fMg,8278
228
232
  letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=9hqnnMwJ3wCwO-Bezu3Xl8i3TDSIuInw3gSeHaKUXfE,8526
229
233
  letta/server/rest_api/routers/v1/sources.py,sha256=rpQhaRHyzGUK43LX623L8BBLqL85HJ6fUYPMvI4k3kA,8434
230
- letta/server/rest_api/routers/v1/steps.py,sha256=IpCQuxpS34-4Qpgdv0FQJO-SffkFkW-OaRjWHquB_1w,3136
234
+ letta/server/rest_api/routers/v1/steps.py,sha256=DVVwaxLNbNAgWpr2oQkrNjdS-wi0bP8kVJZUO-hiaf8,3275
231
235
  letta/server/rest_api/routers/v1/tags.py,sha256=coydgvL6-9cuG2Hy5Ea7QY3inhTHlsf69w0tcZenBus,880
232
236
  letta/server/rest_api/routers/v1/tools.py,sha256=B9zRyc2PeHdPBA6hvHqpTrVWsjgd1uBkyG1J_5E8Rgw,13207
233
237
  letta/server/rest_api/routers/v1/users.py,sha256=G5DBHSkPfBgVHN2Wkm-rVYiLQAudwQczIq2Z3YLdbVo,2277
234
- letta/server/rest_api/routers/v1/voice.py,sha256=0Yk-2c4Ec_viqMLMAn_9kZPAYeUgLQoikpocLfK_qKE,2623
238
+ letta/server/rest_api/routers/v1/voice.py,sha256=7J0L-Nkz65m0PXcpQI2ATMIZzumDDSUzgtIus7d-tv8,2461
235
239
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
236
240
  letta/server/rest_api/utils.py,sha256=TlVzgtsg0jmaXzvGubtzOE9WSyvRe6_DFoIBK9EDYt8,13820
237
241
  letta/server/server.py,sha256=LrIVbKJeEhSTbbiUQdg0gGvpXveY6ITJINWZ9gqehEA,58118
@@ -248,20 +252,20 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
248
252
  letta/server/ws_api/protocol.py,sha256=5mDgpfNZn_kNwHnpt5Dsuw8gdNH298sgxTGed3etzYg,1836
249
253
  letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
250
254
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
251
- letta/services/agent_manager.py,sha256=ATqXxVKd-yQyD9rIaUd1JZVn-yBES-7-J4bngiUtak8,57903
255
+ letta/services/agent_manager.py,sha256=jfTcDt7xklYaBPTsGgxNJrVrcyj_ZD5p5b5TTtPw4KM,60149
252
256
  letta/services/block_manager.py,sha256=PkbiO59VimLyK6PolWR5O29uHxksCH6pP6K4Vkov3NA,5573
253
- letta/services/helpers/agent_manager_helper.py,sha256=uvQsmk2ZCAvG4AuI9r3Cs3IDe3Ra8X-qP3B3RbBVMtg,11179
257
+ letta/services/helpers/agent_manager_helper.py,sha256=0xpFUQlLoben1_1sARDFSULOk2_ueWiCtGvl1UMJqTg,11643
254
258
  letta/services/helpers/tool_execution_helper.py,sha256=lLoebs1kZKjw62y1PxHbIDkHq_heJN2ZT0gKje-R8oo,6941
255
- letta/services/identity_manager.py,sha256=o1XMd5NG2gZ_YWrPOmisfFN0i-2ohoq8n1GM8F49Lf4,7144
259
+ letta/services/identity_manager.py,sha256=cLWJ04d-GrvLj-q0YGJIZeBZp7VvmeD8C_NRI6dwcYs,7311
256
260
  letta/services/job_manager.py,sha256=ejcv_nMljByimiWJjvj7aqUFQktL1kK-vx_cra2L2cs,16317
257
- letta/services/message_manager.py,sha256=rRd3eMpW_SWbAU_dHAzsX6om9E2yfXno4FwmUEOnZCk,10751
261
+ letta/services/message_manager.py,sha256=ZcHn3xQC86LY0_6mecux9WyxPQqMDAhMRjXIjAFLVdc,13079
258
262
  letta/services/organization_manager.py,sha256=dhQ3cFPXWNYLfMjdahr2HsOAMJ1JtCEWj1G8Nei5MQc,3388
259
263
  letta/services/passage_manager.py,sha256=mwShFO_xRaTi82fvANb_ngO0TmGaZPA9FPu8KuZ6Gd8,8643
260
264
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
261
265
  letta/services/provider_manager.py,sha256=QOKMSZOM6eAWa2-nANWQc1frKBh8N3gqDq0V87fnSuc,3748
262
266
  letta/services/sandbox_config_manager.py,sha256=ATgZNWNpkdIQDUPy4ABsguHQba2PZf51-c4Ji60MzLE,13361
263
267
  letta/services/source_manager.py,sha256=SE24AiPPhpvZMGDD047H3_ZDD7OM4zHbTW1JXjPEv7U,7672
264
- letta/services/step_manager.py,sha256=5wAxv3OzoYwW9aDcg26hC3foQqOl5qA0tno3vg_Ai5U,5107
268
+ letta/services/step_manager.py,sha256=B64iYn6Dt9yRKsSJ5vLxWQR2t-apvPLfUZyzrUsJTpI,5335
265
269
  letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
270
  letta/services/summarizer/enums.py,sha256=szzPX2OBRRJEZsBTGYQThrNz02ELFqhuLwvOR7ozi7A,208
267
271
  letta/services/summarizer/summarizer.py,sha256=u3WNTPAK0hSyUS8Jb6NDz-BWIZ7bEQj9RBW6AfP4BAc,4746
@@ -274,8 +278,8 @@ letta/streaming_utils.py,sha256=jLqFTVhUL76FeOuYk8TaRQHmPTf3HSRc2EoJwxJNK6U,1194
274
278
  letta/system.py,sha256=dnOrS2FlRMwijQnOvfrky0Lg8wEw-FUq2zzfAJOUSKA,8477
275
279
  letta/tracing.py,sha256=h_-c2lIKHmA7yCLOvgaHijMabmRC__FAl2rZtVKufUM,8017
276
280
  letta/utils.py,sha256=AdHrQ2OQ3V4XhJ1LtYwbLUO71j2IJY37cIUxXPgaaRY,32125
277
- letta_nightly-0.6.37.dev20250311104150.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
278
- letta_nightly-0.6.37.dev20250311104150.dist-info/METADATA,sha256=5kQNnpGTB11YpdDwyd3n0_WUCxZEg9UdTxDh2WUR4bs,22600
279
- letta_nightly-0.6.37.dev20250311104150.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
280
- letta_nightly-0.6.37.dev20250311104150.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
281
- letta_nightly-0.6.37.dev20250311104150.dist-info/RECORD,,
281
+ letta_nightly-0.6.38.dev20250312104155.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
282
+ letta_nightly-0.6.38.dev20250312104155.dist-info/METADATA,sha256=SLcZPieYc2mk86Mq3gstYldfAcHVlDe2M2NlUaXEB-c,22949
283
+ letta_nightly-0.6.38.dev20250312104155.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
284
+ letta_nightly-0.6.38.dev20250312104155.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
285
+ letta_nightly-0.6.38.dev20250312104155.dist-info/RECORD,,