Skip to content

Commit 5a287e8

Browse files
committed
refactor(bridge): update listFiles to listDirectory tool
Rename `vscode_list_files` to `vscode_list_directory` to accurately describe its functionality. Introduced a legacy case to maintain backward compatibility with older tool calls. Updated UI strings, icons, and execution handlers to support the new tool name and its parameters.
1 parent 5569d4f commit 5a287e8

13 files changed

Lines changed: 722 additions & 71 deletions

Axon/Models/StreamingTypes.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ extension LiveToolCall {
382382
case "reflect_on_conversation": return "Reflect"
383383
case "vscode_read_file": return "Read File"
384384
case "vscode_write_file": return "Write File"
385+
case "vscode_list_directory": return "List Directory"
385386
case "vscode_list_files": return "List Files"
386387
case "vscode_run_terminal": return "Run Terminal"
387388
default: return toolName.replacingOccurrences(of: "_", with: " ").capitalized
@@ -401,6 +402,7 @@ extension LiveToolCall {
401402
case "reflect_on_conversation": return "bubble.left.and.bubble.right"
402403
case "vscode_read_file": return "doc.text"
403404
case "vscode_write_file": return "square.and.pencil"
405+
case "vscode_list_directory": return "folder"
404406
case "vscode_list_files": return "folder"
405407
case "vscode_run_terminal": return "terminal"
406408
default: return "gear"
@@ -420,6 +422,7 @@ extension LiveToolCall {
420422
case "reflect_on_conversation": return "Analyzing conversation..."
421423
case "vscode_read_file": return "Reading file..."
422424
case "vscode_write_file": return "Writing file..."
425+
case "vscode_list_directory": return "Listing directory..."
423426
case "vscode_list_files": return "Listing files..."
424427
case "vscode_run_terminal": return "Running command..."
425428
default: return "Executing..."

Axon/Services/Bridge/BridgeToolDefinitions.swift

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ import Foundation
1414
enum BridgeToolId: String, CaseIterable {
1515
case readFile = "vscode_read_file"
1616
case writeFile = "vscode_write_file"
17-
case listFiles = "vscode_list_files"
17+
case listDirectory = "vscode_list_directory"
18+
case listFilesLegacy = "vscode_list_files"
1819
case runTerminal = "vscode_run_terminal"
1920

2021
var displayName: String {
2122
switch self {
2223
case .readFile: return "Read File (VS Code)"
2324
case .writeFile: return "Write File (VS Code)"
24-
case .listFiles: return "List Files (VS Code)"
25+
case .listDirectory, .listFilesLegacy: return "List Directory (VS Code)"
2526
case .runTerminal: return "Run Terminal (VS Code)"
2627
}
2728
}
@@ -32,7 +33,7 @@ enum BridgeToolId: String, CaseIterable {
3233
return "Read the contents of a file from the connected VS Code workspace"
3334
case .writeFile:
3435
return "Write or create a file in the connected VS Code workspace"
35-
case .listFiles:
36+
case .listDirectory, .listFilesLegacy:
3637
return "List files and directories in the connected VS Code workspace"
3738
case .runTerminal:
3839
return "Execute a terminal command in the connected VS Code workspace"
@@ -43,7 +44,7 @@ enum BridgeToolId: String, CaseIterable {
4344
switch self {
4445
case .readFile: return "doc.text.magnifyingglass"
4546
case .writeFile: return "doc.badge.plus"
46-
case .listFiles: return "folder.badge.gearshape"
47+
case .listDirectory, .listFilesLegacy: return "folder.badge.gearshape"
4748
case .runTerminal: return "terminal"
4849
}
4950
}
@@ -52,7 +53,7 @@ enum BridgeToolId: String, CaseIterable {
5253
/// All VS Code bridge tools require approval since they access external workspace
5354
var requiresApproval: Bool {
5455
switch self {
55-
case .readFile, .listFiles:
56+
case .readFile, .listDirectory, .listFilesLegacy:
5657
return true // Even read-only needs approval for VS Code access
5758
case .writeFile, .runTerminal:
5859
return true // Mutations require approval
@@ -62,7 +63,7 @@ enum BridgeToolId: String, CaseIterable {
6263
/// Risk level for approval UI
6364
var riskLevel: String {
6465
switch self {
65-
case .readFile, .listFiles: return "low"
66+
case .readFile, .listDirectory, .listFilesLegacy: return "low"
6667
case .writeFile: return "medium"
6768
case .runTerminal: return "high"
6869
}
@@ -73,7 +74,7 @@ enum BridgeToolId: String, CaseIterable {
7374
switch self {
7475
case .readFile: return .fileRead
7576
case .writeFile: return .fileWrite
76-
case .listFiles: return .fileList
77+
case .listDirectory, .listFilesLegacy: return .fileList
7778
case .runTerminal: return .terminalRun
7879
}
7980
}
@@ -97,6 +98,15 @@ extension BridgeToolId {
9798
Read the contents of a file from the workspace.
9899
```tool_request
99100
{"tool": "vscode_read_file", "query": "path/to/file.ts"}
101+
```
102+
103+
### vscode_list_directory
104+
List directory contents from the workspace.
105+
```tool_request
106+
{"tool": "vscode_list_directory", "query": "."}
107+
```
108+
109+
Legacy compatibility note: `vscode_list_files` may still appear in older prompts, but prefer `vscode_list_directory`.
100110
"""
101111
}
102112
}

Axon/Services/Bridge/BridgeToolExecutor.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class BridgeToolExecutor {
154154
memoryOperation: nil
155155
)
156156

157-
case .listFiles:
157+
case .listDirectory, .listFilesLegacy:
158158
// Parse path and recursive flag
159159
let parts = request.query.components(separatedBy: "|")
160160
let path = parts[0].trimmingCharacters(in: .whitespaces)
@@ -230,7 +230,7 @@ class BridgeToolExecutor {
230230
}
231231

232232
return ToolResult(
233-
tool: BridgeToolId.listFiles.rawValue,
233+
tool: BridgeToolId.listDirectory.rawValue,
234234
success: true,
235235
result: output,
236236
sources: nil,

0 commit comments

Comments
 (0)