Skip to content

Commit fa9dff4

Browse files
refactor: remove browser use functionality entirely (#11392)
1 parent f54f224 commit fa9dff4

File tree

165 files changed

+500
-8714
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+500
-8714
lines changed

apps/cli/src/agent/__tests__/extension-client.test.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,6 @@ describe("detectAgentState", () => {
9393
expect(state.requiredAction).toBe("answer")
9494
})
9595

96-
it("should detect waiting for browser_action_launch approval", () => {
97-
const messages = [createMessage({ type: "ask", ask: "browser_action_launch", partial: false })]
98-
const state = detectAgentState(messages)
99-
expect(state.state).toBe(AgentLoopState.WAITING_FOR_INPUT)
100-
expect(state.requiredAction).toBe("approve")
101-
})
102-
10396
it("should detect waiting for use_mcp_server approval", () => {
10497
const messages = [createMessage({ type: "ask", ask: "use_mcp_server", partial: false })]
10598
const state = detectAgentState(messages)
@@ -202,7 +195,6 @@ describe("Type Guards", () => {
202195
expect(isInteractiveAsk("tool")).toBe(true)
203196
expect(isInteractiveAsk("command")).toBe(true)
204197
expect(isInteractiveAsk("followup")).toBe(true)
205-
expect(isInteractiveAsk("browser_action_launch")).toBe(true)
206198
expect(isInteractiveAsk("use_mcp_server")).toBe(true)
207199
})
208200

apps/cli/src/agent/agent-state.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export enum AgentLoopState {
116116
*/
117117
export type RequiredAction =
118118
| "none" // No action needed (running/streaming)
119-
| "approve" // Can approve/reject (tool, command, browser, mcp)
119+
| "approve" // Can approve/reject (tool, command, mcp)
120120
| "answer" // Need to answer a question (followup)
121121
| "retry_or_new_task" // Can retry or start new task (api_req_failed)
122122
| "proceed_or_new_task" // Can proceed or start new task (mistake_limit)
@@ -221,7 +221,6 @@ function getRequiredAction(ask: ClineAsk): RequiredAction {
221221
return "answer"
222222
case "command":
223223
case "tool":
224-
case "browser_action_launch":
225224
case "use_mcp_server":
226225
return "approve"
227226
case "command_output":
@@ -264,8 +263,6 @@ function getStateDescription(state: AgentLoopState, ask?: ClineAsk): string {
264263
return "Agent wants to execute a command. Approve or reject."
265264
case "tool":
266265
return "Agent wants to perform a file operation. Approve or reject."
267-
case "browser_action_launch":
268-
return "Agent wants to use the browser. Approve or reject."
269266
case "use_mcp_server":
270267
return "Agent wants to use an MCP server. Approve or reject."
271268
default:

apps/cli/src/agent/ask-dispatcher.ts

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export class AskDispatcher {
244244
}
245245

246246
/**
247-
* Handle interactive asks (followup, command, tool, browser_action_launch, use_mcp_server).
247+
* Handle interactive asks (followup, command, tool, use_mcp_server).
248248
* These require user approval or input.
249249
*/
250250
private async handleInteractiveAsk(ts: number, ask: ClineAsk, text: string): Promise<AskHandleResult> {
@@ -258,9 +258,6 @@ export class AskDispatcher {
258258
case "tool":
259259
return await this.handleToolApproval(ts, text)
260260

261-
case "browser_action_launch":
262-
return await this.handleBrowserApproval(ts, text)
263-
264261
case "use_mcp_server":
265262
return await this.handleMcpApproval(ts, text)
266263

@@ -444,32 +441,6 @@ export class AskDispatcher {
444441
}
445442
}
446443

447-
/**
448-
* Handle browser action approval.
449-
*/
450-
private async handleBrowserApproval(ts: number, text: string): Promise<AskHandleResult> {
451-
this.outputManager.output("\n[browser action request]")
452-
if (text) {
453-
this.outputManager.output(` Action: ${text}`)
454-
}
455-
this.outputManager.markDisplayed(ts, text || "", false)
456-
457-
if (this.nonInteractive) {
458-
// Auto-approved by extension settings
459-
return { handled: true }
460-
}
461-
462-
try {
463-
const approved = await this.promptManager.promptForYesNo("Allow browser action? (y/n): ")
464-
this.sendApprovalResponse(approved)
465-
return { handled: true, response: approved ? "yesButtonClicked" : "noButtonClicked" }
466-
} catch {
467-
this.outputManager.output("[Defaulting to: no]")
468-
this.sendApprovalResponse(false)
469-
return { handled: true, response: "noButtonClicked" }
470-
}
471-
}
472-
473444
/**
474445
* Handle MCP server access approval.
475446
*/

apps/cli/src/agent/extension-host.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,6 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
214214
const baseSettings: RooCodeSettings = {
215215
mode: this.options.mode,
216216
commandExecutionTimeout: 30,
217-
browserToolEnabled: false,
218217
enableCheckpoints: false,
219218
...getProviderSettings(this.options.provider, this.options.apiKey, this.options.model),
220219
}
@@ -227,7 +226,6 @@ export class ExtensionHost extends EventEmitter implements ExtensionHostInterfac
227226
alwaysAllowWrite: true,
228227
alwaysAllowWriteOutsideWorkspace: true,
229228
alwaysAllowWriteProtected: true,
230-
alwaysAllowBrowser: true,
231229
alwaysAllowMcp: true,
232230
alwaysAllowModeSwitch: true,
233231
alwaysAllowSubtasks: true,

apps/cli/src/agent/json-event-emitter.ts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,6 @@ export class JsonEventEmitter {
258258
break
259259
}
260260

261-
case "browser_action":
262-
case "browser_action_result":
263-
this.emitEvent({
264-
type: "tool_result",
265-
subtype: "browser",
266-
tool_result: { name: "browser_action", output: msg.text },
267-
})
268-
break
269-
270261
case "mcp_server_response":
271262
this.emitEvent({
272263
type: "tool_result",
@@ -336,15 +327,6 @@ export class JsonEventEmitter {
336327
})
337328
break
338329

339-
case "browser_action_launch":
340-
this.emitEvent({
341-
type: "tool_use",
342-
id: msg.ts,
343-
subtype: "browser",
344-
tool_use: { name: "browser_action", input: { raw: msg.text } },
345-
})
346-
break
347-
348330
case "use_mcp_server":
349331
this.emitEvent({
350332
type: "tool_use",

apps/cli/src/ui/components/ChatHistoryItem.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,20 @@ import { getToolRenderer } from "./tools/index.js"
1010
/**
1111
* Tool categories for styling
1212
*/
13-
type ToolCategory = "file" | "directory" | "search" | "command" | "browser" | "mode" | "completion" | "other"
13+
type ToolCategory = "file" | "directory" | "search" | "command" | "mode" | "completion" | "other"
1414

1515
function getToolCategory(toolName: string): ToolCategory {
1616
const fileTools = ["readFile", "read_file", "writeToFile", "write_to_file", "applyDiff", "apply_diff"]
1717
const dirTools = ["listFiles", "list_files", "listFilesRecursive", "listFilesTopLevel"]
1818
const searchTools = ["searchFiles", "search_files"]
1919
const commandTools = ["executeCommand", "execute_command"]
20-
const browserTools = ["browserAction", "browser_action"]
2120
const modeTools = ["switchMode", "switch_mode", "newTask", "new_task"]
2221
const completionTools = ["attemptCompletion", "attempt_completion", "askFollowupQuestion", "ask_followup_question"]
2322

2423
if (fileTools.includes(toolName)) return "file"
2524
if (dirTools.includes(toolName)) return "directory"
2625
if (searchTools.includes(toolName)) return "search"
2726
if (commandTools.includes(toolName)) return "command"
28-
if (browserTools.includes(toolName)) return "browser"
2927
if (modeTools.includes(toolName)) return "mode"
3028
if (completionTools.includes(toolName)) return "completion"
3129
return "other"
@@ -39,7 +37,6 @@ const CATEGORY_COLORS: Record<ToolCategory, string> = {
3937
directory: theme.toolHeader,
4038
search: theme.warningColor,
4139
command: theme.successColor,
42-
browser: theme.focusColor,
4340
mode: theme.userHeader,
4441
completion: theme.successColor,
4542
other: theme.toolHeader,

apps/cli/src/ui/components/tools/BrowserTool.tsx

Lines changed: 0 additions & 87 deletions
This file was deleted.

apps/cli/src/ui/components/tools/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import { FileReadTool } from "./FileReadTool.js"
1515
import { FileWriteTool } from "./FileWriteTool.js"
1616
import { SearchTool } from "./SearchTool.js"
1717
import { CommandTool } from "./CommandTool.js"
18-
import { BrowserTool } from "./BrowserTool.js"
1918
import { ModeTool } from "./ModeTool.js"
2019
import { CompletionTool } from "./CompletionTool.js"
2120
import { GenericTool } from "./GenericTool.js"
@@ -32,7 +31,6 @@ export { FileReadTool } from "./FileReadTool.js"
3231
export { FileWriteTool } from "./FileWriteTool.js"
3332
export { SearchTool } from "./SearchTool.js"
3433
export { CommandTool } from "./CommandTool.js"
35-
export { BrowserTool } from "./BrowserTool.js"
3634
export { ModeTool } from "./ModeTool.js"
3735
export { CompletionTool } from "./CompletionTool.js"
3836
export { GenericTool } from "./GenericTool.js"
@@ -45,7 +43,6 @@ const CATEGORY_RENDERERS: Record<string, React.FC<ToolRendererProps>> = {
4543
"file-write": FileWriteTool,
4644
search: SearchTool,
4745
command: CommandTool,
48-
browser: BrowserTool,
4946
mode: ModeTool,
5047
completion: CompletionTool,
5148
other: GenericTool,

apps/cli/src/ui/components/tools/types.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,7 @@ export interface ToolRendererProps {
55
rawContent?: string
66
}
77

8-
export type ToolCategory =
9-
| "file-read"
10-
| "file-write"
11-
| "search"
12-
| "command"
13-
| "browser"
14-
| "mode"
15-
| "completion"
16-
| "other"
8+
export type ToolCategory = "file-read" | "file-write" | "search" | "command" | "mode" | "completion" | "other"
179

1810
export function getToolCategory(toolName: string): ToolCategory {
1911
const fileReadTools = ["readFile", "read_file", "skill", "listFilesTopLevel", "listFilesRecursive", "list_files"]
@@ -29,15 +21,13 @@ export function getToolCategory(toolName: string): ToolCategory {
2921

3022
const searchTools = ["searchFiles", "search_files", "codebaseSearch", "codebase_search"]
3123
const commandTools = ["execute_command", "executeCommand"]
32-
const browserTools = ["browser_action", "browserAction"]
3324
const modeTools = ["switchMode", "switch_mode", "newTask", "new_task", "finishTask"]
3425
const completionTools = ["attempt_completion", "attemptCompletion", "ask_followup_question", "askFollowupQuestion"]
3526

3627
if (fileReadTools.includes(toolName)) return "file-read"
3728
if (fileWriteTools.includes(toolName)) return "file-write"
3829
if (searchTools.includes(toolName)) return "search"
3930
if (commandTools.includes(toolName)) return "command"
40-
if (browserTools.includes(toolName)) return "browser"
4131
if (modeTools.includes(toolName)) return "mode"
4232
if (completionTools.includes(toolName)) return "completion"
4333
return "other"

apps/cli/src/ui/components/tools/utils.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,6 @@ export function getToolDisplayName(toolName: string): string {
7373
execute_command: "Execute Command",
7474
executeCommand: "Execute Command",
7575

76-
// Browser operations
77-
browser_action: "Browser Action",
78-
browserAction: "Browser Action",
79-
8076
// Mode operations
8177
switchMode: "Switch Mode",
8278
switch_mode: "Switch Mode",
@@ -129,10 +125,6 @@ export function getToolIconName(toolName: string): IconName {
129125
execute_command: "terminal",
130126
executeCommand: "terminal",
131127

132-
// Browser operations
133-
browser_action: "browser",
134-
browserAction: "browser",
135-
136128
// Mode operations
137129
switchMode: "switch",
138130
switch_mode: "switch",

0 commit comments

Comments
 (0)