letta-nightly 0.6.4.dev20241217104233__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.
- letta/__init__.py +1 -1
- letta/agent.py +68 -65
- letta/client/client.py +1 -0
- letta/constants.py +6 -1
- letta/embeddings.py +3 -9
- letta/functions/function_sets/base.py +9 -57
- letta/functions/schema_generator.py +1 -1
- letta/llm_api/anthropic.py +38 -13
- letta/llm_api/llm_api_tools.py +12 -1
- letta/local_llm/function_parser.py +1 -1
- letta/orm/errors.py +8 -0
- letta/orm/sqlalchemy_base.py +24 -17
- letta/providers.py +2 -0
- letta/schemas/agent.py +35 -0
- letta/schemas/sandbox_config.py +2 -1
- letta/server/rest_api/app.py +32 -7
- letta/server/rest_api/routers/v1/tools.py +1 -1
- letta/server/server.py +81 -57
- letta/services/agent_manager.py +3 -0
- letta/services/tool_execution_sandbox.py +54 -45
- letta/settings.py +9 -4
- letta/utils.py +8 -0
- {letta_nightly-0.6.4.dev20241217104233.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/METADATA +1 -1
- {letta_nightly-0.6.4.dev20241217104233.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/RECORD +27 -27
- {letta_nightly-0.6.4.dev20241217104233.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/LICENSE +0 -0
- {letta_nightly-0.6.4.dev20241217104233.dist-info → letta_nightly-0.6.5.dev20241218055539.dist-info}/WHEEL +0 -0
- {letta_nightly-0.6.4.dev20241217104233.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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
284
|
-
if execution.
|
|
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
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
|
|
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=
|
|
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=
|
|
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
|
|
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
|
|
@@ -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=
|
|
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
|
-
letta/__init__.py,sha256=
|
|
1
|
+
letta/__init__.py,sha256=zY_5By7t8Jgl0Nejq2i4yOTJQg0lzJNlwdmp8sB-W9Y,1014
|
|
2
2
|
letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
|
|
3
|
-
letta/agent.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
@@ -93,7 +93,7 @@ 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=
|
|
96
|
+
letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
|
|
97
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
|
|
@@ -103,7 +103,7 @@ 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
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=
|
|
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
|
|
@@ -134,9 +134,9 @@ letta/prompts/system/memgpt_modified_chat.txt,sha256=F_yD4ZcR4aGDE3Z98tI7e609GYe
|
|
|
134
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=
|
|
137
|
+
letta/providers.py,sha256=LUIxZ882dv_jFD3ngq3LVHhNbKgUcGGcJSCsjOZ5jR4,25416
|
|
138
138
|
letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
|
-
letta/schemas/agent.py,sha256=
|
|
139
|
+
letta/schemas/agent.py,sha256=8zorIkzmsC2IBpO3r-I5p18VA-7BGDe_rxXqfPUJ9lE,10212
|
|
140
140
|
letta/schemas/block.py,sha256=pVDH8jr5r-oxdX4cK9dX2wXyLBzgGKQOBWOzqZSeBog,5944
|
|
141
141
|
letta/schemas/embedding_config.py,sha256=u6n-MjUgLfKeDCMdG8f_7qCxJBxo0I8d3KIggmhwjfA,3236
|
|
142
142
|
letta/schemas/enums.py,sha256=F396hXs57up4Jqj1vwWVknMpoVo7MkccVBALvKGHPpE,1032
|
|
@@ -157,7 +157,7 @@ letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNo
|
|
|
157
157
|
letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
|
|
158
158
|
letta/schemas/organization.py,sha256=d2oN3IK2HeruEHKXwIzCbJ3Fxdi_BEe9JZ8J9aDbHwQ,698
|
|
159
159
|
letta/schemas/passage.py,sha256=t_bSI8hpEuh-mj8bV8qOiIA1tAgyjGKrZMVe9l5oIaY,3675
|
|
160
|
-
letta/schemas/sandbox_config.py,sha256=
|
|
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=
|
|
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=
|
|
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
194
|
letta/server/rest_api/utils.py,sha256=5GO52-3EehRFZPDkvk4pUoHa0GZXvbPuQsmX298gbJg,3905
|
|
195
|
-
letta/server/server.py,sha256=
|
|
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
|
|
@@ -206,7 +206,7 @@ letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRo
|
|
|
206
206
|
letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
|
|
207
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=
|
|
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
|
|
@@ -216,17 +216,17 @@ letta/services/passage_manager.py,sha256=3wR9ZV3nIkJ-oSywA2SVR2yLoNe2Nv5WyfaLtoN
|
|
|
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=
|
|
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=
|
|
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=
|
|
228
|
-
letta_nightly-0.6.
|
|
229
|
-
letta_nightly-0.6.
|
|
230
|
-
letta_nightly-0.6.
|
|
231
|
-
letta_nightly-0.6.
|
|
232
|
-
letta_nightly-0.6.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|