Files
letta-server/letta/functions/function_sets/files.py
2025-07-01 15:21:52 -07:00

84 lines
3.5 KiB
Python

from typing import TYPE_CHECKING, List, Optional
from letta.functions.types import FileOpenRequest
if TYPE_CHECKING:
from letta.schemas.agent import AgentState
from letta.schemas.file import FileMetadata
async def open_files(agent_state: "AgentState", file_requests: List[FileOpenRequest], close_all_others: bool = False) -> str:
"""Open one or more files and load their contents into files section in core memory. Maximum of 5 files can be opened simultaneously.
Use this when you want to:
- Inspect or reference file contents during reasoning
- View specific portions of large files (e.g. functions or definitions)
- Replace currently open files with a new set for focused context (via `close_all_others=True`)
Examples:
Open single file belonging to a directory named `project_utils` (entire content):
file_requests = [FileOpenRequest(file_name="project_utils/config.py")]
Open multiple files with different view ranges:
file_requests = [
FileOpenRequest(file_name="project_utils/config.py", offset=1, length=50), # Lines 1-50
FileOpenRequest(file_name="project_utils/main.py", offset=100, length=100), # Lines 100-199
FileOpenRequest(file_name="project_utils/utils.py") # Entire file
]
Close all other files and open new ones:
open_files(agent_state, file_requests, close_all_others=True)
Args:
file_requests (List[FileOpenRequest]): List of file open requests, each specifying file name and optional view range.
close_all_others (bool): If True, closes all other currently open files first. Defaults to False.
Returns:
str: A status message
"""
raise NotImplementedError("Tool not implemented. Please contact the Letta team.")
async def grep_files(
agent_state: "AgentState",
pattern: str,
include: Optional[str] = None,
context_lines: Optional[int] = 3,
) -> str:
"""
Grep tool to search files across data sources using a keyword or regex pattern.
Use this when you want to:
- Quickly find occurrences of a variable, function, or keyword
- Locate log messages, error codes, or TODOs across files
- Understand surrounding code by including `context_lines`
Args:
pattern (str): Keyword or regex pattern to search within file contents.
include (Optional[str]): Optional keyword or regex pattern to filter filenames to include in the search.
context_lines (Optional[int]): Number of lines of context to show before and after each match.
Equivalent to `-C` in grep_files. Defaults to 3.
Returns:
str: Matching lines with optional surrounding context or a summary output.
"""
raise NotImplementedError("Tool not implemented. Please contact the Letta team.")
async def search_files(agent_state: "AgentState", query: str) -> List["FileMetadata"]:
"""
Get list of most relevant chunks from any file using embedding search.
Use this when you want to:
- Find related content that may not match exact keywords (e.g., conceptually similar sections)
- Look up high-level descriptions, documentation, or config patterns
- Perform fuzzy search when grep isn't sufficient
Args:
query (str): The search query.
Returns:
List[FileMetadata]: List of matching files.
"""
raise NotImplementedError("Tool not implemented. Please contact the Letta team.")