Advanced REPL Usage#
This section covers advanced REPL features and customization.
Programmatic Usage#
You can create and run the REPL programmatically:
import asyncio
from pantheon.repl import Repl
from pantheon.agent import Agent
async def main():
agent = Agent(
name="assistant",
instructions="You are helpful."
)
repl = Repl(agent=agent)
await repl.run()
asyncio.run(main())
Initialization Modes#
The REPL supports several initialization modes:
1. Agent Mode
Pass an Agent or Team directly:
from pantheon.agent import Agent
from pantheon.repl import Repl
agent = Agent(name="assistant", ...)
repl = Repl(agent=agent)
2. ChatRoom Mode
Use an existing ChatRoom:
from pantheon.chatroom import ChatRoom
from pantheon.repl import Repl
chatroom = ChatRoom()
repl = Repl(chatroom=chatroom)
3. Endpoint Mode
Pass an Endpoint instance:
from pantheon.endpoint import Endpoint
from pantheon.repl import Repl
endpoint = Endpoint(workspace_path="./workspace")
repl = Repl(endpoint=endpoint)
4. Auto Mode
Let REPL create everything automatically:
repl = Repl() # Auto-creates ChatRoom and Endpoint
await repl.run()
Custom Command Handlers#
Add custom commands by creating a handler:
from pantheon.repl.handlers.base import CommandHandler
class MyHandler(CommandHandler):
def __init__(self, console, repl):
super().__init__(console, repl)
def can_handle(self, command: str) -> bool:
return command.startswith("/mycommand")
async def handle(self, command: str) -> bool:
# Parse and execute command
self.console.print("My custom command executed!")
return True # Command was consumed
Register in a custom REPL:
class CustomRepl(Repl):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.handlers.append(MyHandler(self.console, self))
Interactive Approval Dialogs#
The REPL supports interactive approval workflows. When an agent calls notify_user with interrupt=True, a dialog appears:
# In agent tool
context_variables.notify_user(
message="I want to modify these files...",
files=["file1.py", "file2.py"],
interrupt=True # Triggers interactive dialog
)
Users see:
Markdown-rendered message
File previews (switch with 1-9 or Tab)
Action keys:
a(approve),c(continue),Esc(reject)
Session Management#
Resume Previous Chat
pantheon cli --chat-id <previous-id>
Set Memory Directory
repl = Repl(
agent=agent,
memory_dir="./my_chats"
)
Environment Variables#
The REPL respects these environment variables:
Variable |
Description |
|---|---|
|
OpenAI API key |
|
Anthropic API key |
|
Log level (DEBUG, INFO, WARNING, ERROR) |
Configuration File#
REPL settings in .pantheon/settings.json:
{
"repl": {
"quiet": false,
"default_template": "default",
"log_level": "ERROR"
}
}
Options:
quiet: Suppress startup messagesdefault_template: Team template to load by defaultlog_level: Logging verbosity
Debugging#
Enable debug logging:
PANTHEON_LOG_LEVEL=DEBUG pantheon cli
View logs in ~/.pantheon/logs/.