( outputChannel: vscode.OutputChannel, provider: ClineProvider, socketPath?: string, enableLogging = false, )
| 39 | private logfile?: string |
| 40 | |
| 41 | constructor( |
| 42 | outputChannel: vscode.OutputChannel, |
| 43 | provider: ClineProvider, |
| 44 | socketPath?: string, |
| 45 | enableLogging = false, |
| 46 | ) { |
| 47 | super() |
| 48 | |
| 49 | this.outputChannel = outputChannel |
| 50 | this.sidebarProvider = provider |
| 51 | this.context = provider.context |
| 52 | |
| 53 | if (enableLogging) { |
| 54 | this.log = (...args: unknown[]) => { |
| 55 | this.outputChannelLog(...args) |
| 56 | console.log(args) |
| 57 | } |
| 58 | |
| 59 | this.logfile = path.join(os.tmpdir(), "roo-code-messages.log") |
| 60 | } else { |
| 61 | this.log = () => {} |
| 62 | } |
| 63 | |
| 64 | this.registerListeners(this.sidebarProvider) |
| 65 | |
| 66 | if (socketPath) { |
| 67 | const ipc = (this.ipc = new IpcServer(socketPath, this.log)) |
| 68 | |
| 69 | ipc.listen() |
| 70 | this.log(`[API] ipc server started: socketPath=${socketPath}, pid=${process.pid}, ppid=${process.ppid}`) |
| 71 | |
| 72 | ipc.on(IpcMessageType.TaskCommand, async (clientId, command) => { |
| 73 | const sendResponse = (eventName: RooCodeEventName, payload: unknown[]) => { |
| 74 | ipc.send(clientId, { |
| 75 | type: IpcMessageType.TaskEvent, |
| 76 | origin: IpcOrigin.Server, |
| 77 | data: { eventName, payload } as TaskEvent, |
| 78 | }) |
| 79 | } |
| 80 | |
| 81 | switch (command.commandName) { |
| 82 | case TaskCommandName.StartNewTask: |
| 83 | this.log( |
| 84 | `[API] StartNewTask -> ${command.data.text}, ${JSON.stringify(command.data.configuration)}`, |
| 85 | ) |
| 86 | await this.startNewTask(command.data) |
| 87 | break |
| 88 | case TaskCommandName.CancelTask: |
| 89 | this.log(`[API] CancelTask`) |
| 90 | await this.cancelCurrentTask() |
| 91 | break |
| 92 | case TaskCommandName.CloseTask: |
| 93 | this.log(`[API] CloseTask`) |
| 94 | await vscode.commands.executeCommand("workbench.action.files.saveFiles") |
| 95 | await vscode.commands.executeCommand("workbench.action.closeWindow") |
| 96 | break |
| 97 | case TaskCommandName.ResumeTask: |
| 98 | this.log(`[API] ResumeTask -> ${command.data}`) |
nothing calls this directly
no test coverage detected