letta-nightly 0.6.5.dev20241220104040__py3-none-any.whl → 0.6.6.dev20241221104005__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.

@@ -1,10 +1,21 @@
1
- from typing import List, Optional
1
+ import datetime
2
+ from typing import List, Literal, Optional
2
3
 
4
+ from letta import system
5
+ from letta.constants import IN_CONTEXT_MEMORY_KEYWORD, STRUCTURED_OUTPUT_MODELS
6
+ from letta.helpers import ToolRulesSolver
3
7
  from letta.orm.agent import Agent as AgentModel
4
8
  from letta.orm.agents_tags import AgentsTags
5
9
  from letta.orm.errors import NoResultFound
6
10
  from letta.prompts import gpt_system
7
- from letta.schemas.agent import AgentType
11
+ from letta.schemas.agent import AgentState, AgentType
12
+ from letta.schemas.enums import MessageRole
13
+ from letta.schemas.memory import Memory
14
+ from letta.schemas.message import Message, MessageCreate
15
+ from letta.schemas.tool_rule import ToolRule
16
+ from letta.schemas.user import User
17
+ from letta.system import get_initial_boot_messages, get_login_event
18
+ from letta.utils import get_local_time
8
19
 
9
20
 
10
21
  # Static methods
@@ -88,3 +99,162 @@ def derive_system_message(agent_type: AgentType, system: Optional[str] = None):
88
99
  raise ValueError(f"Invalid agent type: {agent_type}")
89
100
 
90
101
  return system
102
+
103
+
104
+ # TODO: This code is kind of wonky and deserves a rewrite
105
+ def compile_memory_metadata_block(
106
+ memory_edit_timestamp: datetime.datetime, previous_message_count: int = 0, archival_memory_size: int = 0
107
+ ) -> str:
108
+ # Put the timestamp in the local timezone (mimicking get_local_time())
109
+ timestamp_str = memory_edit_timestamp.astimezone().strftime("%Y-%m-%d %I:%M:%S %p %Z%z").strip()
110
+
111
+ # Create a metadata block of info so the agent knows about the metadata of out-of-context memories
112
+ memory_metadata_block = "\n".join(
113
+ [
114
+ f"### Memory [last modified: {timestamp_str}]",
115
+ f"{previous_message_count} previous messages between you and the user are stored in recall memory (use functions to access them)",
116
+ f"{archival_memory_size} total memories you created are stored in archival memory (use functions to access them)",
117
+ "\nCore memory shown below (limited in size, additional information stored in archival / recall memory):",
118
+ ]
119
+ )
120
+ return memory_metadata_block
121
+
122
+
123
+ def compile_system_message(
124
+ system_prompt: str,
125
+ in_context_memory: Memory,
126
+ in_context_memory_last_edit: datetime.datetime, # TODO move this inside of BaseMemory?
127
+ user_defined_variables: Optional[dict] = None,
128
+ append_icm_if_missing: bool = True,
129
+ template_format: Literal["f-string", "mustache", "jinja2"] = "f-string",
130
+ previous_message_count: int = 0,
131
+ archival_memory_size: int = 0,
132
+ ) -> str:
133
+ """Prepare the final/full system message that will be fed into the LLM API
134
+
135
+ The base system message may be templated, in which case we need to render the variables.
136
+
137
+ The following are reserved variables:
138
+ - CORE_MEMORY: the in-context memory of the LLM
139
+ """
140
+
141
+ if user_defined_variables is not None:
142
+ # TODO eventually support the user defining their own variables to inject
143
+ raise NotImplementedError
144
+ else:
145
+ variables = {}
146
+
147
+ # Add the protected memory variable
148
+ if IN_CONTEXT_MEMORY_KEYWORD in variables:
149
+ raise ValueError(f"Found protected variable '{IN_CONTEXT_MEMORY_KEYWORD}' in user-defined vars: {str(user_defined_variables)}")
150
+ else:
151
+ # TODO should this all put into the memory.__repr__ function?
152
+ memory_metadata_string = compile_memory_metadata_block(
153
+ memory_edit_timestamp=in_context_memory_last_edit,
154
+ previous_message_count=previous_message_count,
155
+ archival_memory_size=archival_memory_size,
156
+ )
157
+ full_memory_string = memory_metadata_string + "\n" + in_context_memory.compile()
158
+
159
+ # Add to the variables list to inject
160
+ variables[IN_CONTEXT_MEMORY_KEYWORD] = full_memory_string
161
+
162
+ if template_format == "f-string":
163
+
164
+ # Catch the special case where the system prompt is unformatted
165
+ if append_icm_if_missing:
166
+ memory_variable_string = "{" + IN_CONTEXT_MEMORY_KEYWORD + "}"
167
+ if memory_variable_string not in system_prompt:
168
+ # In this case, append it to the end to make sure memory is still injected
169
+ # warnings.warn(f"{IN_CONTEXT_MEMORY_KEYWORD} variable was missing from system prompt, appending instead")
170
+ system_prompt += "\n" + memory_variable_string
171
+
172
+ # render the variables using the built-in templater
173
+ try:
174
+ formatted_prompt = system_prompt.format_map(variables)
175
+ except Exception as e:
176
+ raise ValueError(f"Failed to format system prompt - {str(e)}. System prompt value:\n{system_prompt}")
177
+
178
+ else:
179
+ # TODO support for mustache and jinja2
180
+ raise NotImplementedError(template_format)
181
+
182
+ return formatted_prompt
183
+
184
+
185
+ def initialize_message_sequence(
186
+ agent_state: AgentState,
187
+ memory_edit_timestamp: Optional[datetime.datetime] = None,
188
+ include_initial_boot_message: bool = True,
189
+ previous_message_count: int = 0,
190
+ archival_memory_size: int = 0,
191
+ ) -> List[dict]:
192
+ if memory_edit_timestamp is None:
193
+ memory_edit_timestamp = get_local_time()
194
+
195
+ full_system_message = compile_system_message(
196
+ system_prompt=agent_state.system,
197
+ in_context_memory=agent_state.memory,
198
+ in_context_memory_last_edit=memory_edit_timestamp,
199
+ user_defined_variables=None,
200
+ append_icm_if_missing=True,
201
+ previous_message_count=previous_message_count,
202
+ archival_memory_size=archival_memory_size,
203
+ )
204
+ first_user_message = get_login_event() # event letting Letta know the user just logged in
205
+
206
+ if include_initial_boot_message:
207
+ if agent_state.llm_config.model is not None and "gpt-3.5" in agent_state.llm_config.model:
208
+ initial_boot_messages = get_initial_boot_messages("startup_with_send_message_gpt35")
209
+ else:
210
+ initial_boot_messages = get_initial_boot_messages("startup_with_send_message")
211
+ messages = (
212
+ [
213
+ {"role": "system", "content": full_system_message},
214
+ ]
215
+ + initial_boot_messages
216
+ + [
217
+ {"role": "user", "content": first_user_message},
218
+ ]
219
+ )
220
+
221
+ else:
222
+ messages = [
223
+ {"role": "system", "content": full_system_message},
224
+ {"role": "user", "content": first_user_message},
225
+ ]
226
+
227
+ return messages
228
+
229
+
230
+ def package_initial_message_sequence(
231
+ agent_id: str, initial_message_sequence: List[MessageCreate], model: str, actor: User
232
+ ) -> List[Message]:
233
+ # create the agent object
234
+ init_messages = []
235
+ for message_create in initial_message_sequence:
236
+
237
+ if message_create.role == MessageRole.user:
238
+ packed_message = system.package_user_message(
239
+ user_message=message_create.text,
240
+ )
241
+ elif message_create.role == MessageRole.system:
242
+ packed_message = system.package_system_message(
243
+ system_message=message_create.text,
244
+ )
245
+ else:
246
+ raise ValueError(f"Invalid message role: {message_create.role}")
247
+
248
+ init_messages.append(
249
+ Message(role=message_create.role, text=packed_message, organization_id=actor.organization_id, agent_id=agent_id, model=model)
250
+ )
251
+ return init_messages
252
+
253
+
254
+ def check_supports_structured_output(model: str, tool_rules: List[ToolRule]) -> bool:
255
+ if model not in STRUCTURED_OUTPUT_MODELS:
256
+ if len(ToolRulesSolver(tool_rules=tool_rules).init_tool_rules) > 1:
257
+ raise ValueError("Multiple initial tools are not supported for non-structured models. Please use only one initial tool rule.")
258
+ return False
259
+ else:
260
+ return True
@@ -28,6 +28,21 @@ class MessageManager:
28
28
  except NoResultFound:
29
29
  return None
30
30
 
31
+ @enforce_types
32
+ def get_messages_by_ids(self, message_ids: List[str], actor: PydanticUser) -> List[PydanticMessage]:
33
+ """Fetch messages by ID and return them in the requested order."""
34
+ with self.session_maker() as session:
35
+ results = MessageModel.list(db_session=session, id=message_ids, organization_id=actor.organization_id, limit=len(message_ids))
36
+
37
+ if len(results) != len(message_ids):
38
+ raise NoResultFound(
39
+ f"Expected {len(message_ids)} messages, but found {len(results)}. Missing ids={set(message_ids) - set([r.id for r in results])}"
40
+ )
41
+
42
+ # Sort results directly based on message_ids
43
+ result_dict = {msg.id: msg.to_pydantic() for msg in results}
44
+ return [result_dict[msg_id] for msg_id in message_ids]
45
+
31
46
  @enforce_types
32
47
  def create_message(self, pydantic_msg: PydanticMessage, actor: PydanticUser) -> PydanticMessage:
33
48
  """Create a new message."""
letta/settings.py CHANGED
@@ -83,9 +83,6 @@ class Settings(BaseSettings):
83
83
  pg_pool_recycle: int = 1800 # When to recycle connections
84
84
  pg_echo: bool = False # Logging
85
85
 
86
- # tools configuration
87
- load_default_external_tools: Optional[bool] = None
88
-
89
86
  @property
90
87
  def letta_pg_uri(self) -> str:
91
88
  if self.pg_uri:
letta/utils.py CHANGED
@@ -28,6 +28,7 @@ from letta.constants import (
28
28
  CLI_WARNING_PREFIX,
29
29
  CORE_MEMORY_HUMAN_CHAR_LIMIT,
30
30
  CORE_MEMORY_PERSONA_CHAR_LIMIT,
31
+ ERROR_MESSAGE_PREFIX,
31
32
  LETTA_DIR,
32
33
  MAX_FILENAME_LENGTH,
33
34
  TOOL_CALL_ID_MAX_LEN,
@@ -1122,7 +1123,7 @@ def sanitize_filename(filename: str) -> str:
1122
1123
  def get_friendly_error_msg(function_name: str, exception_name: str, exception_message: str):
1123
1124
  from letta.constants import MAX_ERROR_MESSAGE_CHAR_LIMIT
1124
1125
 
1125
- error_msg = f"Error executing function {function_name}: {exception_name}: {exception_message}"
1126
+ error_msg = f"{ERROR_MESSAGE_PREFIX} executing function {function_name}: {exception_name}: {exception_message}"
1126
1127
  if len(error_msg) > MAX_ERROR_MESSAGE_CHAR_LIMIT:
1127
1128
  error_msg = error_msg[:MAX_ERROR_MESSAGE_CHAR_LIMIT]
1128
1129
  return error_msg
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.6.5.dev20241220104040
3
+ Version: 0.6.6.dev20241221104005
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -1,18 +1,18 @@
1
- letta/__init__.py,sha256=zY_5By7t8Jgl0Nejq2i4yOTJQg0lzJNlwdmp8sB-W9Y,1014
1
+ letta/__init__.py,sha256=kBJPc_H6xrNs2Y1U-Otm4HteKlgr6AfbLp8nRxMwfiQ,1014
2
2
  letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
3
- letta/agent.py,sha256=UkbUrQjbOsPUU6_1jJQ0i3VYZ28A-9J5V6201Xktreg,79195
3
+ letta/agent.py,sha256=4mkn4YzXv4e3DbQOOXcrBGTPDBhM9OlpRLVs_kY768s,54619
4
4
  letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
5
5
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
6
- letta/chat_only_agent.py,sha256=3wBCzddcfF6IMbPdDtTZFze5-HJSYxHd8w6jkkSwzsw,4628
6
+ letta/chat_only_agent.py,sha256=ECqJS7KzXOsNkJc9mv7reKbcxBI_PKP_PQyk95tsT1Y,4761
7
7
  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=hQDOqeWIeHNvvWTiO6QgBcuzHQ54V-G0DjtbJ-ycL9Y,126673
12
- letta/client/streaming.py,sha256=tuByoy_T40pKghpoTboyBMmotlMEqVFPqNRgODZJ38k,4754
11
+ letta/client/client.py,sha256=esDIKxZ7_g7tqV52z7uGhqc2nfnWwri4FGLhYFUmuKQ,126981
12
+ letta/client/streaming.py,sha256=01BxjMpF4NiUOVlbK87wq753d036pX5ViXxhodTrYag,4750
13
13
  letta/client/utils.py,sha256=OJlAKWrldc4I6M1WpcTWNtPJ4wfxlzlZqWLfCozkFtI,2872
14
14
  letta/config.py,sha256=JFGY4TWW0Wm5fTbZamOwWqk5G8Nn-TXyhgByGoAqy2c,12375
15
- letta/constants.py,sha256=1cyuDmvdkmt9px5N3IqzxvcKJ_ERrYUdSzN60Ky-HBs,7054
15
+ letta/constants.py,sha256=Yelpw8qUuAXPJhaGPitkab9_e6SzaYZDokbwVEZzXE4,7086
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
@@ -78,10 +78,10 @@ letta/local_llm/webui/legacy_api.py,sha256=k3H3y4qp2Fs-XmP24iSIEyvq6wjWFWBzklY3-
78
78
  letta/local_llm/webui/legacy_settings.py,sha256=BLmd3TSx5StnY3ibjwaxYATPt_Lvq-o1rlcc_-Q1JcU,538
79
79
  letta/local_llm/webui/settings.py,sha256=gmLHfiOl1u4JmlAZU2d2O8YKF9lafdakyjwR_ftVPh8,552
80
80
  letta/log.py,sha256=FxkAk2f8Bl-u9dfImSj1DYnjAsmV6PL3tjTSnEiNP48,2218
81
- letta/main.py,sha256=C0e8ELd0OwnGN-Yraa7ax694LPzFrw4_lfnlnqZRPhw,18890
81
+ letta/main.py,sha256=_agyaYPJq70OL0goNwO34zENL2KupnTgqlg-HVcNaTY,15379
82
82
  letta/memory.py,sha256=tt7xuknsId1c9LK0gNIfsMQgcrPXFa6aWHALlDeoHMc,3277
83
83
  letta/o1_agent.py,sha256=lQ7nX61DFhICWLdh8KpJnAurpwnR1V7PnOVIoCHXdas,2950
84
- letta/offline_memory_agent.py,sha256=swCkuUB8IsSfMFGr41QTwlKo63s6JOFMgiaB59FFw6o,7768
84
+ letta/offline_memory_agent.py,sha256=Wc2_je3oXxXcaiPPNPxc78A3IXVsiK6Q7X3t_SrlHck,7651
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
@@ -101,8 +101,8 @@ letta/orm/mixins.py,sha256=fBT4WjKDfDgGkkOHD8lFAaofDKElTLOx3oM1d6yQHSk,1620
101
101
  letta/orm/organization.py,sha256=PSu9pHBT_YYdZo7Z7AZBBM4veOzD7x2H2NYN4SjD82E,2519
102
102
  letta/orm/passage.py,sha256=tm5YhUozLR9hN7odGCqCniTl-3GDiFNz3LWAxullaGA,3132
103
103
  letta/orm/sandbox_config.py,sha256=PCMHE-eJPzBT-90OYtXjEMRF4f9JB8AJIGETE7bu-f0,2870
104
- letta/orm/source.py,sha256=SlX08BnoJYMh34cGTuPbo2kraCuXSy25xGdNWb7d7DQ,1782
105
- letta/orm/sources_agents.py,sha256=q5Wf5TFNI9KH6cGW93roNhvFD3n39UE2bYQhnSJwlME,433
104
+ letta/orm/source.py,sha256=xM3Iwy3xzYdoZja9BZrQwyAnPf5iksaQOs8HlNCvb_c,2031
105
+ letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
106
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
@@ -134,11 +134,11 @@ 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=vSOPExE8gpCTUYuz1qccr0wh10JK4QO2jtQleMLWL7s,25439
137
+ letta/providers.py,sha256=-TPVSKEDK9Gvdg-5YDE2Q0XcIADnhzdyWbiIJG39pU0,26374
138
138
  letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
- letta/schemas/agent.py,sha256=8zorIkzmsC2IBpO3r-I5p18VA-7BGDe_rxXqfPUJ9lE,10212
139
+ letta/schemas/agent.py,sha256=nBhYJchI945DCEg89rYcjh_KWxaR2nR7aKSeeZ2Xzsk,10318
140
140
  letta/schemas/block.py,sha256=pVDH8jr5r-oxdX4cK9dX2wXyLBzgGKQOBWOzqZSeBog,5944
141
- letta/schemas/embedding_config.py,sha256=u6n-MjUgLfKeDCMdG8f_7qCxJBxo0I8d3KIggmhwjfA,3236
141
+ letta/schemas/embedding_config.py,sha256=8K2EGVQ26F3zjY1Wj3v_hsrA-1qICshVMGRlKPSATfg,3354
142
142
  letta/schemas/enums.py,sha256=_ar3z6H_HP5c4cQEIf4xYO1nqFHQQXWKy6VdcaOX-lQ,1064
143
143
  letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
144
144
  letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
@@ -147,7 +147,7 @@ letta/schemas/letta_base.py,sha256=v3OvpVFVUfcuK1lIyTjM0x4fmWeWQw1DdlhKXHBUCz8,3
147
147
  letta/schemas/letta_message.py,sha256=SpAxAEFQa-JMzxIQ5cqz0TENB5S9WsdrTAHGUJBLCQQ,8040
148
148
  letta/schemas/letta_request.py,sha256=Hfb66FB1tXmrpEX4_yLQVfTrTSMbPYeEvZY-vqW9Tj8,981
149
149
  letta/schemas/letta_response.py,sha256=PSHnIzGAz1MP1ACA_f7zyt4zXDnYJhNfcDRbV1HJpo4,6940
150
- letta/schemas/llm_config.py,sha256=RbgnCaqYd_yl-Xs7t-DEI1NhpKD8WiVWjxcwq5mZd5M,4467
150
+ letta/schemas/llm_config.py,sha256=zxygt_4imoEAgxMLO1nxNVAL-2ePGsOKEt-vQJOc0ow,4585
151
151
  letta/schemas/memory.py,sha256=iWEm15qMa4pWQQUMIt6mnlrBQvACII0MpfNX8QujGE8,10072
152
152
  letta/schemas/message.py,sha256=Z_k8YpURh0Dbx4BaFbo6Z7YP9JIkItL1UKtDnmZfVHE,34149
153
153
  letta/schemas/openai/chat_completion_request.py,sha256=AOIwgbN3CZKVqkuXeMHeSa53u4h0wVq69t3T_LJ0vIE,3389
@@ -161,7 +161,7 @@ letta/schemas/sandbox_config.py,sha256=3CZyClISK3722MWstwOcKp_ppOI1LOE98i84Q4E2U
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=R3KiU3m5LDhiQsK-ZNOHqicMeTLhA7yW0cVZOBH57Uk,1678
164
- letta/schemas/usage.py,sha256=lvn1ooHwLEdv6gwQpw5PBUbcwn_gwdT6HA-fCiix6sY,817
164
+ letta/schemas/usage.py,sha256=y_nwjzJQ_hl_ZEtJ-jbrM8-Y-MJ5ZI8xV9ouQJfOBrI,910
165
165
  letta/schemas/user.py,sha256=V32Tgl6oqB3KznkxUz12y7agkQicjzW7VocSpj78i6Q,1526
166
166
  letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
@@ -171,7 +171,7 @@ letta/server/rest_api/app.py,sha256=ulEJeVgH5w9TdzqDJntmDfs8DCjIlImwLDoe6X1sPOc,
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
174
- letta/server/rest_api/interface.py,sha256=NQjzO1sMvb-bTp8Tbnw_IndsomlOnwznSoJaqofiagk,45760
174
+ letta/server/rest_api/interface.py,sha256=6uf0vVG_NrGb6Py3NsZ0PU5NXW5Me9XI-H74Q6huy8A,45766
175
175
  letta/server/rest_api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
176
  letta/server/rest_api/routers/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
177
  letta/server/rest_api/routers/openai/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -180,19 +180,19 @@ letta/server/rest_api/routers/openai/assistants/schemas.py,sha256=d3LdBLUI-mMUCP
180
180
  letta/server/rest_api/routers/openai/chat_completions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
181
  letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256=UoZCLvAsC2SzfnJg7LOz0h2wfcn8hmU33d2CW18erKw,4841
182
182
  letta/server/rest_api/routers/v1/__init__.py,sha256=RZc0fIHNN4BGretjU6_TGK7q49RyV4jfYNudoiK_sUo,762
183
- letta/server/rest_api/routers/v1/agents.py,sha256=a_u-g4tX1PN_c6cFnubApLqAkmZNTCu1YF6MmYdmymY,30359
183
+ letta/server/rest_api/routers/v1/agents.py,sha256=FyN8FJ9eHRTTJ_b7Jmz4sfi9KkvkJadY0lJaN7-Nipk,30463
184
184
  letta/server/rest_api/routers/v1/blocks.py,sha256=IJ2pppwNooaUjIwyBALnKL4sJ8idW8cVJlY-VH_J9HY,4803
185
185
  letta/server/rest_api/routers/v1/health.py,sha256=pKCuVESlVOhGIb4VC4K-H82eZqfghmT6kvj2iOkkKuc,401
186
186
  letta/server/rest_api/routers/v1/jobs.py,sha256=-tEyuIxlXZfPREeMks-sRzHwhKE2xxgzbXeEbBAS2Q8,2730
187
187
  letta/server/rest_api/routers/v1/llms.py,sha256=TcyvSx6MEM3je5F4DysL7ligmssL_pFlJaaO4uL95VY,877
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
- letta/server/rest_api/routers/v1/sources.py,sha256=bLvxyYBOLx1VD5YPuoCBrQrua0AruzUzvCMIiekjVQg,9974
191
- letta/server/rest_api/routers/v1/tools.py,sha256=KC44cB5QYja0piHkQxI1F-IzJbck2OvnXaOj-gOsdqs,11176
190
+ letta/server/rest_api/routers/v1/sources.py,sha256=shjy4gbKulKfbK94GF52EW4ZbiDatcNgnyBysONCBCA,9946
191
+ letta/server/rest_api/routers/v1/tools.py,sha256=bWgI5SExyfwqPASLf8o9reFWInSuMYyyJRV1DTTATps,11266
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=3wF-KavVVKzcdxcTQ7zzKtQQ1a7jRN3YuKXttrI5S9Y,3963
195
- letta/server/server.py,sha256=_hcPg16zReylsO_T8LO-G5mk3UYLambtcq3-Lblvw0A,59954
194
+ letta/server/rest_api/utils.py,sha256=78n6FMnCS7O3T_z1OXKmL8wKQVTnGnQ1LDlLTI-T5Kc,3952
195
+ letta/server/server.py,sha256=3WcSiVT6v51CIi9Ksce31eretItLo1bQuY9CPOgSyp8,49254
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,11 +206,11 @@ 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=GQyLp6ZgBCXozkkbfeY81_sFbf-UHVU_ulaTvFO9dCM,30338
209
+ letta/services/agent_manager.py,sha256=y8020VlCWvTtDmKfhaBxJ4XOi-9zwEXyh9q2oK6Tpwg,38935
210
210
  letta/services/block_manager.py,sha256=HUj9HKW2LvAsENEsgCO3Pf3orvSy6XOimev38VKmRZ8,4929
211
- letta/services/helpers/agent_manager_helper.py,sha256=4AoJJI3ELDZrfhx38vc2OwgQflb7mkdppucln0MkgYg,3457
211
+ letta/services/helpers/agent_manager_helper.py,sha256=Q_nRk-eovoYTzLxOYvUbnsQVLWdRvFvjk8OcLUfjkJU,10568
212
212
  letta/services/job_manager.py,sha256=FrkSXloke48CZKuzlYdysxM5gKWoTu7FRigPrs_YW4A,3645
213
- letta/services/message_manager.py,sha256=l_1_Su9jt3si5EdvbHoC9F4ITuLub4ApcgdkTfK2y2s,7715
213
+ letta/services/message_manager.py,sha256=a7U0MfgaNAdjbls7ZtUdS7eJ6prJaMkE0NIHgtzh4us,8552
214
214
  letta/services/organization_manager.py,sha256=hJI86_FErkRaW-VLBBmvmmciIXN59LN0mEMm78C36kQ,3331
215
215
  letta/services/passage_manager.py,sha256=3wR9ZV3nIkJ-oSywA2SVR2yLoNe2Nv5WyfaLtoNN5i8,7867
216
216
  letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
@@ -220,13 +220,13 @@ letta/services/tool_execution_sandbox.py,sha256=NtjSXdm86_lbTeW2gF08tyf2KSoxBP0B
220
220
  letta/services/tool_manager.py,sha256=eKhvGYNBq8MOwfuk-GyqiTdEcxRn4srYvTJqj-HgTKA,7686
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=sC4gS8Po1NyPmSMTk-TTxrKEoJUi8qgou1K3-BqtNA4,3979
223
+ letta/settings.py,sha256=RBLpItl13wJ8xhatgsmPqJPb19F_knID7PuT1c74uU8,3897
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=AlGH2fADkU5VkGISj9-hwMSZVKQUiI1whWTvXCKOiYw,33338
228
- letta_nightly-0.6.5.dev20241220104040.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
229
- letta_nightly-0.6.5.dev20241220104040.dist-info/METADATA,sha256=DVZq4GOeqSESq0SlcMNxZ_qaLGNpYzz0E7wrj-2J6xE,21693
230
- letta_nightly-0.6.5.dev20241220104040.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
- letta_nightly-0.6.5.dev20241220104040.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
232
- letta_nightly-0.6.5.dev20241220104040.dist-info/RECORD,,
227
+ letta/utils.py,sha256=JZbKq-3KhbmilATo-SbY0OgOnwN-zkE40UD7dfAZMWI,33381
228
+ letta_nightly-0.6.6.dev20241221104005.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
229
+ letta_nightly-0.6.6.dev20241221104005.dist-info/METADATA,sha256=NjjF2UtUvzhYQzthHiAMd13gE9iWpiN76ruPjoOlDMk,21693
230
+ letta_nightly-0.6.6.dev20241221104005.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
+ letta_nightly-0.6.6.dev20241221104005.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
232
+ letta_nightly-0.6.6.dev20241221104005.dist-info/RECORD,,