From 6082ec2798a642d4845f6b6fc213fba5e8f3d560 Mon Sep 17 00:00:00 2001 From: cte Date: Mon, 31 Mar 2025 23:00:03 -0500 Subject: [PATCH] Get rid of VSCodeCommand --- benchmark/apps/cli/src/index.ts | 21 ++++------ benchmark/packages/ipc/src/server.ts | 1 - benchmark/packages/types/src/ipc.ts | 12 +++--- src/exports/api.ts | 61 ++++------------------------ src/exports/ipc.ts | 4 -- src/schemas/ipc.ts | 12 +++--- 6 files changed, 25 insertions(+), 86 deletions(-) diff --git a/benchmark/apps/cli/src/index.ts b/benchmark/apps/cli/src/index.ts index 6aab914c95..f871776364 100644 --- a/benchmark/apps/cli/src/index.ts +++ b/benchmark/apps/cli/src/index.ts @@ -346,19 +346,14 @@ const runExercise = async ({ run, task, server }: { run: Run; task: Task; server if (!isClientDisconnected) { try { - client.sendMessage({ - type: IpcMessageType.VSCodeCommand, - origin: IpcOrigin.Client, - clientId: client.clientId!, - data: "workbench.action.files.saveFiles", - }) - - client.sendMessage({ - type: IpcMessageType.VSCodeCommand, - origin: IpcOrigin.Client, - clientId: client.clientId!, - data: "workbench.action.closeWindow", - }) + if (rooTaskId) { + client.sendMessage({ + type: IpcMessageType.TaskCommand, + origin: IpcOrigin.Client, + clientId: client.clientId!, + data: { commandName: TaskCommandName.CloseTask, data: rooTaskId }, + }) + } client.disconnect() } catch (error) { diff --git a/benchmark/packages/ipc/src/server.ts b/benchmark/packages/ipc/src/server.ts index 5faaae1766..0866678609 100644 --- a/benchmark/packages/ipc/src/server.ts +++ b/benchmark/packages/ipc/src/server.ts @@ -11,7 +11,6 @@ type IpcServerEvents = { [IpcMessageType.Disconnect]: [clientId: string] [IpcMessageType.TaskCommand]: [clientId: string, data: TaskCommand] [IpcMessageType.TaskEvent]: [relayClientId: string | undefined, data: TaskEvent] - [IpcMessageType.VSCodeCommand]: [clientId: string, data: string] } export class IpcServer extends EventEmitter { diff --git a/benchmark/packages/types/src/ipc.ts b/benchmark/packages/types/src/ipc.ts index 0efa5e1956..c6791f67d1 100644 --- a/benchmark/packages/types/src/ipc.ts +++ b/benchmark/packages/types/src/ipc.ts @@ -21,6 +21,7 @@ export type Ack = z.infer export enum TaskCommandName { StartNewTask = "StartNewTask", CancelTask = "CancelTask", + CloseTask = "CloseTask", } export const taskCommandSchema = z.discriminatedUnion("commandName", [ @@ -37,6 +38,10 @@ export const taskCommandSchema = z.discriminatedUnion("commandName", [ commandName: z.literal(TaskCommandName.CancelTask), data: z.string(), }), + z.object({ + commandName: z.literal(TaskCommandName.CloseTask), + data: z.string(), + }), ]) export type TaskCommand = z.infer @@ -115,7 +120,6 @@ export enum IpcMessageType { Ack = "Ack", TaskCommand = "TaskCommand", TaskEvent = "TaskEvent", - VSCodeCommand = "VSCodeCommand", } export enum IpcOrigin { @@ -141,12 +145,6 @@ export const ipcMessageSchema = z.discriminatedUnion("type", [ relayClientId: z.string().optional(), data: taskEventSchema, }), - z.object({ - type: z.literal(IpcMessageType.VSCodeCommand), - origin: z.literal(IpcOrigin.Client), - clientId: z.string(), - data: z.string(), - }), ]) export type IpcMessage = z.infer diff --git a/src/exports/api.ts b/src/exports/api.ts index 19d679b2ee..7f437152c8 100644 --- a/src/exports/api.ts +++ b/src/exports/api.ts @@ -38,67 +38,20 @@ export class API extends EventEmitter implements RooCodeAPI { ipc.on(IpcMessageType.TaskCommand, async (_clientId, { commandName, data }) => { switch (commandName) { case TaskCommandName.StartNewTask: - this.log(`[API] StartNewTask -> ${data.text}`) - this.log(`[API] StartNewTask -> ${JSON.stringify(data.configuration)}`) - - try { - await this.startNewTask(data) - - ipc.broadcast({ - type: IpcMessageType.TaskEvent, - origin: IpcOrigin.Server, - data: { - eventName: RooCodeEventName.Message, - payload: [ - { - taskId: "[system]", - action: "created", - message: { - ts: Date.now(), - type: "say", - text: `ACK: TaskCommand -> ${commandName}`, - }, - }, - ], - }, - }) - } catch (error) { - this.log(`[API] error starting new task: ${error}`) - } - + this.log(`[API] StartNewTask -> ${data.text}, ${JSON.stringify(data.configuration)}`) + await this.startNewTask(data) break case TaskCommandName.CancelTask: this.log(`[API] CancelTask -> ${data}`) - await this.cancelTask(data) - - ipc.broadcast({ - type: IpcMessageType.TaskEvent, - origin: IpcOrigin.Server, - data: { - eventName: RooCodeEventName.Message, - payload: [ - { - taskId: "[system]", - action: "created", - message: { - ts: Date.now(), - type: "say", - text: `ACK: CancelTask -> ${data}`, - }, - }, - ], - }, - }) - + break + case TaskCommandName.CloseTask: + this.log(`[API] CloseTask -> ${data}`) + await vscode.commands.executeCommand("workbench.action.files.saveFiles") + await vscode.commands.executeCommand("workbench.action.closeWindow") break } }) - - ipc.on(IpcMessageType.VSCodeCommand, async (_clientId, command) => { - this.log(`[API] VSCodeCommand -> ${command}`) - await vscode.commands.executeCommand(command) - }) } } diff --git a/src/exports/ipc.ts b/src/exports/ipc.ts index aca2f67750..2808dd4613 100644 --- a/src/exports/ipc.ts +++ b/src/exports/ipc.ts @@ -15,7 +15,6 @@ type IpcServerEvents = { [IpcMessageType.Disconnect]: [clientId: string] [IpcMessageType.TaskCommand]: [clientId: string, data: TaskCommand] [IpcMessageType.TaskEvent]: [relayClientId: string | undefined, data: TaskEvent] - [IpcMessageType.VSCodeCommand]: [clientId: string, data: string] } export class IpcServer extends EventEmitter { @@ -99,9 +98,6 @@ export class IpcServer extends EventEmitter { case IpcMessageType.TaskCommand: this.emit(IpcMessageType.TaskCommand, payload.clientId, payload.data) break - case IpcMessageType.VSCodeCommand: - this.emit(IpcMessageType.VSCodeCommand, payload.clientId, payload.data) - break default: throw new Error(`[server#onMessage] unhandled payload: ${JSON.stringify(payload)}`) break diff --git a/src/schemas/ipc.ts b/src/schemas/ipc.ts index 06b2ac64dc..9a351bdf8a 100644 --- a/src/schemas/ipc.ts +++ b/src/schemas/ipc.ts @@ -21,6 +21,7 @@ export type Ack = z.infer export enum TaskCommandName { StartNewTask = "StartNewTask", CancelTask = "CancelTask", + CloseTask = "CloseTask", } export const taskCommandSchema = z.discriminatedUnion("commandName", [ @@ -37,6 +38,10 @@ export const taskCommandSchema = z.discriminatedUnion("commandName", [ commandName: z.literal(TaskCommandName.CancelTask), data: z.string(), }), + z.object({ + commandName: z.literal(TaskCommandName.CloseTask), + data: z.string(), + }), ]) export type TaskCommand = z.infer @@ -100,7 +105,6 @@ export enum IpcMessageType { Ack = "Ack", TaskCommand = "TaskCommand", TaskEvent = "TaskEvent", - VSCodeCommand = "VSCodeCommand", } export enum IpcOrigin { @@ -126,12 +130,6 @@ export const ipcMessageSchema = z.discriminatedUnion("type", [ relayClientId: z.string().optional(), data: taskEventSchema, }), - z.object({ - type: z.literal(IpcMessageType.VSCodeCommand), - origin: z.literal(IpcOrigin.Client), - clientId: z.string(), - data: z.string(), - }), ]) export type IpcMessage = z.infer