chore: migrate config paths to XDG base directory and add hit_count tracking to api_cache
This commit is contained in:
+53
-39
@@ -6,13 +6,24 @@ from pr.core.api import list_models
|
||||
from pr.tools import read_file
|
||||
from pr.tools.base import get_tools_definition
|
||||
from pr.ui import Colors
|
||||
from pr.editor import RPEditor
|
||||
|
||||
|
||||
def handle_command(assistant, command):
|
||||
command_parts = command.strip().split(maxsplit=1)
|
||||
cmd = command_parts[0].lower()
|
||||
|
||||
if cmd == "/auto":
|
||||
if cmd == "/edit":
|
||||
rp_editor = RPEditor(command_parts[1] if len(command_parts) > 1 else None)
|
||||
rp_editor.start()
|
||||
rp_editor.thread.join()
|
||||
task = str(rp_editor.get_text())
|
||||
rp_editor.stop()
|
||||
rp_editor = None
|
||||
if task:
|
||||
run_autonomous_mode(assistant, task)
|
||||
|
||||
elif cmd == "/auto":
|
||||
if len(command_parts) < 2:
|
||||
print(f"{Colors.RED}Usage: /auto [task description]{Colors.RESET}")
|
||||
print(
|
||||
@@ -27,41 +38,36 @@ def handle_command(assistant, command):
|
||||
if cmd in ["exit", "quit", "q"]:
|
||||
return False
|
||||
|
||||
elif cmd == "help":
|
||||
print(
|
||||
f"""
|
||||
{Colors.BOLD}Available Commands:{Colors.RESET}
|
||||
|
||||
{Colors.BOLD}Basic:{Colors.RESET}
|
||||
exit, quit, q - Exit the assistant
|
||||
/help - Show this help message
|
||||
/reset - Clear message history
|
||||
/dump - Show message history as JSON
|
||||
/verbose - Toggle verbose mode
|
||||
/models - List available models
|
||||
/tools - List available tools
|
||||
|
||||
{Colors.BOLD}File Operations:{Colors.RESET}
|
||||
/review <file> - Review a file
|
||||
/refactor <file> - Refactor code in a file
|
||||
/obfuscate <file> - Obfuscate code in a file
|
||||
|
||||
{Colors.BOLD}Advanced Features:{Colors.RESET}
|
||||
{Colors.CYAN}/auto <task>{Colors.RESET} - Enter autonomous mode
|
||||
{Colors.CYAN}/workflow <name>{Colors.RESET} - Execute a workflow
|
||||
{Colors.CYAN}/workflows{Colors.RESET} - List all workflows
|
||||
{Colors.CYAN}/agent <role> <task>{Colors.RESET} - Create specialized agent and assign task
|
||||
{Colors.CYAN}/agents{Colors.RESET} - Show active agents
|
||||
{Colors.CYAN}/collaborate <task>{Colors.RESET} - Use multiple agents to collaborate
|
||||
{Colors.CYAN}/knowledge <query>{Colors.RESET} - Search knowledge base
|
||||
{Colors.CYAN}/remember <content>{Colors.RESET} - Store information in knowledge base
|
||||
{Colors.CYAN}/history{Colors.RESET} - Show conversation history
|
||||
{Colors.CYAN}/cache{Colors.RESET} - Show cache statistics
|
||||
{Colors.CYAN}/cache clear{Colors.RESET} - Clear all caches
|
||||
{Colors.CYAN}/stats{Colors.RESET} - Show system statistics
|
||||
"""
|
||||
elif cmd == "/help" or cmd == "help":
|
||||
from pr.commands.help_docs import (
|
||||
get_agent_help,
|
||||
get_background_help,
|
||||
get_cache_help,
|
||||
get_full_help,
|
||||
get_knowledge_help,
|
||||
get_workflow_help,
|
||||
)
|
||||
|
||||
if len(command_parts) > 1:
|
||||
topic = command_parts[1].lower()
|
||||
if topic == "workflows":
|
||||
print(get_workflow_help())
|
||||
elif topic == "agents":
|
||||
print(get_agent_help())
|
||||
elif topic == "knowledge":
|
||||
print(get_knowledge_help())
|
||||
elif topic == "cache":
|
||||
print(get_cache_help())
|
||||
elif topic == "background":
|
||||
print(get_background_help())
|
||||
else:
|
||||
print(f"{Colors.RED}Unknown help topic: {topic}{Colors.RESET}")
|
||||
print(
|
||||
f"{Colors.GRAY}Available topics: workflows, agents, knowledge, cache, background{Colors.RESET}"
|
||||
)
|
||||
else:
|
||||
print(get_full_help())
|
||||
|
||||
elif cmd == "/reset":
|
||||
assistant.messages = assistant.messages[:1]
|
||||
print(f"{Colors.GREEN}Message history cleared{Colors.RESET}")
|
||||
@@ -75,7 +81,7 @@ def handle_command(assistant, command):
|
||||
f"Verbose mode: {Colors.GREEN if assistant.verbose else Colors.RED}{'ON' if assistant.verbose else 'OFF'}{Colors.RESET}"
|
||||
)
|
||||
|
||||
elif cmd.startswith("/model"):
|
||||
elif cmd == "/model":
|
||||
if len(command_parts) < 2:
|
||||
print("Current model: " + Colors.GREEN + assistant.model + Colors.RESET)
|
||||
else:
|
||||
@@ -116,17 +122,24 @@ def handle_command(assistant, command):
|
||||
workflow_name = command_parts[1]
|
||||
execute_workflow_command(assistant, workflow_name)
|
||||
|
||||
elif cmd == "/agent" and len(command_parts) > 1:
|
||||
elif cmd == "/agent":
|
||||
if len(command_parts) < 2:
|
||||
print(f"{Colors.RED}Usage: /agent <role> <task>{Colors.RESET}")
|
||||
print(
|
||||
f"{Colors.GRAY}Available roles: coding, research, data_analysis, planning, testing, documentation{Colors.RESET}"
|
||||
)
|
||||
return True
|
||||
|
||||
args = command_parts[1].split(maxsplit=1)
|
||||
if len(args) < 2:
|
||||
print(f"{Colors.RED}Usage: /agent <role> <task>{Colors.RESET}")
|
||||
print(
|
||||
f"{Colors.GRAY}Available roles: coding, research, data_analysis, planning, testing, documentation{Colors.RESET}"
|
||||
)
|
||||
else:
|
||||
role, task = args[0], args[1]
|
||||
execute_agent_task(assistant, role, task)
|
||||
return True
|
||||
|
||||
role, task = args[0], args[1]
|
||||
execute_agent_task(assistant, role, task)
|
||||
elif cmd == "/agents":
|
||||
show_agents(assistant)
|
||||
|
||||
@@ -374,6 +387,7 @@ def show_cache_stats(assistant):
|
||||
print(f" Valid entries: {api_stats['valid_entries']}")
|
||||
print(f" Expired entries: {api_stats['expired_entries']}")
|
||||
print(f" Cached tokens: {api_stats['total_cached_tokens']}")
|
||||
print(f" Total cache hits: {api_stats['total_cache_hits']}")
|
||||
|
||||
if "tool_cache" in stats:
|
||||
tool_stats = stats["tool_cache"]
|
||||
|
||||
Reference in New Issue
Block a user