Browse Source

add new task command (#1648)

* add new task command

* Internationalize

* Revert README changes

* More i18n

* Fix tests

* Fix i18n

* Missing translations

---------

Co-authored-by: Matt Rubens <[email protected]>
axb 9 months ago
parent
commit
0bc4f30c23
38 changed files with 163 additions and 36 deletions
  1. 5 0
      package.json
  2. 22 0
      src/activate/handleTask.ts
  3. 2 0
      src/activate/registerCommands.ts
  4. 1 1
      src/core/Cline.ts
  5. 2 0
      src/core/CodeActionProvider.ts
  6. 4 0
      src/core/__tests__/Cline.test.ts
  7. 4 0
      src/core/webview/__tests__/ClineProvider.test.ts
  8. 4 0
      src/i18n/locales/ca/common.json
  9. 4 0
      src/i18n/locales/de/common.json
  10. 4 0
      src/i18n/locales/en/common.json
  11. 4 0
      src/i18n/locales/es/common.json
  12. 4 0
      src/i18n/locales/fr/common.json
  13. 4 0
      src/i18n/locales/hi/common.json
  14. 4 0
      src/i18n/locales/it/common.json
  15. 4 0
      src/i18n/locales/ja/common.json
  16. 4 0
      src/i18n/locales/ko/common.json
  17. 4 0
      src/i18n/locales/pl/common.json
  18. 4 0
      src/i18n/locales/pt-BR/common.json
  19. 4 0
      src/i18n/locales/tr/common.json
  20. 4 0
      src/i18n/locales/vi/common.json
  21. 4 0
      src/i18n/locales/zh-CN/common.json
  22. 4 0
      src/i18n/locales/zh-TW/common.json
  23. 3 35
      src/shared/support-prompt.ts
  24. 4 0
      webview-ui/src/i18n/locales/ca/prompts.json
  25. 4 0
      webview-ui/src/i18n/locales/de/prompts.json
  26. 4 0
      webview-ui/src/i18n/locales/en/prompts.json
  27. 4 0
      webview-ui/src/i18n/locales/es/prompts.json
  28. 4 0
      webview-ui/src/i18n/locales/fr/prompts.json
  29. 4 0
      webview-ui/src/i18n/locales/hi/prompts.json
  30. 4 0
      webview-ui/src/i18n/locales/it/prompts.json
  31. 4 0
      webview-ui/src/i18n/locales/ja/prompts.json
  32. 4 0
      webview-ui/src/i18n/locales/ko/prompts.json
  33. 4 0
      webview-ui/src/i18n/locales/pl/prompts.json
  34. 4 0
      webview-ui/src/i18n/locales/pt-BR/prompts.json
  35. 4 0
      webview-ui/src/i18n/locales/tr/prompts.json
  36. 4 0
      webview-ui/src/i18n/locales/vi/prompts.json
  37. 4 0
      webview-ui/src/i18n/locales/zh-CN/prompts.json
  38. 4 0
      webview-ui/src/i18n/locales/zh-TW/prompts.json

+ 5 - 0
package.json

@@ -140,6 +140,11 @@
 				"title": "Add To Context",
 				"title": "Add To Context",
 				"category": "Roo Code"
 				"category": "Roo Code"
 			},
 			},
+			{
+				"command": "roo-cline.newTask",
+				"title": "New Task",
+				"category": "Roo Code"
+			},
 			{
 			{
 				"command": "roo-cline.terminalAddToContext",
 				"command": "roo-cline.terminalAddToContext",
 				"title": "Add Terminal Content to Context",
 				"title": "Add Terminal Content to Context",

+ 22 - 0
src/activate/handleTask.ts

@@ -0,0 +1,22 @@
+import * as vscode from "vscode"
+import { COMMAND_IDS } from "../core/CodeActionProvider"
+import { ClineProvider } from "../core/webview/ClineProvider"
+import { t } from "../i18n"
+
+export const handleNewTask = async (params: { prompt?: string } | null | undefined) => {
+	let prompt = params?.prompt
+	if (!prompt) {
+		prompt = await vscode.window.showInputBox({
+			prompt: t("common:input.task_prompt"),
+			placeHolder: t("common:input.task_placeholder"),
+		})
+	}
+	if (!prompt) {
+		await vscode.commands.executeCommand("roo-cline.SidebarProvider.focus")
+		return
+	}
+
+	await ClineProvider.handleCodeAction(COMMAND_IDS.NEW_TASK, "NEW_TASK", {
+		userInput: prompt,
+	})
+}

+ 2 - 0
src/activate/registerCommands.ts

@@ -4,6 +4,7 @@ import delay from "delay"
 import { ClineProvider } from "../core/webview/ClineProvider"
 import { ClineProvider } from "../core/webview/ClineProvider"
 
 
 import { registerHumanRelayCallback, unregisterHumanRelayCallback, handleHumanRelayResponse } from "./humanRelay"
 import { registerHumanRelayCallback, unregisterHumanRelayCallback, handleHumanRelayResponse } from "./humanRelay"
+import { handleNewTask } from "./handleTask"
 
 
 // Store panel references in both modes
 // Store panel references in both modes
 let sidebarPanel: vscode.WebviewView | undefined = undefined
 let sidebarPanel: vscode.WebviewView | undefined = undefined
@@ -85,6 +86,7 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt
 		"roo-cline.registerHumanRelayCallback": registerHumanRelayCallback,
 		"roo-cline.registerHumanRelayCallback": registerHumanRelayCallback,
 		"roo-cline.unregisterHumanRelayCallback": unregisterHumanRelayCallback,
 		"roo-cline.unregisterHumanRelayCallback": unregisterHumanRelayCallback,
 		"roo-cline.handleHumanRelayResponse": handleHumanRelayResponse,
 		"roo-cline.handleHumanRelayResponse": handleHumanRelayResponse,
+		"roo-cline.newTask": handleNewTask,
 		"roo-cline.setCustomStoragePath": async () => {
 		"roo-cline.setCustomStoragePath": async () => {
 			const { promptForCustomStoragePath } = await import("../shared/storagePathManager")
 			const { promptForCustomStoragePath } = await import("../shared/storagePathManager")
 			await promptForCustomStoragePath()
 			await promptForCustomStoragePath()

+ 1 - 1
src/core/Cline.ts

@@ -2893,7 +2893,7 @@ export class Cline extends EventEmitter<ClineEvents> {
 									if (item.mimeType?.startsWith("image") && item.blob) {
 									if (item.mimeType?.startsWith("image") && item.blob) {
 										images.push(item.blob)
 										images.push(item.blob)
 									}
 									}
-								});
+								})
 								await this.say("mcp_server_response", resourceResultPretty, images)
 								await this.say("mcp_server_response", resourceResultPretty, images)
 								pushToolResult(formatResponse.toolResult(resourceResultPretty, images))
 								pushToolResult(formatResponse.toolResult(resourceResultPretty, images))
 								break
 								break

+ 2 - 0
src/core/CodeActionProvider.ts

@@ -7,6 +7,7 @@ export const ACTION_NAMES = {
 	FIX_LOGIC: "Roo Code: Fix Logic",
 	FIX_LOGIC: "Roo Code: Fix Logic",
 	IMPROVE: "Roo Code: Improve Code",
 	IMPROVE: "Roo Code: Improve Code",
 	ADD_TO_CONTEXT: "Roo Code: Add to Context",
 	ADD_TO_CONTEXT: "Roo Code: Add to Context",
+	NEW_TASK: "Roo Code: New Task",
 } as const
 } as const
 
 
 export const COMMAND_IDS = {
 export const COMMAND_IDS = {
@@ -14,6 +15,7 @@ export const COMMAND_IDS = {
 	FIX: "roo-cline.fixCode",
 	FIX: "roo-cline.fixCode",
 	IMPROVE: "roo-cline.improveCode",
 	IMPROVE: "roo-cline.improveCode",
 	ADD_TO_CONTEXT: "roo-cline.addToContext",
 	ADD_TO_CONTEXT: "roo-cline.addToContext",
+	NEW_TASK: "roo-cline.newTask",
 } as const
 } as const
 
 
 export class CodeActionProvider implements vscode.CodeActionProvider {
 export class CodeActionProvider implements vscode.CodeActionProvider {

+ 4 - 0
src/core/__tests__/Cline.test.ts

@@ -139,6 +139,10 @@ jest.mock("vscode", () => {
 	}
 	}
 
 
 	return {
 	return {
+		CodeActionKind: {
+			QuickFix: { value: "quickfix" },
+			RefactorRewrite: { value: "refactor.rewrite" },
+		},
 		window: {
 		window: {
 			createTextEditorDecorationType: jest.fn().mockReturnValue({
 			createTextEditorDecorationType: jest.fn().mockReturnValue({
 				dispose: jest.fn(),
 				dispose: jest.fn(),

+ 4 - 0
src/core/webview/__tests__/ClineProvider.test.ts

@@ -167,6 +167,10 @@ jest.mock("vscode", () => ({
 		joinPath: jest.fn(),
 		joinPath: jest.fn(),
 		file: jest.fn(),
 		file: jest.fn(),
 	},
 	},
+	CodeActionKind: {
+		QuickFix: { value: "quickfix" },
+		RefactorRewrite: { value: "refactor.rewrite" },
+	},
 	window: {
 	window: {
 		showInformationMessage: jest.fn(),
 		showInformationMessage: jest.fn(),
 		showErrorMessage: jest.fn(),
 		showErrorMessage: jest.fn(),

+ 4 - 0
src/i18n/locales/ca/common.json

@@ -1,4 +1,8 @@
 {
 {
+	"input": {
+		"task_prompt": "Què vols que faci Roo?",
+		"task_placeholder": "Escriu la teva tasca aquí"
+	},
 	"extension": {
 	"extension": {
 		"name": "Roo Code",
 		"name": "Roo Code",
 		"description": "Tot un equip de desenvolupadors d'IA al teu editor."
 		"description": "Tot un equip de desenvolupadors d'IA al teu editor."

+ 4 - 0
src/i18n/locales/de/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Bitte gib einen absoluten Pfad ein (z.B. D:\\RooCodeStorage oder /home/user/storage)",
 		"enter_absolute_path": "Bitte gib einen absoluten Pfad ein (z.B. D:\\RooCodeStorage oder /home/user/storage)",
 		"enter_valid_path": "Bitte gib einen gültigen Pfad ein"
 		"enter_valid_path": "Bitte gib einen gültigen Pfad ein"
+	},
+	"input": {
+		"task_prompt": "Was soll Roo tun?",
+		"task_placeholder": "Gib deine Aufgabe hier ein"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/en/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Please enter an absolute path (e.g. D:\\RooCodeStorage or /home/user/storage)",
 		"enter_absolute_path": "Please enter an absolute path (e.g. D:\\RooCodeStorage or /home/user/storage)",
 		"enter_valid_path": "Please enter a valid path"
 		"enter_valid_path": "Please enter a valid path"
+	},
+	"input": {
+		"task_prompt": "What should Roo do?",
+		"task_placeholder": "Type your task here"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/es/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Por favor, ingresa una ruta absoluta (por ejemplo, D:\\RooCodeStorage o /home/user/storage)",
 		"enter_absolute_path": "Por favor, ingresa una ruta absoluta (por ejemplo, D:\\RooCodeStorage o /home/user/storage)",
 		"enter_valid_path": "Por favor, ingresa una ruta válida"
 		"enter_valid_path": "Por favor, ingresa una ruta válida"
+	},
+	"input": {
+		"task_prompt": "¿Qué debe hacer Roo?",
+		"task_placeholder": "Escribe tu tarea aquí"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/fr/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Veuillez entrer un chemin absolu (ex. D:\\RooCodeStorage ou /home/user/storage)",
 		"enter_absolute_path": "Veuillez entrer un chemin absolu (ex. D:\\RooCodeStorage ou /home/user/storage)",
 		"enter_valid_path": "Veuillez entrer un chemin valide"
 		"enter_valid_path": "Veuillez entrer un chemin valide"
+	},
+	"input": {
+		"task_prompt": "Que doit faire Roo ?",
+		"task_placeholder": "Écris ta tâche ici"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/hi/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "कृपया एक पूर्ण पाथ दर्ज करें (उदाहरण: D:\\RooCodeStorage या /home/user/storage)",
 		"enter_absolute_path": "कृपया एक पूर्ण पाथ दर्ज करें (उदाहरण: D:\\RooCodeStorage या /home/user/storage)",
 		"enter_valid_path": "कृपया एक वैध पाथ दर्ज करें"
 		"enter_valid_path": "कृपया एक वैध पाथ दर्ज करें"
+	},
+	"input": {
+		"task_prompt": "Roo को क्या करना है?",
+		"task_placeholder": "अपना कार्य यहाँ लिखें"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/it/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Inserisci un percorso assoluto (ad esempio D:\\RooCodeStorage o /home/user/storage)",
 		"enter_absolute_path": "Inserisci un percorso assoluto (ad esempio D:\\RooCodeStorage o /home/user/storage)",
 		"enter_valid_path": "Inserisci un percorso valido"
 		"enter_valid_path": "Inserisci un percorso valido"
+	},
+	"input": {
+		"task_prompt": "Cosa deve fare Roo?",
+		"task_placeholder": "Scrivi il tuo compito qui"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/ja/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "絶対パスを入力してください(例:D:\\RooCodeStorage または /home/user/storage)",
 		"enter_absolute_path": "絶対パスを入力してください(例:D:\\RooCodeStorage または /home/user/storage)",
 		"enter_valid_path": "有効なパスを入力してください"
 		"enter_valid_path": "有効なパスを入力してください"
+	},
+	"input": {
+		"task_prompt": "Rooにどんなことをさせますか?",
+		"task_placeholder": "タスクをここに入力してください"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/ko/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "절대 경로를 입력하세요 (예: D:\\RooCodeStorage 또는 /home/user/storage)",
 		"enter_absolute_path": "절대 경로를 입력하세요 (예: D:\\RooCodeStorage 또는 /home/user/storage)",
 		"enter_valid_path": "유효한 경로를 입력하세요"
 		"enter_valid_path": "유효한 경로를 입력하세요"
+	},
+	"input": {
+		"task_prompt": "Roo에게 무엇을 시킬까요?",
+		"task_placeholder": "여기에 작업을 입력하세요"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/pl/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Wprowadź pełną ścieżkę (np. D:\\RooCodeStorage lub /home/user/storage)",
 		"enter_absolute_path": "Wprowadź pełną ścieżkę (np. D:\\RooCodeStorage lub /home/user/storage)",
 		"enter_valid_path": "Wprowadź prawidłową ścieżkę"
 		"enter_valid_path": "Wprowadź prawidłową ścieżkę"
+	},
+	"input": {
+		"task_prompt": "Co ma zrobić Roo?",
+		"task_placeholder": "Wpisz swoje zadanie tutaj"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/pt-BR/common.json

@@ -1,4 +1,8 @@
 {
 {
+	"input": {
+		"task_prompt": "O que você quer que o Roo faça?",
+		"task_placeholder": "Digite sua tarefa aqui"
+	},
 	"extension": {
 	"extension": {
 		"name": "Roo Code",
 		"name": "Roo Code",
 		"description": "Uma equipe completa de desenvolvedores com IA em seu editor."
 		"description": "Uma equipe completa de desenvolvedores com IA em seu editor."

+ 4 - 0
src/i18n/locales/tr/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Lütfen mutlak bir yol girin (örn. D:\\RooCodeStorage veya /home/user/storage)",
 		"enter_absolute_path": "Lütfen mutlak bir yol girin (örn. D:\\RooCodeStorage veya /home/user/storage)",
 		"enter_valid_path": "Lütfen geçerli bir yol girin"
 		"enter_valid_path": "Lütfen geçerli bir yol girin"
+	},
+	"input": {
+		"task_prompt": "Roo ne yapsın?",
+		"task_placeholder": "Görevini buraya yaz"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/vi/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "Vui lòng nhập đường dẫn tuyệt đối (ví dụ: D:\\RooCodeStorage hoặc /home/user/storage)",
 		"enter_absolute_path": "Vui lòng nhập đường dẫn tuyệt đối (ví dụ: D:\\RooCodeStorage hoặc /home/user/storage)",
 		"enter_valid_path": "Vui lòng nhập đường dẫn hợp lệ"
 		"enter_valid_path": "Vui lòng nhập đường dẫn hợp lệ"
+	},
+	"input": {
+		"task_prompt": "Bạn muốn Roo làm gì?",
+		"task_placeholder": "Nhập nhiệm vụ của bạn ở đây"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/zh-CN/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "请输入绝对路径(例如 D:\\RooCodeStorage 或 /home/user/storage)",
 		"enter_absolute_path": "请输入绝对路径(例如 D:\\RooCodeStorage 或 /home/user/storage)",
 		"enter_valid_path": "请输入有效的路径"
 		"enter_valid_path": "请输入有效的路径"
+	},
+	"input": {
+		"task_prompt": "让Roo做什么?",
+		"task_placeholder": "在这里输入任务"
 	}
 	}
 }
 }

+ 4 - 0
src/i18n/locales/zh-TW/common.json

@@ -83,5 +83,9 @@
 		"path_placeholder": "D:\\RooCodeStorage",
 		"path_placeholder": "D:\\RooCodeStorage",
 		"enter_absolute_path": "請輸入絕對路徑(例如 D:\\RooCodeStorage 或 /home/user/storage)",
 		"enter_absolute_path": "請輸入絕對路徑(例如 D:\\RooCodeStorage 或 /home/user/storage)",
 		"enter_valid_path": "請輸入有效的路徑"
 		"enter_valid_path": "請輸入有效的路徑"
+	},
+	"input": {
+		"task_prompt": "讓Roo做什麼?",
+		"task_placeholder": "在這裡輸入任務"
 	}
 	}
 }
 }

+ 3 - 35
src/shared/support-prompt.ts

@@ -25,24 +25,16 @@ export const createPrompt = (template: string, params: PromptParams): string =>
 }
 }
 
 
 interface SupportPromptConfig {
 interface SupportPromptConfig {
-	label: string
-	description: string
 	template: string
 	template: string
 }
 }
 
 
 const supportPromptConfigs: Record<string, SupportPromptConfig> = {
 const supportPromptConfigs: Record<string, SupportPromptConfig> = {
 	ENHANCE: {
 	ENHANCE: {
-		label: "Enhance Prompt",
-		description:
-			"Use prompt enhancement to get tailored suggestions or improvements for your inputs. This ensures Roo understands your intent and provides the best possible responses. Available via the ✨ icon in chat.",
 		template: `Generate an enhanced version of this prompt (reply with only the enhanced prompt - no conversation, explanations, lead-in, bullet points, placeholders, or surrounding quotes):
 		template: `Generate an enhanced version of this prompt (reply with only the enhanced prompt - no conversation, explanations, lead-in, bullet points, placeholders, or surrounding quotes):
 
 
 \${userInput}`,
 \${userInput}`,
 	},
 	},
 	EXPLAIN: {
 	EXPLAIN: {
-		label: "Explain Code",
-		description:
-			"Get detailed explanations of code snippets, functions, or entire files. Useful for understanding complex code or learning new patterns. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code).",
 		template: `Explain the following code from file path @/\${filePath}:
 		template: `Explain the following code from file path @/\${filePath}:
 \${userInput}
 \${userInput}
 
 
@@ -56,9 +48,6 @@ Please provide a clear and concise explanation of what this code does, including
 3. Important patterns or techniques used`,
 3. Important patterns or techniques used`,
 	},
 	},
 	FIX: {
 	FIX: {
-		label: "Fix Issues",
-		description:
-			"Get help identifying and resolving bugs, errors, or code quality issues. Provides step-by-step guidance for fixing problems. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code).",
 		template: `Fix any issues in the following code from file path @/\${filePath}
 		template: `Fix any issues in the following code from file path @/\${filePath}
 \${diagnosticText}
 \${diagnosticText}
 \${userInput}
 \${userInput}
@@ -74,9 +63,6 @@ Please:
 4. Explain what was fixed and why`,
 4. Explain what was fixed and why`,
 	},
 	},
 	IMPROVE: {
 	IMPROVE: {
-		label: "Improve Code",
-		description:
-			"Receive suggestions for code optimization, better practices, and architectural improvements while maintaining functionality. Available in code actions (lightbulb icon in the editor) and the editor context menu (right-click on selected code).",
 		template: `Improve the following code from file path @/\${filePath}:
 		template: `Improve the following code from file path @/\${filePath}:
 \${userInput}
 \${userInput}
 
 
@@ -93,18 +79,12 @@ Please suggest improvements for:
 Provide the improved code along with explanations for each enhancement.`,
 Provide the improved code along with explanations for each enhancement.`,
 	},
 	},
 	ADD_TO_CONTEXT: {
 	ADD_TO_CONTEXT: {
-		label: "Add to Context",
-		description:
-			"Add context to your current task or conversation. Useful for providing additional information or clarifications. Available in code actions (lightbulb icon in the editor). and the editor context menu (right-click on selected code).",
 		template: `\${filePath}:
 		template: `\${filePath}:
 \`\`\`
 \`\`\`
 \${selectedText}
 \${selectedText}
 \`\`\``,
 \`\`\``,
 	},
 	},
 	TERMINAL_ADD_TO_CONTEXT: {
 	TERMINAL_ADD_TO_CONTEXT: {
-		label: "Add Terminal Content to Context",
-		description:
-			"Add terminal output to your current task or conversation. Useful for providing command outputs or logs. Available in the terminal context menu (right-click on selected terminal content).",
 		template: `\${userInput}
 		template: `\${userInput}
 Terminal output:
 Terminal output:
 \`\`\`
 \`\`\`
@@ -112,9 +92,6 @@ Terminal output:
 \`\`\``,
 \`\`\``,
 	},
 	},
 	TERMINAL_FIX: {
 	TERMINAL_FIX: {
-		label: "Fix Terminal Command",
-		description:
-			"Get help fixing terminal commands that failed or need improvement. Available in the terminal context menu (right-click on selected terminal content).",
 		template: `\${userInput}
 		template: `\${userInput}
 Fix this terminal command:
 Fix this terminal command:
 \`\`\`
 \`\`\`
@@ -127,9 +104,6 @@ Please:
 3. Explain what was fixed and why`,
 3. Explain what was fixed and why`,
 	},
 	},
 	TERMINAL_EXPLAIN: {
 	TERMINAL_EXPLAIN: {
-		label: "Explain Terminal Command",
-		description:
-			"Get detailed explanations of terminal commands and their outputs. Available in the terminal context menu (right-click on selected terminal content).",
 		template: `\${userInput}
 		template: `\${userInput}
 Explain this terminal command:
 Explain this terminal command:
 \`\`\`
 \`\`\`
@@ -141,6 +115,9 @@ Please provide:
 2. Explanation of each part/flag
 2. Explanation of each part/flag
 3. Expected output and behavior`,
 3. Expected output and behavior`,
 	},
 	},
+	NEW_TASK: {
+		template: `\${userInput}`,
+	},
 } as const
 } as const
 
 
 type SupportPromptType = keyof typeof supportPromptConfigs
 type SupportPromptType = keyof typeof supportPromptConfigs
@@ -158,15 +135,6 @@ export const supportPrompt = {
 
 
 export type { SupportPromptType }
 export type { SupportPromptType }
 
 
-// Expose labels and descriptions for UI
-export const supportPromptLabels = Object.fromEntries(
-	Object.entries(supportPromptConfigs).map(([key, config]) => [key, config.label]),
-) as Record<SupportPromptType, string>
-
-export const supportPromptDescriptions = Object.fromEntries(
-	Object.entries(supportPromptConfigs).map(([key, config]) => [key, config.description]),
-) as Record<SupportPromptType, string>
-
 export type CustomSupportPrompts = {
 export type CustomSupportPrompts = {
 	[key: string]: string | undefined
 	[key: string]: string | undefined
 }
 }

+ 4 - 0
webview-ui/src/i18n/locales/ca/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Explicar comanda del terminal",
 				"label": "Explicar comanda del terminal",
 				"description": "Obtingueu explicacions detallades de les comandes del terminal i les seves sortides. Disponible al menú contextual del terminal (clic dret al contingut seleccionat del terminal)."
 				"description": "Obtingueu explicacions detallades de les comandes del terminal i les seves sortides. Disponible al menú contextual del terminal (clic dret al contingut seleccionat del terminal)."
+			},
+			"NEW_TASK": {
+				"label": "Iniciar nova tasca",
+				"description": "Inicieu una nova tasca amb l'entrada proporcionada. Disponible a la paleta de comandes."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/de/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Terminal-Befehl erklären",
 				"label": "Terminal-Befehl erklären",
 				"description": "Erhalten Sie detaillierte Erklärungen zu Terminal-Befehlen und deren Ausgaben. Verfügbar im Kontextmenü des Terminals (Rechtsklick auf ausgewählten Terminal-Inhalt)."
 				"description": "Erhalten Sie detaillierte Erklärungen zu Terminal-Befehlen und deren Ausgaben. Verfügbar im Kontextmenü des Terminals (Rechtsklick auf ausgewählten Terminal-Inhalt)."
+			},
+			"NEW_TASK": {
+				"label": "Neue Aufgabe starten",
+				"description": "Starte eine neue Aufgabe mit deiner Eingabe. Verfügbar in der Befehlspalette."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/en/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Explain Terminal Command",
 				"label": "Explain Terminal Command",
 				"description": "Get detailed explanations of terminal commands and their outputs. Available in the terminal context menu (right-click on selected terminal content)."
 				"description": "Get detailed explanations of terminal commands and their outputs. Available in the terminal context menu (right-click on selected terminal content)."
+			},
+			"NEW_TASK": {
+				"label": "Start New Task",
+				"description": "Start a new task with user input. Available in the Command Palette."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/es/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Explicar comando de terminal",
 				"label": "Explicar comando de terminal",
 				"description": "Obtén explicaciones detalladas de comandos de terminal y sus salidas. Disponible en el menú contextual de la terminal (clic derecho en el contenido seleccionado de la terminal)."
 				"description": "Obtén explicaciones detalladas de comandos de terminal y sus salidas. Disponible en el menú contextual de la terminal (clic derecho en el contenido seleccionado de la terminal)."
+			},
+			"NEW_TASK": {
+				"label": "Iniciar nueva tarea",
+				"description": "Inicia una nueva tarea con entrada del usuario. Disponible en la Paleta de comandos."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/fr/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Expliquer la commande du terminal",
 				"label": "Expliquer la commande du terminal",
 				"description": "Obtenez des explications détaillées sur les commandes du terminal et leurs sorties. Disponible dans le menu contextuel du terminal (clic droit sur le contenu sélectionné du terminal)."
 				"description": "Obtenez des explications détaillées sur les commandes du terminal et leurs sorties. Disponible dans le menu contextuel du terminal (clic droit sur le contenu sélectionné du terminal)."
+			},
+			"NEW_TASK": {
+				"label": "Démarrer une nouvelle tâche",
+				"description": "Démarre une nouvelle tâche avec ton entrée. Disponible dans la palette de commandes."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/hi/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "टर्मिनल कमांड समझाएँ",
 				"label": "टर्मिनल कमांड समझाएँ",
 				"description": "टर्मिनल कमांड और उनके आउटपुट के विस्तृत स्पष्टीकरण प्राप्त करें। टर्मिनल के कंटेक्स्ट मेनू (चयनित टर्मिनल सामग्री पर राइट-क्लिक) में उपलब्ध है।"
 				"description": "टर्मिनल कमांड और उनके आउटपुट के विस्तृत स्पष्टीकरण प्राप्त करें। टर्मिनल के कंटेक्स्ट मेनू (चयनित टर्मिनल सामग्री पर राइट-क्लिक) में उपलब्ध है।"
+			},
+			"NEW_TASK": {
+				"label": "नया कार्य शुरू करें",
+				"description": "इनपुट के साथ नया कार्य शुरू करें। कमांड पैलेट में उपलब्ध है।"
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/it/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Spiega comando del terminale",
 				"label": "Spiega comando del terminale",
 				"description": "Ottieni spiegazioni dettagliate sui comandi del terminale e sui loro output. Disponibile nel menu contestuale del terminale (clic destro sul contenuto selezionato del terminale)."
 				"description": "Ottieni spiegazioni dettagliate sui comandi del terminale e sui loro output. Disponibile nel menu contestuale del terminale (clic destro sul contenuto selezionato del terminale)."
+			},
+			"NEW_TASK": {
+				"label": "Avvia nuova attività",
+				"description": "Avvia una nuova attività con il tuo input. Disponibile nella palette dei comandi."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/ja/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "ターミナルコマンドを説明",
 				"label": "ターミナルコマンドを説明",
 				"description": "ターミナルコマンドとその出力の詳細な説明を得ることができます。ターミナルのコンテキストメニュー(選択したターミナルの内容で右クリック)から利用できます。"
 				"description": "ターミナルコマンドとその出力の詳細な説明を得ることができます。ターミナルのコンテキストメニュー(選択したターミナルの内容で右クリック)から利用できます。"
+			},
+			"NEW_TASK": {
+				"label": "新しいタスクを開始",
+				"description": "入力内容で新しいタスクを開始できます。コマンドパレットから利用できます。"
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/ko/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "터미널 명령 설명",
 				"label": "터미널 명령 설명",
 				"description": "터미널 명령과 그 출력에 대한 상세한 설명을 얻을 수 있습니다. 터미널 컨텍스트 메뉴(선택한 터미널 콘텐츠에서 우클릭)에서 이용 가능합니다."
 				"description": "터미널 명령과 그 출력에 대한 상세한 설명을 얻을 수 있습니다. 터미널 컨텍스트 메뉴(선택한 터미널 콘텐츠에서 우클릭)에서 이용 가능합니다."
+			},
+			"NEW_TASK": {
+				"label": "새 작업 시작",
+				"description": "입력한 내용으로 새 작업을 시작할 수 있습니다. 명령 팔레트에서 이용 가능합니다."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/pl/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Wyjaśnij polecenie terminala",
 				"label": "Wyjaśnij polecenie terminala",
 				"description": "Uzyskaj szczegółowe wyjaśnienia poleceń terminala i ich wyników. Dostępne w menu kontekstowym terminala (prawy przycisk myszy na wybranej zawartości terminala)."
 				"description": "Uzyskaj szczegółowe wyjaśnienia poleceń terminala i ich wyników. Dostępne w menu kontekstowym terminala (prawy przycisk myszy na wybranej zawartości terminala)."
+			},
+			"NEW_TASK": {
+				"label": "Rozpocznij nowe zadanie",
+				"description": "Rozpocznij nowe zadanie z wprowadzonymi danymi. Dostępne w palecie poleceń."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/pt-BR/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Explicar Comando do Terminal",
 				"label": "Explicar Comando do Terminal",
 				"description": "Obtenha explicações detalhadas de comandos de terminal e suas saídas. Available in the terminal context menu (right-click on selected terminal content)."
 				"description": "Obtenha explicações detalhadas de comandos de terminal e suas saídas. Available in the terminal context menu (right-click on selected terminal content)."
+			},
+			"NEW_TASK": {
+				"label": "Iniciar Nova Tarefa",
+				"description": "Inicie uma nova tarefa com a entrada fornecida. Disponível na paleta de comandos."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/tr/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Terminal Komutunu Açıkla",
 				"label": "Terminal Komutunu Açıkla",
 				"description": "Terminal komutları ve çıktıları hakkında ayrıntılı açıklamalar alın. Terminal bağlam menüsünde (seçili terminal içeriğine sağ tıklayın) kullanılabilir."
 				"description": "Terminal komutları ve çıktıları hakkında ayrıntılı açıklamalar alın. Terminal bağlam menüsünde (seçili terminal içeriğine sağ tıklayın) kullanılabilir."
+			},
+			"NEW_TASK": {
+				"label": "Yeni Görev Başlat",
+				"description": "Girdiyle yeni bir görev başlat. Komut paletinde kullanılabilir."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/vi/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "Giải thích lệnh terminal",
 				"label": "Giải thích lệnh terminal",
 				"description": "Nhận giải thích chi tiết về lệnh terminal và đầu ra của chúng. Có sẵn trong menu ngữ cảnh terminal (nhấp chuột phải vào nội dung terminal đã chọn)."
 				"description": "Nhận giải thích chi tiết về lệnh terminal và đầu ra của chúng. Có sẵn trong menu ngữ cảnh terminal (nhấp chuột phải vào nội dung terminal đã chọn)."
+			},
+			"NEW_TASK": {
+				"label": "Bắt đầu tác vụ mới",
+				"description": "Bắt đầu tác vụ mới với nội dung đã nhập. Có sẵn trong bảng lệnh."
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/zh-CN/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "解释终端命令",
 				"label": "解释终端命令",
 				"description": "获取对终端命令及其输出的详细解释。可在终端上下文菜单(右键点击选中的终端内容)中使用。"
 				"description": "获取对终端命令及其输出的详细解释。可在终端上下文菜单(右键点击选中的终端内容)中使用。"
+			},
+			"NEW_TASK": {
+				"label": "开始新任务",
+				"description": "使用输入内容开始新任务。可在命令面板中使用。"
 			}
 			}
 		}
 		}
 	},
 	},

+ 4 - 0
webview-ui/src/i18n/locales/zh-TW/prompts.json

@@ -91,6 +91,10 @@
 			"TERMINAL_EXPLAIN": {
 			"TERMINAL_EXPLAIN": {
 				"label": "解釋終端命令",
 				"label": "解釋終端命令",
 				"description": "獲取對終端命令及其輸出的詳細解釋。可在終端右鍵選單(右鍵點擊選中的終端內容)中使用。"
 				"description": "獲取對終端命令及其輸出的詳細解釋。可在終端右鍵選單(右鍵點擊選中的終端內容)中使用。"
+			},
+			"NEW_TASK": {
+				"label": "開始新工作",
+				"description": "使用輸入內容開始新工作。可在命令選擇區中使用。"
 			}
 			}
 		}
 		}
 	},
 	},