Преглед изворни кода

Revert "Remove terminal actions"

This reverts commit 75dcc2ffcf775f33ca7bb87b46f5397c8357acfc which has
been fixed by PR #1365.

Fixes: #1380
Eric Wheeler пре 9 месеци
родитељ
комит
75de043ded
4 измењених фајлова са 137 додато и 2 уклоњено
  1. 47 0
      package.json
  2. 1 0
      src/activate/index.ts
  3. 81 0
      src/activate/registerTerminalActions.ts
  4. 8 2
      src/extension.ts

+ 47 - 0
package.json

@@ -128,6 +128,31 @@
 				"command": "roo-cline.addToContext",
 				"title": "Roo Code: Add To Context",
 				"category": "Roo Code"
+			},
+			{
+				"command": "roo-cline.terminalAddToContext",
+				"title": "Roo Code: Add Terminal Content to Context",
+				"category": "Terminal"
+			},
+			{
+				"command": "roo-cline.terminalFixCommand",
+				"title": "Roo Code: Fix This Command",
+				"category": "Terminal"
+			},
+			{
+				"command": "roo-cline.terminalExplainCommand",
+				"title": "Roo Code: Explain This Command",
+				"category": "Terminal"
+			},
+			{
+				"command": "roo-cline.terminalFixCommandInCurrentTask",
+				"title": "Roo Code: Fix This Command (Current Task)",
+				"category": "Terminal"
+			},
+			{
+				"command": "roo-cline.terminalExplainCommandInCurrentTask",
+				"title": "Roo Code: Explain This Command (Current Task)",
+				"category": "Terminal"
 			}
 		],
 		"menus": {
@@ -153,6 +178,28 @@
 					"group": "Roo Code@4"
 				}
 			],
+			"terminal/context": [
+				{
+					"command": "roo-cline.terminalAddToContext",
+					"group": "Roo Code@1"
+				},
+				{
+					"command": "roo-cline.terminalFixCommand",
+					"group": "Roo Code@2"
+				},
+				{
+					"command": "roo-cline.terminalExplainCommand",
+					"group": "Roo Code@3"
+				},
+				{
+					"command": "roo-cline.terminalFixCommandInCurrentTask",
+					"group": "Roo Code@5"
+				},
+				{
+					"command": "roo-cline.terminalExplainCommandInCurrentTask",
+					"group": "Roo Code@6"
+				}
+			],
 			"view/title": [
 				{
 					"command": "roo-cline.plusButtonClicked",

+ 1 - 0
src/activate/index.ts

@@ -2,3 +2,4 @@ export { handleUri } from "./handleUri"
 export { registerCommands } from "./registerCommands"
 export { registerCodeActions } from "./registerCodeActions"
 export { createRooCodeAPI } from "./createRooCodeAPI"
+export { registerTerminalActions } from "./registerTerminalActions"

+ 81 - 0
src/activate/registerTerminalActions.ts

@@ -0,0 +1,81 @@
+import * as vscode from "vscode"
+import { ClineProvider } from "../core/webview/ClineProvider"
+import { TerminalManager } from "../integrations/terminal/TerminalManager"
+
+const TERMINAL_COMMAND_IDS = {
+	ADD_TO_CONTEXT: "roo-cline.terminalAddToContext",
+	FIX: "roo-cline.terminalFixCommand",
+	FIX_IN_CURRENT_TASK: "roo-cline.terminalFixCommandInCurrentTask",
+	EXPLAIN: "roo-cline.terminalExplainCommand",
+	EXPLAIN_IN_CURRENT_TASK: "roo-cline.terminalExplainCommandInCurrentTask",
+} as const
+
+export const registerTerminalActions = (context: vscode.ExtensionContext) => {
+	const terminalManager = new TerminalManager()
+
+	registerTerminalAction(context, terminalManager, TERMINAL_COMMAND_IDS.ADD_TO_CONTEXT, "TERMINAL_ADD_TO_CONTEXT")
+
+	registerTerminalActionPair(
+		context,
+		terminalManager,
+		TERMINAL_COMMAND_IDS.FIX,
+		"TERMINAL_FIX",
+		"What would you like Roo to fix?",
+	)
+
+	registerTerminalActionPair(
+		context,
+		terminalManager,
+		TERMINAL_COMMAND_IDS.EXPLAIN,
+		"TERMINAL_EXPLAIN",
+		"What would you like Roo to explain?",
+	)
+}
+
+const registerTerminalAction = (
+	context: vscode.ExtensionContext,
+	terminalManager: TerminalManager,
+	command: string,
+	promptType: "TERMINAL_ADD_TO_CONTEXT" | "TERMINAL_FIX" | "TERMINAL_EXPLAIN",
+	inputPrompt?: string,
+) => {
+	context.subscriptions.push(
+		vscode.commands.registerCommand(command, async (args: any) => {
+			let content = args.selection
+			if (!content || content === "") {
+				content = await terminalManager.getTerminalContents(promptType === "TERMINAL_ADD_TO_CONTEXT" ? -1 : 1)
+			}
+
+			if (!content) {
+				vscode.window.showWarningMessage("No terminal content selected")
+				return
+			}
+
+			const params: Record<string, any> = {
+				terminalContent: content,
+			}
+
+			if (inputPrompt) {
+				params.userInput =
+					(await vscode.window.showInputBox({
+						prompt: inputPrompt,
+					})) ?? ""
+			}
+
+			await ClineProvider.handleTerminalAction(command, promptType, params)
+		}),
+	)
+}
+
+const registerTerminalActionPair = (
+	context: vscode.ExtensionContext,
+	terminalManager: TerminalManager,
+	baseCommand: string,
+	promptType: "TERMINAL_ADD_TO_CONTEXT" | "TERMINAL_FIX" | "TERMINAL_EXPLAIN",
+	inputPrompt?: string,
+) => {
+	// Register new task version
+	registerTerminalAction(context, terminalManager, baseCommand, promptType, inputPrompt)
+	// Register current task version
+	registerTerminalAction(context, terminalManager, `${baseCommand}InCurrentTask`, promptType, inputPrompt)
+}

+ 8 - 2
src/extension.ts

@@ -19,7 +19,7 @@ import { DIFF_VIEW_URI_SCHEME } from "./integrations/editor/DiffViewProvider"
 import { McpServerManager } from "./services/mcp/McpServerManager"
 import { telemetryService } from "./services/telemetry/TelemetryService"
 
-import { handleUri, registerCommands, registerCodeActions, createRooCodeAPI } from "./activate"
+import { handleUri, registerCommands, registerCodeActions, createRooCodeAPI, registerTerminalActions } from "./activate"
 
 /**
  * Built using https://github.com/microsoft/vscode-webview-ui-toolkit
@@ -98,10 +98,16 @@ export function activate(context: vscode.ExtensionContext) {
 
 	registerCodeActions(context)
 
+	/**
+	 * Temporary disabled until we have a better way to share the terminal
+	 * manager.
+	 */
+	// registerTerminalActions(context)
+
 	return createRooCodeAPI(outputChannel, sidebarProvider)
 }
 
-// This method is called when your extension is deactivated.
+// This method is called when your extension is deactivated
 export async function deactivate() {
 	outputChannel.appendLine("Roo-Code extension deactivated")
 	// Clean up MCP server manager