letta-nightly 0.6.2.dev20241210030340__py3-none-any.whl → 0.6.2.dev20241211031658__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 (43) hide show
  1. letta/agent.py +32 -43
  2. letta/agent_store/db.py +12 -54
  3. letta/agent_store/storage.py +10 -9
  4. letta/cli/cli.py +1 -0
  5. letta/client/client.py +4 -3
  6. letta/config.py +2 -2
  7. letta/data_sources/connectors.py +4 -3
  8. letta/embeddings.py +29 -9
  9. letta/functions/function_sets/base.py +36 -11
  10. letta/metadata.py +13 -2
  11. letta/o1_agent.py +2 -3
  12. letta/offline_memory_agent.py +2 -1
  13. letta/orm/__init__.py +1 -0
  14. letta/orm/file.py +1 -0
  15. letta/orm/mixins.py +12 -2
  16. letta/orm/organization.py +3 -0
  17. letta/orm/passage.py +72 -0
  18. letta/orm/sqlalchemy_base.py +66 -10
  19. letta/orm/sqlite_functions.py +140 -0
  20. letta/orm/user.py +1 -1
  21. letta/schemas/agent.py +4 -3
  22. letta/schemas/letta_message.py +5 -1
  23. letta/schemas/letta_request.py +3 -3
  24. letta/schemas/passage.py +6 -4
  25. letta/schemas/sandbox_config.py +1 -0
  26. letta/schemas/tool_rule.py +0 -3
  27. letta/server/rest_api/app.py +34 -12
  28. letta/server/rest_api/routers/v1/agents.py +20 -7
  29. letta/server/server.py +76 -52
  30. letta/server/static_files/assets/{index-4848e3d7.js → index-048c9598.js} +1 -1
  31. letta/server/static_files/assets/{index-43ab4d62.css → index-0e31b727.css} +1 -1
  32. letta/server/static_files/index.html +2 -2
  33. letta/services/message_manager.py +3 -0
  34. letta/services/passage_manager.py +225 -0
  35. letta/services/source_manager.py +2 -1
  36. letta/services/tool_execution_sandbox.py +19 -7
  37. letta/settings.py +2 -0
  38. {letta_nightly-0.6.2.dev20241210030340.dist-info → letta_nightly-0.6.2.dev20241211031658.dist-info}/METADATA +10 -15
  39. {letta_nightly-0.6.2.dev20241210030340.dist-info → letta_nightly-0.6.2.dev20241211031658.dist-info}/RECORD +42 -40
  40. letta/agent_store/chroma.py +0 -297
  41. {letta_nightly-0.6.2.dev20241210030340.dist-info → letta_nightly-0.6.2.dev20241211031658.dist-info}/LICENSE +0 -0
  42. {letta_nightly-0.6.2.dev20241210030340.dist-info → letta_nightly-0.6.2.dev20241211031658.dist-info}/WHEEL +0 -0
  43. {letta_nightly-0.6.2.dev20241210030340.dist-info → letta_nightly-0.6.2.dev20241211031658.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,225 @@
1
+ from typing import List, Optional, Dict, Tuple
2
+ from letta.constants import MAX_EMBEDDING_DIM
3
+ from datetime import datetime
4
+ import numpy as np
5
+
6
+ from letta.orm.errors import NoResultFound
7
+ from letta.utils import enforce_types
8
+
9
+ from letta.embeddings import embedding_model, parse_and_chunk_text
10
+ from letta.schemas.embedding_config import EmbeddingConfig
11
+
12
+ from letta.orm.passage import Passage as PassageModel
13
+ from letta.orm.sqlalchemy_base import AccessType
14
+ from letta.schemas.agent import AgentState
15
+ from letta.schemas.passage import Passage as PydanticPassage
16
+ from letta.schemas.user import User as PydanticUser
17
+
18
+ class PassageManager:
19
+ """Manager class to handle business logic related to Passages."""
20
+
21
+ def __init__(self):
22
+ from letta.server.server import db_context
23
+ self.session_maker = db_context
24
+
25
+ @enforce_types
26
+ def get_passage_by_id(self, passage_id: str, actor: PydanticUser) -> Optional[PydanticPassage]:
27
+ """Fetch a passage by ID."""
28
+ with self.session_maker() as session:
29
+ try:
30
+ passage = PassageModel.read(db_session=session, identifier=passage_id, actor=actor)
31
+ return passage.to_pydantic()
32
+ except NoResultFound:
33
+ return None
34
+
35
+ @enforce_types
36
+ def create_passage(self, pydantic_passage: PydanticPassage, actor: PydanticUser) -> PydanticPassage:
37
+ """Create a new passage."""
38
+ with self.session_maker() as session:
39
+ passage = PassageModel(**pydantic_passage.model_dump())
40
+ passage.create(session, actor=actor)
41
+ return passage.to_pydantic()
42
+
43
+ @enforce_types
44
+ def create_many_passages(self, passages: List[PydanticPassage], actor: PydanticUser) -> List[PydanticPassage]:
45
+ """Create multiple passages."""
46
+ return [self.create_passage(p, actor) for p in passages]
47
+
48
+ @enforce_types
49
+ def insert_passage(self,
50
+ agent_state: AgentState,
51
+ agent_id: str,
52
+ text: str,
53
+ actor: PydanticUser,
54
+ return_ids: bool = False
55
+ ) -> List[PydanticPassage]:
56
+ """ Insert passage(s) into archival memory """
57
+
58
+ embedding_chunk_size = agent_state.embedding_config.embedding_chunk_size
59
+ embed_model = embedding_model(agent_state.embedding_config)
60
+
61
+ passages = []
62
+
63
+ try:
64
+ # breakup string into passages
65
+ for text in parse_and_chunk_text(text, embedding_chunk_size):
66
+ embedding = embed_model.get_text_embedding(text)
67
+ if isinstance(embedding, dict):
68
+ try:
69
+ embedding = embedding["data"][0]["embedding"]
70
+ except (KeyError, IndexError):
71
+ # TODO as a fallback, see if we can find any lists in the payload
72
+ raise TypeError(
73
+ f"Got back an unexpected payload from text embedding function, type={type(embedding)}, value={embedding}"
74
+ )
75
+ passage = self.create_passage(
76
+ PydanticPassage(
77
+ organization_id=actor.organization_id,
78
+ agent_id=agent_id,
79
+ text=text,
80
+ embedding=embedding,
81
+ embedding_config=agent_state.embedding_config
82
+ ),
83
+ actor=actor
84
+ )
85
+ passages.append(passage)
86
+
87
+ ids = [str(p.id) for p in passages]
88
+
89
+ if return_ids:
90
+ return ids
91
+
92
+ return passages
93
+
94
+ except Exception as e:
95
+ raise e
96
+
97
+ @enforce_types
98
+ def update_passage_by_id(self, passage_id: str, passage: PydanticPassage, actor: PydanticUser, **kwargs) -> Optional[PydanticPassage]:
99
+ """Update a passage."""
100
+ if not passage_id:
101
+ raise ValueError("Passage ID must be provided.")
102
+
103
+ with self.session_maker() as session:
104
+ try:
105
+ # Fetch existing message from database
106
+ curr_passage = PassageModel.read(
107
+ db_session=session,
108
+ identifier=passage_id,
109
+ actor=actor,
110
+ )
111
+ if not curr_passage:
112
+ raise ValueError(f"Passage with id {passage_id} does not exist.")
113
+
114
+ # Update the database record with values from the provided record
115
+ update_data = passage.model_dump(exclude_unset=True, exclude_none=True)
116
+ for key, value in update_data.items():
117
+ setattr(curr_passage, key, value)
118
+
119
+ # Commit changes
120
+ curr_passage.update(session, actor=actor)
121
+ return curr_passage.to_pydantic()
122
+ except NoResultFound:
123
+ return None
124
+
125
+ @enforce_types
126
+ def delete_passage_by_id(self, passage_id: str, actor: PydanticUser) -> bool:
127
+ """Delete a passage."""
128
+ if not passage_id:
129
+ raise ValueError("Passage ID must be provided.")
130
+
131
+ with self.session_maker() as session:
132
+ try:
133
+ passage = PassageModel.read(db_session=session, identifier=passage_id, actor=actor)
134
+ passage.hard_delete(session, actor=actor)
135
+ except NoResultFound:
136
+ raise ValueError(f"Passage with id {passage_id} not found.")
137
+
138
+ @enforce_types
139
+ def list_passages(self,
140
+ actor : PydanticUser,
141
+ agent_id : Optional[str] = None,
142
+ file_id : Optional[str] = None,
143
+ cursor : Optional[str] = None,
144
+ limit : Optional[int] = 50,
145
+ query_text : Optional[str] = None,
146
+ start_date : Optional[datetime] = None,
147
+ end_date : Optional[datetime] = None,
148
+ source_id : Optional[str] = None,
149
+ embed_query : bool = False,
150
+ embedding_config: Optional[EmbeddingConfig] = None
151
+ ) -> List[PydanticPassage]:
152
+ """List passages with pagination."""
153
+ with self.session_maker() as session:
154
+ filters = {"organization_id": actor.organization_id}
155
+ if agent_id:
156
+ filters["agent_id"] = agent_id
157
+ if file_id:
158
+ filters["file_id"] = file_id
159
+ if source_id:
160
+ filters["source_id"] = source_id
161
+
162
+ embedded_text = None
163
+ if embed_query:
164
+ assert embedding_config is not None
165
+
166
+ # Embed the text
167
+ embedded_text = embedding_model(embedding_config).get_text_embedding(query_text)
168
+
169
+ # Pad the embedding with zeros
170
+ embedded_text = np.array(embedded_text)
171
+ embedded_text = np.pad(embedded_text, (0, MAX_EMBEDDING_DIM - embedded_text.shape[0]), mode="constant").tolist()
172
+
173
+ results = PassageModel.list(
174
+ db_session=session,
175
+ cursor=cursor,
176
+ start_date=start_date,
177
+ end_date=end_date,
178
+ limit=limit,
179
+ query_text=query_text if not embedded_text else None,
180
+ query_embedding=embedded_text,
181
+ **filters
182
+ )
183
+ return [p.to_pydantic() for p in results]
184
+
185
+ @enforce_types
186
+ def size(
187
+ self,
188
+ actor : PydanticUser,
189
+ agent_id : Optional[str] = None,
190
+ **kwargs
191
+ ) -> int:
192
+ """Get the total count of messages with optional filters.
193
+
194
+ Args:
195
+ actor : The user requesting the count
196
+ agent_id: The agent ID
197
+ """
198
+ with self.session_maker() as session:
199
+ return PassageModel.size(db_session=session, actor=actor, agent_id=agent_id, **kwargs)
200
+
201
+ def delete_passages(self,
202
+ actor: PydanticUser,
203
+ agent_id: Optional[str] = None,
204
+ file_id: Optional[str] = None,
205
+ start_date: Optional[datetime] = None,
206
+ end_date: Optional[datetime] = None,
207
+ limit: Optional[int] = 50,
208
+ cursor: Optional[str] = None,
209
+ query_text: Optional[str] = None,
210
+ source_id: Optional[str] = None
211
+ ) -> bool:
212
+
213
+ passages = self.list_passages(
214
+ actor=actor,
215
+ agent_id=agent_id,
216
+ file_id=file_id,
217
+ cursor=cursor,
218
+ limit=limit,
219
+ start_date=start_date,
220
+ end_date=end_date,
221
+ query_text=query_text,
222
+ source_id=source_id)
223
+
224
+ for passage in passages:
225
+ self.delete_passage_by_id(passage_id=passage.id, actor=actor)
@@ -64,7 +64,7 @@ class SourceManager:
64
64
  return source.to_pydantic()
65
65
 
66
66
  @enforce_types
67
- def list_sources(self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50) -> List[PydanticSource]:
67
+ def list_sources(self, actor: PydanticUser, cursor: Optional[str] = None, limit: Optional[int] = 50, **kwargs) -> List[PydanticSource]:
68
68
  """List all sources with optional pagination."""
69
69
  with self.session_maker() as session:
70
70
  sources = SourceModel.list(
@@ -72,6 +72,7 @@ class SourceManager:
72
72
  cursor=cursor,
73
73
  limit=limit,
74
74
  organization_id=actor.organization_id,
75
+ **kwargs,
75
76
  )
76
77
  return [source.to_pydantic() for source in sources]
77
78
 
@@ -127,11 +127,12 @@ class ToolExecutionSandbox:
127
127
 
128
128
  # Save the old stdout
129
129
  old_stdout = sys.stdout
130
+ old_stderr = sys.stderr
130
131
  try:
131
132
  if local_configs.use_venv:
132
133
  return self.run_local_dir_sandbox_venv(sbx_config, env, temp_file_path)
133
134
  else:
134
- return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path, old_stdout)
135
+ return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path, old_stdout, old_stderr)
135
136
  except Exception as e:
136
137
  logger.error(f"Executing tool {self.tool_name} has an unexpected error: {e}")
137
138
  logger.error(f"Logging out tool {self.tool_name} auto-generated code for debugging: \n\n{code}")
@@ -139,6 +140,7 @@ class ToolExecutionSandbox:
139
140
  finally:
140
141
  # Clean up the temp file and restore stdout
141
142
  sys.stdout = old_stdout
143
+ sys.stderr = old_stderr
142
144
  os.remove(temp_file_path)
143
145
 
144
146
  def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, str], temp_file_path: str) -> SandboxRunResult:
@@ -201,7 +203,11 @@ class ToolExecutionSandbox:
201
203
  func_result, stdout = self.parse_out_function_results_markers(result.stdout)
202
204
  func_return, agent_state = self.parse_best_effort(func_result)
203
205
  return SandboxRunResult(
204
- func_return=func_return, agent_state=agent_state, stdout=[stdout], sandbox_config_fingerprint=sbx_config.fingerprint()
206
+ func_return=func_return,
207
+ agent_state=agent_state,
208
+ stdout=[stdout],
209
+ stderr=[result.stderr],
210
+ sandbox_config_fingerprint=sbx_config.fingerprint(),
205
211
  )
206
212
  except subprocess.TimeoutExpired:
207
213
  raise TimeoutError(f"Executing tool {self.tool_name} has timed out.")
@@ -213,11 +219,13 @@ class ToolExecutionSandbox:
213
219
  raise e
214
220
 
215
221
  def run_local_dir_sandbox_runpy(
216
- self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str, old_stdout: TextIO
222
+ self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str, old_stdout: TextIO, old_stderr: TextIO
217
223
  ) -> SandboxRunResult:
218
- # Redirect stdout to capture script output
224
+ # Redirect stdout and stderr to capture script output
219
225
  captured_stdout = io.StringIO()
226
+ captured_stderr = io.StringIO()
220
227
  sys.stdout = captured_stdout
228
+ sys.stderr = captured_stderr
221
229
 
222
230
  # Execute the temp file
223
231
  with self.temporary_env_vars(env_vars):
@@ -227,14 +235,17 @@ class ToolExecutionSandbox:
227
235
  func_result = result.get(self.LOCAL_SANDBOX_RESULT_VAR_NAME)
228
236
  func_return, agent_state = self.parse_best_effort(func_result)
229
237
 
230
- # Restore stdout and collect captured output
238
+ # Restore stdout and stderr and collect captured output
231
239
  sys.stdout = old_stdout
240
+ sys.stderr = old_stderr
232
241
  stdout_output = captured_stdout.getvalue()
242
+ stderr_output = captured_stderr.getvalue()
233
243
 
234
244
  return SandboxRunResult(
235
245
  func_return=func_return,
236
246
  agent_state=agent_state,
237
247
  stdout=[stdout_output],
248
+ stderr=[stderr_output],
238
249
  sandbox_config_fingerprint=sbx_config.fingerprint(),
239
250
  )
240
251
 
@@ -294,7 +305,8 @@ class ToolExecutionSandbox:
294
305
  return SandboxRunResult(
295
306
  func_return=func_return,
296
307
  agent_state=agent_state,
297
- stdout=execution.logs.stdout + execution.logs.stderr,
308
+ stdout=execution.logs.stdout,
309
+ stderr=execution.logs.stderr,
298
310
  sandbox_config_fingerprint=sbx_config.fingerprint(),
299
311
  )
300
312
 
@@ -459,7 +471,7 @@ class ToolExecutionSandbox:
459
471
  Generate the code string to call the function.
460
472
 
461
473
  Args:
462
- inject_agent_state (bool): Whether to inject the agent's state as an input into the tool
474
+ inject_agent_state (bool): Whether to inject the axgent's state as an input into the tool
463
475
 
464
476
  Returns:
465
477
  str: Generated code string for calling the tool
letta/settings.py CHANGED
@@ -17,6 +17,8 @@ class ToolSettings(BaseSettings):
17
17
 
18
18
  class ModelSettings(BaseSettings):
19
19
 
20
+ model_config = SettingsConfigDict(env_file='.env')
21
+
20
22
  # env_prefix='my_prefix_'
21
23
 
22
24
  # when we use /completions APIs (instead of /chat/completions), we need to specify a model wrapper
@@ -1,23 +1,20 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.2.dev20241210030340
3
+ Version: 0.6.2.dev20241211031658
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
7
7
  Author-email: contact@letta.com
8
- Requires-Python: >=3.10,<3.13
8
+ Requires-Python: >=3.10,<4.0
9
9
  Classifier: License :: Other/Proprietary License
10
10
  Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.10
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Provides-Extra: all
15
- Provides-Extra: autogen
16
15
  Provides-Extra: cloud-tool-sandbox
17
16
  Provides-Extra: dev
18
17
  Provides-Extra: external-tools
19
- Provides-Extra: milvus
20
- Provides-Extra: ollama
21
18
  Provides-Extra: postgres
22
19
  Provides-Extra: qdrant
23
20
  Provides-Extra: server
@@ -25,7 +22,7 @@ Provides-Extra: tests
25
22
  Requires-Dist: alembic (>=1.13.3,<2.0.0)
26
23
  Requires-Dist: autoflake (>=2.3.0,<3.0.0) ; extra == "dev" or extra == "all"
27
24
  Requires-Dist: black[jupyter] (>=24.2.0,<25.0.0) ; extra == "dev" or extra == "all"
28
- Requires-Dist: chromadb (>=0.4.24,<0.5.0)
25
+ Requires-Dist: brotli (>=1.1.0,<2.0.0)
29
26
  Requires-Dist: composio-core (>=0.5.51,<0.6.0)
30
27
  Requires-Dist: composio-langchain (>=0.5.28,<0.6.0)
31
28
  Requires-Dist: datasets (>=2.14.6,<3.0.0) ; extra == "dev" or extra == "all"
@@ -33,18 +30,19 @@ Requires-Dist: demjson3 (>=3.0.6,<4.0.0)
33
30
  Requires-Dist: docker (>=7.1.0,<8.0.0) ; extra == "external-tools" or extra == "all"
34
31
  Requires-Dist: docstring-parser (>=0.16,<0.17)
35
32
  Requires-Dist: docx2txt (>=0.8,<0.9)
36
- Requires-Dist: e2b-code-interpreter (>=1.0.1,<2.0.0) ; extra == "cloud-tool-sandbox"
37
- Requires-Dist: fastapi (>=0.104.1,<0.105.0) ; extra == "server" or extra == "all"
33
+ Requires-Dist: e2b-code-interpreter (>=1.0.3,<2.0.0) ; extra == "cloud-tool-sandbox"
34
+ Requires-Dist: fastapi (>=0.115.6,<0.116.0) ; extra == "server" or extra == "all"
35
+ Requires-Dist: grpcio (>=1.68.1,<2.0.0)
36
+ Requires-Dist: grpcio-tools (>=1.68.1,<2.0.0)
38
37
  Requires-Dist: html2text (>=2020.1.16,<2021.0.0)
39
- Requires-Dist: httpx (>=0.27.2,<0.28.0)
38
+ Requires-Dist: httpx (>=0.28.0,<0.29.0)
40
39
  Requires-Dist: httpx-sse (>=0.4.0,<0.5.0)
41
40
  Requires-Dist: isort (>=5.13.2,<6.0.0) ; extra == "dev" or extra == "all"
42
41
  Requires-Dist: jinja2 (>=3.1.4,<4.0.0)
43
42
  Requires-Dist: langchain (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "all"
44
43
  Requires-Dist: langchain-community (>=0.3.7,<0.4.0) ; extra == "external-tools" or extra == "all"
45
- Requires-Dist: llama-index (>=0.11.9,<0.12.0)
46
- Requires-Dist: llama-index-embeddings-ollama (>=0.3.1,<0.4.0) ; extra == "ollama" or extra == "all"
47
- Requires-Dist: llama-index-embeddings-openai (>=0.2.5,<0.3.0)
44
+ Requires-Dist: llama-index (>=0.12.2,<0.13.0)
45
+ Requires-Dist: llama-index-embeddings-openai (>=0.3.1,<0.4.0)
48
46
  Requires-Dist: locust (>=2.31.5,<3.0.0) ; extra == "dev" or extra == "all"
49
47
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
50
48
  Requires-Dist: numpy (>=1.26.2,<2.0.0)
@@ -56,11 +54,9 @@ Requires-Dist: pre-commit (>=3.5.0,<4.0.0) ; extra == "dev" or extra == "all"
56
54
  Requires-Dist: prettytable (>=3.9.0,<4.0.0)
57
55
  Requires-Dist: psycopg2 (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "all"
58
56
  Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0) ; extra == "postgres" or extra == "all"
59
- Requires-Dist: pyautogen (==0.2.22) ; extra == "autogen"
60
57
  Requires-Dist: pydantic (>=2.7.4,<2.10.0)
61
58
  Requires-Dist: pydantic-settings (>=2.2.1,<3.0.0)
62
59
  Requires-Dist: pyhumps (>=3.8.0,<4.0.0)
63
- Requires-Dist: pymilvus (>=2.4.3,<3.0.0) ; extra == "milvus"
64
60
  Requires-Dist: pyright (>=1.1.347,<2.0.0) ; extra == "dev" or extra == "all"
65
61
  Requires-Dist: pytest-asyncio (>=0.23.2,<0.24.0) ; extra == "dev" or extra == "all"
66
62
  Requires-Dist: pytest-order (>=1.2.0,<2.0.0) ; extra == "dev" or extra == "all"
@@ -76,7 +72,6 @@ Requires-Dist: sqlalchemy (>=2.0.25,<3.0.0)
76
72
  Requires-Dist: sqlalchemy-json (>=0.7.0,<0.8.0)
77
73
  Requires-Dist: sqlalchemy-utils (>=0.41.2,<0.42.0)
78
74
  Requires-Dist: sqlmodel (>=0.0.16,<0.0.17)
79
- Requires-Dist: tiktoken (>=0.7.0,<0.8.0)
80
75
  Requires-Dist: tqdm (>=4.66.1,<5.0.0)
81
76
  Requires-Dist: typer[all] (>=0.9.0,<0.10.0)
82
77
  Requires-Dist: uvicorn (>=0.24.0.post1,<0.25.0) ; extra == "server" or extra == "all"
@@ -1,30 +1,29 @@
1
1
  letta/__init__.py,sha256=S2_Nsg1zpIrParZLJeOiVVM0JlAKG9zxlIi_-KMBkmI,1035
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=227szNAdtSijOX8iN_2OitpDLTOxiBOkE4JAlhlLkwY,78308
4
- letta/agent_store/chroma.py,sha256=-kCEMBFKmqCyFeIETYf7RN-khGddsip2FAhSzNqaC7U,12537
5
- letta/agent_store/db.py,sha256=0AdN1-LpvIUhmiayTwzhKPaXTdlyOILtHGZ7zmS7pPs,20314
3
+ letta/agent.py,sha256=D4staw-NnTzsG31kV7cvb7fvLIpkeZii1rXsQIRPC0s,78058
4
+ letta/agent_store/db.py,sha256=Rzgodcr-eT6DXnFr5bt4psiVpeH0Gy1BS16Ethf2CHw,19016
6
5
  letta/agent_store/milvus.py,sha256=xUu-D9a6N10MuGJ-R-QWR2IHX77ueqAp88tV4gg9B4M,8470
7
6
  letta/agent_store/qdrant.py,sha256=6_33V-FEDpT9LG5zmr6-3y9slw1YFLswxpahiyMkvHA,7880
8
- letta/agent_store/storage.py,sha256=YDQTrfgPBa0cMiMuQatk9hcadIUMvA4zKZHx2VKjlak,6475
7
+ letta/agent_store/storage.py,sha256=F0kpHr8ALaph630ItxZ1ijYOMNq7P7sRrkP-2LkywVU,6547
9
8
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
10
9
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
11
10
  letta/chat_only_agent.py,sha256=606FQybmeN9s04rIFQlDkWOHirrT0p48_3pMKY8d5Ts,4740
12
- letta/cli/cli.py,sha256=yjopYQj6DrYcRAg9FjD974zOqPUlCjzanD1EsSIRFXE,16832
11
+ letta/cli/cli.py,sha256=w05rgSquJrkT7gq13NplT6Eag0rdF7YG9uMz-WV2INs,16913
13
12
  letta/cli/cli_config.py,sha256=tB0Wgz3O9j6KiCsU1HWfsKmhNM9RqLsAxzxEDFQFGnM,8565
14
13
  letta/cli/cli_load.py,sha256=xFw-CuzjChcIptaqQ1XpDROENt0JSjyPeiQ0nmEeO1k,2706
15
14
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- letta/client/client.py,sha256=hhCn2cA52O2lGjxv0zKYtABKQYBhG_F_SEasKEK5lII,127092
15
+ letta/client/client.py,sha256=x1GAvNhHkrD4f7CyyaTtXDuQ68NoS8tapaY2TRh5Q7o,127162
17
16
  letta/client/streaming.py,sha256=Hh5pjlyrdCuO2V75ZCxSSOCPd3BmHdKFGaIUJC6fBp0,4775
18
17
  letta/client/utils.py,sha256=OJlAKWrldc4I6M1WpcTWNtPJ4wfxlzlZqWLfCozkFtI,2872
19
- letta/config.py,sha256=AF4XY6grcu87OLjrWXh1ufnyKWsCL0qER-_9jQCAlU0,18947
18
+ letta/config.py,sha256=06F-kPu9r6AMOvz5uX6WKVrgE8h6QqSxWni3TT16ZdY,18923
20
19
  letta/constants.py,sha256=l2IyZpVG-d_raFFX5bN6mCbprnnc1IA-z-oCKPoyPSM,6902
21
20
  letta/credentials.py,sha256=D9mlcPsdDWlIIXQQD8wSPE9M_QvsRrb0p3LB5i9OF5Q,5806
22
- letta/data_sources/connectors.py,sha256=5VKxfeV-QyUlK1wexLlpgar99dGm6PHxFaEbSeByo_U,9923
21
+ letta/data_sources/connectors.py,sha256=o6XhyeONu4FB7CM7l9K705M9zV8jE2ExddYy_ZjgYgs,10010
23
22
  letta/data_sources/connectors_helper.py,sha256=2TQjCt74fCgT5sw1AP8PalDEk06jPBbhrPG4HVr-WLs,3371
24
- letta/embeddings.py,sha256=3vJaQ8RMLLp6yiYZGsthq6Xsu4keb9gp7DYN_2GPBFU,8459
23
+ letta/embeddings.py,sha256=XyecUdJaG3ENi5v3wAexVcgpG2g7_oTEEYLgUpm-Zvs,9080
25
24
  letta/errors.py,sha256=Voy_BP0W_M816-vWudKLBlgydRufPPA-Q2PNd-SvZYc,3897
26
25
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- letta/functions/function_sets/base.py,sha256=anK6XJQlmTu9eC33700Eh7NWxQ0NTLUC2Vxpn6ihvnY,9034
26
+ letta/functions/function_sets/base.py,sha256=DxHFODrqEOepjsbWBrwHNqnM_b3AfvNhPCUiaOVDDzU,9599
28
27
  letta/functions/function_sets/extras.py,sha256=Jik3UiDqYTm4Lam1XPTvuVjvgUHwIAhopsnbmVhGMBg,4732
29
28
  letta/functions/functions.py,sha256=evH6GKnIJwVVre1Xre2gaSIqREv4eNM4DiWOhn8PMqg,3299
30
29
  letta/functions/helpers.py,sha256=fJo4gPvWpkvR7jn0HucRorz4VlpYVqmYsiX1RetnnSY,8569
@@ -85,30 +84,32 @@ letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ft
85
84
  letta/log.py,sha256=FxkAk2f8Bl-u9dfImSj1DYnjAsmV6PL3tjTSnEiNP48,2218
86
85
  letta/main.py,sha256=3rvn5rHMpChmgDsYKAH8GX7lLVsIzxLmkPhDJt6nFKA,19067
87
86
  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=1MBU-kSzvZw39_oydDb4L6sYIMAk1HyMV5B-WckiAiY,7793
87
+ letta/metadata.py,sha256=iU2KZewl_oqyB6mjKeSGH33BsvRUPeWb1K_qRgme5jo,15507
88
+ letta/o1_agent.py,sha256=Jbc4Id15tMQ_1ek74hxRUJdfTegmsaIHQyRNc31g6dA,3092
89
+ letta/offline_memory_agent.py,sha256=Pa4HmKMFYhmkzl6SyHHtHpdYIZkrJqbG0-fwPAU6Muo,7912
91
90
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
91
  letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
93
92
  letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
94
- letta/orm/__init__.py,sha256=HyH2suMD8-92bZ5paW8AC1o-639AQqwAc_HN8S7mjxI,542
93
+ letta/orm/__init__.py,sha256=NswamGS2dTrzCmwALtKu-Jn5LnVE6w6niuptYnXFQFc,580
95
94
  letta/orm/agents_tags.py,sha256=Qa7Yt9imL8xbGP57fflccAMy7Z32CQiU_7eZKSSPngc,1119
96
95
  letta/orm/base.py,sha256=K_LpNUURbsj44ycHbzvNXG_n8pBOjf1YvDaikIPDpQA,2716
97
96
  letta/orm/block.py,sha256=xymYeCTJJFkzADW6wjfP2LXNZZN9yg4mCSybbvEEMMM,2356
98
97
  letta/orm/blocks_agents.py,sha256=o6cfblODja7so4444npW0vusqKcvDPp8YJdsWsOePus,1164
99
98
  letta/orm/enums.py,sha256=KfHcFt_fR6GUmSlmfsa-TetvmuRxGESNve8MStRYW64,145
100
99
  letta/orm/errors.py,sha256=nv1HnF3z4-u9m_g7SO5TO5u2nmJN677_n8F0iIjluUI,460
101
- letta/orm/file.py,sha256=JafpJhooBtMrmkRG68jT8rFK9mRIQSlYKYjq3VXhTcc,1525
100
+ letta/orm/file.py,sha256=xUhWGBiYeOG0xL_-N2lzk135Rhm2IEXLPTw1wdgeyPw,1659
102
101
  letta/orm/job.py,sha256=If-qSTJW4t5h-6Jolw3tS3-xMZEaPIbXe3S0GMf_FXI,1102
103
102
  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
103
+ letta/orm/mixins.py,sha256=xXPpOBvq5XuxiPOHS1aSc6j1UVpxookOCXMLnrxI6cM,1783
104
+ letta/orm/organization.py,sha256=LmF2UrA9xS6ljTM1jei6AU8irXPIhemupfQ51f_u0Ck,2543
105
+ letta/orm/passage.py,sha256=4LxiKNIJz_EVgXlcY1ijU38LvkCUvXD1QQ9LS4jF5MY,2942
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=Wgmy9QAiLW1sS7jm3rtow8HWtdwkPLvRJpDEp1VN4LE,13878
108
+ letta/orm/sqlalchemy_base.py,sha256=AmFfyNZAT7HhdNuBXMbjmqqSjR2W7lVu3FTRreZbYhg,16543
109
+ letta/orm/sqlite_functions.py,sha256=PVJXVw_e3cC5yIWkfsCP_yBjuXwIniLEGdXP6lx6Wgs,4380
109
110
  letta/orm/tool.py,sha256=seND1kw-GvdtIumGDrsUH0EtE7F59YUzK-XYenOZ4vE,3070
110
111
  letta/orm/tools_agents.py,sha256=mBMGQsTEx_ckfhZb2-2nqbxHBEMhvDXim6w6tFHHWBQ,1195
111
- letta/orm/user.py,sha256=bUZzyBQXfR0w7mZAkThPAQE6kKx6W--Rw6uAiPEUW3s,1133
112
+ letta/orm/user.py,sha256=0qdnBQiwXx3TGQLZKIGiI2WWyt0VceA8s5FRcRt7St0,1163
112
113
  letta/personas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
114
  letta/personas/examples/anna_pa.txt,sha256=zgiNdSNhy1HQy58cF_6RFPzcg2i37F9v38YuL1CW40A,1849
114
115
  letta/personas/examples/google_search_persona.txt,sha256=RyObU80MIk2oeJJDWOK1aX5pHOtbHSSjIrbUpxov240,1194
@@ -137,7 +138,7 @@ letta/prompts/system/memgpt_offline_memory.txt,sha256=rWEJeF-6aiinjkJM9hgLUYCmlE
137
138
  letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7GpBq6crxb8bYedQfJ0ADoPgg,3949
138
139
  letta/providers.py,sha256=0j6WPRn70WNSOjWS7smhTI3ZZOlfVAVF0ZFcrdQDmMY,25321
139
140
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
- letta/schemas/agent.py,sha256=5nL4YSvuVp2RxJ5lbpTdKOFB-DntnFwncqcRWREbfkQ,8514
141
+ letta/schemas/agent.py,sha256=BxUuewMX3TLLvcOMV_A9gmauDlaG2rIidl8DRZvGypE,8592
141
142
  letta/schemas/agents_tags.py,sha256=9DGr8fN2DHYdWvZ_qcXmrKI0w7YKCGz2lfEcrX2KAkI,1130
142
143
  letta/schemas/api_key.py,sha256=u07yzzMn-hBAHZIIKbWY16KsgiFjSNR8lAghpMUo3_4,682
143
144
  letta/schemas/block.py,sha256=pVDH8jr5r-oxdX4cK9dX2wXyLBzgGKQOBWOzqZSeBog,5944
@@ -148,8 +149,8 @@ letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
148
149
  letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
149
150
  letta/schemas/job.py,sha256=vRVVpMCHTxot9uaalLS8RARnqzJWvcLB1XP5XRBioPc,1398
150
151
  letta/schemas/letta_base.py,sha256=v3OvpVFVUfcuK1lIyTjM0x4fmWeWQw1DdlhKXHBUCz8,3608
151
- letta/schemas/letta_message.py,sha256=RuVVtwFbi85yP3dXQxowofQ6cI2cO_CdGtgpHGQzgHc,6563
152
- letta/schemas/letta_request.py,sha256=E6OwKiceNffpdGdQMI1qc0jEfpL_e7O9BTzklOkbt6Y,1019
152
+ letta/schemas/letta_message.py,sha256=fBPKrHBRS9eTo8NAmLiaP5TNJATsrVn9QCxYmD6a7UY,6833
153
+ letta/schemas/letta_request.py,sha256=Hfb66FB1tXmrpEX4_yLQVfTrTSMbPYeEvZY-vqW9Tj8,981
153
154
  letta/schemas/letta_response.py,sha256=vQV5uqe-kq9fc4wCo-sVB_PJt5yUk8DB2zOgHsrmN-k,6189
154
155
  letta/schemas/llm_config.py,sha256=RbgnCaqYd_yl-Xs7t-DEI1NhpKD8WiVWjxcwq5mZd5M,4467
155
156
  letta/schemas/memory.py,sha256=80Y7gqWQQndhNkJ-0j38d2m619gTlfes_qJNA6_ant8,10040
@@ -160,11 +161,11 @@ letta/schemas/openai/chat_completions.py,sha256=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrT
160
161
  letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNosmLVSuhXYa_xU,357
161
162
  letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
162
163
  letta/schemas/organization.py,sha256=d2oN3IK2HeruEHKXwIzCbJ3Fxdi_BEe9JZ8J9aDbHwQ,698
163
- letta/schemas/passage.py,sha256=eYQMxD_XjHAi72jmqcGBU4wM4VZtSU0XK8uhQxxN3Ug,3563
164
- letta/schemas/sandbox_config.py,sha256=6om_uU2-cZaPxe6HLo3Kg9OuTzx_Hibk80UQKyGKfP0,5111
164
+ letta/schemas/passage.py,sha256=HeplPyKzcy4d8DLnjfIVukXRMHMZdGkerQY65RN70FI,3682
165
+ letta/schemas/sandbox_config.py,sha256=A-pcBcrpnxp-XJ0OB1ferYu8hGtDkR2YDOa8FzDr0C0,5217
165
166
  letta/schemas/source.py,sha256=B1VbaDJV-EGPv1nQXwCx_RAzeAJd50UqP_1m1cIRT8c,2854
166
167
  letta/schemas/tool.py,sha256=_9_JkGSlIn2PCbyJ18aQrNueZgxHFUT093GcJSWYqT4,10346
167
- letta/schemas/tool_rule.py,sha256=pLt-BzgFSrlVO6ipY4kygyvfoM0BWA-XdqhGxso9aKs,1192
168
+ letta/schemas/tool_rule.py,sha256=jVGdGsp2K-qnrcaWF3WjCSvxpDlF2wVxeNMXzmoYLtc,1072
168
169
  letta/schemas/tools_agents.py,sha256=DGfmX7qXSBMCjykHyy0FRxgep2tJgYXf1rqDTmP6Tfo,1313
169
170
  letta/schemas/usage.py,sha256=lvn1ooHwLEdv6gwQpw5PBUbcwn_gwdT6HA-fCiix6sY,817
170
171
  letta/schemas/user.py,sha256=V32Tgl6oqB3KznkxUz12y7agkQicjzW7VocSpj78i6Q,1526
@@ -172,7 +173,7 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
173
  letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
173
174
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
174
175
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
- letta/server/rest_api/app.py,sha256=i-h-DXj_DpADql9JSaY0ZvvhWV-SOeQaJiXfFqOOWGg,9152
176
+ letta/server/rest_api/app.py,sha256=GG5pfsgzqljS2TCy2WVTyo70pgr-yFJm4M1hAYaM-9U,10177
176
177
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
178
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
178
179
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
@@ -186,7 +187,7 @@ letta/server/rest_api/routers/openai/assistants/threads.py,sha256=g8iu98__tQEMY9
186
187
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
188
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=qFMpxfYIlJ-PW08IQt09RW44u6hwkssdsUT-h_GuOvE,4836
188
189
  letta/server/rest_api/routers/v1/__init__.py,sha256=RZc0fIHNN4BGretjU6_TGK7q49RyV4jfYNudoiK_sUo,762
189
- letta/server/rest_api/routers/v1/agents.py,sha256=18x44MxYBvGQHmSKF1HQ-dlETQEOyetPFC1yoxEqObw,27891
190
+ letta/server/rest_api/routers/v1/agents.py,sha256=qeBtbZCxBvJuUz64ih3ucKOFPyJK1u3-eeUFqsqTB2w,28380
190
191
  letta/server/rest_api/routers/v1/blocks.py,sha256=hLGwm56xCA09KdEi8P0V3s__pD_yyl07p17cdSfDj8g,4878
191
192
  letta/server/rest_api/routers/v1/health.py,sha256=pKCuVESlVOhGIb4VC4K-H82eZqfghmT6kvj2iOkkKuc,401
192
193
  letta/server/rest_api/routers/v1/jobs.py,sha256=gnu__rjcd9SpKdQkSD_sci-xJYH0fw828PuHMcYwsCw,2678
@@ -198,12 +199,12 @@ letta/server/rest_api/routers/v1/tools.py,sha256=ajYUo_cgUBDfm4Ja_EufxSdhBWoAb5N
198
199
  letta/server/rest_api/routers/v1/users.py,sha256=M1wEr2IyHzuRwINYxLXTkrbAH3osLe_cWjzrWrzR1aw,3729
199
200
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
200
201
  letta/server/rest_api/utils.py,sha256=6Z0T0kHIwDAgTIFh38Q1JQ_nhANgdqXcSlsuY41pL6M,3158
201
- letta/server/server.py,sha256=3sgoeetKRww5gPZyWiKhbMkvhyWPLAnI6A1NYBoW-YI,81922
202
+ letta/server/server.py,sha256=FrZy8eM0dC-9q5mrpoCFB8eXdAsxXInjHoOQNvP76Us,83300
202
203
  letta/server/startup.sh,sha256=722uKJWB2C4q3vjn39De2zzPacaZNw_1fN1SpLGjKIo,1569
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
204
+ letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
205
+ letta/server/static_files/assets/index-0e31b727.css,sha256=DjG3J3RSFLcinzoisOYYLiyTAIe5Uaxge3HE-DmQIsU,7688
205
206
  letta/server/static_files/favicon.ico,sha256=DezhLdFSbM8o81wCOZcV3riq7tFUOGQD4h6-vr-HuU0,342
206
- letta/server/static_files/index.html,sha256=RF-Kt4CbTPJbsHtK30NaWIsdUiBpmJgQsKmE6WwqsBk,1198
207
+ letta/server/static_files/index.html,sha256=-9bodsoqpeSavIpNlaM3Z36_xjaotjXPCLLq9J8xFWg,1198
207
208
  letta/server/static_files/memgpt_logo_transparent.png,sha256=7l6niNb4MlUILxLlUZPxIE1TEHj_Z9f9XDxoST3d7Vw,85383
208
209
  letta/server/utils.py,sha256=rRvW6L1lzau4u9boamiyZH54lf5tQ91ypXzUW9cfSPA,1667
209
210
  letta/server/ws_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -216,23 +217,24 @@ letta/services/agents_tags_manager.py,sha256=zNqeXDpaf4dQ77jrRHiQfITdk4FawBzcND-
216
217
  letta/services/block_manager.py,sha256=BmuK0k3yl9byT703syGtZNfjUdM2FkOwlE6bQYIQtjI,5448
217
218
  letta/services/blocks_agents_manager.py,sha256=mfO3EMW9os_E1_r4SRlC2wmBFFLpt8p-yhdOH_Iotaw,5627
218
219
  letta/services/job_manager.py,sha256=FrkSXloke48CZKuzlYdysxM5gKWoTu7FRigPrs_YW4A,3645
219
- letta/services/message_manager.py,sha256=DjxD4CtyLsJjsOQt-3znslR8htQBqOOuYNvK6RJCrsE,7581
220
+ letta/services/message_manager.py,sha256=ucFJLbK835YSfEENoxdKB3wPZgO-NYFO9EvDV0W-sc0,7682
220
221
  letta/services/organization_manager.py,sha256=B7BgHkZcAOP1fzbg2fFF8eTfKmqOiGvoojQ8ys7JVY4,3412
222
+ letta/services/passage_manager.py,sha256=1z3tzIm3jm1DQZPfQap1wggzmaOh_Pwj7Y4H27b52-I,8956
221
223
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
222
224
  letta/services/sandbox_config_manager.py,sha256=PqlS47FAYYmiUFd9bUV4W1t4FjhMqiDoh3Blw_1tiCM,13269
223
- letta/services/source_manager.py,sha256=8TILbVvJx1bopgDbIJCiIguZBw7uyYDFkasZxVos_G8,6560
224
- letta/services/tool_execution_sandbox.py,sha256=GTWdfAKIMIuODEFbmReyEYkOnE62uzDF-3FHWee1s3A,21295
225
+ letta/services/source_manager.py,sha256=yfb6fYcuoit7d4-w62Mip4fpPbpl8EmTSQ-A49o3FeA,6596
226
+ letta/services/tool_execution_sandbox.py,sha256=MjDhtwO_riee7tBfsl1lY2_-zq_8_8ae7cuF9ougVMc,21726
225
227
  letta/services/tool_manager.py,sha256=lfrfWyxiFUWcEf-nATHs7r76XWutMYbOPyePs543ZOo,7681
226
228
  letta/services/tool_sandbox_env/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
229
  letta/services/tools_agents_manager.py,sha256=kF6yIsUO154_Q3l-cEeSU56QW-VUr_M6B-9csqhHBkg,4847
228
230
  letta/services/user_manager.py,sha256=cfXgnVlnfqPCk7c-wYRsU3RegHs-4stksk186RW89Do,4403
229
- letta/settings.py,sha256=ZcUcwvl7hStawZ0JOA0133jNk3j5qBd7qlFAAaIPsU8,3608
231
+ letta/settings.py,sha256=IBODJU3ZxFQAgzpB-nZtBbYuak6ad9rwhjLWv9oCgBo,3664
230
232
  letta/streaming_interface.py,sha256=_FPUWy58j50evHcpXyd7zB1wWqeCc71NCFeWh_TBvnw,15736
231
233
  letta/streaming_utils.py,sha256=329fsvj1ZN0r0LpQtmMPZ2vSxkDBIUUwvGHZFkjm2I8,11745
232
234
  letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
233
235
  letta/utils.py,sha256=L8c6S77gyMYFgVP6ncGRaNbGjWtg6BOU_whI1vjt9Ts,32915
234
- letta_nightly-0.6.2.dev20241210030340.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
235
- letta_nightly-0.6.2.dev20241210030340.dist-info/METADATA,sha256=rDMf6d3sIU9YD69kVu5go6wdd9J2Zb77t05v3Vu7fho,11459
236
- letta_nightly-0.6.2.dev20241210030340.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
237
- letta_nightly-0.6.2.dev20241210030340.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
238
- letta_nightly-0.6.2.dev20241210030340.dist-info/RECORD,,
236
+ letta_nightly-0.6.2.dev20241211031658.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
237
+ letta_nightly-0.6.2.dev20241211031658.dist-info/METADATA,sha256=xG8Iw6NE0rq7sAO3scI-MD8XpG2u280xVoGmWVeoZxU,11212
238
+ letta_nightly-0.6.2.dev20241211031658.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
239
+ letta_nightly-0.6.2.dev20241211031658.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
240
+ letta_nightly-0.6.2.dev20241211031658.dist-info/RECORD,,