letta-nightly 0.6.4.dev20241216104246__py3-none-any.whl → 0.6.5.dev20241218055539__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 (41) hide show
  1. letta/__init__.py +1 -1
  2. letta/agent.py +95 -101
  3. letta/client/client.py +1 -0
  4. letta/constants.py +6 -1
  5. letta/embeddings.py +3 -9
  6. letta/functions/function_sets/base.py +11 -57
  7. letta/functions/schema_generator.py +2 -6
  8. letta/llm_api/anthropic.py +38 -13
  9. letta/llm_api/llm_api_tools.py +12 -1
  10. letta/local_llm/function_parser.py +2 -2
  11. letta/orm/__init__.py +1 -1
  12. letta/orm/agent.py +19 -1
  13. letta/orm/errors.py +8 -0
  14. letta/orm/file.py +3 -2
  15. letta/orm/mixins.py +3 -14
  16. letta/orm/organization.py +19 -3
  17. letta/orm/passage.py +59 -23
  18. letta/orm/source.py +4 -0
  19. letta/orm/sqlalchemy_base.py +25 -18
  20. letta/prompts/system/memgpt_modified_chat.txt +1 -1
  21. letta/prompts/system/memgpt_modified_o1.txt +1 -1
  22. letta/providers.py +2 -0
  23. letta/schemas/agent.py +35 -0
  24. letta/schemas/embedding_config.py +20 -2
  25. letta/schemas/passage.py +1 -1
  26. letta/schemas/sandbox_config.py +2 -1
  27. letta/server/rest_api/app.py +43 -5
  28. letta/server/rest_api/routers/v1/tools.py +1 -1
  29. letta/server/rest_api/utils.py +24 -5
  30. letta/server/server.py +105 -164
  31. letta/server/ws_api/server.py +1 -1
  32. letta/services/agent_manager.py +344 -9
  33. letta/services/passage_manager.py +76 -100
  34. letta/services/tool_execution_sandbox.py +54 -45
  35. letta/settings.py +10 -5
  36. letta/utils.py +8 -0
  37. {letta_nightly-0.6.4.dev20241216104246.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/METADATA +6 -6
  38. {letta_nightly-0.6.4.dev20241216104246.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/RECORD +41 -41
  39. {letta_nightly-0.6.4.dev20241216104246.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/LICENSE +0 -0
  40. {letta_nightly-0.6.4.dev20241216104246.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/WHEEL +0 -0
  41. {letta_nightly-0.6.4.dev20241216104246.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/entry_points.txt +0 -0
@@ -10,16 +10,17 @@ import tempfile
10
10
  import traceback
11
11
  import uuid
12
12
  import venv
13
- from typing import Any, Dict, Optional, TextIO
13
+ from typing import Any, Dict, Optional
14
14
 
15
15
  from letta.log import get_logger
16
16
  from letta.schemas.agent import AgentState
17
17
  from letta.schemas.sandbox_config import SandboxConfig, SandboxRunResult, SandboxType
18
18
  from letta.schemas.tool import Tool
19
+ from letta.schemas.user import User
19
20
  from letta.services.sandbox_config_manager import SandboxConfigManager
20
21
  from letta.services.tool_manager import ToolManager
21
- from letta.services.user_manager import UserManager
22
22
  from letta.settings import tool_settings
23
+ from letta.utils import get_friendly_error_msg
23
24
 
24
25
  logger = get_logger(__name__)
25
26
 
@@ -37,14 +38,10 @@ class ToolExecutionSandbox:
37
38
  # We make this a long random string to avoid collisions with any variables in the user's code
38
39
  LOCAL_SANDBOX_RESULT_VAR_NAME = "result_ZQqiequkcFwRwwGQMqkt"
39
40
 
40
- def __init__(self, tool_name: str, args: dict, user_id: str, force_recreate=False, tool_object: Optional[Tool] = None):
41
+ def __init__(self, tool_name: str, args: dict, user: User, force_recreate=False, tool_object: Optional[Tool] = None):
41
42
  self.tool_name = tool_name
42
43
  self.args = args
43
-
44
- # Get the user
45
- # This user corresponds to the agent_state's user_id field
46
- # agent_state is the state of the agent that invoked this run
47
- self.user = UserManager().get_user_by_id(user_id=user_id)
44
+ self.user = user
48
45
 
49
46
  # If a tool object is provided, we use it directly, otherwise pull via name
50
47
  if tool_object is not None:
@@ -79,11 +76,11 @@ class ToolExecutionSandbox:
79
76
  logger.debug(f"Using local sandbox to execute {self.tool_name}")
80
77
  result = self.run_local_dir_sandbox(agent_state=agent_state)
81
78
 
82
- # Log out any stdout from the tool run
83
- logger.debug(f"Executed tool '{self.tool_name}', logging stdout from tool run: \n")
84
- for log_line in result.stdout:
79
+ # Log out any stdout/stderr from the tool run
80
+ logger.debug(f"Executed tool '{self.tool_name}', logging output from tool run: \n")
81
+ for log_line in (result.stdout or []) + (result.stderr or []):
85
82
  logger.debug(f"{log_line}")
86
- logger.debug(f"Ending stdout log from tool run.")
83
+ logger.debug(f"Ending output log from tool run.")
87
84
 
88
85
  # Return result
89
86
  return result
@@ -126,30 +123,24 @@ class ToolExecutionSandbox:
126
123
  temp_file.flush()
127
124
  temp_file_path = temp_file.name
128
125
 
129
- # Save the old stdout
130
- old_stdout = sys.stdout
131
- old_stderr = sys.stderr
132
126
  try:
133
127
  if local_configs.use_venv:
134
128
  return self.run_local_dir_sandbox_venv(sbx_config, env, temp_file_path)
135
129
  else:
136
- return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path, old_stdout, old_stderr)
130
+ return self.run_local_dir_sandbox_runpy(sbx_config, env_vars, temp_file_path)
137
131
  except Exception as e:
138
132
  logger.error(f"Executing tool {self.tool_name} has an unexpected error: {e}")
139
133
  logger.error(f"Logging out tool {self.tool_name} auto-generated code for debugging: \n\n{code}")
140
134
  raise e
141
135
  finally:
142
- # Clean up the temp file and restore stdout
143
- sys.stdout = old_stdout
144
- sys.stderr = old_stderr
136
+ # Clean up the temp file
145
137
  os.remove(temp_file_path)
146
138
 
147
139
  def run_local_dir_sandbox_venv(self, sbx_config: SandboxConfig, env: Dict[str, str], temp_file_path: str) -> SandboxRunResult:
148
140
  local_configs = sbx_config.get_local_config()
149
141
  venv_path = os.path.join(local_configs.sandbox_dir, local_configs.venv_name)
150
142
 
151
- # Safety checks for the venv
152
- # Verify that the venv path exists and is a directory
143
+ # Safety checks for the venv: verify that the venv path exists and is a directory
153
144
  if not os.path.isdir(venv_path):
154
145
  logger.warning(f"Virtual environment directory does not exist at: {venv_path}, creating one now...")
155
146
  self.create_venv_for_local_sandbox(sandbox_dir_path=local_configs.sandbox_dir, venv_path=venv_path, env=env)
@@ -180,27 +171,42 @@ class ToolExecutionSandbox:
180
171
  return SandboxRunResult(
181
172
  func_return=func_return,
182
173
  agent_state=agent_state,
183
- stdout=[stdout],
184
- stderr=[result.stderr],
174
+ stdout=[stdout] if stdout else [],
175
+ stderr=[result.stderr] if result.stderr else [],
176
+ status="success",
185
177
  sandbox_config_fingerprint=sbx_config.fingerprint(),
186
178
  )
187
179
 
188
- except subprocess.TimeoutExpired:
189
- raise TimeoutError(f"Executing tool {self.tool_name} has timed out.")
190
180
  except subprocess.CalledProcessError as e:
191
181
  logger.error(f"Executing tool {self.tool_name} has process error: {e}")
192
- raise e
182
+ func_return = get_friendly_error_msg(
183
+ function_name=self.tool_name,
184
+ exception_name=type(e).__name__,
185
+ exception_message=str(e),
186
+ )
187
+ return SandboxRunResult(
188
+ func_return=func_return,
189
+ agent_state=None,
190
+ stdout=[e.stdout] if e.stdout else [],
191
+ stderr=[e.stderr] if e.stderr else [],
192
+ status="error",
193
+ sandbox_config_fingerprint=sbx_config.fingerprint(),
194
+ )
195
+
196
+ except subprocess.TimeoutExpired:
197
+ raise TimeoutError(f"Executing tool {self.tool_name} has timed out.")
198
+
193
199
  except Exception as e:
194
200
  logger.error(f"Executing tool {self.tool_name} has an unexpected error: {e}")
195
201
  raise e
196
-
197
202
 
198
- def run_local_dir_sandbox_runpy(
199
- self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str, old_stdout: TextIO, old_stderr: TextIO
200
- ) -> SandboxRunResult:
201
- func_return, agent_state, error_msg = None, None, None
203
+ def run_local_dir_sandbox_runpy(self, sbx_config: SandboxConfig, env_vars: Dict[str, str], temp_file_path: str) -> SandboxRunResult:
204
+ status = "success"
205
+ agent_state, stderr = None, None
202
206
 
203
207
  # Redirect stdout and stderr to capture script output
208
+ old_stdout = sys.stdout
209
+ old_stderr = sys.stderr
204
210
  captured_stdout, captured_stderr = io.StringIO(), io.StringIO()
205
211
  sys.stdout = captured_stdout
206
212
  sys.stderr = captured_stderr
@@ -215,27 +221,28 @@ class ToolExecutionSandbox:
215
221
  func_return, agent_state = self.parse_best_effort(func_result)
216
222
 
217
223
  except Exception as e:
224
+ func_return = get_friendly_error_msg(function_name=self.tool_name, exception_name=type(e).__name__, exception_message=str(e))
218
225
  traceback.print_exc(file=sys.stderr)
219
- error_msg = f"{type(e).__name__}: {str(e)}"
226
+ status = "error"
220
227
 
221
228
  # Restore stdout and stderr and collect captured output
222
229
  sys.stdout = old_stdout
223
230
  sys.stderr = old_stderr
224
- stdout_output = [captured_stdout.getvalue()]
225
- stderr_output = [captured_stderr.getvalue()]
226
- stderr_output.append(error_msg if error_msg else '')
231
+ stdout_output = [captured_stdout.getvalue()] if captured_stdout.getvalue() else []
232
+ stderr_output = [captured_stderr.getvalue()] if captured_stderr.getvalue() else []
227
233
 
228
234
  return SandboxRunResult(
229
235
  func_return=func_return,
230
236
  agent_state=agent_state,
231
237
  stdout=stdout_output,
232
238
  stderr=stderr_output,
239
+ status=status,
233
240
  sandbox_config_fingerprint=sbx_config.fingerprint(),
234
241
  )
235
242
 
236
243
  def parse_out_function_results_markers(self, text: str):
237
244
  if self.LOCAL_SANDBOX_RESULT_START_MARKER not in text:
238
- return '', text
245
+ return "", text
239
246
  marker_len = len(self.LOCAL_SANDBOX_RESULT_START_MARKER)
240
247
  start_index = text.index(self.LOCAL_SANDBOX_RESULT_START_MARKER) + marker_len
241
248
  end_index = text.index(self.LOCAL_SANDBOX_RESULT_END_MARKER)
@@ -280,20 +287,24 @@ class ToolExecutionSandbox:
280
287
  env_vars = self.sandbox_config_manager.get_sandbox_env_vars_as_dict(sandbox_config_id=sbx_config.id, actor=self.user, limit=100)
281
288
  code = self.generate_execution_script(agent_state=agent_state)
282
289
  execution = sbx.run_code(code, envs=env_vars)
283
- func_return, agent_state = None, None
284
- if execution.error is not None:
290
+
291
+ if execution.results:
292
+ func_return, agent_state = self.parse_best_effort(execution.results[0].text)
293
+ elif execution.error:
285
294
  logger.error(f"Executing tool {self.tool_name} failed with {execution.error}")
286
- execution.logs.stderr.append(execution.error.traceback)
287
- execution.logs.stderr.append(f"{execution.error.name}: {execution.error.value}")
288
- elif len(execution.results) == 0:
289
- raise ValueError(f"Tool {self.tool_name} returned execution with None")
295
+ func_return = get_friendly_error_msg(
296
+ function_name=self.tool_name, exception_name=execution.error.name, exception_message=execution.error.value
297
+ )
298
+ execution.logs.stderr.append(execution.error.traceback)
290
299
  else:
291
- func_return, agent_state = self.parse_best_effort(execution.results[0].text)
300
+ raise ValueError(f"Tool {self.tool_name} returned execution with None")
301
+
292
302
  return SandboxRunResult(
293
303
  func_return=func_return,
294
304
  agent_state=agent_state,
295
305
  stdout=execution.logs.stdout,
296
306
  stderr=execution.logs.stderr,
307
+ status="error" if execution.error else "success",
297
308
  sandbox_config_fingerprint=sbx_config.fingerprint(),
298
309
  )
299
310
 
@@ -481,5 +492,3 @@ class ToolExecutionSandbox:
481
492
 
482
493
  func_call_str = self.tool.name + "(" + params + ")"
483
494
  return func_call_str
484
-
485
- #
letta/settings.py CHANGED
@@ -17,7 +17,7 @@ class ToolSettings(BaseSettings):
17
17
 
18
18
  class ModelSettings(BaseSettings):
19
19
 
20
- model_config = SettingsConfigDict(env_file='.env', extra='ignore')
20
+ model_config = SettingsConfigDict(env_file=".env", extra="ignore")
21
21
 
22
22
  # env_prefix='my_prefix_'
23
23
 
@@ -64,7 +64,7 @@ cors_origins = ["http://letta.localhost", "http://localhost:8283", "http://local
64
64
 
65
65
 
66
66
  class Settings(BaseSettings):
67
- model_config = SettingsConfigDict(env_prefix="letta_", extra='ignore')
67
+ model_config = SettingsConfigDict(env_prefix="letta_", extra="ignore")
68
68
 
69
69
  letta_dir: Optional[Path] = Field(Path.home() / ".letta", env="LETTA_DIR")
70
70
  debug: Optional[bool] = False
@@ -76,7 +76,12 @@ class Settings(BaseSettings):
76
76
  pg_password: Optional[str] = None
77
77
  pg_host: Optional[str] = None
78
78
  pg_port: Optional[int] = None
79
- pg_uri: Optional[str] = None # option to specifiy full uri
79
+ pg_uri: Optional[str] = None # option to specify full uri
80
+ pg_pool_size: int = 20 # Concurrent connections
81
+ pg_max_overflow: int = 10 # Overflow limit
82
+ pg_pool_timeout: int = 30 # Seconds to wait for a connection
83
+ pg_pool_recycle: int = 1800 # When to recycle connections
84
+ pg_echo: bool = False # Logging
80
85
 
81
86
  # tools configuration
82
87
  load_default_external_tools: Optional[bool] = None
@@ -91,7 +96,7 @@ class Settings(BaseSettings):
91
96
  return f"postgresql+pg8000://letta:letta@localhost:5432/letta"
92
97
 
93
98
  # add this property to avoid being returned the default
94
- # reference: https://github.com/cpacker/Letta/issues/1362
99
+ # reference: https://github.com/letta-ai/letta/issues/1362
95
100
  @property
96
101
  def letta_pg_uri_no_default(self) -> str:
97
102
  if self.pg_uri:
@@ -103,7 +108,7 @@ class Settings(BaseSettings):
103
108
 
104
109
 
105
110
  class TestSettings(Settings):
106
- model_config = SettingsConfigDict(env_prefix="letta_test_", extra='ignore')
111
+ model_config = SettingsConfigDict(env_prefix="letta_test_", extra="ignore")
107
112
 
108
113
  letta_dir: Optional[Path] = Field(Path.home() / ".letta/test", env="LETTA_TEST_DIR")
109
114
 
letta/utils.py CHANGED
@@ -1118,3 +1118,11 @@ def sanitize_filename(filename: str) -> str:
1118
1118
 
1119
1119
  # Return the sanitized filename
1120
1120
  return sanitized_filename
1121
+
1122
+ def get_friendly_error_msg(function_name: str, exception_name: str, exception_message: str):
1123
+ from letta.constants import MAX_ERROR_MESSAGE_CHAR_LIMIT
1124
+
1125
+ error_msg = f"Error executing function {function_name}: {exception_name}: {exception_message}"
1126
+ if len(error_msg) > MAX_ERROR_MESSAGE_CHAR_LIMIT:
1127
+ error_msg = error_msg[:MAX_ERROR_MESSAGE_CHAR_LIMIT]
1128
+ return error_msg
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.4.dev20241216104246
3
+ Version: 0.6.5.dev20241218055539
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -167,7 +167,7 @@ Once the Letta server is running, you can access it via port `8283` (e.g. sendin
167
167
  > [!NOTE]
168
168
  > The Letta ADE is a graphical user interface for creating, deploying, interacting and observing with your Letta agents.
169
169
  >
170
- > For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to interacting with your Letta agents.
170
+ > For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to interact with your Letta agents.
171
171
 
172
172
  <p align="center">
173
173
  <picture>
@@ -221,7 +221,7 @@ No, you can install Letta using `pip` (via `pip install -U letta`), as well as f
221
221
 
222
222
  Letta gives your agents persistence (they live indefinitely) by storing all your agent data in a database. Letta is designed to be used with a [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) (the world's most popular database), however, it is not possible to install PostgreSQL via `pip`, so the `pip` install of Letta defaults to using [SQLite](https://www.sqlite.org/). If you have a PostgreSQL instance running on your own computer, you can still connect Letta (installed via `pip`) to PostgreSQL by setting the environment variable `LETTA_PG_URI`.
223
223
 
224
- **Database migrations are not officially supported for Letta when using SQLite**, so you would like to ensure that if you're able to upgrade to the latest Letta version and migrate your Letta agents data, make sure that you're using PostgreSQL as your Letta database backend. Full compatability table below:
224
+ **Database migrations are not officially supported for Letta when using SQLite**, so if you would like to ensure that you're able to upgrade to the latest Letta version and migrate your Letta agents data, make sure that you're using PostgreSQL as your Letta database backend. Full compatability table below:
225
225
 
226
226
  | Installation method | Start server command | Database backend | Data migrations supported? |
227
227
  |---|---|---|---|
@@ -293,7 +293,7 @@ Hit enter to begin (will request first Letta message)
293
293
  ## ⚡ Quickstart (pip)
294
294
 
295
295
  > [!WARNING]
296
- > **Database migrations are not officially support with `SQLite`**
296
+ > **Database migrations are not officially supported with `SQLite`**
297
297
  >
298
298
  > When you install Letta with `pip`, the default database backend is `SQLite` (you can still use an external `postgres` service with your `pip` install of Letta by setting `LETTA_PG_URI`).
299
299
  >
@@ -303,7 +303,7 @@ Hit enter to begin (will request first Letta message)
303
303
 
304
304
  <summary>View instructions for installing with pip</summary>
305
305
 
306
- You can also install Letta with `pip`, will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
306
+ You can also install Letta with `pip`, which will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
307
307
 
308
308
  ### Step 1 - Install Letta using `pip`
309
309
  ```sh
@@ -377,7 +377,7 @@ Letta is an open source project built by over a hundred contributors. There are
377
377
 
378
378
  * **Contribute to the project**: Interested in contributing? Start by reading our [Contribution Guidelines](https://github.com/cpacker/MemGPT/tree/main/CONTRIBUTING.md).
379
379
  * **Ask a question**: Join our community on [Discord](https://discord.gg/letta) and direct your questions to the `#support` channel.
380
- * **Report ssues or suggest features**: Have an issue or a feature request? Please submit them through our [GitHub Issues page](https://github.com/cpacker/MemGPT/issues).
380
+ * **Report issues or suggest features**: Have an issue or a feature request? Please submit them through our [GitHub Issues page](https://github.com/cpacker/MemGPT/issues).
381
381
  * **Explore the roadmap**: Curious about future developments? View and comment on our [project roadmap](https://github.com/cpacker/MemGPT/issues/1533).
382
382
  * **Join community events**: Stay updated with the [event calendar](https://lu.ma/berkeley-llm-meetup) or follow our [Twitter account](https://twitter.com/Letta_AI).
383
383
 
@@ -1,6 +1,6 @@
1
- letta/__init__.py,sha256=35NM-KIYubYvjLNsP6WHh70k7F5yDmwZ7x0E7Qm0dwg,1014
1
+ letta/__init__.py,sha256=zY_5By7t8Jgl0Nejq2i4yOTJQg0lzJNlwdmp8sB-W9Y,1014
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=yWsjhxIAVLfHLBotXpVOJ5Svvh3g8TY0jlIQFv_e0A4,78418
3
+ letta/agent.py,sha256=I4qbwYEkq9ZXYb_ToRRdGfNnMIkeI715vXRziQu731Y,77721
4
4
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
5
5
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
6
6
  letta/chat_only_agent.py,sha256=3wBCzddcfF6IMbPdDtTZFze5-HJSYxHd8w6jkkSwzsw,4628
@@ -8,22 +8,22 @@ letta/cli/cli.py,sha256=N6jCmysldhAGTQPkGDmRVMAIID7GlgECXqarcMV5h3M,16502
8
8
  letta/cli/cli_config.py,sha256=tB0Wgz3O9j6KiCsU1HWfsKmhNM9RqLsAxzxEDFQFGnM,8565
9
9
  letta/cli/cli_load.py,sha256=xFw-CuzjChcIptaqQ1XpDROENt0JSjyPeiQ0nmEeO1k,2706
10
10
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- letta/client/client.py,sha256=K34HttR6t07Kdi5VciYwbXoXNaDJfU9KYWsEEeAHO5A,126613
11
+ letta/client/client.py,sha256=VG2I6YwAOUwENuqpgzU2PZh5QHl6Web09OpIL3Tz8eA,126667
12
12
  letta/client/streaming.py,sha256=Hh5pjlyrdCuO2V75ZCxSSOCPd3BmHdKFGaIUJC6fBp0,4775
13
13
  letta/client/utils.py,sha256=OJlAKWrldc4I6M1WpcTWNtPJ4wfxlzlZqWLfCozkFtI,2872
14
14
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
15
- letta/constants.py,sha256=l2IyZpVG-d_raFFX5bN6mCbprnnc1IA-z-oCKPoyPSM,6902
15
+ letta/constants.py,sha256=1cyuDmvdkmt9px5N3IqzxvcKJ_ERrYUdSzN60Ky-HBs,7054
16
16
  letta/credentials.py,sha256=D9mlcPsdDWlIIXQQD8wSPE9M_QvsRrb0p3LB5i9OF5Q,5806
17
17
  letta/data_sources/connectors.py,sha256=Bwgf6mW55rDrdX69dY3bLzQW9Uuk_o9w4skwbx1NioY,7039
18
18
  letta/data_sources/connectors_helper.py,sha256=2TQjCt74fCgT5sw1AP8PalDEk06jPBbhrPG4HVr-WLs,3371
19
- letta/embeddings.py,sha256=XyecUdJaG3ENi5v3wAexVcgpG2g7_oTEEYLgUpm-Zvs,9080
19
+ letta/embeddings.py,sha256=r1jWuZplYZl8GzfObBZxPdKWg2O0Msd8D164qSoCPIM,8855
20
20
  letta/errors.py,sha256=Voy_BP0W_M816-vWudKLBlgydRufPPA-Q2PNd-SvZYc,3897
21
21
  letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- letta/functions/function_sets/base.py,sha256=DxHFODrqEOepjsbWBrwHNqnM_b3AfvNhPCUiaOVDDzU,9599
22
+ letta/functions/function_sets/base.py,sha256=OcjkPBfurAGWSXfvG8i108c5cpA9lnykC9COXXmzbM8,8173
23
23
  letta/functions/function_sets/extras.py,sha256=Jik3UiDqYTm4Lam1XPTvuVjvgUHwIAhopsnbmVhGMBg,4732
24
24
  letta/functions/functions.py,sha256=evH6GKnIJwVVre1Xre2gaSIqREv4eNM4DiWOhn8PMqg,3299
25
25
  letta/functions/helpers.py,sha256=fJo4gPvWpkvR7jn0HucRorz4VlpYVqmYsiX1RetnnSY,8569
26
- letta/functions/schema_generator.py,sha256=Y0rQjJBI8Z5fSKmT71EGXtHpIvNb3dMM5X00TP89tlY,19330
26
+ letta/functions/schema_generator.py,sha256=sN0QurH69H9jfRnRV5CBSYS7bVU9BKBdF0SSCGrwuQA,19256
27
27
  letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
28
28
  letta/helpers/tool_rule_solver.py,sha256=YCwawbRUQw10ZVR17WYXo8b5roxdGe-B5nNVMqlAgBE,4826
29
29
  letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -31,20 +31,20 @@ letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6
31
31
  letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
32
32
  letta/interface.py,sha256=QI4hFP0WrNsgM5qX6TbnhH1ZZxsLYr5DaccuxpEQ8S4,12768
33
33
  letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- letta/llm_api/anthropic.py,sha256=Q-6QLwSHC_YTqWJWIMjxMWsnjxgN1cnCzle5-m5A70s,13077
34
+ letta/llm_api/anthropic.py,sha256=bJRkcPYqow5vbFsos94XM3gIAvXNYOidZ-7v_LmNtt8,14242
35
35
  letta/llm_api/azure_openai.py,sha256=Y1HKPog1XzM_f7ujUK_Gv2zQkoy5pU-1bKiUnvSxSrs,6297
36
36
  letta/llm_api/azure_openai_constants.py,sha256=oXtKrgBFHf744gyt5l1thILXgyi8NDNUrKEa2GGGpjw,278
37
37
  letta/llm_api/cohere.py,sha256=vDRd-SUGp1t_JUIdwC3RkIhwMl0OY7n-tAU9uPORYkY,14826
38
38
  letta/llm_api/google_ai.py,sha256=xKz9JDZs3m6yzSfcgCAAUD_rjI20BBIINoiSvlcnOw0,17621
39
39
  letta/llm_api/helpers.py,sha256=F8xZDZgDojWX5v-0vakyeUQyCyBr1HmzmsITRdOsmVg,13457
40
- letta/llm_api/llm_api_tools.py,sha256=TfRBesbYkIoQRhntKaZkCY9uYk0efBIOJBEdjcQA8g4,17337
40
+ letta/llm_api/llm_api_tools.py,sha256=MadPiVSc_JYwf5dwpeCc5lRBN3rBmsops5EQy2HW-gw,17687
41
41
  letta/llm_api/mistral.py,sha256=fHdfD9ug-rQIk2qn8tRKay1U6w9maF11ryhKi91FfXM,1593
42
42
  letta/llm_api/openai.py,sha256=4GEGROTv4vLawSgODnAHCI-DeIWDqrhuxtKrqYzHvso,24160
43
43
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
44
44
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  letta/local_llm/chat_completion_proxy.py,sha256=SiohxsjGTku4vOryOZx7I0t0xoO_sUuhXgoe62fKq3c,12995
46
46
  letta/local_llm/constants.py,sha256=GIu0184EIiOLEqGeupLUYQvkgT_imIjLg3T-KM9TcFM,1125
47
- letta/local_llm/function_parser.py,sha256=BlNsGo1VzyfY5KdF_RwjRQNOWIsaudo7o37u1W5eg0s,2626
47
+ letta/local_llm/function_parser.py,sha256=eRAiP1CmfpiZTHgKZ2gbbMpA1SV8TlMLlgG1Wdfug2I,2607
48
48
  letta/local_llm/grammars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  letta/local_llm/grammars/gbnf_grammar_generator.py,sha256=zrATMMTZ3Trhg3egnk7N7p5qwH90hmfT_TVV7tjabGI,56377
50
50
  letta/local_llm/grammars/json.gbnf,sha256=LNnIFYaChKuE7GU9H7tLThVi8vFnZNzrFJYBU7_HVsY,667
@@ -85,25 +85,25 @@ letta/offline_memory_agent.py,sha256=swCkuUB8IsSfMFGr41QTwlKo63s6JOFMgiaB59FFw6o
85
85
  letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
87
87
  letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
88
- letta/orm/__init__.py,sha256=FJUULjCVe3OUtjTbRjAqz7bdPZz6ZoquUkTI5GhEij4,665
89
- letta/orm/agent.py,sha256=qyYr-3qFU_PkiaGdGChgMWkfhGGZddOXgubkUsJSuj4,4944
88
+ letta/orm/__init__.py,sha256=TVs1_QQAa8fBOOVJvqU4FDdqvL6-1AqIuvIuOHNoL1E,698
89
+ letta/orm/agent.py,sha256=NpqDEPHfC1mM_pcMi16_XInKFPPiHsSACmJIAcUFcVs,5787
90
90
  letta/orm/agents_tags.py,sha256=dYSnHz4IWBjyOiQ4RJomX3P0QN76JTlEZEw5eJM6Emg,925
91
91
  letta/orm/base.py,sha256=K_LpNUURbsj44ycHbzvNXG_n8pBOjf1YvDaikIPDpQA,2716
92
92
  letta/orm/block.py,sha256=U2fOXdab9ynQscOqzUo3xv1a_GjqHLIgoNSZq-U0mYg,3308
93
93
  letta/orm/blocks_agents.py,sha256=W0dykl9OchAofSuAYZD5zNmhyMabPr9LTJrz-I3A0m4,983
94
94
  letta/orm/custom_columns.py,sha256=EEiPx9AuMI4JeLmGAOD8L_XWh4JwQB166zBJHuJmQS0,4891
95
95
  letta/orm/enums.py,sha256=KfHcFt_fR6GUmSlmfsa-TetvmuRxGESNve8MStRYW64,145
96
- letta/orm/errors.py,sha256=nv1HnF3z4-u9m_g7SO5TO5u2nmJN677_n8F0iIjluUI,460
97
- letta/orm/file.py,sha256=xUhWGBiYeOG0xL_-N2lzk135Rhm2IEXLPTw1wdgeyPw,1659
96
+ letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
97
+ letta/orm/file.py,sha256=0qfqmBFizwtYriCz_qrshjxw3A9lMaRFKtwsZecviyo,1765
98
98
  letta/orm/job.py,sha256=If-qSTJW4t5h-6Jolw3tS3-xMZEaPIbXe3S0GMf_FXI,1102
99
99
  letta/orm/message.py,sha256=yWf46-adgYGqhxjn_QREW19jvVjYU0eD11uwlVSrdT4,1490
100
- letta/orm/mixins.py,sha256=xXPpOBvq5XuxiPOHS1aSc6j1UVpxookOCXMLnrxI6cM,1783
101
- letta/orm/organization.py,sha256=26k9Ga4zMdNwFq0KQJXypf7kQf-WKXa6n3AObEptwYY,2086
102
- letta/orm/passage.py,sha256=wMiCDVtB0qbUBA-nwIyun-tBe_kIi8ULm87BaMhW6to,2131
100
+ letta/orm/mixins.py,sha256=fBT4WjKDfDgGkkOHD8lFAaofDKElTLOx3oM1d6yQHSk,1620
101
+ letta/orm/organization.py,sha256=PSu9pHBT_YYdZo7Z7AZBBM4veOzD7x2H2NYN4SjD82E,2519
102
+ letta/orm/passage.py,sha256=fsETrGtmiGI45N5Rc2pMLy-9Mzggn6FZ-fRwI-0x-Hg,3249
103
103
  letta/orm/sandbox_config.py,sha256=PCMHE-eJPzBT-90OYtXjEMRF4f9JB8AJIGETE7bu-f0,2870
104
- letta/orm/source.py,sha256=oSJTJE5z-aF-SjSWVqkGgw_hT5bKPH91NMWVPnD4DiE,1521
104
+ letta/orm/source.py,sha256=SlX08BnoJYMh34cGTuPbo2kraCuXSy25xGdNWb7d7DQ,1782
105
105
  letta/orm/sources_agents.py,sha256=q5Wf5TFNI9KH6cGW93roNhvFD3n39UE2bYQhnSJwlME,433
106
- letta/orm/sqlalchemy_base.py,sha256=aBUWccVS5W-TiLeBoIKukCtpcWLU4pN71wvr5VbKfxw,17474
106
+ letta/orm/sqlalchemy_base.py,sha256=b4O-TPZKNf22Prr0yNtjhCRUXF5mroZC_eSY0ThBCAc,17774
107
107
  letta/orm/sqlite_functions.py,sha256=PVJXVw_e3cC5yIWkfsCP_yBjuXwIniLEGdXP6lx6Wgs,4380
108
108
  letta/orm/tool.py,sha256=qvDul85Gq0XORx6gyMGk0As3C1bSt9nASqezdPOikQ4,2216
109
109
  letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
@@ -130,15 +130,15 @@ letta/prompts/system/memgpt_convo_only.txt,sha256=0cmlDNtjZ_YlUVElzM4gzwCh16uwVB
130
130
  letta/prompts/system/memgpt_doc.txt,sha256=AsT55NOORoH-K-p0fxklrDRZ3qHs4MIKMuR-M4SSU4E,4768
131
131
  letta/prompts/system/memgpt_gpt35_extralong.txt,sha256=FheNhYoIzNz6qnJKhVquZVSMj3HduC48reFaX7Pf7ig,5046
132
132
  letta/prompts/system/memgpt_intuitive_knowledge.txt,sha256=sA7c3urYqREVnSBI81nTGImXAekqC0Fxc7RojFqud1g,2966
133
- letta/prompts/system/memgpt_modified_chat.txt,sha256=HOaPVurEftD8KsuwsclDgE2afIfklMjxhuSO96q1-6I,4656
134
- letta/prompts/system/memgpt_modified_o1.txt,sha256=AxxYVjYLZwpZ6yfifh1SuPtwlJGWTcTVzw53QbkN-Ao,5492
133
+ letta/prompts/system/memgpt_modified_chat.txt,sha256=F_yD4ZcR4aGDE3Z98tI7e609GYekY-fEYomNsCcuV6o,4656
134
+ letta/prompts/system/memgpt_modified_o1.txt,sha256=objnDgnxpF3-MmU28ZqZ7-TOG8UlHBM_HMyAdSDWK88,5492
135
135
  letta/prompts/system/memgpt_offline_memory.txt,sha256=rWEJeF-6aiinjkJM9hgLUYCmlEcC_HekYB1bjEUYq6M,2460
136
136
  letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7GpBq6crxb8bYedQfJ0ADoPgg,3949
137
- letta/providers.py,sha256=0j6WPRn70WNSOjWS7smhTI3ZZOlfVAVF0ZFcrdQDmMY,25321
137
+ letta/providers.py,sha256=LUIxZ882dv_jFD3ngq3LVHhNbKgUcGGcJSCsjOZ5jR4,25416
138
138
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
- letta/schemas/agent.py,sha256=amul3_5fVcut0wB9_wnuAjYpWe-ERAHuMpDZUQcOD4E,8715
139
+ letta/schemas/agent.py,sha256=8zorIkzmsC2IBpO3r-I5p18VA-7BGDe_rxXqfPUJ9lE,10212
140
140
  letta/schemas/block.py,sha256=pVDH8jr5r-oxdX4cK9dX2wXyLBzgGKQOBWOzqZSeBog,5944
141
- letta/schemas/embedding_config.py,sha256=1kD6NpiXeH4roVumxqDAKk7xt8SpXGWNhZs_XXUSlEU,2855
141
+ letta/schemas/embedding_config.py,sha256=u6n-MjUgLfKeDCMdG8f_7qCxJBxo0I8d3KIggmhwjfA,3236
142
142
  letta/schemas/enums.py,sha256=F396hXs57up4Jqj1vwWVknMpoVo7MkccVBALvKGHPpE,1032
143
143
  letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
144
144
  letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
@@ -156,8 +156,8 @@ letta/schemas/openai/chat_completions.py,sha256=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrT
156
156
  letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNosmLVSuhXYa_xU,357
157
157
  letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
158
158
  letta/schemas/organization.py,sha256=d2oN3IK2HeruEHKXwIzCbJ3Fxdi_BEe9JZ8J9aDbHwQ,698
159
- letta/schemas/passage.py,sha256=HeplPyKzcy4d8DLnjfIVukXRMHMZdGkerQY65RN70FI,3682
160
- letta/schemas/sandbox_config.py,sha256=d-eCsU7oLAAnzZbVgZsAV3O6LN16H2vmSh-Drik9jmw,5609
159
+ letta/schemas/passage.py,sha256=t_bSI8hpEuh-mj8bV8qOiIA1tAgyjGKrZMVe9l5oIaY,3675
160
+ letta/schemas/sandbox_config.py,sha256=3CZyClISK3722MWstwOcKp_ppOI1LOE98i84Q4E2U4Y,5737
161
161
  letta/schemas/source.py,sha256=B1VbaDJV-EGPv1nQXwCx_RAzeAJd50UqP_1m1cIRT8c,2854
162
162
  letta/schemas/tool.py,sha256=_9_JkGSlIn2PCbyJ18aQrNueZgxHFUT093GcJSWYqT4,10346
163
163
  letta/schemas/tool_rule.py,sha256=jVGdGsp2K-qnrcaWF3WjCSvxpDlF2wVxeNMXzmoYLtc,1072
@@ -167,7 +167,7 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
168
168
  letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
169
169
  letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
- letta/server/rest_api/app.py,sha256=LwZYglpFvvLerAPTtPSVHWT-LzyMyEbl6Fe8GGoOVfI,9967
170
+ letta/server/rest_api/app.py,sha256=ulEJeVgH5w9TdzqDJntmDfs8DCjIlImwLDoe6X1sPOc,11417
171
171
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
173
173
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
@@ -188,11 +188,11 @@ letta/server/rest_api/routers/v1/llms.py,sha256=TcyvSx6MEM3je5F4DysL7ligmssL_pFl
188
188
  letta/server/rest_api/routers/v1/organizations.py,sha256=tyqVzXTpMtk3sKxI3Iz4aS6RhbGEbXDzFBB_CpW18v4,2080
189
189
  letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=pG3X3bYbmsq90kRc-06qfnM6yalvYEpVVEQnTuZVm0o,5134
190
190
  letta/server/rest_api/routers/v1/sources.py,sha256=bLvxyYBOLx1VD5YPuoCBrQrua0AruzUzvCMIiekjVQg,9974
191
- letta/server/rest_api/routers/v1/tools.py,sha256=wG-9pUyQa8b9sIk7mG8qPu_mcVGH44B8JmIKfI3NQ1U,11767
191
+ letta/server/rest_api/routers/v1/tools.py,sha256=g6LKwz6aamNwMrjMqUSYDu8X0FjKAzCtOKJRAwcuZEk,11762
192
192
  letta/server/rest_api/routers/v1/users.py,sha256=EBQe9IfCG3kzHpKmotz4yVGZioXz3SCSRy5yEhJK8hU,2293
193
193
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
194
- letta/server/rest_api/utils.py,sha256=6Z0T0kHIwDAgTIFh38Q1JQ_nhANgdqXcSlsuY41pL6M,3158
195
- letta/server/server.py,sha256=-i_AvHqUX3PJYORqouh9QylyLkePGoHDZhqNpKVo9rM,61787
194
+ letta/server/rest_api/utils.py,sha256=5GO52-3EehRFZPDkvk4pUoHa0GZXvbPuQsmX298gbJg,3905
195
+ letta/server/server.py,sha256=xL1hZ3pS7Imc8CKahTXVkzL-gKjW0pgzJz_jpMrBb7I,60291
196
196
  letta/server/startup.sh,sha256=722uKJWB2C4q3vjn39De2zzPacaZNw_1fN1SpLGjKIo,1569
197
197
  letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
198
198
  letta/server/static_files/assets/index-0e31b727.css,sha256=DjG3J3RSFLcinzoisOYYLiyTAIe5Uaxge3HE-DmQIsU,7688
@@ -204,29 +204,29 @@ letta/server/ws_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
204
204
  letta/server/ws_api/example_client.py,sha256=95AA5UFgTlNJ0FUQkLxli8dKNx48MNm3eWGlSgKaWEk,4064
205
205
  letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRoMa4,4120
206
206
  letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
207
- letta/server/ws_api/server.py,sha256=8t8E2YmHuqKaC-AY4E4EXHUstNb5SpabVKgBRAtJ8wU,5834
207
+ letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
208
208
  letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
- letta/services/agent_manager.py,sha256=T_HnaqdR1odJksF20rsbYI2QDZfBZD8DcmS6CLJSLCY,16759
209
+ letta/services/agent_manager.py,sha256=5XODToGznZjdH4J3y-j-ToaP1rsbxQ82YxldEAO6kVU,30678
210
210
  letta/services/block_manager.py,sha256=HUj9HKW2LvAsENEsgCO3Pf3orvSy6XOimev38VKmRZ8,4929
211
211
  letta/services/helpers/agent_manager_helper.py,sha256=4AoJJI3ELDZrfhx38vc2OwgQflb7mkdppucln0MkgYg,3457
212
212
  letta/services/job_manager.py,sha256=FrkSXloke48CZKuzlYdysxM5gKWoTu7FRigPrs_YW4A,3645
213
213
  letta/services/message_manager.py,sha256=ucFJLbK835YSfEENoxdKB3wPZgO-NYFO9EvDV0W-sc0,7682
214
214
  letta/services/organization_manager.py,sha256=hJI86_FErkRaW-VLBBmvmmciIXN59LN0mEMm78C36kQ,3331
215
- letta/services/passage_manager.py,sha256=J1PPy1HNVqB1HBy0V5xcxAuj_paU_djeEX89aI9SXGc,8229
215
+ letta/services/passage_manager.py,sha256=3wR9ZV3nIkJ-oSywA2SVR2yLoNe2Nv5WyfaLtoNN5i8,7867
216
216
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
217
217
  letta/services/sandbox_config_manager.py,sha256=USTXwEEWexKRZjng4NepP4_eetrxCJ5n16cl2AHJ_VM,13220
218
218
  letta/services/source_manager.py,sha256=ZtLQikeJjwAq49f0d4WxUzyUN3LZBqWCZI4a-AzEMWQ,7643
219
- letta/services/tool_execution_sandbox.py,sha256=XaP3-Bsw1TJ-6btFdWJ_DwOnX6QOxE9o9mZVIXR4_4s,21090
219
+ letta/services/tool_execution_sandbox.py,sha256=NtjSXdm86_lbTeW2gF08tyf2KSoxBP0Bxq7qSNudrGE,21567
220
220
  letta/services/tool_manager.py,sha256=lfrfWyxiFUWcEf-nATHs7r76XWutMYbOPyePs543ZOo,7681
221
221
  letta/services/tool_sandbox_env/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
222
  letta/services/user_manager.py,sha256=oqLF9C4mGbN0TaGj7wMpb2RH2bUg6OJJcdyaWv370rQ,4272
223
- letta/settings.py,sha256=o3eydtE_NrNz5GJ37VPQPXZri-qlz671PxFIJIzveRU,3712
223
+ letta/settings.py,sha256=sC4gS8Po1NyPmSMTk-TTxrKEoJUi8qgou1K3-BqtNA4,3979
224
224
  letta/streaming_interface.py,sha256=_FPUWy58j50evHcpXyd7zB1wWqeCc71NCFeWh_TBvnw,15736
225
225
  letta/streaming_utils.py,sha256=329fsvj1ZN0r0LpQtmMPZ2vSxkDBIUUwvGHZFkjm2I8,11745
226
226
  letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
227
- letta/utils.py,sha256=Z2OOxSJbiLSlcGzYiX9gBCv-jfkDjew_J_qaOrLIyx4,32947
228
- letta_nightly-0.6.4.dev20241216104246.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
229
- letta_nightly-0.6.4.dev20241216104246.dist-info/METADATA,sha256=9q9RQmnxHP44OykqiY4VnDQRoy_hNVFRRi6CWV1IPf0,21689
230
- letta_nightly-0.6.4.dev20241216104246.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
- letta_nightly-0.6.4.dev20241216104246.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
232
- letta_nightly-0.6.4.dev20241216104246.dist-info/RECORD,,
227
+ letta/utils.py,sha256=AlGH2fADkU5VkGISj9-hwMSZVKQUiI1whWTvXCKOiYw,33338
228
+ letta_nightly-0.6.5.dev20241218055539.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
229
+ letta_nightly-0.6.5.dev20241218055539.dist-info/METADATA,sha256=UQ74_gcFuPtqH5eEH8RbvN-v_-kXuvTU7fy-pD0GOmI,21695
230
+ letta_nightly-0.6.5.dev20241218055539.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
+ letta_nightly-0.6.5.dev20241218055539.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
232
+ letta_nightly-0.6.5.dev20241218055539.dist-info/RECORD,,