letta-nightly 0.6.1.dev20241206104246__py3-none-any.whl → 0.6.1.dev20241208104134__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 (49) hide show
  1. letta/agent.py +68 -76
  2. letta/agent_store/db.py +1 -77
  3. letta/agent_store/storage.py +0 -5
  4. letta/cli/cli.py +1 -4
  5. letta/client/client.py +11 -14
  6. letta/constants.py +1 -0
  7. letta/functions/function_sets/base.py +33 -5
  8. letta/functions/helpers.py +3 -3
  9. letta/llm_api/openai.py +0 -1
  10. letta/local_llm/llm_chat_completion_wrappers/chatml.py +13 -1
  11. letta/main.py +2 -2
  12. letta/memory.py +4 -82
  13. letta/metadata.py +0 -35
  14. letta/o1_agent.py +7 -2
  15. letta/offline_memory_agent.py +6 -0
  16. letta/orm/__init__.py +2 -0
  17. letta/orm/file.py +1 -1
  18. letta/orm/message.py +64 -0
  19. letta/orm/mixins.py +16 -0
  20. letta/orm/organization.py +1 -0
  21. letta/orm/sqlalchemy_base.py +118 -26
  22. letta/schemas/letta_base.py +7 -6
  23. letta/schemas/message.py +6 -12
  24. letta/schemas/tool.py +18 -11
  25. letta/server/rest_api/app.py +2 -3
  26. letta/server/rest_api/routers/v1/agents.py +7 -6
  27. letta/server/rest_api/routers/v1/blocks.py +2 -2
  28. letta/server/rest_api/routers/v1/tools.py +26 -4
  29. letta/server/rest_api/utils.py +3 -1
  30. letta/server/server.py +67 -62
  31. letta/server/static_files/assets/index-43ab4d62.css +1 -0
  32. letta/server/static_files/assets/index-4848e3d7.js +40 -0
  33. letta/server/static_files/index.html +2 -2
  34. letta/services/block_manager.py +1 -1
  35. letta/services/message_manager.py +194 -0
  36. letta/services/organization_manager.py +6 -9
  37. letta/services/sandbox_config_manager.py +16 -1
  38. letta/services/source_manager.py +1 -1
  39. letta/services/tool_manager.py +2 -4
  40. letta/services/user_manager.py +1 -1
  41. {letta_nightly-0.6.1.dev20241206104246.dist-info → letta_nightly-0.6.1.dev20241208104134.dist-info}/METADATA +2 -2
  42. {letta_nightly-0.6.1.dev20241206104246.dist-info → letta_nightly-0.6.1.dev20241208104134.dist-info}/RECORD +45 -45
  43. letta/agent_store/lancedb.py +0 -177
  44. letta/persistence_manager.py +0 -149
  45. letta/server/static_files/assets/index-1b5d1a41.js +0 -271
  46. letta/server/static_files/assets/index-56a3f8c6.css +0 -1
  47. {letta_nightly-0.6.1.dev20241206104246.dist-info → letta_nightly-0.6.1.dev20241208104134.dist-info}/LICENSE +0 -0
  48. {letta_nightly-0.6.1.dev20241206104246.dist-info → letta_nightly-0.6.1.dev20241208104134.dist-info}/WHEEL +0 -0
  49. {letta_nightly-0.6.1.dev20241206104246.dist-info → letta_nightly-0.6.1.dev20241208104134.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,194 @@
1
+ from datetime import datetime
2
+ from typing import Dict, List, Optional
3
+
4
+ from letta.orm.errors import NoResultFound
5
+ from letta.orm.message import Message as MessageModel
6
+ from letta.schemas.enums import MessageRole
7
+ from letta.schemas.message import Message as PydanticMessage
8
+ from letta.schemas.message import MessageUpdate
9
+ from letta.schemas.user import User as PydanticUser
10
+ from letta.utils import enforce_types
11
+
12
+
13
+ class MessageManager:
14
+ """Manager class to handle business logic related to Messages."""
15
+
16
+ def __init__(self):
17
+ from letta.server.server import db_context
18
+
19
+ self.session_maker = db_context
20
+
21
+ @enforce_types
22
+ def get_message_by_id(self, message_id: str, actor: PydanticUser) -> Optional[PydanticMessage]:
23
+ """Fetch a message by ID."""
24
+ with self.session_maker() as session:
25
+ try:
26
+ message = MessageModel.read(db_session=session, identifier=message_id, actor=actor)
27
+ return message.to_pydantic()
28
+ except NoResultFound:
29
+ return None
30
+
31
+ @enforce_types
32
+ def create_message(self, pydantic_msg: PydanticMessage, actor: PydanticUser) -> PydanticMessage:
33
+ """Create a new message."""
34
+ with self.session_maker() as session:
35
+ # Set the organization id of the Pydantic message
36
+ pydantic_msg.organization_id = actor.organization_id
37
+ msg_data = pydantic_msg.model_dump()
38
+ msg = MessageModel(**msg_data)
39
+ msg.create(session, actor=actor) # Persist to database
40
+ return msg.to_pydantic()
41
+
42
+ @enforce_types
43
+ def create_many_messages(self, pydantic_msgs: List[PydanticMessage], actor: PydanticUser) -> List[PydanticMessage]:
44
+ """Create multiple messages."""
45
+ return [self.create_message(m, actor=actor) for m in pydantic_msgs]
46
+
47
+ @enforce_types
48
+ def update_message_by_id(self, message_id: str, message_update: MessageUpdate, actor: PydanticUser) -> PydanticMessage:
49
+ """
50
+ Updates an existing record in the database with values from the provided record object.
51
+ """
52
+ with self.session_maker() as session:
53
+ # Fetch existing message from database
54
+ message = MessageModel.read(
55
+ db_session=session,
56
+ identifier=message_id,
57
+ actor=actor,
58
+ )
59
+
60
+ # Some safety checks specific to messages
61
+ if message_update.tool_calls and message.role != MessageRole.assistant:
62
+ raise ValueError(
63
+ f"Tool calls {message_update.tool_calls} can only be added to assistant messages. Message {message_id} has role {message.role}."
64
+ )
65
+ if message_update.tool_call_id and message.role != MessageRole.tool:
66
+ raise ValueError(
67
+ f"Tool call IDs {message_update.tool_call_id} can only be added to tool messages. Message {message_id} has role {message.role}."
68
+ )
69
+
70
+ # get update dictionary
71
+ update_data = message_update.model_dump(exclude_unset=True, exclude_none=True)
72
+ # Remove redundant update fields
73
+ update_data = {key: value for key, value in update_data.items() if getattr(message, key) != value}
74
+
75
+ for key, value in update_data.items():
76
+ setattr(message, key, value)
77
+ message.update(db_session=session, actor=actor)
78
+
79
+ return message.to_pydantic()
80
+
81
+ @enforce_types
82
+ def delete_message_by_id(self, message_id: str, actor: PydanticUser) -> bool:
83
+ """Delete a message."""
84
+ with self.session_maker() as session:
85
+ try:
86
+ msg = MessageModel.read(
87
+ db_session=session,
88
+ identifier=message_id,
89
+ actor=actor,
90
+ )
91
+ msg.hard_delete(session, actor=actor)
92
+ except NoResultFound:
93
+ raise ValueError(f"Message with id {message_id} not found.")
94
+
95
+ @enforce_types
96
+ def size(
97
+ self,
98
+ actor: PydanticUser,
99
+ role: Optional[MessageRole] = None,
100
+ agent_id: Optional[str] = None,
101
+ ) -> int:
102
+ """Get the total count of messages with optional filters.
103
+
104
+ Args:
105
+ actor: The user requesting the count
106
+ role: The role of the message
107
+ """
108
+ with self.session_maker() as session:
109
+ return MessageModel.size(db_session=session, actor=actor, role=role, agent_id=agent_id)
110
+
111
+ @enforce_types
112
+ def list_user_messages_for_agent(
113
+ self,
114
+ agent_id: str,
115
+ actor: Optional[PydanticUser] = None,
116
+ cursor: Optional[str] = None,
117
+ start_date: Optional[datetime] = None,
118
+ end_date: Optional[datetime] = None,
119
+ limit: Optional[int] = 50,
120
+ filters: Optional[Dict] = None,
121
+ query_text: Optional[str] = None,
122
+ ) -> List[PydanticMessage]:
123
+ """List user messages with flexible filtering and pagination options.
124
+
125
+ Args:
126
+ cursor: Cursor-based pagination - return records after this ID (exclusive)
127
+ start_date: Filter records created after this date
128
+ end_date: Filter records created before this date
129
+ limit: Maximum number of records to return
130
+ filters: Additional filters to apply
131
+ query_text: Optional text to search for in message content
132
+
133
+ Returns:
134
+ List[PydanticMessage] - List of messages matching the criteria
135
+ """
136
+ message_filters = {"role": "user"}
137
+ if filters:
138
+ message_filters.update(filters)
139
+
140
+ return self.list_messages_for_agent(
141
+ agent_id=agent_id,
142
+ actor=actor,
143
+ cursor=cursor,
144
+ start_date=start_date,
145
+ end_date=end_date,
146
+ limit=limit,
147
+ filters=message_filters,
148
+ query_text=query_text,
149
+ )
150
+
151
+ @enforce_types
152
+ def list_messages_for_agent(
153
+ self,
154
+ agent_id: str,
155
+ actor: Optional[PydanticUser] = None,
156
+ cursor: Optional[str] = None,
157
+ start_date: Optional[datetime] = None,
158
+ end_date: Optional[datetime] = None,
159
+ limit: Optional[int] = 50,
160
+ filters: Optional[Dict] = None,
161
+ query_text: Optional[str] = None,
162
+ ) -> List[PydanticMessage]:
163
+ """List messages with flexible filtering and pagination options.
164
+
165
+ Args:
166
+ cursor: Cursor-based pagination - return records after this ID (exclusive)
167
+ start_date: Filter records created after this date
168
+ end_date: Filter records created before this date
169
+ limit: Maximum number of records to return
170
+ filters: Additional filters to apply
171
+ query_text: Optional text to search for in message content
172
+
173
+ Returns:
174
+ List[PydanticMessage] - List of messages matching the criteria
175
+ """
176
+ with self.session_maker() as session:
177
+ # Start with base filters
178
+ message_filters = {"agent_id": agent_id}
179
+ if actor:
180
+ message_filters.update({"organization_id": actor.organization_id})
181
+ if filters:
182
+ message_filters.update(filters)
183
+
184
+ results = MessageModel.list(
185
+ db_session=session,
186
+ cursor=cursor,
187
+ start_date=start_date,
188
+ end_date=end_date,
189
+ limit=limit,
190
+ query_text=query_text,
191
+ **message_filters,
192
+ )
193
+
194
+ return [msg.to_pydantic() for msg in results]
@@ -30,19 +30,16 @@ class OrganizationManager:
30
30
  def get_organization_by_id(self, org_id: str) -> Optional[PydanticOrganization]:
31
31
  """Fetch an organization by ID."""
32
32
  with self.session_maker() as session:
33
- try:
34
- organization = OrganizationModel.read(db_session=session, identifier=org_id)
35
- return organization.to_pydantic()
36
- except NoResultFound:
37
- return None
33
+ organization = OrganizationModel.read(db_session=session, identifier=org_id)
34
+ return organization.to_pydantic()
38
35
 
39
36
  @enforce_types
40
37
  def create_organization(self, pydantic_org: PydanticOrganization) -> PydanticOrganization:
41
- """Create a new organization. If a name is provided, it is used, otherwise, a random one is generated."""
42
- org = self.get_organization_by_id(pydantic_org.id)
43
- if org:
38
+ """Create a new organization."""
39
+ try:
40
+ org = self.get_organization_by_id(pydantic_org.id)
44
41
  return org
45
- else:
42
+ except NoResultFound:
46
43
  return self._create_organization(pydantic_org=pydantic_org)
47
44
 
48
45
  @enforce_types
@@ -33,7 +33,7 @@ class SandboxConfigManager:
33
33
  def get_or_create_default_sandbox_config(self, sandbox_type: SandboxType, actor: PydanticUser) -> PydanticSandboxConfig:
34
34
  sandbox_config = self.get_sandbox_config_by_type(sandbox_type, actor=actor)
35
35
  if not sandbox_config:
36
- logger.info(f"Creating new sandbox config of type {sandbox_type}, none found for organization {actor.organization_id}.")
36
+ logger.debug(f"Creating new sandbox config of type {sandbox_type}, none found for organization {actor.organization_id}.")
37
37
 
38
38
  # TODO: Add more sandbox types later
39
39
  if sandbox_type == SandboxType.E2B:
@@ -225,6 +225,21 @@ class SandboxConfigManager:
225
225
  )
226
226
  return [env_var.to_pydantic() for env_var in env_vars]
227
227
 
228
+ @enforce_types
229
+ def list_sandbox_env_vars_by_key(
230
+ self, key: str, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50
231
+ ) -> List[PydanticEnvVar]:
232
+ """List all sandbox environment variables with optional pagination."""
233
+ with self.session_maker() as session:
234
+ env_vars = SandboxEnvVarModel.list(
235
+ db_session=session,
236
+ cursor=cursor,
237
+ limit=limit,
238
+ organization_id=actor.organization_id,
239
+ key=key,
240
+ )
241
+ return [env_var.to_pydantic() for env_var in env_vars]
242
+
228
243
  @enforce_types
229
244
  def get_sandbox_env_vars_as_dict(
230
245
  self, sandbox_config_id: str, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50
@@ -141,5 +141,5 @@ class SourceManager:
141
141
  """Delete a file by its ID."""
142
142
  with self.session_maker() as session:
143
143
  file = FileMetadataModel.read(db_session=session, identifier=file_id)
144
- file.delete(db_session=session, actor=actor)
144
+ file.hard_delete(db_session=session, actor=actor)
145
145
  return file.to_pydantic()
@@ -40,8 +40,6 @@ class ToolManager:
40
40
  if tool:
41
41
  # Put to dict and remove fields that should not be reset
42
42
  update_data = pydantic_tool.model_dump(exclude={"module"}, exclude_unset=True, exclude_none=True)
43
- # Remove redundant update fields
44
- update_data = {key: value for key, value in update_data.items() if getattr(tool, key) != value}
45
43
 
46
44
  # If there's anything to update
47
45
  if update_data:
@@ -108,7 +106,7 @@ class ToolManager:
108
106
  tool = ToolModel.read(db_session=session, identifier=tool_id, actor=actor)
109
107
 
110
108
  # Update tool attributes with only the fields that were explicitly set
111
- update_data = tool_update.model_dump(exclude_unset=True, exclude_none=True)
109
+ update_data = tool_update.model_dump(exclude_none=True)
112
110
  for key, value in update_data.items():
113
111
  setattr(tool, key, value)
114
112
 
@@ -122,7 +120,7 @@ class ToolManager:
122
120
  tool.json_schema = new_schema
123
121
 
124
122
  # Save the updated tool to the database
125
- return tool.update(db_session=session, actor=actor)
123
+ return tool.update(db_session=session, actor=actor).to_pydantic()
126
124
 
127
125
  @enforce_types
128
126
  def delete_tool_by_id(self, tool_id: str, actor: PydanticUser) -> None:
@@ -71,7 +71,7 @@ class UserManager:
71
71
  with self.session_maker() as session:
72
72
  # Delete from user table
73
73
  user = UserModel.read(db_session=session, identifier=user_id)
74
- user.delete(session)
74
+ user.hard_delete(session)
75
75
 
76
76
  # TODO: Integrate this via the ORM models for the Agent, Source, and AgentSourceMapping
77
77
  # Cascade delete for related models: Agent, Source, AgentSourceMapping
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.1.dev20241206104246
3
+ Version: 0.6.1.dev20241208104134
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -26,7 +26,7 @@ Requires-Dist: alembic (>=1.13.3,<2.0.0)
26
26
  Requires-Dist: autoflake (>=2.3.0,<3.0.0) ; extra == "dev" or extra == "all"
27
27
  Requires-Dist: black[jupyter] (>=24.2.0,<25.0.0) ; extra == "dev" or extra == "all"
28
28
  Requires-Dist: chromadb (>=0.4.24,<0.5.0)
29
- Requires-Dist: composio-core (>=0.5.34,<0.6.0)
29
+ Requires-Dist: composio-core (>=0.5.51,<0.6.0)
30
30
  Requires-Dist: composio-langchain (>=0.5.28,<0.6.0)
31
31
  Requires-Dist: datasets (>=2.14.6,<3.0.0) ; extra == "dev" or extra == "all"
32
32
  Requires-Dist: demjson3 (>=3.0.6,<4.0.0)
@@ -1,34 +1,33 @@
1
1
  letta/__init__.py,sha256=1hJidwYqfS-iX2V3ZLC2ulm-PYX74k2EMIyzC4Z0pWc,1035
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=r80lyWFX7wjPM5gPcUOxifa4ulO_OfW3M1p0vQbmxYk,78428
3
+ letta/agent.py,sha256=ztqKgMI3l5i-izHNp3XwSv0qwd2Aui57_GbAf9rHyBE,78017
4
4
  letta/agent_store/chroma.py,sha256=-kCEMBFKmqCyFeIETYf7RN-khGddsip2FAhSzNqaC7U,12537
5
- letta/agent_store/db.py,sha256=n15t8qhHfqhtFDxSQg_9uwvMntpWml8Jz_Y-ofL0loQ,23467
6
- letta/agent_store/lancedb.py,sha256=i63d4VZwj9UIOTNs5f0JZ_r5yZD-jKWz4FAH4RMpXOE,5104
5
+ letta/agent_store/db.py,sha256=0AdN1-LpvIUhmiayTwzhKPaXTdlyOILtHGZ7zmS7pPs,20314
7
6
  letta/agent_store/milvus.py,sha256=xUu-D9a6N10MuGJ-R-QWR2IHX77ueqAp88tV4gg9B4M,8470
8
7
  letta/agent_store/qdrant.py,sha256=6_33V-FEDpT9LG5zmr6-3y9slw1YFLswxpahiyMkvHA,7880
9
- letta/agent_store/storage.py,sha256=4gKvMRYBGm9cwyaDOzljxDKgqr4MxGXcC4yGhAdKcAA,6693
8
+ letta/agent_store/storage.py,sha256=YDQTrfgPBa0cMiMuQatk9hcadIUMvA4zKZHx2VKjlak,6475
10
9
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
11
10
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
12
11
  letta/chat_only_agent.py,sha256=606FQybmeN9s04rIFQlDkWOHirrT0p48_3pMKY8d5Ts,4740
13
- letta/cli/cli.py,sha256=fpcpBKEAzKU6o9gSS5pe6YRTkiybIik5CC9mCAVl_bA,16928
12
+ letta/cli/cli.py,sha256=5spd3RZxZ5JukPvyBvGmat8fS97Eb01S58w8MF_3Ybs,16735
14
13
  letta/cli/cli_config.py,sha256=tB0Wgz3O9j6KiCsU1HWfsKmhNM9RqLsAxzxEDFQFGnM,8565
15
14
  letta/cli/cli_load.py,sha256=x4L8s15GwIW13xrhKYFWHo_y-IVGtoPDHWWKcHDRP10,4587
16
15
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- letta/client/client.py,sha256=hQiTmkmddoGONuSlNG0Yrbo1Y2k9VRTRDFAOtHRbOPI,124143
16
+ letta/client/client.py,sha256=lMqOkJxbYHtMPI-2nml4OOilfBXPidNlIjwM7u4xA3c,124171
18
17
  letta/client/streaming.py,sha256=Hh5pjlyrdCuO2V75ZCxSSOCPd3BmHdKFGaIUJC6fBp0,4775
19
18
  letta/client/utils.py,sha256=OJlAKWrldc4I6M1WpcTWNtPJ4wfxlzlZqWLfCozkFtI,2872
20
19
  letta/config.py,sha256=AF4XY6grcu87OLjrWXh1ufnyKWsCL0qER-_9jQCAlU0,18947
21
- letta/constants.py,sha256=C85Bktu1fhj83LYG6fRcWlw-9DtidTEkbSFyaJ4leOU,6838
20
+ letta/constants.py,sha256=l2IyZpVG-d_raFFX5bN6mCbprnnc1IA-z-oCKPoyPSM,6902
22
21
  letta/credentials.py,sha256=D9mlcPsdDWlIIXQQD8wSPE9M_QvsRrb0p3LB5i9OF5Q,5806
23
22
  letta/data_sources/connectors.py,sha256=5VKxfeV-QyUlK1wexLlpgar99dGm6PHxFaEbSeByo_U,9923
24
23
  letta/data_sources/connectors_helper.py,sha256=2TQjCt74fCgT5sw1AP8PalDEk06jPBbhrPG4HVr-WLs,3371
25
24
  letta/embeddings.py,sha256=3vJaQ8RMLLp6yiYZGsthq6Xsu4keb9gp7DYN_2GPBFU,8459
26
25
  letta/errors.py,sha256=mFeTpZP37otDMr68s9hyGOnafJPrWeblQOI79cgP4nQ,3209
27
26
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- letta/functions/function_sets/base.py,sha256=pTLpCdJSTts7i9QV6tBphyBonhDDEbGRy692PzjqO2g,8104
27
+ letta/functions/function_sets/base.py,sha256=anK6XJQlmTu9eC33700Eh7NWxQ0NTLUC2Vxpn6ihvnY,9034
29
28
  letta/functions/function_sets/extras.py,sha256=Jik3UiDqYTm4Lam1XPTvuVjvgUHwIAhopsnbmVhGMBg,4732
30
29
  letta/functions/functions.py,sha256=evH6GKnIJwVVre1Xre2gaSIqREv4eNM4DiWOhn8PMqg,3299
31
- letta/functions/helpers.py,sha256=K84kqAN1RXZIhjb7-btS0C2p-SInYNv6FvSfo-16Y6g,8578
30
+ letta/functions/helpers.py,sha256=fJo4gPvWpkvR7jn0HucRorz4VlpYVqmYsiX1RetnnSY,8569
32
31
  letta/functions/schema_generator.py,sha256=Y0rQjJBI8Z5fSKmT71EGXtHpIvNb3dMM5X00TP89tlY,19330
33
32
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
34
33
  letta/helpers/tool_rule_solver.py,sha256=YCwawbRUQw10ZVR17WYXo8b5roxdGe-B5nNVMqlAgBE,4826
@@ -45,7 +44,7 @@ letta/llm_api/google_ai.py,sha256=xKz9JDZs3m6yzSfcgCAAUD_rjI20BBIINoiSvlcnOw0,17
45
44
  letta/llm_api/helpers.py,sha256=F8xZDZgDojWX5v-0vakyeUQyCyBr1HmzmsITRdOsmVg,13457
46
45
  letta/llm_api/llm_api_tools.py,sha256=h2eudFygI6yFIOaA5Q9GmhiwMPq2mHQyhoSHbn57CCE,16866
47
46
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
48
- letta/llm_api/openai.py,sha256=Z3xNoJPtplzNU5Lj8JkQg8lJkSb18QKIpFTfLRoaK5E,24180
47
+ letta/llm_api/openai.py,sha256=4GEGROTv4vLawSgODnAHCI-DeIWDqrhuxtKrqYzHvso,24160
49
48
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
50
49
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
50
  letta/local_llm/chat_completion_proxy.py,sha256=SiohxsjGTku4vOryOZx7I0t0xoO_sUuhXgoe62fKq3c,12995
@@ -62,7 +61,7 @@ letta/local_llm/llamacpp/api.py,sha256=EZYyZwJ2m544XeEru_qLnJZgXBXNzdrQiA-clbGCh
62
61
  letta/local_llm/llamacpp/settings.py,sha256=1b-k-nZnoNxcDs_S1JGukelLuHDbkwjvwM-GzhcXCj0,507
63
62
  letta/local_llm/llm_chat_completion_wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
63
  letta/local_llm/llm_chat_completion_wrappers/airoboros.py,sha256=28bMI7STGMmi203BGnv5qu5WGyJveRNYjdzFcn2jwDM,19199
65
- letta/local_llm/llm_chat_completion_wrappers/chatml.py,sha256=Y1NqrenhBHE4nAdBzwm6SYVfPUZV3ie2FmuwQzOTaTw,21082
64
+ letta/local_llm/llm_chat_completion_wrappers/chatml.py,sha256=oZlY7-uu3XA9Oc3To8Nz2wwjGUK2M3LMFicbCNwyh2o,21632
66
65
  letta/local_llm/llm_chat_completion_wrappers/configurable_wrapper.py,sha256=ls6OsGMDlsC_l9HoTIgMv6c8LAuE3XjJWuz6kZpz33s,19693
67
66
  letta/local_llm/llm_chat_completion_wrappers/dolphin.py,sha256=7agV-_Ioshsfjuy3VXCB5dfA32zp7u697dQSn6m3dK4,10156
68
67
  letta/local_llm/llm_chat_completion_wrappers/llama3.py,sha256=9cqi-5vibaaCxzBrkVS8lPHPpBi7ZBv3DC6M3ne7ivM,15841
@@ -84,32 +83,32 @@ letta/local_llm/webui/legacy_api.py,sha256=k3H3y4qp2Fs-XmP24iSIEyvq6wjWFWBzklY3-
84
83
  letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1rlcc_-Q1JcU,538
85
84
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
86
85
  letta/log.py,sha256=FxkAk2f8Bl-u9dfImSj1DYnjAsmV6PL3tjTSnEiNP48,2218
87
- letta/main.py,sha256=5guUzYyxID3FDlegk3dNUev7vjPMglcIw-xqdyHdhKI,19175
88
- letta/memory.py,sha256=YupXOvzVJXH59RW4XWBrd7qMNEYaMbtWXCheKeWZwpU,17873
89
- letta/metadata.py,sha256=jv_s2Y6M8aE3bpOOTr-xwBBu58zZHx9tYtAekVa_Dz4,16233
90
- letta/o1_agent.py,sha256=jTMlP7LxR4iUDWaGHMy8SiZtlzn6_RqP0H1HaEWXydQ,3078
91
- letta/offline_memory_agent.py,sha256=loCrbMAvngqVbyng7Qu1Bg-k_RtQL-Lea1QKbeK0vm8,7724
86
+ letta/main.py,sha256=M78MU-12bj-6qyoWz-yNIRsj8qMmwCZB4Ed8LTFfKrc,19135
87
+ letta/memory.py,sha256=R4Z_MYD5ve04FBe2yohux1pzp8MTjOSI1AZ5oLCdGRA,14568
88
+ letta/metadata.py,sha256=zwIe0Sr1Q2g5L2V6Yc5D_t_NG8nhdgleAGQEdaAi2Lw,15165
89
+ letta/o1_agent.py,sha256=aNuv70NmmtKQcfOcd0L4VxHzg7o7xoiU81j1LWok4bk,3164
90
+ letta/offline_memory_agent.py,sha256=369jMxqKMoex9JI269kpaO1Q_JPWLwn-BaiZ6YHc-Fw,7898
92
91
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
92
  letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
94
93
  letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
95
- letta/orm/__init__.py,sha256=bV55IErRhxwPvHHRkIx8DJ7K-ckVBnwavygYNMc4sMQ,459
94
+ letta/orm/__init__.py,sha256=HyH2suMD8-92bZ5paW8AC1o-639AQqwAc_HN8S7mjxI,542
96
95
  letta/orm/agents_tags.py,sha256=Qa7Yt9imL8xbGP57fflccAMy7Z32CQiU_7eZKSSPngc,1119
97
96
  letta/orm/base.py,sha256=K_LpNUURbsj44ycHbzvNXG_n8pBOjf1YvDaikIPDpQA,2716
98
97
  letta/orm/block.py,sha256=xymYeCTJJFkzADW6wjfP2LXNZZN9yg4mCSybbvEEMMM,2356
99
98
  letta/orm/blocks_agents.py,sha256=o6cfblODja7so4444npW0vusqKcvDPp8YJdsWsOePus,1164
100
99
  letta/orm/enums.py,sha256=KfHcFt_fR6GUmSlmfsa-TetvmuRxGESNve8MStRYW64,145
101
100
  letta/orm/errors.py,sha256=nv1HnF3z4-u9m_g7SO5TO5u2nmJN677_n8F0iIjluUI,460
102
- letta/orm/file.py,sha256=FtfZlJLXfac4ntaw3kC0N9VRoD255m8EK4p-pC2lcHk,1519
101
+ letta/orm/file.py,sha256=JafpJhooBtMrmkRG68jT8rFK9mRIQSlYKYjq3VXhTcc,1525
103
102
  letta/orm/job.py,sha256=If-qSTJW4t5h-6Jolw3tS3-xMZEaPIbXe3S0GMf_FXI,1102
104
- letta/orm/mixins.py,sha256=LfwePamGyOwCtAEUm-sZpIBJjODIMe4MnA_JTUcppLs,1155
105
- letta/orm/organization.py,sha256=mliw4q7-SRfRcGIG8paNfCNn6ITTjR7nFalZzlRszqU,2272
103
+ letta/orm/message.py,sha256=IcG2UkwmUCq0PiIlV_U7L0bKynPEahgqgo0luAgtfQo,2538
104
+ letta/orm/mixins.py,sha256=TpP5dFAcGu2VvHZQSt8ymc0UjQhcVp5-Fc2C4v_nUTM,1508
105
+ letta/orm/organization.py,sha256=ZoHow3Tpdh9TXDvB4VZbArbUCgbErFTSQMriYAzulqA,2397
106
106
  letta/orm/sandbox_config.py,sha256=PCMHE-eJPzBT-90OYtXjEMRF4f9JB8AJIGETE7bu-f0,2870
107
107
  letta/orm/source.py,sha256=Ib0XHCMt345RjBSC30A398rZ21W5mA4PXX00XNXyd24,2021
108
- letta/orm/sqlalchemy_base.py,sha256=CmCwVCHVyhzDAd-xIUFh72bzSX-bA0mwvMUD7FrIlUk,10672
108
+ letta/orm/sqlalchemy_base.py,sha256=_uix_6bCC_rZYbTKL_OpldjTgrEv-9l6FL3ysKsgUZU,13877
109
109
  letta/orm/tool.py,sha256=R1I3FGjt8xlW7DPkwV9zlliOcAB3vpphAZTQTsvDBXs,2982
110
110
  letta/orm/tools_agents.py,sha256=mBMGQsTEx_ckfhZb2-2nqbxHBEMhvDXim6w6tFHHWBQ,1195
111
111
  letta/orm/user.py,sha256=bUZzyBQXfR0w7mZAkThPAQE6kKx6W--Rw6uAiPEUW3s,1133
112
- letta/persistence_manager.py,sha256=sEnNdNisK7StqIzG8eIY0YMag6S9hZFbkDfmY7L2Ikc,5268
113
112
  letta/personas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
113
  letta/personas/examples/anna_pa.txt,sha256=zgiNdSNhy1HQy58cF_6RFPzcg2i37F9v38YuL1CW40A,1849
115
114
  letta/personas/examples/google_search_persona.txt,sha256=RyObU80MIk2oeJJDWOK1aX5pHOtbHSSjIrbUpxov240,1194
@@ -148,13 +147,13 @@ letta/schemas/enums.py,sha256=F396hXs57up4Jqj1vwWVknMpoVo7MkccVBALvKGHPpE,1032
148
147
  letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
149
148
  letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
150
149
  letta/schemas/job.py,sha256=vRVVpMCHTxot9uaalLS8RARnqzJWvcLB1XP5XRBioPc,1398
151
- letta/schemas/letta_base.py,sha256=QlCY5BBSjEPNpUvSHDl_P0TXQIPlr7xfhK_2SqKqadQ,3567
150
+ letta/schemas/letta_base.py,sha256=v3OvpVFVUfcuK1lIyTjM0x4fmWeWQw1DdlhKXHBUCz8,3608
152
151
  letta/schemas/letta_message.py,sha256=RuVVtwFbi85yP3dXQxowofQ6cI2cO_CdGtgpHGQzgHc,6563
153
152
  letta/schemas/letta_request.py,sha256=E6OwKiceNffpdGdQMI1qc0jEfpL_e7O9BTzklOkbt6Y,1019
154
153
  letta/schemas/letta_response.py,sha256=vQV5uqe-kq9fc4wCo-sVB_PJt5yUk8DB2zOgHsrmN-k,6189
155
154
  letta/schemas/llm_config.py,sha256=RbgnCaqYd_yl-Xs7t-DEI1NhpKD8WiVWjxcwq5mZd5M,4467
156
155
  letta/schemas/memory.py,sha256=80Y7gqWQQndhNkJ-0j38d2m619gTlfes_qJNA6_ant8,10040
157
- letta/schemas/message.py,sha256=oInRiw5x8gsxX5bylO_g29v8f-yBC-O1oQurluvpJHs,33691
156
+ letta/schemas/message.py,sha256=e6Zwq_2iL81OrdaculzpdNyYtV6iL0R6gU76_ma7efo,33540
158
157
  letta/schemas/openai/chat_completion_request.py,sha256=AOIwgbN3CZKVqkuXeMHeSa53u4h0wVq69t3T_LJ0vIE,3389
159
158
  letta/schemas/openai/chat_completion_response.py,sha256=ub-oVSyLpuJd-5_yzCSIRR8tD3GM83IeDO1c1uAATa4,3970
160
159
  letta/schemas/openai/chat_completions.py,sha256=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrTcYr88WDYzWE,3588
@@ -164,7 +163,7 @@ letta/schemas/organization.py,sha256=d2oN3IK2HeruEHKXwIzCbJ3Fxdi_BEe9JZ8J9aDbHwQ
164
163
  letta/schemas/passage.py,sha256=eYQMxD_XjHAi72jmqcGBU4wM4VZtSU0XK8uhQxxN3Ug,3563
165
164
  letta/schemas/sandbox_config.py,sha256=6om_uU2-cZaPxe6HLo3Kg9OuTzx_Hibk80UQKyGKfP0,5111
166
165
  letta/schemas/source.py,sha256=B1VbaDJV-EGPv1nQXwCx_RAzeAJd50UqP_1m1cIRT8c,2854
167
- letta/schemas/tool.py,sha256=d88nXm9sH6xOH0d6DKiPehRFVUA5TsfkBBzOP7wmIY8,9715
166
+ letta/schemas/tool.py,sha256=jORVFsAS750Pa_sfSudHr-4CTMjcg6DoNuQiIPOeVCQ,10009
168
167
  letta/schemas/tool_rule.py,sha256=pLt-BzgFSrlVO6ipY4kygyvfoM0BWA-XdqhGxso9aKs,1192
169
168
  letta/schemas/tools_agents.py,sha256=DGfmX7qXSBMCjykHyy0FRxgep2tJgYXf1rqDTmP6Tfo,1313
170
169
  letta/schemas/usage.py,sha256=lvn1ooHwLEdv6gwQpw5PBUbcwn_gwdT6HA-fCiix6sY,817
@@ -173,7 +172,7 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
172
  letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
174
173
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
175
174
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
- letta/server/rest_api/app.py,sha256=Kv8luYrKIpI1__6AxjjVriZgDm6KeNWx9r1LO3Vgvbo,8032
175
+ letta/server/rest_api/app.py,sha256=A1BtotZbnqEHpjoNq8U6FtCL27Sk643lPMaHFnciCUo,7951
177
176
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
177
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
179
178
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
@@ -187,24 +186,24 @@ letta/server/rest_api/routers/openai/assistants/threads.py,sha256=g8iu98__tQEMY9
187
186
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
187
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=qFMpxfYIlJ-PW08IQt09RW44u6hwkssdsUT-h_GuOvE,4836
189
188
  letta/server/rest_api/routers/v1/__init__.py,sha256=RZc0fIHNN4BGretjU6_TGK7q49RyV4jfYNudoiK_sUo,762
190
- letta/server/rest_api/routers/v1/agents.py,sha256=Tj7QyHjem_tOgzDzTyEJREDH2rzDgpE6S5azBDrhY_o,24884
191
- letta/server/rest_api/routers/v1/blocks.py,sha256=UCVfMbb8hzOXI6a8OYWKuXyOropIxw6PYKZkwwAh1v0,4880
189
+ letta/server/rest_api/routers/v1/agents.py,sha256=WdqEWNnAjRqYXdDryo_3cDmjLaU30RnbVK24fNmzwxY,24859
190
+ letta/server/rest_api/routers/v1/blocks.py,sha256=hLGwm56xCA09KdEi8P0V3s__pD_yyl07p17cdSfDj8g,4878
192
191
  letta/server/rest_api/routers/v1/health.py,sha256=pKCuVESlVOhGIb4VC4K-H82eZqfghmT6kvj2iOkkKuc,401
193
192
  letta/server/rest_api/routers/v1/jobs.py,sha256=gnu__rjcd9SpKdQkSD_sci-xJYH0fw828PuHMcYwsCw,2678
194
193
  letta/server/rest_api/routers/v1/llms.py,sha256=TcyvSx6MEM3je5F4DysL7ligmssL_pFlJaaO4uL95VY,877
195
194
  letta/server/rest_api/routers/v1/organizations.py,sha256=tyqVzXTpMtk3sKxI3Iz4aS6RhbGEbXDzFBB_CpW18v4,2080
196
195
  letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=4tkTH8z9vpuBiGzxrS_wxkFdznnWZx-U-9F08czHMP8,5004
197
196
  letta/server/rest_api/routers/v1/sources.py,sha256=1zIkopcyHDMarOGJISy5yXpi9-yeBRBitJ6_yiIJGdY,9818
198
- letta/server/rest_api/routers/v1/tools.py,sha256=TP16cpuTF2HYLFZVmabExw9gziB-PtkExtWVkjxrRes,9553
197
+ letta/server/rest_api/routers/v1/tools.py,sha256=ajYUo_cgUBDfm4Ja_EufxSdhBWoAb5N8MOUbAN6bJJY,10791
199
198
  letta/server/rest_api/routers/v1/users.py,sha256=M1wEr2IyHzuRwINYxLXTkrbAH3osLe_cWjzrWrzR1aw,3729
200
199
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
201
- letta/server/rest_api/utils.py,sha256=6c5a_-ZFTlwZ1IuzpRQtqxSG1eD56nNhKhWlrdgBYWk,3103
202
- letta/server/server.py,sha256=6arPhzclk47FL-pRkutnIwhr2U1i-gQOLBUV5p6jVJ4,81783
200
+ letta/server/rest_api/utils.py,sha256=6Z0T0kHIwDAgTIFh38Q1JQ_nhANgdqXcSlsuY41pL6M,3158
201
+ letta/server/server.py,sha256=ti7Q7QwkdJR9idxoriDMwWyzT3iI8QaOPc5H0qgv6u8,81811
203
202
  letta/server/startup.sh,sha256=wTOQOJJZw_Iec57WIu0UW0AVflk0ZMWYZWg8D3T_gSQ,698
204
- letta/server/static_files/assets/index-1b5d1a41.js,sha256=bUkyBXaNVT-Re4gNnQVGRQuxoXXtwizbJ75OryRAdtY,1816165
205
- letta/server/static_files/assets/index-56a3f8c6.css,sha256=VqP4xqJcLheEdnyJFM_gdBTqh4WtLriD4gvnwCrN43g,54450
203
+ letta/server/static_files/assets/index-43ab4d62.css,sha256=Q6tNYu7XNRgkTZau1dVwCQTT4YpLGLF7VgTNzLcMaQI,7613
204
+ letta/server/static_files/assets/index-4848e3d7.js,sha256=XkoX-NW0x1Hb7uTWslfpuPP73MnNDthOdJLHLID9EhM,146806
206
205
  letta/server/static_files/favicon.ico,sha256=DezhLdFSbM8o81wCOZcV3riq7tFUOGQD4h6-vr-HuU0,342
207
- letta/server/static_files/index.html,sha256=rwxD6lUXCAGI3Hdh5tNv1j7Vq_llUlgAUyC_CRZ3m9U,1198
206
+ letta/server/static_files/index.html,sha256=RF-Kt4CbTPJbsHtK30NaWIsdUiBpmJgQsKmE6WwqsBk,1198
208
207
  letta/server/static_files/memgpt_logo_transparent.png,sha256=7l6niNb4MlUILxLlUZPxIE1TEHj_Z9f9XDxoST3d7Vw,85383
209
208
  letta/server/utils.py,sha256=rRvW6L1lzau4u9boamiyZH54lf5tQ91ypXzUW9cfSPA,1667
210
209
  letta/server/ws_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -214,25 +213,26 @@ letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9
214
213
  letta/server/ws_api/server.py,sha256=C2Kv48PCwl46DQFb0ZP30s86KJLQ6dZk2AhWQEZn9pY,6004
215
214
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
215
  letta/services/agents_tags_manager.py,sha256=zNqeXDpaf4dQ77jrRHiQfITdk4FawBzcND-9tWrj8gw,3127
217
- letta/services/block_manager.py,sha256=TrbStwHAREwnybA6jZSkNPe-EYUa5rdiuliPR2PTV-M,5426
216
+ letta/services/block_manager.py,sha256=BmuK0k3yl9byT703syGtZNfjUdM2FkOwlE6bQYIQtjI,5448
218
217
  letta/services/blocks_agents_manager.py,sha256=mfO3EMW9os_E1_r4SRlC2wmBFFLpt8p-yhdOH_Iotaw,5627
219
218
  letta/services/job_manager.py,sha256=FrkSXloke48CZKuzlYdysxM5gKWoTu7FRigPrs_YW4A,3645
220
- letta/services/organization_manager.py,sha256=OfE2_NMmhqXURX4sg7hCOiFQVQpV5ZiPu7J3sboCSYc,3555
219
+ letta/services/message_manager.py,sha256=DjxD4CtyLsJjsOQt-3znslR8htQBqOOuYNvK6RJCrsE,7581
220
+ letta/services/organization_manager.py,sha256=B7BgHkZcAOP1fzbg2fFF8eTfKmqOiGvoojQ8ys7JVY4,3412
221
221
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
222
- letta/services/sandbox_config_manager.py,sha256=9BCu59nHR4nIMFXgFyEMOY2UTmZvBMS3GlDBWWCHB4I,12648
223
- letta/services/source_manager.py,sha256=StX5Wfd7XSCKJet8qExIu3GMoI-eMIbEarAeTv2gq0s,6555
222
+ letta/services/sandbox_config_manager.py,sha256=PqlS47FAYYmiUFd9bUV4W1t4FjhMqiDoh3Blw_1tiCM,13269
223
+ letta/services/source_manager.py,sha256=8TILbVvJx1bopgDbIJCiIguZBw7uyYDFkasZxVos_G8,6560
224
224
  letta/services/tool_execution_sandbox.py,sha256=GTWdfAKIMIuODEFbmReyEYkOnE62uzDF-3FHWee1s3A,21295
225
- letta/services/tool_manager.py,sha256=7c6naDlI8GEvDs4n1LXMVeBn9QdYe4Wy31O7jv_f5Pc,7840
225
+ letta/services/tool_manager.py,sha256=lfrfWyxiFUWcEf-nATHs7r76XWutMYbOPyePs543ZOo,7681
226
226
  letta/services/tool_sandbox_env/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
227
  letta/services/tools_agents_manager.py,sha256=kF6yIsUO154_Q3l-cEeSU56QW-VUr_M6B-9csqhHBkg,4847
228
- letta/services/user_manager.py,sha256=UJa0hqCjz0yXtvrCR8OVBqlSR5lC_Ejn-uG__58zLds,4398
228
+ letta/services/user_manager.py,sha256=cfXgnVlnfqPCk7c-wYRsU3RegHs-4stksk186RW89Do,4403
229
229
  letta/settings.py,sha256=ZcUcwvl7hStawZ0JOA0133jNk3j5qBd7qlFAAaIPsU8,3608
230
230
  letta/streaming_interface.py,sha256=_FPUWy58j50evHcpXyd7zB1wWqeCc71NCFeWh_TBvnw,15736
231
231
  letta/streaming_utils.py,sha256=329fsvj1ZN0r0LpQtmMPZ2vSxkDBIUUwvGHZFkjm2I8,11745
232
232
  letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
233
233
  letta/utils.py,sha256=7FGZYp8JCEtP0PBSfV03Zj4kW3pwV7qpNki4AOU3a94,32913
234
- letta_nightly-0.6.1.dev20241206104246.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
235
- letta_nightly-0.6.1.dev20241206104246.dist-info/METADATA,sha256=LZrJS9Y9Ewunwnq8ZX0OA4ZC1FPeJdfXMXGVX3Msl7g,11459
236
- letta_nightly-0.6.1.dev20241206104246.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
237
- letta_nightly-0.6.1.dev20241206104246.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
238
- letta_nightly-0.6.1.dev20241206104246.dist-info/RECORD,,
234
+ letta_nightly-0.6.1.dev20241208104134.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
235
+ letta_nightly-0.6.1.dev20241208104134.dist-info/METADATA,sha256=7U2XPkfkDwTnSxFhFLJk7uL4ZzLQ5TWc6iX4XZFK7sk,11459
236
+ letta_nightly-0.6.1.dev20241208104134.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
237
+ letta_nightly-0.6.1.dev20241208104134.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
238
+ letta_nightly-0.6.1.dev20241208104134.dist-info/RECORD,,