Просмотр исходного кода

Consistently use Package.name for better support of the nightly app (#9240)

Matt Rubens 1 месяц назад
Родитель
Сommit
d270ea1983

+ 2 - 1
src/api/providers/utils/timeout-config.ts

@@ -1,4 +1,5 @@
 import * as vscode from "vscode"
 import * as vscode from "vscode"
+import { Package } from "../../../shared/package"
 
 
 /**
 /**
  * Gets the API request timeout from VSCode configuration with validation.
  * Gets the API request timeout from VSCode configuration with validation.
@@ -7,7 +8,7 @@ import * as vscode from "vscode"
  */
  */
 export function getApiRequestTimeout(): number {
 export function getApiRequestTimeout(): number {
 	// Get timeout with validation to ensure it's a valid non-negative number
 	// Get timeout with validation to ensure it's a valid non-negative number
-	const configTimeout = vscode.workspace.getConfiguration("roo-cline").get<number>("apiRequestTimeout", 600)
+	const configTimeout = vscode.workspace.getConfiguration(Package.name).get<number>("apiRequestTimeout", 600)
 
 
 	// Validate that it's actually a number and not NaN
 	// Validate that it's actually a number and not NaN
 	if (typeof configTimeout !== "number" || isNaN(configTimeout)) {
 	if (typeof configTimeout !== "number" || isNaN(configTimeout)) {

+ 3 - 2
src/core/assistant-message/presentAssistantMessage.ts

@@ -7,6 +7,7 @@ import { TelemetryService } from "@roo-code/telemetry"
 
 
 import { defaultModeSlug, getModeBySlug } from "../../shared/modes"
 import { defaultModeSlug, getModeBySlug } from "../../shared/modes"
 import type { ToolParamName, ToolResponse, ToolUse } from "../../shared/tools"
 import type { ToolParamName, ToolResponse, ToolUse } from "../../shared/tools"
+import { Package } from "../../shared/package"
 
 
 import { fetchInstructionsTool } from "../tools/FetchInstructionsTool"
 import { fetchInstructionsTool } from "../tools/FetchInstructionsTool"
 import { listFilesTool } from "../tools/ListFilesTool"
 import { listFilesTool } from "../tools/ListFilesTool"
@@ -279,7 +280,7 @@ export async function presentAssistantMessage(cline: Task) {
 			const pushToolResult = (content: ToolResponse) => {
 			const pushToolResult = (content: ToolResponse) => {
 				// Check if we're using native tool protocol
 				// Check if we're using native tool protocol
 				const toolProtocol = vscode.workspace
 				const toolProtocol = vscode.workspace
-					.getConfiguration("roo-cline")
+					.getConfiguration(Package.name)
 					.get<ToolProtocol>("toolProtocol", "xml")
 					.get<ToolProtocol>("toolProtocol", "xml")
 				const isNative = isNativeProtocol(toolProtocol)
 				const isNative = isNativeProtocol(toolProtocol)
 
 
@@ -503,7 +504,7 @@ export async function presentAssistantMessage(cline: Task) {
 
 
 					// Check if native protocol is enabled - if so, always use single-file class-based tool
 					// Check if native protocol is enabled - if so, always use single-file class-based tool
 					const toolProtocol = vscode.workspace
 					const toolProtocol = vscode.workspace
-						.getConfiguration("roo-cline")
+						.getConfiguration(Package.name)
 						.get<ToolProtocol>("toolProtocol", "xml")
 						.get<ToolProtocol>("toolProtocol", "xml")
 					if (isNativeProtocol(toolProtocol)) {
 					if (isNativeProtocol(toolProtocol)) {
 						await applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {
 						await applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {

+ 2 - 1
src/core/prompts/responses.ts

@@ -5,6 +5,7 @@ import { RooIgnoreController, LOCK_TEXT_SYMBOL } from "../ignore/RooIgnoreContro
 import { RooProtectedController } from "../protect/RooProtectedController"
 import { RooProtectedController } from "../protect/RooProtectedController"
 import * as vscode from "vscode"
 import * as vscode from "vscode"
 import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
 import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
+import { Package } from "../../shared/package"
 
 
 export const formatResponse = {
 export const formatResponse = {
 	toolDenied: () => `The user denied this operation.`,
 	toolDenied: () => `The user denied this operation.`,
@@ -250,6 +251,6 @@ Always ensure you provide all required parameters for the tool you wish to use.`
  */
  */
 function getToolInstructionsReminder(protocol?: ToolProtocol): string {
 function getToolInstructionsReminder(protocol?: ToolProtocol): string {
 	const effectiveProtocol =
 	const effectiveProtocol =
-		protocol ?? vscode.workspace.getConfiguration("roo-cline").get<ToolProtocol>("toolProtocol", "xml")
+		protocol ?? vscode.workspace.getConfiguration(Package.name).get<ToolProtocol>("toolProtocol", "xml")
 	return isNativeProtocol(effectiveProtocol) ? toolUseInstructionsReminderNative : toolUseInstructionsReminder
 	return isNativeProtocol(effectiveProtocol) ? toolUseInstructionsReminderNative : toolUseInstructionsReminder
 }
 }

+ 7 - 5
src/core/task/Task.ts

@@ -9,6 +9,7 @@ import OpenAI from "openai"
 import delay from "delay"
 import delay from "delay"
 import pWaitFor from "p-wait-for"
 import pWaitFor from "p-wait-for"
 import { serializeError } from "serialize-error"
 import { serializeError } from "serialize-error"
+import { Package } from "../../shared/package"
 
 
 import {
 import {
 	type TaskLike,
 	type TaskLike,
@@ -2514,7 +2515,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
 					// we need to remove that message before retrying to avoid having two consecutive
 					// we need to remove that message before retrying to avoid having two consecutive
 					// user messages (which would cause tool_result validation errors).
 					// user messages (which would cause tool_result validation errors).
 					const toolProtocol = vscode.workspace
 					const toolProtocol = vscode.workspace
-						.getConfiguration("roo-cline")
+						.getConfiguration(Package.name)
 						.get<ToolProtocol>("toolProtocol", "xml")
 						.get<ToolProtocol>("toolProtocol", "xml")
 					const isNativeProtocol = toolProtocol === TOOL_PROTOCOL.NATIVE
 					const isNativeProtocol = toolProtocol === TOOL_PROTOCOL.NATIVE
 
 
@@ -2695,12 +2696,13 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
 				{
 				{
 					maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
 					maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
 					todoListEnabled: apiConfiguration?.todoListEnabled ?? true,
 					todoListEnabled: apiConfiguration?.todoListEnabled ?? true,
-					useAgentRules: vscode.workspace.getConfiguration("roo-cline").get<boolean>("useAgentRules") ?? true,
+					useAgentRules:
+						vscode.workspace.getConfiguration(Package.name).get<boolean>("useAgentRules") ?? true,
 					newTaskRequireTodos: vscode.workspace
 					newTaskRequireTodos: vscode.workspace
-						.getConfiguration("roo-cline")
+						.getConfiguration(Package.name)
 						.get<boolean>("newTaskRequireTodos", false),
 						.get<boolean>("newTaskRequireTodos", false),
 					toolProtocol: vscode.workspace
 					toolProtocol: vscode.workspace
-						.getConfiguration("roo-cline")
+						.getConfiguration(Package.name)
 						.get<ToolProtocol>("toolProtocol", "xml"),
 						.get<ToolProtocol>("toolProtocol", "xml"),
 				},
 				},
 				undefined, // todoList
 				undefined, // todoList
@@ -2935,7 +2937,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
 		// Determine if we should include native tools based on:
 		// Determine if we should include native tools based on:
 		// 1. Tool protocol is set to NATIVE
 		// 1. Tool protocol is set to NATIVE
 		// 2. Model supports native tools
 		// 2. Model supports native tools
-		const toolProtocol = vscode.workspace.getConfiguration("roo-cline").get<ToolProtocol>("toolProtocol", "xml")
+		const toolProtocol = vscode.workspace.getConfiguration(Package.name).get<ToolProtocol>("toolProtocol", "xml")
 		const modelInfo = this.api.getModel().info
 		const modelInfo = this.api.getModel().info
 		const shouldIncludeTools = toolProtocol === TOOL_PROTOCOL.NATIVE && (modelInfo.supportsNativeTools ?? false)
 		const shouldIncludeTools = toolProtocol === TOOL_PROTOCOL.NATIVE && (modelInfo.supportsNativeTools ?? false)
 
 

+ 2 - 1
src/core/tools/MultiApplyDiffTool.ts

@@ -18,6 +18,7 @@ import { applyDiffTool as applyDiffToolClass } from "./ApplyDiffTool"
 import { computeDiffStats, sanitizeUnifiedDiff } from "../diff/stats"
 import { computeDiffStats, sanitizeUnifiedDiff } from "../diff/stats"
 import * as vscode from "vscode"
 import * as vscode from "vscode"
 import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
 import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
+import { Package } from "../../shared/package"
 
 
 interface DiffOperation {
 interface DiffOperation {
 	path: string
 	path: string
@@ -62,7 +63,7 @@ export async function applyDiffTool(
 	removeClosingTag: RemoveClosingTag,
 	removeClosingTag: RemoveClosingTag,
 ) {
 ) {
 	// Check if native protocol is enabled - if so, always use single-file class-based tool
 	// Check if native protocol is enabled - if so, always use single-file class-based tool
-	const toolProtocol = vscode.workspace.getConfiguration("roo-cline").get<ToolProtocol>("toolProtocol", "xml")
+	const toolProtocol = vscode.workspace.getConfiguration(Package.name).get<ToolProtocol>("toolProtocol", "xml")
 	if (isNativeProtocol(toolProtocol)) {
 	if (isNativeProtocol(toolProtocol)) {
 		return applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {
 		return applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {
 			askApproval,
 			askApproval,

+ 4 - 3
src/core/webview/generateSystemPrompt.ts

@@ -8,6 +8,7 @@ import { SYSTEM_PROMPT } from "../prompts/system"
 import { MultiSearchReplaceDiffStrategy } from "../diff/strategies/multi-search-replace"
 import { MultiSearchReplaceDiffStrategy } from "../diff/strategies/multi-search-replace"
 import { MultiFileSearchReplaceDiffStrategy } from "../diff/strategies/multi-file-search-replace"
 import { MultiFileSearchReplaceDiffStrategy } from "../diff/strategies/multi-file-search-replace"
 import { ToolProtocol } from "@roo-code/types"
 import { ToolProtocol } from "@roo-code/types"
+import { Package } from "../../shared/package"
 
 
 import { ClineProvider } from "./ClineProvider"
 import { ClineProvider } from "./ClineProvider"
 
 
@@ -88,11 +89,11 @@ export const generateSystemPrompt = async (provider: ClineProvider, message: Web
 		{
 		{
 			maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
 			maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
 			todoListEnabled: apiConfiguration?.todoListEnabled ?? true,
 			todoListEnabled: apiConfiguration?.todoListEnabled ?? true,
-			useAgentRules: vscode.workspace.getConfiguration("roo-cline").get<boolean>("useAgentRules") ?? true,
+			useAgentRules: vscode.workspace.getConfiguration(Package.name).get<boolean>("useAgentRules") ?? true,
 			newTaskRequireTodos: vscode.workspace
 			newTaskRequireTodos: vscode.workspace
-				.getConfiguration("roo-cline")
+				.getConfiguration(Package.name)
 				.get<boolean>("newTaskRequireTodos", false),
 				.get<boolean>("newTaskRequireTodos", false),
-			toolProtocol: vscode.workspace.getConfiguration("roo-cline").get<ToolProtocol>("toolProtocol", "xml"),
+			toolProtocol: vscode.workspace.getConfiguration(Package.name).get<ToolProtocol>("toolProtocol", "xml"),
 		},
 		},
 	)
 	)
 
 

+ 17 - 5
src/services/search/__tests__/file-search.spec.ts

@@ -1,6 +1,16 @@
 import { describe, it, expect, vi } from "vitest"
 import { describe, it, expect, vi } from "vitest"
 import * as vscode from "vscode"
 import * as vscode from "vscode"
 
 
+// Mock Package
+vi.mock("../../../shared/package", () => ({
+	Package: {
+		name: "roo-cline",
+		publisher: "RooVeterinaryInc",
+		version: "1.0.0",
+		outputChannel: "Roo-Code",
+	},
+}))
+
 // Mock vscode
 // Mock vscode
 vi.mock("vscode", () => ({
 vi.mock("vscode", () => ({
 	workspace: {
 	workspace: {
@@ -50,6 +60,7 @@ describe("file-search", () => {
 		})
 		})
 
 
 		it("should read maximumIndexedFilesForFileSearch configuration", async () => {
 		it("should read maximumIndexedFilesForFileSearch configuration", async () => {
+			const { Package } = await import("../../../shared/package")
 			const mockRooConfig = {
 			const mockRooConfig = {
 				get: vi.fn((key: string, defaultValue: number) => {
 				get: vi.fn((key: string, defaultValue: number) => {
 					if (key === "maximumIndexedFilesForFileSearch") return 50000
 					if (key === "maximumIndexedFilesForFileSearch") return 50000
@@ -58,28 +69,29 @@ describe("file-search", () => {
 			}
 			}
 
 
 			;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
 			;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
-				if (section === "roo-cline") return mockRooConfig
+				if (section === Package.name) return mockRooConfig
 				return { get: vi.fn() }
 				return { get: vi.fn() }
 			})
 			})
 
 
 			// The configuration should be readable
 			// The configuration should be readable
-			const config = vscode.workspace.getConfiguration("roo-cline")
+			const config = vscode.workspace.getConfiguration(Package.name)
 			const limit = config.get("maximumIndexedFilesForFileSearch", 10000)
 			const limit = config.get("maximumIndexedFilesForFileSearch", 10000)
 
 
 			expect(limit).toBe(50000)
 			expect(limit).toBe(50000)
 		})
 		})
 
 
-		it("should use default limit when configuration is not provided", () => {
+		it("should use default limit when configuration is not provided", async () => {
+			const { Package } = await import("../../../shared/package")
 			const mockRooConfig = {
 			const mockRooConfig = {
 				get: vi.fn((key: string, defaultValue: number) => defaultValue),
 				get: vi.fn((key: string, defaultValue: number) => defaultValue),
 			}
 			}
 
 
 			;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
 			;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
-				if (section === "roo-cline") return mockRooConfig
+				if (section === Package.name) return mockRooConfig
 				return { get: vi.fn() }
 				return { get: vi.fn() }
 			})
 			})
 
 
-			const config = vscode.workspace.getConfiguration("roo-cline")
+			const config = vscode.workspace.getConfiguration(Package.name)
 			const limit = config.get("maximumIndexedFilesForFileSearch", 10000)
 			const limit = config.get("maximumIndexedFilesForFileSearch", 10000)
 
 
 			expect(limit).toBe(10000)
 			expect(limit).toBe(10000)

+ 2 - 1
src/services/search/file-search.ts

@@ -5,6 +5,7 @@ import * as childProcess from "child_process"
 import * as readline from "readline"
 import * as readline from "readline"
 import { byLengthAsc, Fzf } from "fzf"
 import { byLengthAsc, Fzf } from "fzf"
 import { getBinPath } from "../ripgrep"
 import { getBinPath } from "../ripgrep"
+import { Package } from "../../shared/package"
 
 
 export type FileResult = { path: string; type: "file" | "folder"; label?: string }
 export type FileResult = { path: string; type: "file" | "folder"; label?: string }
 
 
@@ -116,7 +117,7 @@ export async function executeRipgrepForFiles(
 ): Promise<{ path: string; type: "file" | "folder"; label?: string }[]> {
 ): Promise<{ path: string; type: "file" | "folder"; label?: string }[]> {
 	// Get limit from configuration if not provided
 	// Get limit from configuration if not provided
 	const effectiveLimit =
 	const effectiveLimit =
-		limit ?? vscode.workspace.getConfiguration("roo-cline").get<number>("maximumIndexedFilesForFileSearch", 10000)
+		limit ?? vscode.workspace.getConfiguration(Package.name).get<number>("maximumIndexedFilesForFileSearch", 10000)
 
 
 	const args = [
 	const args = [
 		"--files",
 		"--files",