letta-nightly 0.11.0.dev20250807104511__py3-none-any.whl → 0.11.0.dev20250808055434__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/agent.py +2 -1
- letta/agents/letta_agent.py +215 -143
- letta/functions/function_sets/base.py +2 -2
- letta/functions/function_sets/files.py +22 -9
- letta/interfaces/anthropic_streaming_interface.py +291 -265
- letta/interfaces/openai_streaming_interface.py +270 -250
- letta/llm_api/anthropic.py +3 -10
- letta/llm_api/openai_client.py +6 -1
- letta/orm/__init__.py +1 -0
- letta/orm/step.py +14 -0
- letta/orm/step_metrics.py +71 -0
- letta/schemas/enums.py +9 -0
- letta/schemas/llm_config.py +8 -6
- letta/schemas/providers/lmstudio.py +2 -2
- letta/schemas/providers/openai.py +1 -1
- letta/schemas/step.py +6 -0
- letta/schemas/step_metrics.py +23 -0
- letta/schemas/tool_rule.py +10 -29
- letta/services/step_manager.py +179 -1
- letta/services/tool_executor/builtin_tool_executor.py +4 -1
- letta/services/tool_executor/core_tool_executor.py +2 -10
- letta/services/tool_executor/files_tool_executor.py +89 -40
- {letta_nightly-0.11.0.dev20250807104511.dist-info → letta_nightly-0.11.0.dev20250808055434.dist-info}/METADATA +1 -1
- {letta_nightly-0.11.0.dev20250807104511.dist-info → letta_nightly-0.11.0.dev20250808055434.dist-info}/RECORD +27 -25
- {letta_nightly-0.11.0.dev20250807104511.dist-info → letta_nightly-0.11.0.dev20250808055434.dist-info}/LICENSE +0 -0
- {letta_nightly-0.11.0.dev20250807104511.dist-info → letta_nightly-0.11.0.dev20250808055434.dist-info}/WHEEL +0 -0
- {letta_nightly-0.11.0.dev20250807104511.dist-info → letta_nightly-0.11.0.dev20250808055434.dist-info}/entry_points.txt +0 -0
@@ -32,10 +32,12 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
32
32
|
MAX_FILE_SIZE_BYTES = 50 * 1024 * 1024 # 50MB limit per file
|
33
33
|
MAX_TOTAL_CONTENT_SIZE = 200 * 1024 * 1024 # 200MB total across all files
|
34
34
|
MAX_REGEX_COMPLEXITY = 1000 # Prevent catastrophic backtracking
|
35
|
-
MAX_MATCHES_PER_FILE = 20 # Limit matches per file
|
36
|
-
MAX_TOTAL_MATCHES = 50 #
|
35
|
+
MAX_MATCHES_PER_FILE = 20 # Limit matches per file (legacy, not used with new pagination)
|
36
|
+
MAX_TOTAL_MATCHES = 50 # Keep original value for semantic search
|
37
|
+
GREP_PAGE_SIZE = 20 # Number of grep matches to show per page
|
37
38
|
GREP_TIMEOUT_SECONDS = 30 # Max time for grep_files operation
|
38
39
|
MAX_CONTEXT_LINES = 1 # Lines of context around matches
|
40
|
+
MAX_TOTAL_COLLECTED = 1000 # Reasonable upper limit to prevent memory issues
|
39
41
|
|
40
42
|
def __init__(
|
41
43
|
self,
|
@@ -298,7 +300,12 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
298
300
|
|
299
301
|
@trace_method
|
300
302
|
async def grep_files(
|
301
|
-
self,
|
303
|
+
self,
|
304
|
+
agent_state: AgentState,
|
305
|
+
pattern: str,
|
306
|
+
include: Optional[str] = None,
|
307
|
+
context_lines: Optional[int] = 1,
|
308
|
+
offset: Optional[int] = None,
|
302
309
|
) -> str:
|
303
310
|
"""
|
304
311
|
Search for pattern in all attached files and return matches with context.
|
@@ -308,7 +315,9 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
308
315
|
pattern: Regular expression pattern to search for
|
309
316
|
include: Optional pattern to filter filenames to include in the search
|
310
317
|
context_lines (Optional[int]): Number of lines of context to show before and after each match.
|
311
|
-
Equivalent to `-C` in grep_files. Defaults to
|
318
|
+
Equivalent to `-C` in grep_files. Defaults to 1.
|
319
|
+
offset (Optional[int]): Number of matches to skip before showing results. Used for pagination.
|
320
|
+
Defaults to 0 (show from first match).
|
312
321
|
|
313
322
|
Returns:
|
314
323
|
Formatted string with search results, file names, line numbers, and context
|
@@ -350,14 +359,18 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
350
359
|
if not file_agents:
|
351
360
|
return f"No files match the filename pattern '{include}' (filtered {original_count} files)"
|
352
361
|
|
362
|
+
# Validate offset parameter
|
363
|
+
if offset is not None and offset < 0:
|
364
|
+
offset = 0 # Treat negative offsets as 0
|
365
|
+
|
353
366
|
# Compile regex pattern with appropriate flags
|
354
367
|
regex_flags = re.MULTILINE
|
355
368
|
regex_flags |= re.IGNORECASE
|
356
369
|
|
357
370
|
pattern_regex = re.compile(pattern, regex_flags)
|
358
371
|
|
359
|
-
|
360
|
-
|
372
|
+
# Collect all matches first (up to a reasonable limit)
|
373
|
+
all_matches = [] # List of tuples: (file_name, line_num, context_lines)
|
361
374
|
total_content_size = 0
|
362
375
|
files_processed = 0
|
363
376
|
files_skipped = 0
|
@@ -365,7 +378,7 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
365
378
|
|
366
379
|
# Use asyncio timeout to prevent hanging
|
367
380
|
async def _search_files():
|
368
|
-
nonlocal
|
381
|
+
nonlocal all_matches, total_content_size, files_processed, files_skipped, files_with_matches
|
369
382
|
|
370
383
|
for file_agent in file_agents:
|
371
384
|
# Load file content
|
@@ -383,7 +396,6 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
383
396
|
self.logger.warning(
|
384
397
|
f"Grep: Skipping file {file.file_name} - too large ({content_size:,} bytes > {self.MAX_FILE_SIZE_BYTES:,} limit)"
|
385
398
|
)
|
386
|
-
results.append(f"[SKIPPED] {file.file_name}: File too large ({content_size:,} bytes)")
|
387
399
|
continue
|
388
400
|
|
389
401
|
# Check total content size across all files
|
@@ -393,11 +405,9 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
393
405
|
self.logger.warning(
|
394
406
|
f"Grep: Skipping file {file.file_name} - total content size limit exceeded ({total_content_size:,} bytes > {self.MAX_TOTAL_CONTENT_SIZE:,} limit)"
|
395
407
|
)
|
396
|
-
results.append(f"[SKIPPED] {file.file_name}: Total content size limit exceeded")
|
397
408
|
break
|
398
409
|
|
399
410
|
files_processed += 1
|
400
|
-
file_matches = 0
|
401
411
|
|
402
412
|
# Use LineChunker to get all lines with proper formatting
|
403
413
|
chunker = LineChunker()
|
@@ -407,16 +417,10 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
407
417
|
if formatted_lines and formatted_lines[0].startswith("[Viewing"):
|
408
418
|
formatted_lines = formatted_lines[1:]
|
409
419
|
|
410
|
-
# LineChunker now returns 1-indexed line numbers, so no conversion needed
|
411
|
-
|
412
420
|
# Search for matches in formatted lines
|
413
421
|
for formatted_line in formatted_lines:
|
414
|
-
if
|
415
|
-
|
416
|
-
return
|
417
|
-
|
418
|
-
if file_matches >= self.MAX_MATCHES_PER_FILE:
|
419
|
-
results.append(f"[TRUNCATED] {file.file_name}: Maximum matches per file ({self.MAX_MATCHES_PER_FILE}) reached")
|
422
|
+
if len(all_matches) >= self.MAX_TOTAL_COLLECTED:
|
423
|
+
# Stop collecting if we hit the upper limit
|
420
424
|
break
|
421
425
|
|
422
426
|
# Extract line number and content from formatted line
|
@@ -433,16 +437,11 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
433
437
|
files_with_matches.add(file.file_name)
|
434
438
|
context = self._get_context_lines(formatted_lines, match_line_num=line_num, context_lines=context_lines or 0)
|
435
439
|
|
436
|
-
#
|
437
|
-
|
438
|
-
match_content = "\n".join(context)
|
439
|
-
results.append(f"{match_header}\n{match_content}")
|
440
|
-
|
441
|
-
file_matches += 1
|
442
|
-
total_matches += 1
|
440
|
+
# Store match data for later pagination
|
441
|
+
all_matches.append((file.file_name, line_num, context))
|
443
442
|
|
444
|
-
# Break if
|
445
|
-
if
|
443
|
+
# Break if we've collected enough matches
|
444
|
+
if len(all_matches) >= self.MAX_TOTAL_COLLECTED:
|
446
445
|
break
|
447
446
|
|
448
447
|
# Execute with timeout
|
@@ -452,8 +451,9 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
452
451
|
if files_with_matches:
|
453
452
|
await self.files_agents_manager.mark_access_bulk(agent_id=agent_state.id, file_names=list(files_with_matches), actor=self.actor)
|
454
453
|
|
455
|
-
#
|
456
|
-
|
454
|
+
# Handle no matches case
|
455
|
+
total_matches = len(all_matches)
|
456
|
+
if total_matches == 0:
|
457
457
|
summary = f"No matches found for pattern: '{pattern}'"
|
458
458
|
if include:
|
459
459
|
summary += f" in files matching '{include}'"
|
@@ -461,21 +461,70 @@ class LettaFileToolExecutor(ToolExecutor):
|
|
461
461
|
summary += f" (searched {files_processed} files, skipped {files_skipped})"
|
462
462
|
return summary
|
463
463
|
|
464
|
-
#
|
465
|
-
|
466
|
-
|
467
|
-
|
464
|
+
# Apply pagination
|
465
|
+
start_idx = offset if offset else 0
|
466
|
+
end_idx = start_idx + self.GREP_PAGE_SIZE
|
467
|
+
paginated_matches = all_matches[start_idx:end_idx]
|
468
|
+
|
469
|
+
# Check if we hit the collection limit
|
470
|
+
hit_collection_limit = len(all_matches) >= self.MAX_TOTAL_COLLECTED
|
471
|
+
|
472
|
+
# Format the paginated results
|
473
|
+
results = []
|
474
|
+
|
475
|
+
# Build summary showing the range of matches displayed
|
476
|
+
if hit_collection_limit:
|
477
|
+
# We collected MAX_TOTAL_COLLECTED but there might be more
|
478
|
+
summary = f"Found {self.MAX_TOTAL_COLLECTED}+ total matches across {len(files_with_matches)} files (showing matches {start_idx + 1}-{min(end_idx, total_matches)} of {self.MAX_TOTAL_COLLECTED}+)"
|
479
|
+
else:
|
480
|
+
# We found all matches
|
481
|
+
summary = f"Found {total_matches} total matches across {len(files_with_matches)} files (showing matches {start_idx + 1}-{min(end_idx, total_matches)} of {total_matches})"
|
482
|
+
|
468
483
|
if files_skipped > 0:
|
469
|
-
|
484
|
+
summary += f"\nNote: Skipped {files_skipped} files due to size limits"
|
470
485
|
|
471
|
-
|
472
|
-
|
473
|
-
summary += f" in files matching '{include}'"
|
486
|
+
results.append(summary)
|
487
|
+
results.append("=" * 80)
|
474
488
|
|
475
|
-
#
|
476
|
-
|
489
|
+
# Add file summary - count matches per file
|
490
|
+
file_match_counts = {}
|
491
|
+
for file_name, _, _ in all_matches:
|
492
|
+
file_match_counts[file_name] = file_match_counts.get(file_name, 0) + 1
|
477
493
|
|
478
|
-
|
494
|
+
# Sort files by match count (descending) for better overview
|
495
|
+
sorted_files = sorted(file_match_counts.items(), key=lambda x: x[1], reverse=True)
|
496
|
+
|
497
|
+
results.append("\nFiles with matches:")
|
498
|
+
for file_name, count in sorted_files:
|
499
|
+
if hit_collection_limit and count >= self.MAX_TOTAL_COLLECTED:
|
500
|
+
results.append(f" - {file_name}: {count}+ matches")
|
501
|
+
else:
|
502
|
+
results.append(f" - {file_name}: {count} matches")
|
503
|
+
results.append("") # blank line before matches
|
504
|
+
|
505
|
+
# Format each match in the current page
|
506
|
+
for file_name, line_num, context_lines in paginated_matches:
|
507
|
+
match_header = f"\n=== {file_name}:{line_num} ==="
|
508
|
+
match_content = "\n".join(context_lines)
|
509
|
+
results.append(f"{match_header}\n{match_content}")
|
510
|
+
|
511
|
+
# Add navigation hint
|
512
|
+
results.append("") # blank line
|
513
|
+
if end_idx < total_matches:
|
514
|
+
if hit_collection_limit:
|
515
|
+
results.append(f'To see more matches, call: grep_files(pattern="{pattern}", offset={end_idx})')
|
516
|
+
results.append(
|
517
|
+
f"Note: Only the first {self.MAX_TOTAL_COLLECTED} matches were collected. There may be more matches beyond this limit."
|
518
|
+
)
|
519
|
+
else:
|
520
|
+
results.append(f'To see more matches, call: grep_files(pattern="{pattern}", offset={end_idx})')
|
521
|
+
else:
|
522
|
+
if hit_collection_limit:
|
523
|
+
results.append("Showing last page of collected matches. There may be more matches beyond the collection limit.")
|
524
|
+
else:
|
525
|
+
results.append("No more matches to show.")
|
526
|
+
|
527
|
+
return "\n".join(results)
|
479
528
|
|
480
529
|
@trace_method
|
481
530
|
async def semantic_search_files(self, agent_state: AgentState, query: str, limit: int = 5) -> str:
|
@@ -1,12 +1,12 @@
|
|
1
1
|
letta/__init__.py,sha256=egWzLDPN65F8R6kmzwHODXfUKI4dzKd394hsXrmPsbs,1321
|
2
|
-
letta/agent.py,sha256=
|
2
|
+
letta/agent.py,sha256=o591CrbxIepAfmVdZv7OVBCQsfAvKqv_HTd89LYPgu8,89462
|
3
3
|
letta/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
letta/agents/base_agent.py,sha256=-hrG_4iNba2e68LF8nzfPKeCviBdoWZ6jODd798ryt0,7796
|
5
5
|
letta/agents/ephemeral_agent.py,sha256=el-SUF_16vv_7OouIR-6z0pAE9Yc0PLibygvfCKwqfo,2736
|
6
6
|
letta/agents/ephemeral_summary_agent.py,sha256=tOldA_daa_PduTJ2RA7fAo9Rv6sUb-C_9dJaD6iujS4,4454
|
7
7
|
letta/agents/exceptions.py,sha256=BQY4D4w32OYHM63CM19ko7dPwZiAzUs3NbKvzmCTcJg,318
|
8
8
|
letta/agents/helpers.py,sha256=9skIeui2yF-5DH9P3bCK1pcegk4nVZAtKMVaDqdQExo,10021
|
9
|
-
letta/agents/letta_agent.py,sha256=
|
9
|
+
letta/agents/letta_agent.py,sha256=BSYS02s2AIqOF8idBFRafLBAi_DIOZSgS_I1fw40tdk,76852
|
10
10
|
letta/agents/letta_agent_batch.py,sha256=17RpYVXpGh9dlKxdMOLMCOHWFsi6N5S9FJHxooxkJCI,27998
|
11
11
|
letta/agents/voice_agent.py,sha256=rgrayoGRS344oSNg3jD-awHzEC67hYbecPPhfkKu27k,23325
|
12
12
|
letta/agents/voice_sleeptime_agent.py,sha256=_JzCbWBOKrmo1cTaqZFTrQudpJEapwAyrXYtAHUILGo,8675
|
@@ -27,10 +27,10 @@ letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
letta/functions/ast_parsers.py,sha256=0dXAN4qx3pWL_Y0aoEkaBpMKwI-kpoLEJftjW3v2I4E,5031
|
28
28
|
letta/functions/async_composio_toolset.py,sha256=IuhZTVghPDXRsehOOZsEEiJGYyjWjDTQc2xrjTg0yBo,4786
|
29
29
|
letta/functions/composio_helpers.py,sha256=mpybCYcB93HWoKrmQIqcuRQG9IH2lHWhsPQx2i8XP_8,3593
|
30
|
-
letta/functions/function_sets/base.py,sha256=
|
30
|
+
letta/functions/function_sets/base.py,sha256=S-Y5iU8OlPb6IgA7mqzJBYaeKvPmfOYD1mc1v8QPGzg,16043
|
31
31
|
letta/functions/function_sets/builtin.py,sha256=UR54nwIXZl4NkF9c_IMpTxf2e9yPO_LGZ-joIeeI9TI,2009
|
32
32
|
letta/functions/function_sets/extras.py,sha256=mG7jCd2RUsf1w9G8mVcv26twJWpiDhbWI6VvnLZoEOk,4899
|
33
|
-
letta/functions/function_sets/files.py,sha256=
|
33
|
+
letta/functions/function_sets/files.py,sha256=I2TAOVo_6-G-pbjFve8ocF2zn3b0aJ_ismK4ZPop3v8,4450
|
34
34
|
letta/functions/function_sets/multi_agent.py,sha256=Vze76mj0YGZQYmWEzknnf3vEf-O7gcCUPQead7HH3FQ,7045
|
35
35
|
letta/functions/function_sets/voice.py,sha256=_gmFEj3fSFb-4eMM-ddSOm-Vk1ShIVjpchZI7MQKwSA,3191
|
36
36
|
letta/functions/functions.py,sha256=0lPsB_IRNP-Ld5RHnzs59Pw6f4BzWllRAYuoW6ntV8M,5939
|
@@ -68,9 +68,9 @@ letta/humans/examples/basic.txt,sha256=Lcp8YESTWvOJgO4Yf_yyQmgo5bKakeB1nIVrwEGG6
|
|
68
68
|
letta/humans/examples/cs_phd.txt,sha256=9C9ZAV_VuG7GB31ksy3-_NAyk8rjE6YtVOkhp08k1xw,297
|
69
69
|
letta/interface.py,sha256=4MLY-bRH4lWNW8vL9L5nwu1_Yh_CeV4KVWACNKhkS5U,13023
|
70
70
|
letta/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
-
letta/interfaces/anthropic_streaming_interface.py,sha256=
|
71
|
+
letta/interfaces/anthropic_streaming_interface.py,sha256=PL9MWH4KWbSI33hF7XR6cg6c_uXzckwCk8l7xl_-43s,22796
|
72
72
|
letta/interfaces/openai_chat_completions_streaming_interface.py,sha256=3xHXh8cW79EkiMUTYfvcH_s92nkLjxXfvtVOVC3bfLo,5050
|
73
|
-
letta/interfaces/openai_streaming_interface.py,sha256=
|
73
|
+
letta/interfaces/openai_streaming_interface.py,sha256=66dx2PlcA2bFn9kjWpe1e1PSsoq6b8sQ79-YMRaTrJM,23181
|
74
74
|
letta/interfaces/utils.py,sha256=c6jvO0dBYHh8DQnlN-B0qeNC64d3CSunhfqlFA4pJTY,278
|
75
75
|
letta/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
76
|
letta/jobs/helpers.py,sha256=kO4aj954xsQ1RAmkjY6LQQ7JEIGuhaxB1e9pzrYKHAY,914
|
@@ -78,7 +78,7 @@ letta/jobs/llm_batch_job_polling.py,sha256=HUCTa1lTOiLAB_8m95RUfeNJa4lxlF8paGdCV
|
|
78
78
|
letta/jobs/scheduler.py,sha256=Ub5VTCA8P5C9Y-0mPK2YIPJSEzKbSd2l5Sp0sOWctD8,8697
|
79
79
|
letta/jobs/types.py,sha256=K8GKEnqEgAT6Kq4F2hUrBC4ZAFM9OkfOjVMStzxKuXQ,742
|
80
80
|
letta/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
|
-
letta/llm_api/anthropic.py,sha256=
|
81
|
+
letta/llm_api/anthropic.py,sha256=eRSR_dxoijIuCh8o-MOdPbye535muBQdlEWBy_2iwZw,47770
|
82
82
|
letta/llm_api/anthropic_client.py,sha256=ZT060rqSPj4vdb-U0u9AAaSOSNkifyzDb1MsL6RRwug,28938
|
83
83
|
letta/llm_api/aws_bedrock.py,sha256=b5Gj0LH4WrFF7ieo6-xx7Zqa4mB9JDVUF50zP_lODQU,3119
|
84
84
|
letta/llm_api/azure_openai.py,sha256=YAkXwKyfnJFNhB45pkJVFsoxUNB_M74rQYchtw_CN6I,5099
|
@@ -95,7 +95,7 @@ letta/llm_api/llm_client.py,sha256=kTjlhCzefwfRnD0AituXq1tRcQ3WnYwp9YSoNxCW124,2
|
|
95
95
|
letta/llm_api/llm_client_base.py,sha256=P678pt6IFDZRJbSkn213trs63k5zdsvdzTw21_iuGlg,8528
|
96
96
|
letta/llm_api/mistral.py,sha256=lNVYLNdULpqjMLX-5Cnw61dXVdh9T5H3Zg4UPhx9zQU,663
|
97
97
|
letta/llm_api/openai.py,sha256=Jam6eWrn2dbIovwdSODLXbyEkMLbhEiOCHWVMrfFLlk,27447
|
98
|
-
letta/llm_api/openai_client.py,sha256=
|
98
|
+
letta/llm_api/openai_client.py,sha256=2aU6_zapI5ylWlCFOoRp4p1Yc26vz1P8Ghz8K8r85hU,20677
|
99
99
|
letta/llm_api/sample_response_jsons/aws_bedrock.json,sha256=RS3VqyxPB9hQQCPm42hWoga0bisKv_0e8ZF-c3Ag1FA,930
|
100
100
|
letta/llm_api/sample_response_jsons/lmstudio_embedding_list.json,sha256=qHLtRuO1u7jFcaO0xaIMpRgCe74sSrya67IVPqS66fg,344
|
101
101
|
letta/llm_api/sample_response_jsons/lmstudio_model_list.json,sha256=hrW4RifD5nty3Wx22NZ7GJB74HW4C75fIEaKrVFhwYM,448
|
@@ -141,7 +141,7 @@ letta/main.py,sha256=wj4cawl4HP2ok-CqKVvqzSiOMahHC4t8FWxvuKKTWUA,317
|
|
141
141
|
letta/memory.py,sha256=l5iNhLAR_xzgTb0GBlQx4SVgH8kuZh8siJdC_CFPKEs,4278
|
142
142
|
letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
143
143
|
letta/openai_backcompat/openai_object.py,sha256=GSzeCTwLpLD2fH4X8wVqzwdmoTjKK2I4PnriBY453lc,13505
|
144
|
-
letta/orm/__init__.py,sha256=
|
144
|
+
letta/orm/__init__.py,sha256=xpzneR2_rhBXioci0VI27P9yh5GrWfetc9IJMBWVZNc,1592
|
145
145
|
letta/orm/agent.py,sha256=YU1a-B1gQLC8WyguF2GEyYQXxHTP1b8BQxE5pD9Jjfw,17043
|
146
146
|
letta/orm/agents_tags.py,sha256=-rWR8DoEiHM4yc9vAHgHuvjIwgMXMWzKnTKFlBBu3TQ,1076
|
147
147
|
letta/orm/archive.py,sha256=tYUZBBkgwzONsurE6DPGfC2Yv0FJdN4fXOxJ6CtVASI,3481
|
@@ -178,7 +178,8 @@ letta/orm/source.py,sha256=lXuV7kq3xa7YsLQmrGsD3dB7Tp6B3CiCE6YcvJgmZSE,1415
|
|
178
178
|
letta/orm/sources_agents.py,sha256=Ik_PokCBrXRd9wXWomeNeb8EtLUwjb9VMZ8LWXqpK5A,473
|
179
179
|
letta/orm/sqlalchemy_base.py,sha256=mw_leKRvSskRswfiUTYP3Jk9Q7Io9rQJWyVEUGWyTaw,44900
|
180
180
|
letta/orm/sqlite_functions.py,sha256=tbwePL5XciJIttoehyt1H17zdUXWAdjFqH0t-XaFJfk,7256
|
181
|
-
letta/orm/step.py,sha256=
|
181
|
+
letta/orm/step.py,sha256=p5VZacTCLKtVWPndFE0aTtv_xaRvB9i6_TVu7MejH14,4565
|
182
|
+
letta/orm/step_metrics.py,sha256=hZ4sjAZ6oAn-idHhVD_PNTkUS2trpxu2yny-xLgC7Yk,2488
|
182
183
|
letta/orm/tool.py,sha256=VEHoZI5hB5u8g1xgvNF0Xm6iC85m5VnME0Bxg1VsgYw,2937
|
183
184
|
letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
|
184
185
|
letta/orm/user.py,sha256=rK5N5ViDxmesZMqVVHB7FcQNpcSoM-hB42MyI6q3MnI,1004
|
@@ -243,7 +244,7 @@ letta/schemas/archive.py,sha256=4jGat0hYHV6HhNgnOhixzEOaeUrnlxDGdouZXCCGn_g,1661
|
|
243
244
|
letta/schemas/block.py,sha256=M2Azp7hY9KIdvVTnM07-ubpBqgTnIpoP-qCDduuEuDo,6247
|
244
245
|
letta/schemas/embedding_config.py,sha256=W9sMDFNOYQcXIwJ2TuAQnap-0tzO7JpBpuDGyyLe9C0,3802
|
245
246
|
letta/schemas/embedding_config_overrides.py,sha256=lkTa4y-EQ2RnaEKtKDM0sEAk7EwNa67REw8DGNNtGQY,84
|
246
|
-
letta/schemas/enums.py,sha256=
|
247
|
+
letta/schemas/enums.py,sha256=_eh-kDE2JUnc0Mb5tf7GzK4Ilo3iI3nzFxdeoji4HsI,4195
|
247
248
|
letta/schemas/environment_variables.py,sha256=VRtzOjdeQdHcSHXisk7oJUQlheruxhSWNS0xqlfGzbs,2429
|
248
249
|
letta/schemas/file.py,sha256=kjv_xEuuo8Z5i7dOzugIdlAK_k2xHHLhugDgBq0-8Os,4763
|
249
250
|
letta/schemas/folder.py,sha256=OpTj9idfGx6CEKDySeDEu3ZNDYjl8jJ02CH96RWPAVk,3309
|
@@ -259,7 +260,7 @@ letta/schemas/letta_request.py,sha256=GF7tSVjoAXukl1SXN2FBi8ZMaWOVRvuJuXPgEwbV7H
|
|
259
260
|
letta/schemas/letta_response.py,sha256=e6FcAhRX3heB0FoWAAozB3RJboMwi_JpelTdc5JupVA,8188
|
260
261
|
letta/schemas/letta_stop_reason.py,sha256=4t39UKMMsLuNM-9a0BG7Mi-zZ7YhYLFSEpTWc8_OyrQ,2035
|
261
262
|
letta/schemas/llm_batch_job.py,sha256=xr7RmMc9ItmL344vcIn1MJaT2nOf0F7qEHrsXkQNFQI,3136
|
262
|
-
letta/schemas/llm_config.py,sha256
|
263
|
+
letta/schemas/llm_config.py,sha256=-B--Tf4rHacp6zcIbSunwoiKRCcvoqY0frwMR_2a0V8,9412
|
263
264
|
letta/schemas/llm_config_overrides.py,sha256=E6qJuVA8TwAAy3VjGitJ5jSQo5PbN-6VPcZOF5qhP9A,1815
|
264
265
|
letta/schemas/mcp.py,sha256=_FKUSIoTLfx64buKqye-9fPET8-1_e2h9uYByNwTVio,10440
|
265
266
|
letta/schemas/memory.py,sha256=45j0akHGSrShd8v8wW-7lJhFRNWi9rWEvFp8w6f1PUk,14142
|
@@ -287,10 +288,10 @@ letta/schemas/providers/google_gemini.py,sha256=VnC0rrjnUdUK08VLGhI290p7yDsUnOwD
|
|
287
288
|
letta/schemas/providers/google_vertex.py,sha256=ooKgRXum1NOMGb4cJsOLPlFVw-TwAde9l-20ngEd9h4,2674
|
288
289
|
letta/schemas/providers/groq.py,sha256=AquJQH-Y5-s75Nj2_X7xavuWUu5F2bSvHjAZ1GfpeyQ,1455
|
289
290
|
letta/schemas/providers/letta.py,sha256=50VcmTMm8OEQjZgdlLypa4QmNPe0mJycpZfbxxSb_ts,1611
|
290
|
-
letta/schemas/providers/lmstudio.py,sha256=
|
291
|
+
letta/schemas/providers/lmstudio.py,sha256=Hi8Nir96B5FCQ8cVT-mWl7nLX0Z2-RIxUANAqRGG-zo,4323
|
291
292
|
letta/schemas/providers/mistral.py,sha256=EjFF6YcfN5jBjCfnZw3ECv_3qYuG0HVb7B0VoYk-jKU,1866
|
292
293
|
letta/schemas/providers/ollama.py,sha256=iVx9xxrulG9ohbhk4kMtfryCnMgmynWg_NL4SesGX5U,6253
|
293
|
-
letta/schemas/providers/openai.py,sha256=
|
294
|
+
letta/schemas/providers/openai.py,sha256=jlnMu3t1_IHWT4dGn8zZlbITl6wQl2X9onn_B2ZhV48,11051
|
294
295
|
letta/schemas/providers/together.py,sha256=2zFca6Jy08r1ANrdvtlSIduyDr8ek9Tt1yYiz1S-5g8,3422
|
295
296
|
letta/schemas/providers/vllm.py,sha256=CwM260cxWLkviVzY4wwkw4NmDAK69fv531AofRGa9JA,2480
|
296
297
|
letta/schemas/providers/xai.py,sha256=KCYqE75msyhxTwy_ZxRU3t46UWCWATE4pSCJmBbf4Vo,2494
|
@@ -300,10 +301,11 @@ letta/schemas/run.py,sha256=1lVOWlHVbk9MYIOiIrE1gCoQvBhErKo7UMSeWyMExbw,2089
|
|
300
301
|
letta/schemas/sandbox_config.py,sha256=FrHezpI8_s1wN5em6KAhFyvue0zJVDVv8oXDrm7wamo,5881
|
301
302
|
letta/schemas/source.py,sha256=6f_f9fnFs78JR5cZqFniCeTT1DYGuMP9QSBBCiC8e4s,3281
|
302
303
|
letta/schemas/source_metadata.py,sha256=_dGjuXhGcVMlc53ja9yuk16Uj64ggEzilRDgmkqYfNs,1334
|
303
|
-
letta/schemas/step.py,sha256=
|
304
|
+
letta/schemas/step.py,sha256=SKJfcaaqdaGZtaqsfzwAx_O_maDzsxYJYUtSBUZxSfE,3456
|
305
|
+
letta/schemas/step_metrics.py,sha256=TZQ02ZTGaQ9s4w4wfvDiiSw0S72baXqoAjjCKVNIkk0,1358
|
304
306
|
letta/schemas/tool.py,sha256=oQycvQMlbaKJ54tevBwklneQdzdaMkLvle-F9poqsB0,12942
|
305
307
|
letta/schemas/tool_execution_result.py,sha256=4P77llsUsZBnRd0PtPiC4VzGjx7i_-fUNgXQfCpMS9U,896
|
306
|
-
letta/schemas/tool_rule.py,sha256
|
308
|
+
letta/schemas/tool_rule.py,sha256=e9pWC2kZvdnohQuCTAxm96UjczrPnSB_lEeVkBEBPN4,9743
|
307
309
|
letta/schemas/usage.py,sha256=9SSTH5kUliwiVF14b-yKbDcmxQBOLg4YH5xhXDbW9UU,1281
|
308
310
|
letta/schemas/user.py,sha256=GanbgD80N33FBjWKkv-MvUO01C0GHzrYmJ-o80wgLLI,1481
|
309
311
|
letta/serialize_schemas/__init__.py,sha256=cosMjvWz7cubC1azbUofzYrcDBTuSgjJImUdsrSs3p0,77
|
@@ -420,16 +422,16 @@ letta/services/per_agent_lock_manager.py,sha256=cMaW8r-qhucQbiK27jVqz8wzhlr2yuRN
|
|
420
422
|
letta/services/provider_manager.py,sha256=28HDjZflfV0EjhiMRYbY-wmZWRxrxscX-Z1ukZO2pc8,9617
|
421
423
|
letta/services/sandbox_config_manager.py,sha256=-smC1Y3bjE6CmCEW3xbbka6AWu_eyayF18nFDHhWUNk,26114
|
422
424
|
letta/services/source_manager.py,sha256=borlj2xDW-1PKbxzEfn1j5oNMLw4bb3ujOyn5UmmCrI,16844
|
423
|
-
letta/services/step_manager.py,sha256=
|
425
|
+
letta/services/step_manager.py,sha256=kPk1qae18k4BP1UtKHAyhbLEB8lLXndWkdiIjLetMz4,18123
|
424
426
|
letta/services/summarizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
425
427
|
letta/services/summarizer/enums.py,sha256=lo2E1DKB-s2Ydx4PcLia1PIRUOY5yTSsFt_0EZVV2r0,279
|
426
428
|
letta/services/summarizer/summarizer.py,sha256=n15G0h7VQrBu-E41YV6riClk5zk7PrCSn2zE9TBODOA,18589
|
427
429
|
letta/services/telemetry_manager.py,sha256=Ur_VPgawiLIwDuxP9NHuz-hq_-S1vKIYThlB-doKZPY,3338
|
428
430
|
letta/services/tool_executor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
429
|
-
letta/services/tool_executor/builtin_tool_executor.py,sha256=
|
431
|
+
letta/services/tool_executor/builtin_tool_executor.py,sha256=S0m6IYTNPep34Tu51WoTIqm8YZvRVLQ1A3v7b_VeiVU,18107
|
430
432
|
letta/services/tool_executor/composio_tool_executor.py,sha256=ia2AA_WDOseR8Ylam-HEayR7OiyfNSb1sSUrjwqlmFM,2308
|
431
|
-
letta/services/tool_executor/core_tool_executor.py,sha256=
|
432
|
-
letta/services/tool_executor/files_tool_executor.py,sha256=
|
433
|
+
letta/services/tool_executor/core_tool_executor.py,sha256=P8M78TaEP2p9EWEBDazf9fNPHtC_cjjPISZJTK8EigQ,20285
|
434
|
+
letta/services/tool_executor/files_tool_executor.py,sha256=XccmHsofLaV4QIBuD8TOpw1-ucBZvra0_x5eAO_Biyc,32123
|
433
435
|
letta/services/tool_executor/mcp_tool_executor.py,sha256=mY2JqB6G4DOvRVWuiL9BbHOfAO2VlLBDmJrjL3TNc4E,1908
|
434
436
|
letta/services/tool_executor/multi_agent_tool_executor.py,sha256=dfaZeldEnzJDg2jGHlGy3YXKjsJpokJW1tvVeoCCDrk,5496
|
435
437
|
letta/services/tool_executor/sandbox_tool_executor.py,sha256=L40PtmhO_ry4FL3j_t5zFFdrpiZiYDABlDNHDdc7Imo,5355
|
@@ -454,8 +456,8 @@ letta/templates/summary_request_text.j2,sha256=ZttQwXonW2lk4pJLYzLK0pmo4EO4EtUUI
|
|
454
456
|
letta/templates/template_helper.py,sha256=HkG3zwRc5NVGmSTQu5PUTpz7LevK43bzXVaQuN8urf0,1634
|
455
457
|
letta/types/__init__.py,sha256=hokKjCVFGEfR7SLMrtZsRsBfsC7yTIbgKPLdGg4K1eY,147
|
456
458
|
letta/utils.py,sha256=Fwwe2imHRamc_kucAATo8NXhwDG5NBoOIYmBaERXUhM,38384
|
457
|
-
letta_nightly-0.11.0.
|
458
|
-
letta_nightly-0.11.0.
|
459
|
-
letta_nightly-0.11.0.
|
460
|
-
letta_nightly-0.11.0.
|
461
|
-
letta_nightly-0.11.0.
|
459
|
+
letta_nightly-0.11.0.dev20250808055434.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
|
460
|
+
letta_nightly-0.11.0.dev20250808055434.dist-info/METADATA,sha256=oGIMFfhX6qRD55DEP_UdK596w0AMrKXiUlo-VWTAJfw,23281
|
461
|
+
letta_nightly-0.11.0.dev20250808055434.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
462
|
+
letta_nightly-0.11.0.dev20250808055434.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
|
463
|
+
letta_nightly-0.11.0.dev20250808055434.dist-info/RECORD,,
|
File without changes
|
File without changes
|