letta-nightly 0.11.7.dev20250910104051__py3-none-any.whl → 0.11.7.dev20250911104039__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.
- letta/adapters/letta_llm_request_adapter.py +4 -2
- letta/adapters/letta_llm_stream_adapter.py +4 -2
- letta/agents/agent_loop.py +23 -0
- letta/agents/letta_agent_v2.py +5 -4
- letta/functions/helpers.py +3 -2
- letta/groups/sleeptime_multi_agent_v2.py +4 -2
- letta/groups/sleeptime_multi_agent_v3.py +4 -2
- letta/interfaces/anthropic_streaming_interface.py +10 -6
- letta/llm_api/google_vertex_client.py +1 -1
- letta/orm/agent.py +4 -1
- letta/orm/block.py +1 -0
- letta/orm/blocks_agents.py +1 -0
- letta/orm/sources_agents.py +2 -1
- letta/orm/tools_agents.py +5 -2
- letta/schemas/message.py +19 -2
- letta/server/rest_api/interface.py +34 -2
- letta/server/rest_api/json_parser.py +2 -0
- letta/server/rest_api/redis_stream_manager.py +2 -1
- letta/server/rest_api/routers/openai/chat_completions/chat_completions.py +4 -2
- letta/server/rest_api/routers/v1/agents.py +47 -180
- letta/server/rest_api/routers/v1/folders.py +2 -2
- letta/server/rest_api/routers/v1/sources.py +2 -2
- letta/server/rest_api/streaming_response.py +2 -1
- letta/server/server.py +7 -5
- letta/services/agent_serialization_manager.py +4 -3
- letta/services/mcp_manager.py +2 -2
- letta/services/summarizer/summarizer.py +2 -1
- letta/services/tool_executor/multi_agent_tool_executor.py +17 -14
- letta/services/tool_sandbox/local_sandbox.py +2 -2
- letta/services/tool_sandbox/modal_version_manager.py +2 -1
- letta/streaming_utils.py +29 -4
- letta/utils.py +72 -3
- {letta_nightly-0.11.7.dev20250910104051.dist-info → letta_nightly-0.11.7.dev20250911104039.dist-info}/METADATA +1 -1
- {letta_nightly-0.11.7.dev20250910104051.dist-info → letta_nightly-0.11.7.dev20250911104039.dist-info}/RECORD +37 -36
- {letta_nightly-0.11.7.dev20250910104051.dist-info → letta_nightly-0.11.7.dev20250911104039.dist-info}/WHEEL +0 -0
- {letta_nightly-0.11.7.dev20250910104051.dist-info → letta_nightly-0.11.7.dev20250911104039.dist-info}/entry_points.txt +0 -0
- {letta_nightly-0.11.7.dev20250910104051.dist-info → letta_nightly-0.11.7.dev20250911104039.dist-info}/licenses/LICENSE +0 -0
letta/streaming_utils.py
CHANGED
@@ -99,6 +99,15 @@ class JSONInnerThoughtsExtractor:
|
|
99
99
|
else:
|
100
100
|
updates_main_json += c
|
101
101
|
self.main_buffer += c
|
102
|
+
# NOTE (fix): Streaming JSON can arrive token-by-token from the LLM.
|
103
|
+
# In the old implementation we pre-inserted an opening quote after every
|
104
|
+
# key's colon (i.e. we emitted '"key":"' immediately). That implicitly
|
105
|
+
# assumed all values are strings. When a non-string value (e.g. true/false,
|
106
|
+
# numbers, null, or a nested object/array) streamed in next, the stream
|
107
|
+
# ended up with an unmatched '"' and appeared as a "missing end-quote" to
|
108
|
+
# clients. We now only emit an opening quote when we actually enter a
|
109
|
+
# string value (see below). This keeps values like booleans unquoted and
|
110
|
+
# avoids generating dangling quotes mid-stream.
|
102
111
|
elif c == '"':
|
103
112
|
if not self.escaped:
|
104
113
|
self.in_string = not self.in_string
|
@@ -112,6 +121,14 @@ class JSONInnerThoughtsExtractor:
|
|
112
121
|
self.main_buffer += self.main_json_held_buffer
|
113
122
|
self.main_json_held_buffer = ""
|
114
123
|
self.hold_main_json = False
|
124
|
+
elif self.state == "value":
|
125
|
+
# Opening quote for a string value (non-inner-thoughts only)
|
126
|
+
if not self.is_inner_thoughts_value:
|
127
|
+
if self.hold_main_json:
|
128
|
+
self.main_json_held_buffer += '"'
|
129
|
+
else:
|
130
|
+
updates_main_json += '"'
|
131
|
+
self.main_buffer += '"'
|
115
132
|
else:
|
116
133
|
if self.state == "key":
|
117
134
|
self.state = "colon"
|
@@ -156,18 +173,26 @@ class JSONInnerThoughtsExtractor:
|
|
156
173
|
updates_main_json += c
|
157
174
|
self.main_buffer += c
|
158
175
|
else:
|
176
|
+
# NOTE (fix): Do NOT pre-insert an opening quote after ':' any more.
|
177
|
+
# The value may not be a string; we only emit quotes when we actually
|
178
|
+
# see a string begin (handled in the '"' branch above). This prevents
|
179
|
+
# forced-quoting of non-string values and eliminates the common
|
180
|
+
# streaming artifact of "... 'request_heartbeat':'true}" missing the
|
181
|
+
# final quote.
|
159
182
|
if c == ":" and self.state == "colon":
|
183
|
+
# Transition to reading a value; don't pre-insert quotes
|
160
184
|
self.state = "value"
|
161
185
|
self.is_inner_thoughts_value = self.current_key == self.inner_thoughts_key
|
162
186
|
if self.is_inner_thoughts_value:
|
163
|
-
|
187
|
+
# Do not include 'inner_thoughts' key in main_json
|
188
|
+
pass
|
164
189
|
else:
|
165
190
|
key_colon = f'"{self.current_key}":'
|
166
191
|
if self.hold_main_json:
|
167
|
-
self.main_json_held_buffer += key_colon
|
192
|
+
self.main_json_held_buffer += key_colon
|
168
193
|
else:
|
169
|
-
updates_main_json += key_colon
|
170
|
-
self.main_buffer += key_colon
|
194
|
+
updates_main_json += key_colon
|
195
|
+
self.main_buffer += key_colon
|
171
196
|
elif c == "," and self.state == "comma_or_end":
|
172
197
|
if self.is_inner_thoughts_value:
|
173
198
|
# Inner thoughts value ended
|
letta/utils.py
CHANGED
@@ -39,6 +39,7 @@ from letta.constants import (
|
|
39
39
|
)
|
40
40
|
from letta.helpers.json_helpers import json_dumps, json_loads
|
41
41
|
from letta.log import get_logger
|
42
|
+
from letta.otel.tracing import log_attributes, trace_method
|
42
43
|
from letta.schemas.openai.chat_completion_response import ChatCompletionResponse
|
43
44
|
|
44
45
|
logger = get_logger(__name__)
|
@@ -1093,14 +1094,68 @@ def make_key(*args, **kwargs):
|
|
1093
1094
|
return str((args, tuple(sorted(kwargs.items()))))
|
1094
1095
|
|
1095
1096
|
|
1096
|
-
|
1097
|
+
# Global set to keep strong references to background tasks
|
1098
|
+
_background_tasks: set = set()
|
1099
|
+
|
1100
|
+
|
1101
|
+
def get_background_task_count() -> int:
|
1102
|
+
"""Get the current number of background tasks for debugging/monitoring."""
|
1103
|
+
return len(_background_tasks)
|
1104
|
+
|
1105
|
+
|
1106
|
+
@trace_method
|
1107
|
+
def safe_create_task(coro, label: str = "background task"):
|
1097
1108
|
async def wrapper():
|
1098
1109
|
try:
|
1099
1110
|
await coro
|
1100
1111
|
except Exception as e:
|
1101
1112
|
logger.exception(f"{label} failed with {type(e).__name__}: {e}")
|
1102
1113
|
|
1103
|
-
|
1114
|
+
task = asyncio.create_task(wrapper())
|
1115
|
+
|
1116
|
+
# Add task to the set to maintain strong reference
|
1117
|
+
_background_tasks.add(task)
|
1118
|
+
|
1119
|
+
# Log task count to trace
|
1120
|
+
log_attributes({"total_background_task_count": get_background_task_count()})
|
1121
|
+
|
1122
|
+
# Remove task from set when done to prevent memory leaks
|
1123
|
+
task.add_done_callback(_background_tasks.discard)
|
1124
|
+
|
1125
|
+
return task
|
1126
|
+
|
1127
|
+
|
1128
|
+
def safe_create_shielded_task(coro, label: str = "shielded background task"):
|
1129
|
+
"""
|
1130
|
+
Create a shielded background task that cannot be cancelled externally.
|
1131
|
+
|
1132
|
+
This is useful for critical operations that must complete even if the
|
1133
|
+
parent operation is cancelled. The task is internally shielded but the
|
1134
|
+
returned task can still have callbacks added to it.
|
1135
|
+
"""
|
1136
|
+
|
1137
|
+
async def shielded_wrapper():
|
1138
|
+
try:
|
1139
|
+
# Shield the original coroutine to prevent cancellation
|
1140
|
+
result = await asyncio.shield(coro)
|
1141
|
+
return result
|
1142
|
+
except Exception as e:
|
1143
|
+
logger.exception(f"{label} failed with {type(e).__name__}: {e}")
|
1144
|
+
raise
|
1145
|
+
|
1146
|
+
# Create the task with the shielded wrapper
|
1147
|
+
task = asyncio.create_task(shielded_wrapper())
|
1148
|
+
|
1149
|
+
# Add task to the set to maintain strong reference
|
1150
|
+
_background_tasks.add(task)
|
1151
|
+
|
1152
|
+
# Log task count to trace
|
1153
|
+
log_attributes({"total_background_task_count": get_background_task_count()})
|
1154
|
+
|
1155
|
+
# Remove task from set when done to prevent memory leaks
|
1156
|
+
task.add_done_callback(_background_tasks.discard)
|
1157
|
+
|
1158
|
+
return task
|
1104
1159
|
|
1105
1160
|
|
1106
1161
|
def safe_create_file_processing_task(coro, file_metadata, server, actor, logger: Logger, label: str = "file processing task"):
|
@@ -1137,7 +1192,15 @@ def safe_create_file_processing_task(coro, file_metadata, server, actor, logger:
|
|
1137
1192
|
except Exception as update_error:
|
1138
1193
|
logger.error(f"Failed to update file status to ERROR for {file_metadata.id}: {update_error}")
|
1139
1194
|
|
1140
|
-
|
1195
|
+
task = asyncio.create_task(wrapper())
|
1196
|
+
|
1197
|
+
# Add task to the set to maintain strong reference
|
1198
|
+
_background_tasks.add(task)
|
1199
|
+
|
1200
|
+
# Remove task from set when done to prevent memory leaks
|
1201
|
+
task.add_done_callback(_background_tasks.discard)
|
1202
|
+
|
1203
|
+
return task
|
1141
1204
|
|
1142
1205
|
|
1143
1206
|
class CancellationSignal:
|
@@ -1289,6 +1352,12 @@ def fire_and_forget(coro, task_name: Optional[str] = None, error_callback: Optio
|
|
1289
1352
|
|
1290
1353
|
task = asyncio.create_task(coro)
|
1291
1354
|
|
1355
|
+
# Add task to the set to maintain strong reference
|
1356
|
+
_background_tasks.add(task)
|
1357
|
+
|
1358
|
+
# Remove task from set when done to prevent memory leaks
|
1359
|
+
task.add_done_callback(_background_tasks.discard)
|
1360
|
+
|
1292
1361
|
def callback(t):
|
1293
1362
|
try:
|
1294
1363
|
t.result() # this re-raises exceptions from the task
|
@@ -11,13 +11,14 @@ letta/memory.py,sha256=l5iNhLAR_xzgTb0GBlQx4SVgH8kuZh8siJdC_CFPKEs,4278
|
|
11
11
|
letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
letta/settings.py,sha256=QEjNUwRXGBgsQpQAs2kksQmGN5CbxKlxPPydrklx_Ms,15011
|
13
13
|
letta/streaming_interface.py,sha256=rPMfwUcjqITWk2tVqFQm1hmP99tU2IOHg9gU2dgPSo8,16400
|
14
|
-
letta/streaming_utils.py,sha256=
|
14
|
+
letta/streaming_utils.py,sha256=_UhLa0EtUkd6WL_oBYIU65tDcJ9jf3uWEHuzfQ4HCa8,13769
|
15
15
|
letta/system.py,sha256=kHF7n3Viq7gV5UIUEXixod2gWa2jroUgztpEzMC1Sew,8925
|
16
|
-
letta/utils.py,sha256=
|
16
|
+
letta/utils.py,sha256=bSq3St7MUw9gN1g0ICdOhNNaUFYBC3EfJLG6qsRLSFA,43290
|
17
17
|
letta/adapters/letta_llm_adapter.py,sha256=11wkOkEQfPXUuJoJxbK22wCa-8gnWiDAb3UOXOxLt5U,3427
|
18
|
-
letta/adapters/letta_llm_request_adapter.py,sha256=
|
19
|
-
letta/adapters/letta_llm_stream_adapter.py,sha256=
|
18
|
+
letta/adapters/letta_llm_request_adapter.py,sha256=wJhK5M_qOhRPAhgMmYI7EJcM8Op19tClnXe0kJ29a3Q,4831
|
19
|
+
letta/adapters/letta_llm_stream_adapter.py,sha256=Q6nFr8uKc1DyAHHiHxHGNmqhRIScEKXO3TwsBgqW5QI,7630
|
20
20
|
letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
letta/agents/agent_loop.py,sha256=cTSlGt1g9aZWG5vIMYtzdeJG1UcrqfjpLGmZU6j89zU,854
|
21
22
|
letta/agents/base_agent.py,sha256=rUAcPxWmTnmi50AWOXwrWc-v5sPIod0W_xXaPQShjcE,8540
|
22
23
|
letta/agents/base_agent_v2.py,sha256=t7XtUv3RZNvKwk1uqmSKxAV_2ZGSXYektlzyhXB3N-M,2558
|
23
24
|
letta/agents/ephemeral_agent.py,sha256=el-SUF_16vv_7OouIR-6z0pAE9Yc0PLibygvfCKwqfo,2736
|
@@ -26,7 +27,7 @@ letta/agents/exceptions.py,sha256=BQY4D4w32OYHM63CM19ko7dPwZiAzUs3NbKvzmCTcJg,31
|
|
26
27
|
letta/agents/helpers.py,sha256=eCHsvZEkTe0L_uZHYkfNAztsEJW0FTnKZMgVbqlI0Yg,11618
|
27
28
|
letta/agents/letta_agent.py,sha256=6nRTh5kzUpqK7eNMk4DlcgEoPmDxFmRb5ysoVHa-vh8,99488
|
28
29
|
letta/agents/letta_agent_batch.py,sha256=17RpYVXpGh9dlKxdMOLMCOHWFsi6N5S9FJHxooxkJCI,27998
|
29
|
-
letta/agents/letta_agent_v2.py,sha256=
|
30
|
+
letta/agents/letta_agent_v2.py,sha256=EDQ7ShQXS09cCMTMj0i3J2eECp5-ISDrB4QQWT9ALlg,58257
|
30
31
|
letta/agents/voice_agent.py,sha256=y-n6qadfKsswvGODzXH02pLIQQ44wnaDSE6oUgKHVkA,23381
|
31
32
|
letta/agents/voice_sleeptime_agent.py,sha256=_JzCbWBOKrmo1cTaqZFTrQudpJEapwAyrXYtAHUILGo,8675
|
32
33
|
letta/cli/cli.py,sha256=tKtghlX36Rp0_HbkMosvlAapL07JXhA0vKLGTNKnxSQ,1615
|
@@ -43,7 +44,7 @@ letta/functions/ast_parsers.py,sha256=0dXAN4qx3pWL_Y0aoEkaBpMKwI-kpoLEJftjW3v2I4
|
|
43
44
|
letta/functions/async_composio_toolset.py,sha256=IuhZTVghPDXRsehOOZsEEiJGYyjWjDTQc2xrjTg0yBo,4786
|
44
45
|
letta/functions/composio_helpers.py,sha256=mpybCYcB93HWoKrmQIqcuRQG9IH2lHWhsPQx2i8XP_8,3593
|
45
46
|
letta/functions/functions.py,sha256=bSYEcUPzbKXx6IztZkE1o7O7zuhFgbLzKSG5SuP8JVk,16009
|
46
|
-
letta/functions/helpers.py,sha256
|
47
|
+
letta/functions/helpers.py,sha256=KALhhEBbFND1Ft5WWcCDvtWx-jvE26QQfppOR0pF8p4,25273
|
47
48
|
letta/functions/interface.py,sha256=pN1gpDnLISW44gRcic1IX6I6pDwOT9UbkST_4ICuMvQ,2936
|
48
49
|
letta/functions/prompts.py,sha256=jNl83xjNpoSs8KzGtuc6jzN8jp_T4BC_5f4FMJ88_K0,1145
|
49
50
|
letta/functions/schema_generator.py,sha256=EgHC3UHRNF4FG7CKWNIxajUyryLo5UIZB2KJP9MrKMg,30903
|
@@ -62,8 +63,8 @@ letta/groups/dynamic_multi_agent.py,sha256=-IugnQJTxe4FOTKd0UX3lbSKVcD-S0noZDjwo
|
|
62
63
|
letta/groups/helpers.py,sha256=yAr05Keoz_7vdzPG6A9x5CsWrJjtvF8A0GSQWDe29UM,4660
|
63
64
|
letta/groups/round_robin_multi_agent.py,sha256=uUJff0bO68udOREiKFWeS7eEQlk3bF7hcfLSFXMScqI,6999
|
64
65
|
letta/groups/sleeptime_multi_agent.py,sha256=MCmgLyJubzgst_FaPOCR8BfDmss4MCGEdvnZOLXD8z8,10461
|
65
|
-
letta/groups/sleeptime_multi_agent_v2.py,sha256=
|
66
|
-
letta/groups/sleeptime_multi_agent_v3.py,sha256=
|
66
|
+
letta/groups/sleeptime_multi_agent_v2.py,sha256=t2Ef-066RxB6DksRXcRO5tMCWaLi0ovkjCoq5RVPayE,13838
|
67
|
+
letta/groups/sleeptime_multi_agent_v3.py,sha256=KjeHsuXNZup3FIw2CaqBuLo21j1nzI2fAcNyRPUYjHU,9233
|
67
68
|
letta/groups/supervisor_multi_agent.py,sha256=IWe5sNg6JoTaXwsN_8T9aiGHnFpJc7UVnlC3ly2rlBU,4459
|
68
69
|
letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
|
69
70
|
letta/helpers/composio_helpers.py,sha256=X3RaJSqa8z-oXmHJjJjAs1fJroZ5A8yu4-Yg2oDiTdA,1712
|
@@ -82,7 +83,7 @@ letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
83
|
letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6PA,17
|
83
84
|
letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
|
84
85
|
letta/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
|
-
letta/interfaces/anthropic_streaming_interface.py,sha256=
|
86
|
+
letta/interfaces/anthropic_streaming_interface.py,sha256=0VyK8kTRgCLNDLQN6vX1gJ0dfJhqguL_NL1GYgFr6fU,25614
|
86
87
|
letta/interfaces/openai_chat_completions_streaming_interface.py,sha256=3xHXh8cW79EkiMUTYfvcH_s92nkLjxXfvtVOVC3bfLo,5050
|
87
88
|
letta/interfaces/openai_streaming_interface.py,sha256=m2QeZo4w5lclwTypqAcHOJ4disaHqwb9yeqQaukfesA,28157
|
88
89
|
letta/interfaces/utils.py,sha256=c6jvO0dBYHh8DQnlN-B0qeNC64d3CSunhfqlFA4pJTY,278
|
@@ -98,7 +99,7 @@ letta/llm_api/bedrock_client.py,sha256=gNKSFGCbrrLMPvtBItAOz1nme4K_opgkZdFa3cUzp
|
|
98
99
|
letta/llm_api/deepseek_client.py,sha256=di6ApSQu1DewXw0_JIP7AK4IHvXQHd0e32tQfFf5F34,16975
|
99
100
|
letta/llm_api/google_ai_client.py,sha256=JweTUHZXvK6kcZBGXA7XEU53KP4vM7_zdD7AorCtsdI,8166
|
100
101
|
letta/llm_api/google_constants.py,sha256=eOjOv-FImyJ4b4QGIaod-mEROMtrBFz0yhuYHqOEkwY,797
|
101
|
-
letta/llm_api/google_vertex_client.py,sha256=
|
102
|
+
letta/llm_api/google_vertex_client.py,sha256=PUTUa2DM-nIVhE7H3pDwPqgPl2gLAAgGgANzABV6Xfc,28680
|
102
103
|
letta/llm_api/groq_client.py,sha256=nNeWSgDVOLn3iFiicDKyhHj7f73JxrB9-7_M2Pv2e1I,3192
|
103
104
|
letta/llm_api/helpers.py,sha256=GXV_SuaU7uSCDj6bxDcCCF7CUjuZQCVWd5qZ3OsHVNk,17587
|
104
105
|
letta/llm_api/llm_api_tools.py,sha256=lsZ6OeIHesyOfbNQi5CVw5hn1lTQP5gJyforp-D0nk8,12294
|
@@ -152,14 +153,14 @@ letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ft
|
|
152
153
|
letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
154
|
letta/openai_backcompat/openai_object.py,sha256=GSzeCTwLpLD2fH4X8wVqzwdmoTjKK2I4PnriBY453lc,13505
|
154
155
|
letta/orm/__init__.py,sha256=CNDfeCRle9h5EnqFMXadlUCFN0AtlPihMrlAjt9Ikv0,1637
|
155
|
-
letta/orm/agent.py,sha256=
|
156
|
+
letta/orm/agent.py,sha256=MF4MvWEP9-51ynhgct_B7zvr6ikkUnjXHDhLj_FFpaA,17224
|
156
157
|
letta/orm/agents_tags.py,sha256=-rWR8DoEiHM4yc9vAHgHuvjIwgMXMWzKnTKFlBBu3TQ,1076
|
157
158
|
letta/orm/archive.py,sha256=82engq9ZfNrp1yu8QS5df4vsIwQC33CADZA-05doNko,3920
|
158
159
|
letta/orm/archives_agents.py,sha256=hIhaIRQPuNv-etQVWnIQhEomiumLC1OWR-T_s0Y7snM,1273
|
159
160
|
letta/orm/base.py,sha256=7XoaeFP-EbypTaEZqALTIOXyW1PqI2bJOKT85FWoRGU,3044
|
160
|
-
letta/orm/block.py,sha256=
|
161
|
+
letta/orm/block.py,sha256=arPKI9vNrDtl3fJQgOTIWjqYjj1V-WuMK6NDTSBHNcc,6101
|
161
162
|
letta/orm/block_history.py,sha256=XLbdTkc9Ga_W5oolzRPRxry7x5rS-PHqW11MKpBxyrA,2109
|
162
|
-
letta/orm/blocks_agents.py,sha256=
|
163
|
+
letta/orm/blocks_agents.py,sha256=b5PWmA4CrDJvMMcTVVdt7tWIFFWPK6XhMna_2SUTCjg,1184
|
163
164
|
letta/orm/custom_columns.py,sha256=gVq4opV0sIuThphX7z3QdyF8RKbcxUO6IHX2J4al27U,5585
|
164
165
|
letta/orm/errors.py,sha256=Se0Guz-gqi-D36NUWSh7AP9zTVCSph9KgZh_trwng4o,734
|
165
166
|
letta/orm/file.py,sha256=LynuEajZM7QeO4Y_J84iAB9dqXHPCY-xTur0q022n48,5298
|
@@ -186,13 +187,13 @@ letta/orm/provider.py,sha256=DYh-rvK0Bwl540hS902zK02mTiK5YJNmxD2GgBhgbpc,1656
|
|
186
187
|
letta/orm/provider_trace.py,sha256=CJMGz-rLqagJ-yXh9SJRbiGr5nAYdxY524hmiTgDFx4,1153
|
187
188
|
letta/orm/sandbox_config.py,sha256=XmBfYSQzocewuCGkuXNq4QwBpzfJpygX0dBVag0ELOc,4189
|
188
189
|
letta/orm/source.py,sha256=tRxqjWM8n1LBhlDTIiKhJ82-tpWErTeiDXMFz1rwY4g,1715
|
189
|
-
letta/orm/sources_agents.py,sha256=
|
190
|
+
letta/orm/sources_agents.py,sha256=Fvo8ujDNeeqleiiqXk-0VUPiQDawLAN-d28RxdvWnbs,554
|
190
191
|
letta/orm/sqlalchemy_base.py,sha256=mw_leKRvSskRswfiUTYP3Jk9Q7Io9rQJWyVEUGWyTaw,44900
|
191
192
|
letta/orm/sqlite_functions.py,sha256=tbwePL5XciJIttoehyt1H17zdUXWAdjFqH0t-XaFJfk,7256
|
192
193
|
letta/orm/step.py,sha256=S5G4uPMx74_629Fa1IZAdttTk0BQw-an3Amw6fhw9VA,4495
|
193
194
|
letta/orm/step_metrics.py,sha256=5UDJYyGIYMsidKzBDru5CzJXzA0AycaO_e23xFIvEvE,4391
|
194
195
|
letta/orm/tool.py,sha256=W31LI3zT-2cPg8rWwqdLfIZqhG5dg87_Qeb8TTHKOzw,3055
|
195
|
-
letta/orm/tools_agents.py,sha256=
|
196
|
+
letta/orm/tools_agents.py,sha256=aUvXqoE9VrEBIEbGUVdWtSIt0yEtAVbZScNUVr8PgoM,700
|
196
197
|
letta/orm/user.py,sha256=rK5N5ViDxmesZMqVVHB7FcQNpcSoM-hB42MyI6q3MnI,1004
|
197
198
|
letta/otel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
198
199
|
letta/otel/context.py,sha256=GUTxFpWMdCmib1Qy80TpAs0Qb5fNH_m5sCYZ1LN3HmM,789
|
@@ -275,7 +276,7 @@ letta/schemas/llm_config.py,sha256=8nyi9r3o3feh_hUy6pdRWp3E6M612xZhvV3gkFB4aqE,1
|
|
275
276
|
letta/schemas/llm_config_overrides.py,sha256=E6qJuVA8TwAAy3VjGitJ5jSQo5PbN-6VPcZOF5qhP9A,1815
|
276
277
|
letta/schemas/mcp.py,sha256=JMz-e2qlttNIgICJHm6Q_Pu908i41060EBQc6MGKIDM,8985
|
277
278
|
letta/schemas/memory.py,sha256=MH5Cha-HtezSWg3W7ij0fBOxvCERnu59h-sE8lyRGH4,15010
|
278
|
-
letta/schemas/message.py,sha256=
|
279
|
+
letta/schemas/message.py,sha256=zgDFz87xBRnkGFCp4xqpi4CdRysiAOWRRs10Ddlh0ew,55855
|
279
280
|
letta/schemas/npm_requirement.py,sha256=HkvBF7KjHUH-MG-RAEYJHO2MLRS2rxFUcmbpbZVznLk,457
|
280
281
|
letta/schemas/organization.py,sha256=TXrHN4IBQnX-mWvRuCOH57XZSLYCVOY0wWm2_UzDQIA,1279
|
281
282
|
letta/schemas/passage.py,sha256=_bO19zOIQtQ3F3VqDSgIJqh15V0IIrJ_KdlbCt6-4D0,3940
|
@@ -332,18 +333,18 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
333
|
letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
|
333
334
|
letta/server/db.py,sha256=AULPiuS0b_EmNsQIS9b0yy3WBTpJv41vqF6Hxq9VXYg,17854
|
334
335
|
letta/server/generate_openapi_schema.sh,sha256=14Q6r0fbNNVVdf4X3Z-H0ZtyrVw5zYLzL5Doom3kM9k,351
|
335
|
-
letta/server/server.py,sha256=
|
336
|
+
letta/server/server.py,sha256=KFFbyl7Djn8CS0aPxz3jL8RwmXPr9nKY3wDu3ymUWjI,109265
|
336
337
|
letta/server/startup.sh,sha256=z-Fea-7LiuS_aG1tJqS8JAsDQaamwC_kuDhv9D3PPPY,2698
|
337
338
|
letta/server/utils.py,sha256=rRvW6L1lzau4u9boamiyZH54lf5tQ91ypXzUW9cfSPA,1667
|
338
339
|
letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
339
340
|
letta/server/rest_api/app.py,sha256=W3lCWe2iGumNIAyuDyH2sNO1EwGKqh7iSo82NXCXrVw,19270
|
340
341
|
letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
|
341
342
|
letta/server/rest_api/chat_completions_interface.py,sha256=-7wO7pNBWXMqblVkJpuZ8JPJ-LjudLTtT6BJu-q_XAM,11138
|
342
|
-
letta/server/rest_api/interface.py,sha256=
|
343
|
-
letta/server/rest_api/json_parser.py,sha256=
|
344
|
-
letta/server/rest_api/redis_stream_manager.py,sha256=
|
343
|
+
letta/server/rest_api/interface.py,sha256=X5NZ8oerDcipG9y1AfD92zJ_2TgVMO4eJ42RP82GFF8,70952
|
344
|
+
letta/server/rest_api/json_parser.py,sha256=yoakaCkSMdf0Y_pyILoFKZlvzXeqF-E1KNeHzatLMDc,9157
|
345
|
+
letta/server/rest_api/redis_stream_manager.py,sha256=YR9daW5kG-s31-lyg4YVPU8lClS6UG7zuzZWKVUXBQg,10179
|
345
346
|
letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
|
346
|
-
letta/server/rest_api/streaming_response.py,sha256=
|
347
|
+
letta/server/rest_api/streaming_response.py,sha256=wfhby6skucjGtw9d9pcfa856lI1r6JKaosCYbutKD2k,14458
|
347
348
|
letta/server/rest_api/utils.py,sha256=IT3RnZJWNIaTdFEEyveZb47o9PIzDT_2pIgpPBVN7iU,19326
|
348
349
|
letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
349
350
|
letta/server/rest_api/auth/index.py,sha256=oaWNZREyuTyldHBx0vQYlqtePruL21H1atZj_TO_nyg,1377
|
@@ -352,12 +353,12 @@ letta/server/rest_api/middleware/check_password.py,sha256=LKR_rlhzZ-93o0FpkwDn8v
|
|
352
353
|
letta/server/rest_api/middleware/profiler_context.py,sha256=MbOFOXhkOCuq6vlOiv0DGgmlLVKxC-9tRZ0OTOn_0GA,859
|
353
354
|
letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
354
355
|
letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
355
|
-
letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=
|
356
|
+
letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=ohM1i8BsNxTiw8duuRT5X_0tSUzBwctQM4fJ5DXURic,5157
|
356
357
|
letta/server/rest_api/routers/v1/__init__.py,sha256=9MnEA7CgtIxyU_dDNG0jm-Ziqu1somBml-e5gKjgd9I,1997
|
357
|
-
letta/server/rest_api/routers/v1/agents.py,sha256=
|
358
|
+
letta/server/rest_api/routers/v1/agents.py,sha256=VQyGsi6Ci7Ili8rSoKnwY9RZYBcSXzcj7lnpz4OopSk,75580
|
358
359
|
letta/server/rest_api/routers/v1/blocks.py,sha256=ykI77xnmIxPLqdAy5kzGyGw0w0ZRyVXn-O5Xcdj6-70,7690
|
359
360
|
letta/server/rest_api/routers/v1/embeddings.py,sha256=PRaQlrmEXPiIdWsTbadrFsv3Afyv5oEFUdhgHA8FTi8,989
|
360
|
-
letta/server/rest_api/routers/v1/folders.py,sha256=
|
361
|
+
letta/server/rest_api/routers/v1/folders.py,sha256=8Yb-bw2JdXBxMfrJNIZQk9_FKN2fet9Ccp8T83_c2sc,23539
|
361
362
|
letta/server/rest_api/routers/v1/groups.py,sha256=PlCKfG1ZUubg-bNVRBmqJNBMvvZtHDvT50LUKKd0w9I,11466
|
362
363
|
letta/server/rest_api/routers/v1/health.py,sha256=MoOjkydhGcJXTiuJrKIB0etVXiRMdTa51S8RQ8-50DQ,399
|
363
364
|
letta/server/rest_api/routers/v1/identities.py,sha256=KUfw6avQIVHNw2lWz4pXOyTOPVy1g19CJGG-zayORl8,7858
|
@@ -369,7 +370,7 @@ letta/server/rest_api/routers/v1/organizations.py,sha256=OnG2vMDZEmN4eEvj24CPwiV
|
|
369
370
|
letta/server/rest_api/routers/v1/providers.py,sha256=rypNWQ1VMjmZJYd48uvNGJsE2N22jDTxn89qvbDaOMs,4765
|
370
371
|
letta/server/rest_api/routers/v1/runs.py,sha256=WnYwoFNjHNZicTnCkvoXCxl0XiyVAEvF70TTaMCBhPw,12982
|
371
372
|
letta/server/rest_api/routers/v1/sandbox_configs.py,sha256=f0xEOwR3PXqCS2HOjEv7UKfMWTwEaTHx105HW_X-LI4,8852
|
372
|
-
letta/server/rest_api/routers/v1/sources.py,sha256=
|
373
|
+
letta/server/rest_api/routers/v1/sources.py,sha256=nXZxtHi40281VltWmx1RwGBbau_00UpzDS6teTLvt2w,22679
|
373
374
|
letta/server/rest_api/routers/v1/steps.py,sha256=bTzfz1GR3VEZdJRYUGiSr6ZLd12i5faPsf3oAqu1eMk,5570
|
374
375
|
letta/server/rest_api/routers/v1/tags.py,sha256=ef94QitUSJ3NQVffWF1ZqANUZ2b2jRyGHp_I3UUjhno,912
|
375
376
|
letta/server/rest_api/routers/v1/telemetry.py,sha256=eSTg7mWbuwPb2OTHQxwRM0EUEl49wHzNB6i1xJtH8BQ,1036
|
@@ -389,7 +390,7 @@ letta/server/ws_api/server.py,sha256=_16TQafm509rqRztZYqo0HKKZoe8ccBrNftd_kbIJTE
|
|
389
390
|
letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
390
391
|
letta/services/agent_file_manager.py,sha256=bgYTyQA90Iqo3W-LprPtyyOKf2itoqivcRhh4EOUXss,30847
|
391
392
|
letta/services/agent_manager.py,sha256=KaJRTWwvA1SpfKQFPPVCeYxIOKwpKmLMioeyHuGw63Y,168884
|
392
|
-
letta/services/agent_serialization_manager.py,sha256=
|
393
|
+
letta/services/agent_serialization_manager.py,sha256=lWXTzYItqVxJMyy9ZYlcCDQwC3ZKk9XPCHvBkoVuszA,46388
|
393
394
|
letta/services/archive_manager.py,sha256=P10BjZ2PxLoIkCwJ8rx7qLzchNVBsqNG3_KzxTanCLQ,14060
|
394
395
|
letta/services/block_manager.py,sha256=mohj12QqHenSBbBx0Xmry1Rw25Gy5DSljOITzAwqMtw,33683
|
395
396
|
letta/services/file_manager.py,sha256=d4uX8RblmqNGk1MsfeGzQ5uDWKVFP-AH63Jz5xOkj2c,31364
|
@@ -398,7 +399,7 @@ letta/services/group_manager.py,sha256=dD4DDHjOptMrtbWqw1ErlhpBqChw2ubLJdILjeLTY
|
|
398
399
|
letta/services/identity_manager.py,sha256=JI9Xc7EsBagSwDS2na4rFNhoO_LuaxlkVO_1oIK_ITQ,11841
|
399
400
|
letta/services/job_manager.py,sha256=31AKBwQWkjOFH2n4Cx3KCv1g_n499C_1VRIVviUGsLI,35312
|
400
401
|
letta/services/llm_batch_manager.py,sha256=iDzLFfmgpQooGY4zpN_w8q1SZ27fr2Cv6Ks3ltZErL8,20929
|
401
|
-
letta/services/mcp_manager.py,sha256=
|
402
|
+
letta/services/mcp_manager.py,sha256=aenw1-UgjecmQ6BLrTWVvpKJmeFcGslocdhRKT_PqEk,45077
|
402
403
|
letta/services/message_manager.py,sha256=tomsZidPT-I95sJsEsls-vj3qglehV7XNTs-m2zF8Bg,60629
|
403
404
|
letta/services/organization_manager.py,sha256=JMW5oS_sr6vQQ27OgRV3BR1JL0MqyoGUDcpEOs3SLRY,5800
|
404
405
|
letta/services/passage_manager.py,sha256=kOQjlJFz7Dy6e0NEECoFHhcH8hPIMNeEHxZ1JJ-R2Cs,52372
|
@@ -441,14 +442,14 @@ letta/services/mcp/streamable_http_client.py,sha256=d-5wmrZ7MjLTFbaAUAITEC699TBz
|
|
441
442
|
letta/services/mcp/types.py,sha256=8LYlBwWvdbvfy6ZdXJoin-7QmgmJC7samYXjQZL4KZs,1662
|
442
443
|
letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
443
444
|
letta/services/summarizer/enums.py,sha256=lo2E1DKB-s2Ydx4PcLia1PIRUOY5yTSsFt_0EZVV2r0,279
|
444
|
-
letta/services/summarizer/summarizer.py,sha256=
|
445
|
+
letta/services/summarizer/summarizer.py,sha256=hRGkiPvcX3u5PSOxCrbwL4G1RCSlFaHAaB5FObZCuSY,18977
|
445
446
|
letta/services/tool_executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
446
447
|
letta/services/tool_executor/builtin_tool_executor.py,sha256=QKPFXbgzYQobqWRuFs9RhVcQ1d53q8-yV_GFdR2IX88,9718
|
447
448
|
letta/services/tool_executor/composio_tool_executor.py,sha256=ia2AA_WDOseR8Ylam-HEayR7OiyfNSb1sSUrjwqlmFM,2308
|
448
449
|
letta/services/tool_executor/core_tool_executor.py,sha256=bd9x0M9Ttj3FqoIUU66k2FHa2PVY0OlUHqs1aLZYxFI,22624
|
449
450
|
letta/services/tool_executor/files_tool_executor.py,sha256=HyJ2RXYMVOhvKoLAamgMA2YsgQJmu6CcjioXiaGfAn0,37808
|
450
451
|
letta/services/tool_executor/mcp_tool_executor.py,sha256=2zEXmkKsH-IGbMG2Xw1S9op4eL21g25RA4vGImB29KY,2000
|
451
|
-
letta/services/tool_executor/multi_agent_tool_executor.py,sha256=
|
452
|
+
letta/services/tool_executor/multi_agent_tool_executor.py,sha256=LIg9yh8BlfYokP_29WryLZPPSMqEsJUwc0mZGMlhc00,5724
|
452
453
|
letta/services/tool_executor/sandbox_tool_executor.py,sha256=LamEZUVqsiBfBL9S1uQMXFGQOXqJlXK9ZrfpZBk5jsA,6258
|
453
454
|
letta/services/tool_executor/tool_execution_manager.py,sha256=Jz05CfUJAiVngwLV_qAgY8LwSHZGmp7poRcVJxOJPRE,6950
|
454
455
|
letta/services/tool_executor/tool_execution_sandbox.py,sha256=mDK8ZrtC-Fe8MY9gmhONMsjxiiSCJtL4bTrpECKksgQ,25908
|
@@ -456,12 +457,12 @@ letta/services/tool_executor/tool_executor_base.py,sha256=4b1GU0LZc8iwbM3TisqBVO
|
|
456
457
|
letta/services/tool_sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
457
458
|
letta/services/tool_sandbox/base.py,sha256=afzDoYo-Jw9shnAEzQubIV6H8Q2kJQ_6elWlQUr-sGY,8120
|
458
459
|
letta/services/tool_sandbox/e2b_sandbox.py,sha256=7h7quhbJRV1eIztZPVPgJLYwgHS3ZiaaMvTPrt01F1U,10294
|
459
|
-
letta/services/tool_sandbox/local_sandbox.py,sha256=
|
460
|
+
letta/services/tool_sandbox/local_sandbox.py,sha256=4DnzszQ0VRIKo9kejfYyp4UTOQW_NTTfebhjeLtqOIs,11992
|
460
461
|
letta/services/tool_sandbox/modal_constants.py,sha256=AaXPxSlCj2BhfY5DGwQvqHXfikpurhV2iFsN7zxM3Is,454
|
461
462
|
letta/services/tool_sandbox/modal_deployment_manager.py,sha256=rNDcaHSC3ALA8gAgwAnMG-sbz67zqm6Oa8lgSku0Ah0,9157
|
462
463
|
letta/services/tool_sandbox/modal_sandbox.py,sha256=bgzcj1ysGiFanr1pYkiWxWd1YjHv9OkXd32iuwDpRA8,17814
|
463
464
|
letta/services/tool_sandbox/modal_sandbox_v2.py,sha256=8GcGG20lirNU33375SFfhecS6EvGlYojjUGzwU34sQ0,18483
|
464
|
-
letta/services/tool_sandbox/modal_version_manager.py,sha256=
|
465
|
+
letta/services/tool_sandbox/modal_version_manager.py,sha256=Xj1xwAjdHq7IafwaKnhzXkWEjxywsm7OrI396Zfo4G4,11485
|
465
466
|
letta/services/tool_sandbox/safe_pickle.py,sha256=p8NJy3zVj-LrvXj8pwJ-SG8r-VhD86NVGWoboaF3ir4,5964
|
466
467
|
letta/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
467
468
|
letta/templates/sandbox_code_file.py.j2,sha256=eXga5J_04Z8-pGdwfOCDjcRnMceIqcF5ii0rUY3lmq4,2270
|
@@ -469,8 +470,8 @@ letta/templates/sandbox_code_file_async.py.j2,sha256=lb7nh_P2W9VZHzU_9TxSCEMUod7
|
|
469
470
|
letta/templates/summary_request_text.j2,sha256=ZttQwXonW2lk4pJLYzLK0pmo4EO4EtUUIXjgXKiizuc,842
|
470
471
|
letta/templates/template_helper.py,sha256=HkG3zwRc5NVGmSTQu5PUTpz7LevK43bzXVaQuN8urf0,1634
|
471
472
|
letta/types/__init__.py,sha256=hokKjCVFGEfR7SLMrtZsRsBfsC7yTIbgKPLdGg4K1eY,147
|
472
|
-
letta_nightly-0.11.7.
|
473
|
-
letta_nightly-0.11.7.
|
474
|
-
letta_nightly-0.11.7.
|
475
|
-
letta_nightly-0.11.7.
|
476
|
-
letta_nightly-0.11.7.
|
473
|
+
letta_nightly-0.11.7.dev20250911104039.dist-info/METADATA,sha256=toGJ1-WRYUWzjt9UP7FnP49pm3M_vjCliXaUV3yLsw0,24436
|
474
|
+
letta_nightly-0.11.7.dev20250911104039.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
475
|
+
letta_nightly-0.11.7.dev20250911104039.dist-info/entry_points.txt,sha256=m-94Paj-kxiR6Ktu0us0_2qfhn29DzF2oVzqBE6cu8w,41
|
476
|
+
letta_nightly-0.11.7.dev20250911104039.dist-info/licenses/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
|
477
|
+
letta_nightly-0.11.7.dev20250911104039.dist-info/RECORD,,
|
File without changes
|
File without changes
|