CodeToolSet#
The CodeToolSet provides code navigation and exploration tools using tree-sitter for multi-language AST parsing.
Overview#
Key features:
File Outlines: View structured overviews of classes and functions
Symbol Extraction: Get source code for specific symbols
Multi-Language Support: Python, JavaScript, TypeScript, JSX, TSX
Efficient Navigation: Navigate large codebases without reading entire files
Basic Usage#
from pantheon.agent import Agent
from pantheon.toolsets import CodeToolSet
# Create code toolset
code_tools = CodeToolSet(
name="code",
workspace_path="/path/to/project"
)
# Create agent and add toolset at runtime
agent = Agent(
name="code_explorer",
instructions="You can explore and understand code structure."
)
await agent.toolset(code_tools)
await agent.chat()
Constructor Parameters#
Parameter |
Type |
Description |
|---|---|---|
|
str |
Name of the toolset |
|
str | Path | None |
Root directory for file operations. Defaults to current directory. |
Tools Reference#
view_file_outline#
Get a structured outline of classes and functions in a file.
result = await code_tools.view_file_outline(
file_path="src/utils.py"
)
Parameters:
file_path: Path to the source file (relative to workspace or absolute)
Supported file types: .py, .js, .ts, .jsx, .tsx
Returns:
{
"success": True,
"file": "src/utils.py",
"language": "python",
"total_lines": 250,
"symbols": [
{
"name": "DataProcessor",
"kind": "class",
"start_line": 10,
"end_line": 85,
"signature": "class DataProcessor:",
"docstring": "Processes data from various sources...",
"children": [
{
"name": "__init__",
"kind": "method",
"start_line": 15,
"end_line": 25,
"signature": "def __init__(self, config: dict):",
"docstring": "Initialize processor...",
"children": []
},
{
"name": "process",
"kind": "method",
"start_line": 27,
"end_line": 50,
"signature": "def process(self, data: list) -> dict:",
"docstring": "Process input data...",
"children": []
}
]
},
{
"name": "helper_function",
"kind": "function",
"start_line": 90,
"end_line": 100,
"signature": "def helper_function(x: int) -> str:",
"docstring": "A helper function...",
"children": []
}
]
}
view_code_item#
View the source code of a specific class, function, or method.
# Get a specific method
result = await code_tools.view_code_item(
file_path="src/utils.py",
node_path="DataProcessor.validate"
)
# Get an entire class
result = await code_tools.view_code_item(
file_path="src/utils.py",
node_path="DataProcessor"
)
# Get a top-level function
result = await code_tools.view_code_item(
file_path="src/utils.py",
node_path="helper_function"
)
Parameters:
file_path: Path to the source filenode_path: Qualified name using dot notation (e.g.,MyClass.my_method)
Returns:
{
"success": True,
"name": "validate",
"kind": "method",
"start_line": 52,
"end_line": 70,
"source": "def validate(self, data: dict) -> bool:\n ..."
}
Examples#
Exploring a Codebase#
from pantheon.agent import Agent
from pantheon.toolsets import CodeToolSet, FileManagerToolSet
code_tools = CodeToolSet(name="code", workspace_path="./my_project")
file_tools = FileManagerToolSet(name="files", path="./my_project")
explorer = Agent(
name="code_explorer",
instructions="""You are a code exploration assistant. When analyzing code:
1. Use view_file_outline to understand file structure
2. Use view_code_item to examine specific symbols
3. Explain the code's purpose and how components interact"""
)
await explorer.toolset(code_tools)
await explorer.toolset(file_tools)
# Explore a file
result = await explorer.run("Explain the structure of src/main.py")
Code Review Workflow#
# 1. Get file outline
outline = await code_tools.view_file_outline("api/handlers.py")
# 2. Review specific functions
for symbol in outline["symbols"]:
if symbol["kind"] == "function":
code = await code_tools.view_code_item(
"api/handlers.py",
symbol["name"]
)
print(f"Function: {symbol['name']}")
print(code["source"])
Best Practices#
Start with outlines: Use
view_file_outlinefirst to understand structureDrill down selectively: Only fetch specific symbols you need
Use for large files: More efficient than reading entire files
Combine with file tools: Use with FileManagerToolSet for full editing capability
Dependencies#
Tree-sitter packages are included in the core installation:
pip install pantheon-agents