def get_tools_definition():
|
|
return [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "kill_process",
|
|
"description": "Terminate a background process by its PID. Use this to stop processes started with run_command that exceeded their timeout.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pid": {
|
|
"type": "integer",
|
|
"description": "The process ID returned by run_command when status is 'running'.",
|
|
}
|
|
},
|
|
"required": ["pid"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "tail_process",
|
|
"description": "Monitor and retrieve output from a background process by its PID. Use this to check on processes started with run_command that exceeded their timeout.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pid": {
|
|
"type": "integer",
|
|
"description": "The process ID returned by run_command when status is 'running'.",
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"description": "Maximum seconds to wait for process completion. Returns partial output if still running.",
|
|
"default": 30,
|
|
},
|
|
},
|
|
"required": ["pid"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "http_fetch",
|
|
"description": "Fetch content from an HTTP URL",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {"type": "string", "description": "The URL to fetch"},
|
|
"headers": {
|
|
"type": "object",
|
|
"description": "Optional HTTP headers",
|
|
},
|
|
},
|
|
"required": ["url"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "run_command",
|
|
"description": "Execute a shell command and capture output. Returns immediately after timeout with PID if still running. Use tail_process to monitor or kill_process to terminate long-running commands.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "string",
|
|
"description": "The shell command to execute",
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"description": "Maximum seconds to wait for completion",
|
|
"default": 30,
|
|
},
|
|
},
|
|
"required": ["command"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "start_interactive_session",
|
|
"description": "Execute an interactive terminal command that requires user input or displays UI. The command runs in a dedicated session and returns a session name.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "string",
|
|
"description": "The interactive command to execute (e.g., vim, nano, top)",
|
|
}
|
|
},
|
|
"required": ["command"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "send_input_to_session",
|
|
"description": "Send input to an interactive session.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_name": {
|
|
"type": "string",
|
|
"description": "The name of the session",
|
|
},
|
|
"input_data": {
|
|
"type": "string",
|
|
"description": "The input to send to the session",
|
|
},
|
|
},
|
|
"required": ["session_name", "input_data"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "read_session_output",
|
|
"description": "Read output from an interactive session.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_name": {
|
|
"type": "string",
|
|
"description": "The name of the session",
|
|
}
|
|
},
|
|
"required": ["session_name"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "close_interactive_session",
|
|
"description": "Close an interactive session.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_name": {
|
|
"type": "string",
|
|
"description": "The name of the session",
|
|
}
|
|
},
|
|
"required": ["session_name"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "read_file",
|
|
"description": "Read contents of a file",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
}
|
|
},
|
|
"required": ["filepath"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "write_file",
|
|
"description": "Write content to a file",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
},
|
|
"content": {
|
|
"type": "string",
|
|
"description": "Content to write",
|
|
},
|
|
},
|
|
"required": ["filepath", "content"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "list_directory",
|
|
"description": "List directory contents",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Directory path",
|
|
"default": ".",
|
|
},
|
|
"recursive": {
|
|
"type": "boolean",
|
|
"description": "List recursively",
|
|
"default": False,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "mkdir",
|
|
"description": "Create a new directory",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Path of the directory to create",
|
|
}
|
|
},
|
|
"required": ["path"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "chdir",
|
|
"description": "Change the current working directory",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {"path": {"type": "string", "description": "Path to change to"}},
|
|
"required": ["path"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "getpwd",
|
|
"description": "Get the current working directory",
|
|
"parameters": {"type": "object", "properties": {}},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "db_set",
|
|
"description": "Set a key-value pair in the database",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {"type": "string", "description": "The key"},
|
|
"value": {"type": "string", "description": "The value"},
|
|
},
|
|
"required": ["key", "value"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "db_get",
|
|
"description": "Get a value from the database",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {"key": {"type": "string", "description": "The key"}},
|
|
"required": ["key"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "db_query",
|
|
"description": "Execute a database query",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {"query": {"type": "string", "description": "SQL query"}},
|
|
"required": ["query"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "web_search",
|
|
"description": "Perform a web search",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {"query": {"type": "string", "description": "Search query"}},
|
|
"required": ["query"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "web_search_news",
|
|
"description": "Perform a web search for news",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {
|
|
"type": "string",
|
|
"description": "Search query for news",
|
|
}
|
|
},
|
|
"required": ["query"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "python_exec",
|
|
"description": "Execute Python code",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"description": "Python code to execute",
|
|
}
|
|
},
|
|
"required": ["code"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "index_source_directory",
|
|
"description": "Index directory recursively and read all source files.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {"path": {"type": "string", "description": "Path to index"}},
|
|
"required": ["path"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "search_replace",
|
|
"description": "Search and replace text in a file",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
},
|
|
"old_string": {
|
|
"type": "string",
|
|
"description": "String to replace",
|
|
},
|
|
"new_string": {
|
|
"type": "string",
|
|
"description": "Replacement string",
|
|
},
|
|
},
|
|
"required": ["filepath", "old_string", "new_string"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "apply_patch",
|
|
"description": "Apply a patch to a file, especially for source code",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file to patch",
|
|
},
|
|
"patch_content": {
|
|
"type": "string",
|
|
"description": "The patch content as a string",
|
|
},
|
|
},
|
|
"required": ["filepath", "patch_content"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "create_diff",
|
|
"description": "Create a unified diff between two files",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"file1": {
|
|
"type": "string",
|
|
"description": "Path to the first file",
|
|
},
|
|
"file2": {
|
|
"type": "string",
|
|
"description": "Path to the second file",
|
|
},
|
|
"fromfile": {
|
|
"type": "string",
|
|
"description": "Label for the first file",
|
|
"default": "file1",
|
|
},
|
|
"tofile": {
|
|
"type": "string",
|
|
"description": "Label for the second file",
|
|
"default": "file2",
|
|
},
|
|
},
|
|
"required": ["file1", "file2"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "open_editor",
|
|
"description": "Open the RPEditor for a file",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
}
|
|
},
|
|
"required": ["filepath"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "close_editor",
|
|
"description": "Close the RPEditor. Always close files when finished editing.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
}
|
|
},
|
|
"required": ["filepath"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "editor_insert_text",
|
|
"description": "Insert text at cursor position in the editor",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
},
|
|
"text": {"type": "string", "description": "Text to insert"},
|
|
"line": {
|
|
"type": "integer",
|
|
"description": "Line number (optional)",
|
|
},
|
|
"col": {
|
|
"type": "integer",
|
|
"description": "Column number (optional)",
|
|
},
|
|
},
|
|
"required": ["filepath", "text"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "editor_replace_text",
|
|
"description": "Replace text in a range",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
},
|
|
"start_line": {"type": "integer", "description": "Start line"},
|
|
"start_col": {"type": "integer", "description": "Start column"},
|
|
"end_line": {"type": "integer", "description": "End line"},
|
|
"end_col": {"type": "integer", "description": "End column"},
|
|
"new_text": {"type": "string", "description": "New text"},
|
|
},
|
|
"required": [
|
|
"filepath",
|
|
"start_line",
|
|
"start_col",
|
|
"end_line",
|
|
"end_col",
|
|
"new_text",
|
|
],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "editor_search",
|
|
"description": "Search for a pattern in the file",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath": {
|
|
"type": "string",
|
|
"description": "Path to the file",
|
|
},
|
|
"pattern": {"type": "string", "description": "Regex pattern"},
|
|
"start_line": {
|
|
"type": "integer",
|
|
"description": "Start line",
|
|
"default": 0,
|
|
},
|
|
},
|
|
"required": ["filepath", "pattern"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "display_file_diff",
|
|
"description": "Display a visual colored diff between two files with syntax highlighting and statistics",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"filepath1": {
|
|
"type": "string",
|
|
"description": "Path to the original file",
|
|
},
|
|
"filepath2": {
|
|
"type": "string",
|
|
"description": "Path to the modified file",
|
|
},
|
|
"format_type": {
|
|
"type": "string",
|
|
"description": "Display format: 'unified' or 'side-by-side'",
|
|
"default": "unified",
|
|
},
|
|
},
|
|
"required": ["filepath1", "filepath2"],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "display_edit_summary",
|
|
"description": "Display a summary of all edit operations performed during the session",
|
|
"parameters": {"type": "object", "properties": {}},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "display_edit_timeline",
|
|
"description": "Display a timeline of all edit operations with details",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"show_content": {
|
|
"type": "boolean",
|
|
"description": "Show content previews",
|
|
"default": False,
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "clear_edit_tracker",
|
|
"description": "Clear the edit tracker to start fresh",
|
|
"parameters": {"type": "object", "properties": {}},
|
|
},
|
|
},
|
|
]
|