diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 3197eb49aff..0f81ca94ac8 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,7 @@ blank_issues_enabled: false contact_links: - name: Feature Request url: https://github.com/Kilo-Org/kilocode/discussions/categories/feature-requests - about: Share and vote on feature requests for Roo Code + about: Share and vote on feature requests for Kilo Code - name: Leave a Review url: https://marketplace.visualstudio.com/items?itemName=kilocode.Kilo-Code&ssr=false#review-details - about: Enjoying Roo Code? Leave a review here! + about: Enjoying Kilo Code? Leave a review here! diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index de7e461cb9c..efee54d17dc 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -32,4 +32,4 @@ A "How To Test" section can look something like this: ## Get in Touch - + diff --git a/README.md b/README.md index 07305b09c86..40420a2b2ac 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@

Join the Kilo Code Community

Connect with developers, contribute ideas, and stay ahead with the latest AI-powered coding tools.

- - Join Discord - Join Reddit - + +Join Discord +Join Reddit +


-

Kilo Code (prev. Kilo Code, Cline)

+

Kilo Code (prev. Roo Code, Cline)

Download on VS Marketplace Feature Requests @@ -92,7 +92,7 @@ Make Kilo Code work your way with: ### Community - **Discord:** [Join our Discord server](https://discord.gg/QZ9vjPj9e) for real-time help and discussions -- **Reddit:** [Visit our subreddit](https://www.reddit.com/r/RooCode) to share experiences and tips +- **Reddit:** [Visit our subreddit](https://www.reddit.com/r/KiloCode) to share experiences and tips - **GitHub:** Report [issues](https://github.com/Kilo-Org/kilocode/issues) or request [features](https://github.com/Kilo-Org/kilocode/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop) --- @@ -148,7 +148,7 @@ We love community contributions! Here’s how to get involved: 1. **Check Issues & Requests**: See [open issues](https://github.com/Kilo-Org/kilocode/issues) or [feature requests](https://github.com/Kilo-Org/kilocode/discussions/categories/feature-requests). 2. **Fork & branch** off `main`. 3. **Submit a Pull Request** once your feature or fix is ready. -4. **Join** our [Reddit community](https://www.reddit.com/r/RooCode/) and [Discord](https://roocode.com/discord) for feedback, tips, and announcements. +4. **Join** our [Reddit community](https://www.reddit.com/r/KiloCode/) and [Discord](https://discord.gg/QZ9vjPj9e) for feedback, tips, and announcements. --- diff --git a/e2e/VSCODE_INTEGRATION_TESTS.md b/e2e/VSCODE_INTEGRATION_TESTS.md index 25f54492de0..1be1678fdea 100644 --- a/e2e/VSCODE_INTEGRATION_TESTS.md +++ b/e2e/VSCODE_INTEGRATION_TESTS.md @@ -1,6 +1,6 @@ # VSCode Integration Tests -This document describes the integration test setup for the Roo Code VSCode extension. +This document describes the integration test setup for the Kilo Code VSCode extension. ## Overview diff --git a/e2e/src/suite/extension.test.ts b/e2e/src/suite/extension.test.ts index 969087ff02d..a77a81736fb 100644 --- a/e2e/src/suite/extension.test.ts +++ b/e2e/src/suite/extension.test.ts @@ -1,7 +1,7 @@ import * as assert from "assert" import * as vscode from "vscode" -suite("Roo Code Extension", () => { +suite("Kilo Code Extension", () => { test("OPENROUTER_API_KEY environment variable is set", () => { if (!process.env.OPENROUTER_API_KEY) { assert.fail("OPENROUTER_API_KEY environment variable is not set") diff --git a/e2e/src/suite/index.ts b/e2e/src/suite/index.ts index a9540d96004..7c7c63badce 100644 --- a/e2e/src/suite/index.ts +++ b/e2e/src/suite/index.ts @@ -49,7 +49,7 @@ export async function run(): Promise { globalThis.panel = vscode.window.createWebviewPanel( "roo-cline.SidebarProvider", - "Roo Code", + "Kilo Code", vscode.ViewColumn.One, { enableScripts: true, diff --git a/e2e/src/suite/modes.test.ts b/e2e/src/suite/modes.test.ts index b94e71d1106..123ec58fedc 100644 --- a/e2e/src/suite/modes.test.ts +++ b/e2e/src/suite/modes.test.ts @@ -1,6 +1,6 @@ import * as assert from "assert" -suite("Roo Code Modes", () => { +suite("Kilo Code Modes", () => { test("Should handle switching modes correctly", async function () { const timeout = 30000 const interval = 1000 diff --git a/e2e/src/suite/task.test.ts b/e2e/src/suite/task.test.ts index 6bdedcde002..b7318f86739 100644 --- a/e2e/src/suite/task.test.ts +++ b/e2e/src/suite/task.test.ts @@ -1,6 +1,6 @@ import * as assert from "assert" -suite("Roo Code Task", () => { +suite("Kilo Code Task", () => { test("Should handle prompt and response correctly", async function () { const timeout = 30000 const interval = 1000 @@ -32,7 +32,7 @@ suite("Roo Code Task", () => { while (Date.now() - startTime < timeout) { const messages = globalThis.provider.messages - if (messages.some(({ type, text }) => type === "say" && text?.includes("My name is Roo"))) { + if (messages.some(({ type, text }) => type === "say" && text?.includes("My name is Kilo Code"))) { break } @@ -44,8 +44,10 @@ suite("Roo Code Task", () => { } assert.ok( - globalThis.provider.messages.some(({ type, text }) => type === "say" && text?.includes("My name is Roo")), - "Did not receive expected response containing 'My name is Roo'", + globalThis.provider.messages.some( + ({ type, text }) => type === "say" && text?.includes("My name is Kilo Code"), + ), + "Did not receive expected response containing 'My name is Kilo Code'", ) }) }) diff --git a/src/activate/registerCommands.ts b/src/activate/registerCommands.ts index e1c1ec93c61..d18b2f5a3ae 100644 --- a/src/activate/registerCommands.ts +++ b/src/activate/registerCommands.ts @@ -89,7 +89,7 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt } const openClineInNewTab = async ({ context, outputChannel }: Omit) => { - outputChannel.appendLine("Opening Roo Code in new tab") + outputChannel.appendLine("Opening Kilo Code in new tab") // (This example uses webviewProvider activation event which is necessary to // deserialize cached webview, but since we use retainContextWhenHidden, we @@ -109,7 +109,7 @@ const openClineInNewTab = async ({ context, outputChannel }: Omit { baseURL: expect.any(String), apiKey: expect.any(String), defaultHeaders: { - "HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline", - "X-Title": "Roo Code", + "HTTP-Referer": "https://github.com/Kilo-Org/kilocode", + "X-Title": "Kilo Code", }, }) }) diff --git a/src/api/providers/__tests__/openrouter.test.ts b/src/api/providers/__tests__/openrouter.test.ts index 981c9ad096f..714ca7b6abf 100644 --- a/src/api/providers/__tests__/openrouter.test.ts +++ b/src/api/providers/__tests__/openrouter.test.ts @@ -38,8 +38,8 @@ describe("OpenRouterHandler", () => { baseURL: "https://openrouter.ai/api/v1", apiKey: mockOptions.openRouterApiKey, defaultHeaders: { - "HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline", - "X-Title": "Roo Code", + "HTTP-Referer": "https://github.com/Kilo-Org/kilocode", + "X-Title": "Kilo Code", }, }) }) diff --git a/src/api/providers/__tests__/requesty.test.ts b/src/api/providers/__tests__/requesty.test.ts index 47921a1c532..8b246ce9111 100644 --- a/src/api/providers/__tests__/requesty.test.ts +++ b/src/api/providers/__tests__/requesty.test.ts @@ -64,8 +64,8 @@ describe("RequestyHandler", () => { baseURL: "https://router.requesty.ai/v1", apiKey: defaultOptions.requestyApiKey, defaultHeaders: { - "HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline", - "X-Title": "Roo Code", + "HTTP-Referer": "https://github.com/Kilo-Org/kilocode", + "X-Title": "Kilo Code", }, }) }) diff --git a/src/api/providers/lmstudio.ts b/src/api/providers/lmstudio.ts index 9a3ab187bf2..07152d8c253 100644 --- a/src/api/providers/lmstudio.ts +++ b/src/api/providers/lmstudio.ts @@ -59,7 +59,7 @@ export class LmStudioHandler extends BaseProvider implements SingleCompletionHan } catch (error) { // LM Studio doesn't return an error code/body for now throw new Error( - "Please check the LM Studio developer logs to debug what went wrong. You may need to load the model with a larger context length to work with Roo Code's prompts.", + "Please check the LM Studio developer logs to debug what went wrong. You may need to load the model with a larger context length to work with Kilo Code's prompts.", ) } } @@ -90,7 +90,7 @@ export class LmStudioHandler extends BaseProvider implements SingleCompletionHan return response.choices[0]?.message.content || "" } catch (error) { throw new Error( - "Please check the LM Studio developer logs to debug what went wrong. You may need to load the model with a larger context length to work with Roo Code's prompts.", + "Please check the LM Studio developer logs to debug what went wrong. You may need to load the model with a larger context length to work with Kilo Code's prompts.", ) } } diff --git a/src/api/providers/mistral.ts b/src/api/providers/mistral.ts index 38f753c2610..a030e53fea5 100644 --- a/src/api/providers/mistral.ts +++ b/src/api/providers/mistral.ts @@ -34,7 +34,7 @@ export class MistralHandler extends BaseProvider implements SingleCompletionHand } const baseUrl = this.getBaseUrl() - console.debug(`[Roo Code] MistralHandler using baseUrl: ${baseUrl}`) + console.debug(`[Kilo Code] MistralHandler using baseUrl: ${baseUrl}`) this.client = new Mistral({ serverURL: baseUrl, apiKey: this.options.mistralApiKey, @@ -43,7 +43,7 @@ export class MistralHandler extends BaseProvider implements SingleCompletionHand private getBaseUrl(): string { const modelId = this.options.apiModelId ?? mistralDefaultModelId - console.debug(`[Roo Code] MistralHandler using modelId: ${modelId}`) + console.debug(`[Kilo Code] MistralHandler using modelId: ${modelId}`) if (modelId?.startsWith("codestral-")) { return this.options.mistralCodestralUrl || "https://codestral.mistral.ai" } diff --git a/src/api/providers/openai.ts b/src/api/providers/openai.ts index 2af3f2da05a..0b467c9d0a5 100644 --- a/src/api/providers/openai.ts +++ b/src/api/providers/openai.ts @@ -18,8 +18,8 @@ import { BaseProvider } from "./base-provider" const DEEP_SEEK_DEFAULT_TEMPERATURE = 0.6 export const defaultHeaders = { - "HTTP-Referer": "https://github.com/RooVetGit/Roo-Cline", - "X-Title": "Roo Code", + "HTTP-Referer": "https://github.com/Kilo-Org/kilocode", + "X-Title": "Kilo Code", } export interface OpenAiHandlerOptions extends ApiHandlerOptions {} diff --git a/src/api/providers/vscode-lm.ts b/src/api/providers/vscode-lm.ts index 0ce2a6e26a6..13d23f5fbfe 100644 --- a/src/api/providers/vscode-lm.ts +++ b/src/api/providers/vscode-lm.ts @@ -66,7 +66,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan this.dispose() throw new Error( - `Roo Code : Failed to initialize handler: ${error instanceof Error ? error.message : "Unknown error"}`, + `Kilo Code : Failed to initialize handler: ${error instanceof Error ? error.message : "Unknown error"}`, ) } } @@ -116,7 +116,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan } } catch (error) { const errorMessage = error instanceof Error ? error.message : "Unknown error" - throw new Error(`Roo Code : Failed to select model: ${errorMessage}`) + throw new Error(`Kilo Code : Failed to select model: ${errorMessage}`) } } @@ -176,18 +176,18 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan private async internalCountTokens(text: string | vscode.LanguageModelChatMessage): Promise { // Check for required dependencies if (!this.client) { - console.warn("Roo Code : No client available for token counting") + console.warn("Kilo Code : No client available for token counting") return 0 } if (!this.currentRequestCancellation) { - console.warn("Roo Code : No cancellation token available for token counting") + console.warn("Kilo Code : No cancellation token available for token counting") return 0 } // Validate input if (!text) { - console.debug("Roo Code : Empty text provided for token counting") + console.debug("Kilo Code : Empty text provided for token counting") return 0 } @@ -200,23 +200,23 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan } else if (text instanceof vscode.LanguageModelChatMessage) { // For chat messages, ensure we have content if (!text.content || (Array.isArray(text.content) && text.content.length === 0)) { - console.debug("Roo Code : Empty chat message content") + console.debug("Kilo Code : Empty chat message content") return 0 } tokenCount = await this.client.countTokens(text, this.currentRequestCancellation.token) } else { - console.warn("Roo Code : Invalid input type for token counting") + console.warn("Kilo Code : Invalid input type for token counting") return 0 } // Validate the result if (typeof tokenCount !== "number") { - console.warn("Roo Code : Non-numeric token count received:", tokenCount) + console.warn("Kilo Code : Non-numeric token count received:", tokenCount) return 0 } if (tokenCount < 0) { - console.warn("Roo Code : Negative token count received:", tokenCount) + console.warn("Kilo Code : Negative token count received:", tokenCount) return 0 } @@ -224,12 +224,12 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan } catch (error) { // Handle specific error types if (error instanceof vscode.CancellationError) { - console.debug("Roo Code : Token counting cancelled by user") + console.debug("Kilo Code : Token counting cancelled by user") return 0 } const errorMessage = error instanceof Error ? error.message : "Unknown error" - console.warn("Roo Code : Token counting failed:", errorMessage) + console.warn("Kilo Code : Token counting failed:", errorMessage) // Log additional error details if available if (error instanceof Error && error.stack) { @@ -261,7 +261,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan private async getClient(): Promise { if (!this.client) { - console.debug("Roo Code : Getting client with options:", { + console.debug("Kilo Code : Getting client with options:", { vsCodeLmModelSelector: this.options.vsCodeLmModelSelector, hasOptions: !!this.options, selectorKeys: this.options.vsCodeLmModelSelector ? Object.keys(this.options.vsCodeLmModelSelector) : [], @@ -270,12 +270,12 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan try { // Use default empty selector if none provided to get all available models const selector = this.options?.vsCodeLmModelSelector || {} - console.debug("Roo Code : Creating client with selector:", selector) + console.debug("Kilo Code : Creating client with selector:", selector) this.client = await this.createClient(selector) } catch (error) { const message = error instanceof Error ? error.message : "Unknown error" - console.error("Roo Code : Client creation failed:", message) - throw new Error(`Roo Code : Failed to create client: ${message}`) + console.error("Kilo Code : Client creation failed:", message) + throw new Error(`Kilo Code : Failed to create client: ${message}`) } } @@ -377,7 +377,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan try { // Create the response stream with minimal required options const requestOptions: vscode.LanguageModelChatRequestOptions = { - justification: `Roo Code would like to use '${client.name}' from '${client.vendor}', Click 'Allow' to proceed.`, + justification: `Kilo Code would like to use '${client.name}' from '${client.vendor}', Click 'Allow' to proceed.`, } // Note: Tool support is currently provided by the VSCode Language Model API directly @@ -394,7 +394,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan if (chunk instanceof vscode.LanguageModelTextPart) { // Validate text part value if (typeof chunk.value !== "string") { - console.warn("Roo Code : Invalid text part value received:", chunk.value) + console.warn("Kilo Code : Invalid text part value received:", chunk.value) continue } @@ -407,18 +407,18 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan try { // Validate tool call parameters if (!chunk.name || typeof chunk.name !== "string") { - console.warn("Roo Code : Invalid tool name received:", chunk.name) + console.warn("Kilo Code : Invalid tool name received:", chunk.name) continue } if (!chunk.callId || typeof chunk.callId !== "string") { - console.warn("Roo Code : Invalid tool callId received:", chunk.callId) + console.warn("Kilo Code : Invalid tool callId received:", chunk.callId) continue } // Ensure input is a valid object if (!chunk.input || typeof chunk.input !== "object") { - console.warn("Roo Code : Invalid tool input received:", chunk.input) + console.warn("Kilo Code : Invalid tool input received:", chunk.input) continue } @@ -434,7 +434,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan accumulatedText += toolCallText // Log tool call for debugging - console.debug("Roo Code : Processing tool call:", { + console.debug("Kilo Code : Processing tool call:", { name: chunk.name, callId: chunk.callId, inputSize: JSON.stringify(chunk.input).length, @@ -445,12 +445,12 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan text: toolCallText, } } catch (error) { - console.error("Roo Code : Failed to process tool call:", error) + console.error("Kilo Code : Failed to process tool call:", error) // Continue processing other chunks even if one fails continue } } else { - console.warn("Roo Code : Unknown chunk type received:", chunk) + console.warn("Kilo Code : Unknown chunk type received:", chunk) } } @@ -468,11 +468,11 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan this.ensureCleanState() if (error instanceof vscode.CancellationError) { - throw new Error("Roo Code : Request cancelled by user") + throw new Error("Kilo Code : Request cancelled by user") } if (error instanceof Error) { - console.error("Roo Code : Stream error details:", { + console.error("Kilo Code : Stream error details:", { message: error.message, stack: error.stack, name: error.name, @@ -483,13 +483,13 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan } else if (typeof error === "object" && error !== null) { // Handle error-like objects const errorDetails = JSON.stringify(error, null, 2) - console.error("Roo Code : Stream error object:", errorDetails) - throw new Error(`Roo Code : Response stream error: ${errorDetails}`) + console.error("Kilo Code : Stream error object:", errorDetails) + throw new Error(`Kilo Code : Response stream error: ${errorDetails}`) } else { // Fallback for unknown error types const errorMessage = String(error) - console.error("Roo Code : Unknown stream error:", errorMessage) - throw new Error(`Roo Code : Response stream error: ${errorMessage}`) + console.error("Kilo Code : Unknown stream error:", errorMessage) + throw new Error(`Kilo Code : Response stream error: ${errorMessage}`) } } } @@ -509,7 +509,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan // Log any missing properties for debugging for (const [prop, value] of Object.entries(requiredProps)) { if (!value && value !== 0) { - console.warn(`Roo Code : Client missing ${prop} property`) + console.warn(`Kilo Code : Client missing ${prop} property`) } } @@ -540,7 +540,7 @@ export class VsCodeLmHandler extends BaseProvider implements SingleCompletionHan ? stringifyVsCodeLmModelSelector(this.options.vsCodeLmModelSelector) : "vscode-lm" - console.debug("Roo Code : No client available, using fallback model info") + console.debug("Kilo Code : No client available, using fallback model info") return { id: fallbackId, diff --git a/src/api/transform/vscode-lm-format.ts b/src/api/transform/vscode-lm-format.ts index 73716cf912d..8009dcb52e9 100644 --- a/src/api/transform/vscode-lm-format.ts +++ b/src/api/transform/vscode-lm-format.ts @@ -23,7 +23,7 @@ function asObjectSafe(value: any): object { return {} } catch (error) { - console.warn("Roo Code : Failed to parse object:", error) + console.warn("Kilo Code : Failed to parse object:", error) return {} } } diff --git a/src/core/Cline.ts b/src/core/Cline.ts index e595180a034..6a1f38f4dfc 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -404,7 +404,7 @@ export class Cline { ): Promise<{ response: ClineAskResponse; text?: string; images?: string[] }> { // If this Cline instance was aborted by the provider, then the only thing keeping us alive is a promise still running in the background, in which case we don't want to send its result to the webview as it is attached to a new instance of Cline now. So we can safely ignore the result of any active promises, and this class will be deallocated. (Although we set Cline = undefined in provider, that simply removes the reference to this instance, but the instance is still alive until this promise resolves or rejects.) if (this.abort) { - throw new Error(`Task: ${this.taskNumber} Roo Code instance aborted (#1)`) + throw new Error(`Task: ${this.taskNumber} Kilo Code instance aborted (#1)`) } let askTs: number if (partial !== undefined) { @@ -506,7 +506,7 @@ export class Cline { checkpoint?: Record, ): Promise { if (this.abort) { - throw new Error(`Task: ${this.taskNumber} Roo Code instance aborted (#2)`) + throw new Error(`Task: ${this.taskNumber} Kilo Code instance aborted (#2)`) } if (partial !== undefined) { @@ -565,7 +565,7 @@ export class Cline { async sayAndCreateMissingParamError(toolName: ToolUseName, paramName: string, relPath?: string) { await this.say( "error", - `Roo tried to use ${toolName}${ + `Kilo Code tried to use ${toolName}${ relPath ? ` for '${relPath.toPosix()}'` : "" } without value for required parameter '${paramName}'. Retrying...`, ) @@ -1225,7 +1225,7 @@ export class Cline { async presentAssistantMessage() { if (this.abort) { - throw new Error(`Task: ${this.taskNumber} Roo Code instance aborted (#3)`) + throw new Error(`Task: ${this.taskNumber} Kilo Code instance aborted (#3)`) } if (this.presentAssistantMessageLocked) { @@ -3067,7 +3067,7 @@ export class Cline { includeFileDetails: boolean = false, ): Promise { if (this.abort) { - throw new Error(`Task: ${this.taskNumber} Roo Code instance aborted (#4)`) + throw new Error(`Task: ${this.taskNumber} Kilo Code instance aborted (#4)`) } if (this.consecutiveMistakeCount >= 3) { @@ -3075,7 +3075,7 @@ export class Cline { "mistake_limit_reached", this.api.getModel().id.includes("claude") ? `This may indicate a failure in his thought process or inability to use a tool properly, which can be mitigated with some user guidance (e.g. "Try breaking down the task into smaller steps").` - : "Roo Code uses complex prompts and iterative task execution that may be challenging for less capable models. For best results, it's recommended to use Claude 3.7 Sonnet for its advanced agentic coding capabilities.", + : "Kilo Code uses complex prompts and iterative task execution that may be challenging for less capable models. For best results, it's recommended to use Claude 3.7 Sonnet for its advanced agentic coding capabilities.", ) if (response === "messageResponse") { userContent.push( @@ -3304,7 +3304,7 @@ export class Cline { // need to call here in case the stream was aborted if (this.abort || this.abandoned) { - throw new Error(`Task: ${this.taskNumber} Roo Code instance aborted (#5)`) + throw new Error(`Task: ${this.taskNumber} Kilo Code instance aborted (#5)`) } this.didCompleteReadingStream = true diff --git a/src/core/CodeActionProvider.ts b/src/core/CodeActionProvider.ts index 285e6dac6cd..88d29e7398c 100644 --- a/src/core/CodeActionProvider.ts +++ b/src/core/CodeActionProvider.ts @@ -2,11 +2,11 @@ import * as vscode from "vscode" import { EditorUtils } from "./EditorUtils" export const ACTION_NAMES = { - EXPLAIN: "Roo Code: Explain Code", - FIX: "Roo Code: Fix Code", - FIX_LOGIC: "Roo Code: Fix Logic", - IMPROVE: "Roo Code: Improve Code", - ADD_TO_CONTEXT: "Roo Code: Add to Context", + EXPLAIN: "Kilo Code: Explain Code", + FIX: "Kilo Code: Fix Code", + FIX_LOGIC: "Kilo Code: Fix Logic", + IMPROVE: "Kilo Code: Improve Code", + ADD_TO_CONTEXT: "Kilo Code: Add to Context", } as const export const COMMAND_IDS = { diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index f450ee46e02..d18b17fe37d 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -634,7 +634,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { - Roo Code + Kilo Code
@@ -714,7 +714,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { - Roo Code + Kilo Code diff --git a/src/integrations/terminal/TerminalRegistry.ts b/src/integrations/terminal/TerminalRegistry.ts index 69a21d94fde..2ec708cf6db 100644 --- a/src/integrations/terminal/TerminalRegistry.ts +++ b/src/integrations/terminal/TerminalRegistry.ts @@ -19,7 +19,7 @@ export class TerminalRegistry { static createTerminal(cwd?: string | vscode.Uri | undefined): TerminalInfo { const terminal = vscode.window.createTerminal({ cwd, - name: "Roo Code", + name: "Kilo Code", iconPath: new vscode.ThemeIcon("rocket"), env: { PAGER: "cat", diff --git a/src/integrations/terminal/__tests__/TerminalProcess.test.ts b/src/integrations/terminal/__tests__/TerminalProcess.test.ts index 16cd85230de..5633927ce7a 100644 --- a/src/integrations/terminal/__tests__/TerminalProcess.test.ts +++ b/src/integrations/terminal/__tests__/TerminalProcess.test.ts @@ -44,7 +44,7 @@ describe("TerminalProcess", () => { shellIntegration: { executeCommand: jest.fn(), }, - name: "Roo Code", + name: "Kilo Code", processId: Promise.resolve(123), creationOptions: {}, exitStatus: undefined, diff --git a/src/integrations/terminal/__tests__/TerminalRegistry.test.ts b/src/integrations/terminal/__tests__/TerminalRegistry.test.ts index a2b8fcd3b08..143eb7b3ce3 100644 --- a/src/integrations/terminal/__tests__/TerminalRegistry.test.ts +++ b/src/integrations/terminal/__tests__/TerminalRegistry.test.ts @@ -27,7 +27,7 @@ describe("TerminalRegistry", () => { expect(mockCreateTerminal).toHaveBeenCalledWith({ cwd: "/test/path", - name: "Roo Code", + name: "Kilo Code", iconPath: expect.any(Object), env: { PAGER: "cat", diff --git a/src/services/checkpoints/ShadowCheckpointService.ts b/src/services/checkpoints/ShadowCheckpointService.ts index fc7153bab9d..22899d4dcf9 100644 --- a/src/services/checkpoints/ShadowCheckpointService.ts +++ b/src/services/checkpoints/ShadowCheckpointService.ts @@ -91,7 +91,7 @@ export abstract class ShadowCheckpointService extends EventEmitter { await git.init() await git.addConfig("core.worktree", this.workspaceDir) // Sets the working tree to the current workspace. await git.addConfig("commit.gpgSign", "false") // Disable commit signing for shadow repo. - await git.addConfig("user.name", "Roo Code") + await git.addConfig("user.name", "Kilo Code") await git.addConfig("user.email", "noreply@example.com") await this.writeExcludeFile() await this.stageAll(git) diff --git a/src/services/checkpoints/__tests__/ShadowCheckpointService.test.ts b/src/services/checkpoints/__tests__/ShadowCheckpointService.test.ts index ecf791e9498..d1a951fe4fb 100644 --- a/src/services/checkpoints/__tests__/ShadowCheckpointService.test.ts +++ b/src/services/checkpoints/__tests__/ShadowCheckpointService.test.ts @@ -21,8 +21,8 @@ const tmpDir = path.join(os.tmpdir(), "CheckpointService") const initWorkspaceRepo = async ({ workspaceDir, - userName = "Roo Code", - userEmail = "support@roocode.com", + userName = "Kilo Code", + userEmail = "support@kilocode.ai", testFileName = "test.txt", textFileContent = "Hello, world!", }: { @@ -396,16 +396,16 @@ describe.each([ await fs.mkdir(workspaceDir, { recursive: true }) const mainGit = simpleGit(workspaceDir) await mainGit.init() - await mainGit.addConfig("user.name", "Roo Code") - await mainGit.addConfig("user.email", "support@roocode.com") + await mainGit.addConfig("user.name", "Kilo Code") + await mainGit.addConfig("user.email", "support@kilocode.ai") // Create a nested repo inside the workspace. const nestedRepoPath = path.join(workspaceDir, "nested-project") await fs.mkdir(nestedRepoPath, { recursive: true }) const nestedGit = simpleGit(nestedRepoPath) await nestedGit.init() - await nestedGit.addConfig("user.name", "Roo Code") - await nestedGit.addConfig("user.email", "support@roocode.com") + await nestedGit.addConfig("user.name", "Kilo Code") + await nestedGit.addConfig("user.email", "support@kilocode.ai") // Add a file to the nested repo. const nestedFile = path.join(nestedRepoPath, "nested-file.txt") @@ -710,7 +710,7 @@ describe("ShadowCheckpointService", () => { // Create git repo without adding the specific branch const git = simpleGit(workspaceRepoDir) await git.init() - await git.addConfig("user.name", "Roo Code") + await git.addConfig("user.name", "Kilo Code") await git.addConfig("user.email", "noreply@example.com") // We need to create a commit, but we won't create the specific branch diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index 6c906c7cf89..e189f5aa35d 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -98,7 +98,7 @@ export class McpHub { mcpSettingsFilePath, `{ "mcpServers": { - + } }`, ) @@ -155,7 +155,7 @@ export class McpHub { // Each MCP server requires its own transport connection and has unique capabilities, configurations, and error handling. Having separate clients also allows proper scoping of resources/tools and independent server management like reconnection. const client = new Client( { - name: "Roo Code", + name: "Kilo Code", version: this.providerRef.deref()?.context.extension?.packageJSON?.version ?? "1.0.0", }, { diff --git a/webview-ui/index.html b/webview-ui/index.html index 9ca170dc5bd..d19d21f55a0 100644 --- a/webview-ui/index.html +++ b/webview-ui/index.html @@ -3,10 +3,10 @@ - Roo Code + Kilo Code
- \ No newline at end of file + diff --git a/webview-ui/src/components/chat/Announcement.tsx b/webview-ui/src/components/chat/Announcement.tsx index 791ca260852..6f29a7ed27e 100644 --- a/webview-ui/src/components/chat/Announcement.tsx +++ b/webview-ui/src/components/chat/Announcement.tsx @@ -49,11 +49,11 @@ const Announcement = ({ version, hideAnnouncement }: AnnouncementProps) => {

Get more details and discuss in{" "} { e.preventDefault() window.postMessage( - { type: "action", action: "openExternal", data: { url: "https://discord.gg/roocode" } }, + { type: "action", action: "openExternal", data: { url: "https://discord.gg/QZ9vjPj9e" } }, "*", ) }}> @@ -61,11 +61,11 @@ const Announcement = ({ version, hideAnnouncement }: AnnouncementProps) => { {" "} and{" "} { e.preventDefault() window.postMessage( - { type: "action", action: "openExternal", data: { url: "https://reddit.com/r/RooCode" } }, + { type: "action", action: "openExternal", data: { url: "https://reddit.com/r/KiloCode" } }, "*", ) }}> diff --git a/webview-ui/src/components/chat/AutoApproveMenu.tsx b/webview-ui/src/components/chat/AutoApproveMenu.tsx index 692cf1d44cc..090c9f2d4bb 100644 --- a/webview-ui/src/components/chat/AutoApproveMenu.tsx +++ b/webview-ui/src/components/chat/AutoApproveMenu.tsx @@ -241,7 +241,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => { color: "var(--vscode-descriptionForeground)", fontSize: "12px", }}> - Auto-approve allows Roo Code to perform actions without asking for permission. Only enable for + Auto-approve allows Kilo Code to perform actions without asking for permission. Only enable for actions you fully trust.

{actions.map((action) => ( diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx index 259c03fa213..1f7f173682b 100644 --- a/webview-ui/src/components/chat/ChatRow.tsx +++ b/webview-ui/src/components/chat/ChatRow.tsx @@ -124,7 +124,7 @@ export const ChatRowContent = ({ , - Roo is having trouble..., + Kilo Code is having trouble..., ] case "command": return [ @@ -135,7 +135,9 @@ export const ChatRowContent = ({ className="codicon codicon-terminal" style={{ color: normalColor, marginBottom: "-1.5px" }}> ), - Roo wants to execute this command:, + + Kilo Code wants to execute this command: + , ] case "use_mcp_server": const mcpServerUse = JSON.parse(message.text || "{}") as ClineAskUseMcpServer @@ -148,8 +150,8 @@ export const ChatRowContent = ({ style={{ color: normalColor, marginBottom: "-1.5px" }}> ), - Roo wants to {mcpServerUse.type === "use_mcp_tool" ? "use a tool" : "access a resource"} on the{" "} - {mcpServerUse.serverName} MCP server: + Kilo Code wants to {mcpServerUse.type === "use_mcp_tool" ? "use a tool" : "access a resource"}{" "} + on the {mcpServerUse.serverName} MCP server: , ] case "completion_result": @@ -213,7 +215,7 @@ export const ChatRowContent = ({ , - Roo has a question:, + Kilo Code has a question:, ] default: return [null, null] @@ -255,7 +257,7 @@ export const ChatRowContent = ({ <>
{toolIcon(tool.tool === "appliedDiff" ? "diff" : "edit")} - Roo wants to edit this file: + Kilo Code wants to edit this file:
{toolIcon("new-file")} - Roo wants to create a new file: + Kilo Code wants to create a new file:
{toolIcon("file-code")} - {message.type === "ask" ? "Roo wants to read this file:" : "Roo read this file:"} + {message.type === "ask" + ? "Kilo Code wants to read this file:" + : "Kilo Code read this file:"} {/* {message.type === "ask" - ? "Roo wants to view the top level files in this directory:" - : "Roo viewed the top level files in this directory:"} + ? "Kilo Code wants to view the top level files in this directory:" + : "Kilo Code viewed the top level files in this directory:"} {message.type === "ask" - ? "Roo wants to recursively view all files in this directory:" - : "Roo recursively viewed all files in this directory:"} + ? "Kilo Code wants to recursively view all files in this directory:" + : "Kilo Code recursively viewed all files in this directory:"} {message.type === "ask" - ? "Roo wants to view source code definition names used in this directory:" - : "Roo viewed source code definition names used in this directory:"} + ? "Kilo Code wants to view source code definition names used in this directory:" + : "Kilo Code viewed source code definition names used in this directory:"} {message.type === "ask" ? ( <> - Roo wants to search this directory for {tool.regex}: + Kilo Code wants to search this directory for {tool.regex}: ) : ( <> - Roo searched this directory for {tool.regex}: + Kilo Code searched this directory for {tool.regex}: )} @@ -432,12 +436,12 @@ export const ChatRowContent = ({ {message.type === "ask" ? ( <> - Roo wants to switch to {tool.mode} mode + Kilo Code wants to switch to {tool.mode} mode {tool.reason ? ` because: ${tool.reason}` : ""} ) : ( <> - Roo switched to {tool.mode} mode + Kilo Code switched to {tool.mode} mode {tool.reason ? ` because: ${tool.reason}` : ""} )} @@ -451,7 +455,7 @@ export const ChatRowContent = ({
{toolIcon("new-file")} - Roo wants to create a new subtask in {tool.mode} mode: + Kilo Code wants to create a new subtask in {tool.mode} mode:
@@ -464,7 +468,7 @@ export const ChatRowContent = ({ <>
{toolIcon("checklist")} - Roo wants to finish this subtask + Kilo Code wants to finish this subtask
{tool.content} @@ -706,7 +710,7 @@ export const ChatRowContent = ({
- Roo won't be able to view the command's output. Please update VSCode ( + Kilo Code won't be able to view the command's output. Please update VSCode ( CMD/CTRL + Shift + P → "Update") and make sure you're using a supported shell: zsh, bash, fish, or PowerShell (CMD/CTRL + Shift + P → "Terminal: Select Default Profile").{" "} diff --git a/webview-ui/src/components/settings/ApiOptions.tsx b/webview-ui/src/components/settings/ApiOptions.tsx index f7982080c8b..a1c51f1bf69 100644 --- a/webview-ui/src/components/settings/ApiOptions.tsx +++ b/webview-ui/src/components/settings/ApiOptions.tsx @@ -713,7 +713,7 @@ const ApiOptions = ({
Configure the capabilities and pricing for your custom OpenAI-compatible model. Be careful - when specifying the model capabilities, as they can affect how Roo Code performs. + when specifying the model capabilities, as they can affect how Kilo Code performs.
@@ -1041,8 +1041,8 @@ const ApiOptions = ({ local server feature to use it with this extension. - Note: Roo Code uses complex prompts and works best with - Claude models. Less capable models may not work as expected. + Note: Kilo Code uses complex prompts and works best + with Claude models. Less capable models may not work as expected.
@@ -1159,8 +1159,8 @@ const ApiOptions = ({ . - Note: Roo Code uses complex prompts and works best with - Claude models. Less capable models may not work as expected. + Note: Kilo Code uses complex prompts and works best + with Claude models. Less capable models may not work as expected.
diff --git a/webview-ui/src/components/settings/ModelPicker.tsx b/webview-ui/src/components/settings/ModelPicker.tsx index 8a3e7f73dc4..e29c71b2d50 100644 --- a/webview-ui/src/components/settings/ModelPicker.tsx +++ b/webview-ui/src/components/settings/ModelPicker.tsx @@ -104,7 +104,7 @@ export const ModelPicker = ({ {serviceName} - . If you're unsure which model to choose, Roo Code works best with{" "} + . If you're unsure which model to choose, Kilo Code works best with{" "} onSelect(defaultModelId)} className="text-sm"> {defaultModelId}. diff --git a/webview-ui/src/components/settings/SettingsFooter.tsx b/webview-ui/src/components/settings/SettingsFooter.tsx index 80b6c79f973..8c2c13bda0b 100644 --- a/webview-ui/src/components/settings/SettingsFooter.tsx +++ b/webview-ui/src/components/settings/SettingsFooter.tsx @@ -17,11 +17,11 @@ export const SettingsFooter = ({ version, className, ...props }: SettingsFooterP github.com/RooVetGit/Roo-Code {" "} or join{" "} - - reddit.com/r/RooCode + + reddit.com/r/KiloCode

-

Roo Code v{version}

+

Kilo Code v{version}

Reset all global state and secret storage in the extension.