-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathToolExecutor.ts
More file actions
82 lines (81 loc) · 3.09 KB
/
ToolExecutor.ts
File metadata and controls
82 lines (81 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import type {
SchemaDirectoryCreate,
SchemaDirectoryDelete,
SchemaDirectoryList,
SchemaDirectoryMove,
SchemaFileCreate,
SchemaFileDelete,
SchemaFileEdit,
SchemaFileMove,
SchemaFileRead,
SchemaFileSearch,
SchemaGlobSearch,
SchemaGrepSearch,
SchemaTaskPlan,
SchemaTerminalCmd,
SchemaWebFetch
} from '@root/interfaces/index'
import DirectoryCreate from '@core/base/DirectoryCreate'
import DirectoryDelete from '@core/base/DirectoryDelete'
import DirectoryList from '@core/base/DirectoryList'
import DirectoryMove from '@core/base/DirectoryMove'
import FileCreate from '@core/base/FileCreate'
import FileDelete from '@core/base/FileDelete'
import FileEdit from '@core/base/FileEdit'
import FileRead from '@core/base/FileRead'
import FileMove from '@core/base/FileMove'
import FileSearch from '@core/base/FileSearch'
import GlobSearch from '@core/base/GlobSearch'
import GrepSearch from '@core/base/GrepSearch'
import TaskPlan from '@core/base/TaskPlan'
import TerminalCmd from '@core/base/TerminalCmd'
import WebFetch from '@core/base/WebFetch'
/**
* Executes tool operations based on tool name and arguments.
* @description Handles execution of various tools including file and code editing operations.
*/
export class ToolExecutor {
/**
* Executes a tool with the specified name and arguments.
* @description Routes tool execution to the appropriate tool handler based on tool name.
* @param toolName - The name of the tool to execute
* @param args - The arguments to pass to the tool
* @returns Result string from tool execution or error message for unknown tools
*/
async execute(toolName: string, args: unknown): Promise<string> {
switch (toolName) {
case 'DirectoryCreate':
return new DirectoryCreate(args as SchemaDirectoryCreate).execute()
case 'DirectoryDelete':
return new DirectoryDelete(args as SchemaDirectoryDelete).execute()
case 'DirectoryList':
return new DirectoryList(args as SchemaDirectoryList).execute()
case 'DirectoryMove':
return new DirectoryMove(args as SchemaDirectoryMove).execute()
case 'FileCreate':
return new FileCreate(args as SchemaFileCreate).execute()
case 'FileDelete':
return new FileDelete(args as SchemaFileDelete).execute()
case 'FileEdit':
return new FileEdit(args as SchemaFileEdit).execute()
case 'FileRead':
return new FileRead(args as SchemaFileRead).execute()
case 'FileMove':
return new FileMove(args as SchemaFileMove).execute()
case 'FileSearch':
return new FileSearch(args as SchemaFileSearch).execute()
case 'GlobSearch':
return new GlobSearch(args as SchemaGlobSearch).execute()
case 'GrepSearch':
return new GrepSearch(args as SchemaGrepSearch).execute()
case 'TaskPlan':
return new TaskPlan(args as SchemaTaskPlan).execute()
case 'TerminalCmd':
return new TerminalCmd(args as SchemaTerminalCmd).execute()
case 'WebFetch':
return new WebFetch(args as SchemaWebFetch).execute()
default:
return `Unknown tool: ${toolName}`
}
}
}