Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/api/providers/utils/timeout-config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as vscode from "vscode"
import { Package } from "../../../shared/package"

/**
* Gets the API request timeout from VSCode configuration with validation.
Expand All @@ -7,7 +8,7 @@ import * as vscode from "vscode"
*/
export function getApiRequestTimeout(): 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
if (typeof configTimeout !== "number" || isNaN(configTimeout)) {
Expand Down
5 changes: 3 additions & 2 deletions src/core/assistant-message/presentAssistantMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { TelemetryService } from "@roo-code/telemetry"

import { defaultModeSlug, getModeBySlug } from "../../shared/modes"
import type { ToolParamName, ToolResponse, ToolUse } from "../../shared/tools"
import { Package } from "../../shared/package"

import { fetchInstructionsTool } from "../tools/FetchInstructionsTool"
import { listFilesTool } from "../tools/ListFilesTool"
Expand Down Expand Up @@ -279,7 +280,7 @@ export async function presentAssistantMessage(cline: Task) {
const pushToolResult = (content: ToolResponse) => {
// Check if we're using native tool protocol
const toolProtocol = vscode.workspace
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<ToolProtocol>("toolProtocol", "xml")
const isNative = isNativeProtocol(toolProtocol)

Expand Down Expand Up @@ -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
const toolProtocol = vscode.workspace
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<ToolProtocol>("toolProtocol", "xml")
if (isNativeProtocol(toolProtocol)) {
await applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {
Expand Down
3 changes: 2 additions & 1 deletion src/core/prompts/responses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { RooIgnoreController, LOCK_TEXT_SYMBOL } from "../ignore/RooIgnoreContro
import { RooProtectedController } from "../protect/RooProtectedController"
import * as vscode from "vscode"
import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
import { Package } from "../../shared/package"

export const formatResponse = {
toolDenied: () => `The user denied this operation.`,
Expand Down Expand Up @@ -250,6 +251,6 @@ Always ensure you provide all required parameters for the tool you wish to use.`
*/
function getToolInstructionsReminder(protocol?: ToolProtocol): string {
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
}
12 changes: 7 additions & 5 deletions src/core/task/Task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import OpenAI from "openai"
import delay from "delay"
import pWaitFor from "p-wait-for"
import { serializeError } from "serialize-error"
import { Package } from "../../shared/package"

import {
type TaskLike,
Expand Down Expand Up @@ -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
// user messages (which would cause tool_result validation errors).
const toolProtocol = vscode.workspace
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<ToolProtocol>("toolProtocol", "xml")
const isNativeProtocol = toolProtocol === TOOL_PROTOCOL.NATIVE

Expand Down Expand Up @@ -2695,12 +2696,13 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
{
maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
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
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<boolean>("newTaskRequireTodos", false),
toolProtocol: vscode.workspace
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<ToolProtocol>("toolProtocol", "xml"),
},
undefined, // todoList
Expand Down Expand Up @@ -2935,7 +2937,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
// Determine if we should include native tools based on:
// 1. Tool protocol is set to NATIVE
// 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 shouldIncludeTools = toolProtocol === TOOL_PROTOCOL.NATIVE && (modelInfo.supportsNativeTools ?? false)

Expand Down
3 changes: 2 additions & 1 deletion src/core/tools/MultiApplyDiffTool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { applyDiffTool as applyDiffToolClass } from "./ApplyDiffTool"
import { computeDiffStats, sanitizeUnifiedDiff } from "../diff/stats"
import * as vscode from "vscode"
import { ToolProtocol, isNativeProtocol } from "@roo-code/types"
import { Package } from "../../shared/package"

interface DiffOperation {
path: string
Expand Down Expand Up @@ -62,7 +63,7 @@ export async function applyDiffTool(
removeClosingTag: RemoveClosingTag,
) {
// 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)) {
return applyDiffToolClass.handle(cline, block as ToolUse<"apply_diff">, {
askApproval,
Expand Down
7 changes: 4 additions & 3 deletions src/core/webview/generateSystemPrompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { SYSTEM_PROMPT } from "../prompts/system"
import { MultiSearchReplaceDiffStrategy } from "../diff/strategies/multi-search-replace"
import { MultiFileSearchReplaceDiffStrategy } from "../diff/strategies/multi-file-search-replace"
import { ToolProtocol } from "@roo-code/types"
import { Package } from "../../shared/package"

import { ClineProvider } from "./ClineProvider"

Expand Down Expand Up @@ -88,11 +89,11 @@ export const generateSystemPrompt = async (provider: ClineProvider, message: Web
{
maxConcurrentFileReads: maxConcurrentFileReads ?? 5,
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
.getConfiguration("roo-cline")
.getConfiguration(Package.name)
.get<boolean>("newTaskRequireTodos", false),
toolProtocol: vscode.workspace.getConfiguration("roo-cline").get<ToolProtocol>("toolProtocol", "xml"),
toolProtocol: vscode.workspace.getConfiguration(Package.name).get<ToolProtocol>("toolProtocol", "xml"),
},
)

Expand Down
22 changes: 17 additions & 5 deletions src/services/search/__tests__/file-search.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
import { describe, it, expect, vi } from "vitest"
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
vi.mock("vscode", () => ({
workspace: {
Expand Down Expand Up @@ -50,6 +60,7 @@ describe("file-search", () => {
})

it("should read maximumIndexedFilesForFileSearch configuration", async () => {
const { Package } = await import("../../../shared/package")
const mockRooConfig = {
get: vi.fn((key: string, defaultValue: number) => {
if (key === "maximumIndexedFilesForFileSearch") return 50000
Expand All @@ -58,28 +69,29 @@ describe("file-search", () => {
}

;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
if (section === "roo-cline") return mockRooConfig
if (section === Package.name) return mockRooConfig
return { get: vi.fn() }
})

// 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)

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 = {
get: vi.fn((key: string, defaultValue: number) => defaultValue),
}

;(vscode.workspace.getConfiguration as any).mockImplementation((section: string) => {
if (section === "roo-cline") return mockRooConfig
if (section === Package.name) return mockRooConfig
return { get: vi.fn() }
})

const config = vscode.workspace.getConfiguration("roo-cline")
const config = vscode.workspace.getConfiguration(Package.name)
const limit = config.get("maximumIndexedFilesForFileSearch", 10000)

expect(limit).toBe(10000)
Expand Down
3 changes: 2 additions & 1 deletion src/services/search/file-search.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as childProcess from "child_process"
import * as readline from "readline"
import { byLengthAsc, Fzf } from "fzf"
import { getBinPath } from "../ripgrep"
import { Package } from "../../shared/package"

export type FileResult = { path: string; type: "file" | "folder"; label?: string }

Expand Down Expand Up @@ -116,7 +117,7 @@ export async function executeRipgrepForFiles(
): Promise<{ path: string; type: "file" | "folder"; label?: string }[]> {
// Get limit from configuration if not provided
const effectiveLimit =
limit ?? vscode.workspace.getConfiguration("roo-cline").get<number>("maximumIndexedFilesForFileSearch", 10000)
limit ?? vscode.workspace.getConfiguration(Package.name).get<number>("maximumIndexedFilesForFileSearch", 10000)

const args = [
"--files",
Expand Down