diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index 93f9eeaa5be..4a71f83693b 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -1,3 +1,3 @@
-# Ran Prettier on all files - https://github.com/RooVetGit/Roo-Code/pull/404
+# Ran Prettier on all files - https://github.com/Kilo-Org/kilocode/pull/404
60a0a824b96a0b326af4d8871b6903f4ddcfe114
579bdd9dbf6d2d569e5e7adb5ff6292b1e42ea34
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 70472c2597c..0f81ca94ac8 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Feature Request
- url: https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests
- about: Share and vote on feature requests for Roo Code
+ url: https://github.com/Kilo-Org/kilocode/discussions/categories/feature-requests
+ about: Share and vote on feature requests for Kilo Code
- name: Leave a Review
- url: https://marketplace.visualstudio.com/items?itemName=RooVeterinaryInc.roo-cline&ssr=false#review-details
- about: Enjoying Roo Code? Leave a review here!
+ url: https://marketplace.visualstudio.com/items?itemName=kilocode.Kilo-Code&ssr=false#review-details
+ about: Enjoying Kilo Code? Leave a review here!
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fd6a574dc6b..a1ae1a92692 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -103,7 +103,7 @@
## [3.7.5] - 2025-02-26
-- Fix context window truncation math (see [#1173](https://github.com/RooVetGit/Roo-Code/issues/1173))
+- Fix context window truncation math (see [#1173](https://github.com/Kilo-Org/kilocode/issues/1173))
- Fix various issues with the model picker (thanks @System233!)
- Fix model input / output cost parsing (thanks @System233!)
- Add drag-and-drop for files
diff --git a/PRIVACY.md b/PRIVACY.md
index bcd9186b707..163d0ab14d9 100644
--- a/PRIVACY.md
+++ b/PRIVACY.md
@@ -10,19 +10,10 @@ Roo Code respects your privacy and is committed to transparency about how we han
- **Commands**: Any commands executed through Roo Code happen on your local environment. However, when you use AI-powered features, the relevant code and context from your commands may be transmitted to your chosen AI model provider (e.g., OpenAI, Anthropic, OpenRouter) to generate responses. We do not have access to or store this data, but AI providers may process it per their privacy policies.
- **Prompts & AI Requests**: When you use AI-powered features, your prompts and relevant project context are sent to your chosen AI model provider (e.g., OpenAI, Anthropic, OpenRouter) to generate responses. We do not store or process this data. These AI providers have their own privacy policies and may store data per their terms of service.
- **API Keys & Credentials**: If you enter an API key (e.g., to connect an AI model), it is stored locally on your device and never sent to us or any third party, except the provider you have chosen.
-- **Telemetry (Usage Data)**: We only collect feature usage and error data if you explicitly opt-in. This telemetry is powered by PostHog and helps us understand feature usage to improve Roo Code. This includes your VS Code machine ID and feature usage patterns and exception reports. We do **not** collect personally identifiable information, your code, or AI prompts.
-
-### **How We Use Your Data (If Collected)**
-
-- If you opt-in to telemetry, we use it to understand feature usage and improve Roo Code.
-- We do **not** sell or share your data.
-- We do **not** train any models on your data.
### **Your Choices & Control**
- You can run models locally to prevent data being sent to third-parties.
-- By default, telemetry collection is off and if you turn it on, you can opt out of telemetry at any time.
-- You can delete Roo Code to stop all data collection.
### **Security & Updates**
diff --git a/README.md b/README.md
index 59ca6d699f1..40420a2b2ac 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,25 @@
-
Join the Roo Code Community
+
Join the Kilo Code Community
Connect with developers, contribute ideas, and stay ahead with the latest AI-powered coding tools.
-
-
-
-
+
+
+
+
-
Roo Code (prev. Roo Cline)
+
Kilo Code (prev. Roo Code, Cline)
-
-
-
-
+
+
+
+
-**Roo Code** is an AI-powered **autonomous coding agent** that lives in your editor. It can:
+**Kilo Code** is an AI-powered **autonomous coding agent** that lives in your editor. It can:
- Communicate in natural language
- Read and write files directly in your workspace
@@ -28,28 +28,13 @@
- Integrate with any OpenAI-compatible or custom API/model
- Adapt its “personality” and capabilities through **Custom Modes**
-Whether you’re seeking a flexible coding partner, a system architect, or specialized roles like a QA engineer or product manager, Roo Code can help you build software more efficiently.
+Whether you’re seeking a flexible coding partner, a system architect, or specialized roles like a QA engineer or product manager, Kilo Code can help you build software more efficiently.
Check out the [CHANGELOG](CHANGELOG.md) for detailed updates and fixes.
---
-## 🎉 Roo Code 3.8 Released
-
-Roo Code 3.8 is out with performance boosts, new features, and bug fixes.
-
-- Faster asynchronous checkpoints
-- Support for .rooignore files
-- Fixed terminal & gray screen issues
-- Roo Code can run in multiple windows
-- Experimental multi-diff editing strategy
-- Subtask to parent task communication
-- Updated DeepSeek provider
-- New "Human Relay" provider
-
----
-
-## What Can Roo Code Do?
+## What Can Kilo Code Do?
- 🚀 **Generate Code** from natural language descriptions
- 🔧 **Refactor & Debug** existing code
@@ -60,7 +45,7 @@ Roo Code 3.8 is out with performance boosts, new features, and bug fixes.
## Quick Start
-1. [Install Roo Code](https://docs.roocode.com/getting-started/installing)
+1. [Install Kilo Code](https://docs.roocode.com/getting-started/installing)
2. [Connect Your AI Provider](https://docs.roocode.com/getting-started/connecting-api-provider)
3. [Try Your First Task](https://docs.roocode.com/getting-started/your-first-task)
@@ -68,7 +53,7 @@ Roo Code 3.8 is out with performance boosts, new features, and bug fixes.
### Multiple Modes
-Roo Code adapts to your needs with specialized [modes](https://docs.roocode.com/basic-usage/modes):
+Kilo Code adapts to your needs with specialized [modes](https://docs.roocode.com/basic-usage/modes):
- **Code Mode:** For general-purpose coding tasks
- **Architect Mode:** For planning and technical leadership
@@ -78,18 +63,18 @@ Roo Code adapts to your needs with specialized [modes](https://docs.roocode.com/
### Smart Tools
-Roo Code comes with powerful [tools](https://docs.roocode.com/basic-usage/using-tools) that can:
+Kilo Code comes with powerful [tools](https://docs.roocode.com/basic-usage/using-tools) that can:
- Read and write files in your project
- Execute commands in your VS Code terminal
- Control a web browser
- Use external tools via [MCP (Model Context Protocol)](https://docs.roocode.com/advanced-usage/mcp)
-MCP extends Roo Code's capabilities by allowing you to add unlimited custom tools. Integrate with external APIs, connect to databases, or create specialized development tools - MCP provides the framework to expand Roo Code's functionality to meet your specific needs.
+MCP extends Kilo Code's capabilities by allowing you to add unlimited custom tools. Integrate with external APIs, connect to databases, or create specialized development tools - MCP provides the framework to expand Kilo Code's functionality to meet your specific needs.
### Customization
-Make Roo Code work your way with:
+Make Kilo Code work your way with:
- [Custom Instructions](https://docs.roocode.com/advanced-usage/custom-instructions) for personalized behavior
- [Custom Modes](https://docs.roocode.com/advanced-usage/custom-modes) for specialized tasks
@@ -106,9 +91,9 @@ Make Roo Code work your way with:
### Community
-- **Discord:** [Join our Discord server](https://discord.gg/roocode) for real-time help and discussions
-- **Reddit:** [Visit our subreddit](https://www.reddit.com/r/RooCode) to share experiences and tips
-- **GitHub:** Report [issues](https://github.com/RooVetGit/Roo-Code/issues) or request [features](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop)
+- **Discord:** [Join our Discord server](https://discord.gg/QZ9vjPj9e) for real-time help and discussions
+- **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)
---
@@ -116,7 +101,7 @@ Make Roo Code work your way with:
1. **Clone** the repo:
```bash
- git clone https://github.com/RooVetGit/Roo-Code.git
+ git clone https://github.com/Kilo-Org/kilocode.git
```
2. **Install dependencies**:
```bash
@@ -124,9 +109,9 @@ Make Roo Code work your way with:
```
if that fails, try:
- ```bash
+`bash
npm run install:ci
- ```
+ `
3. **Build** the extension:
```bash
@@ -142,7 +127,7 @@ if that fails, try:
npm run dev
```
6. **Debug**:
- - Press `F5` (or **Run** → **Start Debugging**) in VSCode to open a new session with Roo Code loaded.
+ - Press `F5` (or **Run** → **Start Debugging**) in VSCode to open a new session with Kilo Code loaded.
Changes to the webview will appear immediately. Changes to the core extension will require a restart of the extension host.
@@ -152,7 +137,7 @@ We use [changesets](https://github.com/changesets/changesets) for versioning and
## Disclaimer
-**Please note** that Roo Veterinary, Inc does **not** make any representations or warranties regarding any code, models, or other tools provided or made available in connection with Roo Code, any associated third-party tools, or any resulting outputs. You assume **all risks** associated with the use of any such tools or outputs; such tools are provided on an **"AS IS"** and **"AS AVAILABLE"** basis. Such risks may include, without limitation, intellectual property infringement, cyber vulnerabilities or attacks, bias, inaccuracies, errors, defects, viruses, downtime, property loss or damage, and/or personal injury. You are solely responsible for your use of any such tools or outputs (including, without limitation, the legality, appropriateness, and results thereof).
+**Please note** that Roo Veterinary, Inc does **not** make any representations or warranties regarding any code, models, or other tools provided or made available in connection with Kilo Code, any associated third-party tools, or any resulting outputs. You assume **all risks** associated with the use of any such tools or outputs; such tools are provided on an **"AS IS"** and **"AS AVAILABLE"** basis. Such risks may include, without limitation, intellectual property infringement, cyber vulnerabilities or attacks, bias, inaccuracies, errors, defects, viruses, downtime, property loss or damage, and/or personal injury. You are solely responsible for your use of any such tools or outputs (including, without limitation, the legality, appropriateness, and results thereof).
---
@@ -160,10 +145,10 @@ We use [changesets](https://github.com/changesets/changesets) for versioning and
We love community contributions! Here’s how to get involved:
-1. **Check Issues & Requests**: See [open issues](https://github.com/RooVetGit/Roo-Code/issues) or [feature requests](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests).
+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.
---
@@ -173,4 +158,4 @@ We love community contributions! Here’s how to get involved:
---
-**Enjoy Roo Code!** Whether you keep it on a short leash or let it roam autonomously, we can’t wait to see what you build. If you have questions or feature ideas, drop by our [Reddit community](https://www.reddit.com/r/RooCode/) or [Discord](https://roocode.com/discord). Happy coding!
+**Enjoy Kilo Code!** Whether you keep it on a short leash or let it roam autonomously, we can’t wait to see what you build. If you have questions or feature ideas, drop by our [Reddit community](https://www.reddit.com/r/kilocode/) or [Discord](). Happy coding!
diff --git a/package-lock.json b/package-lock.json
index cd961b0a210..47e84208662 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
- "name": "roo-cline",
- "version": "3.8.4",
+ "name": "Kilo-Code",
+ "version": "4.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "roo-cline",
- "version": "3.8.4",
+ "name": "Kilo-Code",
+ "version": "4.0.1",
"dependencies": {
"@anthropic-ai/bedrock-sdk": "^0.10.2",
"@anthropic-ai/sdk": "^0.37.0",
diff --git a/package.json b/package.json
index b32a81071db..848ee6bb370 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,9 @@
{
- "name": "roo-cline",
- "displayName": "Roo Code (prev. Roo Cline)",
+ "name": "Kilo-Code",
+ "displayName": "Kilo Code",
"description": "A whole dev team of AI agents in your editor.",
- "publisher": "RooVeterinaryInc",
- "version": "3.8.4",
+ "publisher": "kilocode",
+ "version": "4.0.1",
"icon": "assets/icons/rocket.png",
"galleryBanner": {
"color": "#617A91",
@@ -13,13 +13,13 @@
"vscode": "^1.84.0"
},
"author": {
- "name": "Roo Vet"
+ "name": "Kilo Code"
},
"repository": {
"type": "git",
- "url": "https://github.com/RooVetGit/Roo-Code"
+ "url": "https://github.com/Kilo-Org/kilocode"
},
- "homepage": "https://github.com/RooVetGit/Roo-Code",
+ "homepage": "https://kilocode.ai",
"categories": [
"AI",
"Chat",
@@ -41,7 +41,7 @@
"sonnet",
"ai",
"llama",
- "roo code",
+ "Kilo Code",
"roocode"
],
"activationEvents": [
@@ -54,7 +54,7 @@
"activitybar": [
{
"id": "roo-cline-ActivityBar",
- "title": "Roo Code",
+ "title": "Kilo Code",
"icon": "$(rocket)"
}
]
@@ -107,27 +107,27 @@
{
"command": "roo-cline.openInNewTab",
"title": "Open In New Tab",
- "category": "Roo Code"
+ "category": "Kilo Code"
},
{
"command": "roo-cline.explainCode",
- "title": "Roo Code: Explain Code",
- "category": "Roo Code"
+ "title": "Kilo Code: Explain Code",
+ "category": "Kilo Code"
},
{
"command": "roo-cline.fixCode",
- "title": "Roo Code: Fix Code",
- "category": "Roo Code"
+ "title": "Kilo Code: Fix Code",
+ "category": "Kilo Code"
},
{
"command": "roo-cline.improveCode",
- "title": "Roo Code: Improve Code",
- "category": "Roo Code"
+ "title": "Kilo Code: Improve Code",
+ "category": "Kilo Code"
},
{
"command": "roo-cline.addToContext",
- "title": "Roo Code: Add To Context",
- "category": "Roo Code"
+ "title": "Kilo Code: Add To Context",
+ "category": "Kilo Code"
}
],
"menus": {
@@ -135,22 +135,22 @@
{
"command": "roo-cline.explainCode",
"when": "editorHasSelection",
- "group": "Roo Code@1"
+ "group": "Kilo Code@1"
},
{
"command": "roo-cline.fixCode",
"when": "editorHasSelection",
- "group": "Roo Code@2"
+ "group": "Kilo Code@2"
},
{
"command": "roo-cline.improveCode",
"when": "editorHasSelection",
- "group": "Roo Code@3"
+ "group": "Kilo Code@3"
},
{
"command": "roo-cline.addToContext",
"when": "editorHasSelection",
- "group": "Roo Code@4"
+ "group": "Kilo Code@4"
}
],
"view/title": [
@@ -192,9 +192,9 @@
]
},
"configuration": {
- "title": "Roo Code",
+ "title": "Kilo Code",
"properties": {
- "roo-cline.allowedCommands": {
+ "kiloCode.allowedCommands": {
"type": "array",
"items": {
"type": "string"
@@ -209,7 +209,7 @@
],
"description": "Commands that can be auto-executed when 'Always approve execute operations' is enabled"
},
- "roo-cline.vsCodeLmModelSelector": {
+ "kiloCode.vsCodeLmModelSelector": {
"type": "object",
"properties": {
"vendor": {
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: 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/core/Cline.ts b/src/core/Cline.ts
index ba171ce3fa1..e595180a034 100644
--- a/src/core/Cline.ts
+++ b/src/core/Cline.ts
@@ -71,7 +71,6 @@ import { McpHub } from "../services/mcp/McpHub"
import crypto from "crypto"
import { insertGroups } from "./diff/insert-groups"
import { OutputBuilder } from "../integrations/terminal/OutputBuilder"
-import { telemetryService } from "../services/telemetry/TelemetryService"
const cwd =
vscode.workspace.workspaceFolders?.map((folder) => folder.uri.fsPath).at(0) ?? path.join(os.homedir(), "Desktop") // may or may not exist but fs checking existence would immediately ask for permission which would be bad UX, need to come up with a better solution
@@ -191,12 +190,6 @@ export class Cline {
this.enableCheckpoints = enableCheckpoints
this.checkpointStorage = checkpointStorage
- if (historyItem) {
- telemetryService.captureTaskRestarted(this.taskId)
- } else {
- telemetryService.captureTaskCreated(this.taskId)
- }
-
// Initialize diffStrategy based on current state
this.updateDiffStrategy(
Experiments.isEnabled(experiments ?? {}, EXPERIMENT_IDS.DIFF_STRATEGY),
@@ -1468,10 +1461,6 @@ export class Cline {
await this.browserSession.closeBrowser()
}
- if (!block.partial) {
- telemetryService.captureToolUsage(this.taskId, block.name)
- }
-
// Validate tool use before execution
const { mode, customModes } = (await this.providerRef.deref()?.getState()) ?? {}
try {
@@ -2956,7 +2945,6 @@ export class Cline {
if (lastMessage && lastMessage.ask !== "command") {
// havent sent a command message yet so first send completion_result then command
await this.say("completion_result", result, undefined, false)
- telemetryService.captureTaskCompleted(this.taskId)
}
// complete command message
@@ -2974,7 +2962,6 @@ export class Cline {
commandResult = execCommandResult
} else {
await this.say("completion_result", result, undefined, false)
- telemetryService.captureTaskCompleted(this.taskId)
}
if (this.isSubTask) {
@@ -3144,7 +3131,6 @@ export class Cline {
userContent.push({ type: "text", text: environmentDetails })
await this.addToApiConversationHistory({ role: "user", content: userContent })
- telemetryService.captureConversationMessage(this.taskId, "user")
// since we sent off a placeholder api_req_started message to update the webview while waiting to actually start the API request (to load potential details for example), we need to update the text of that message
const lastApiReqIndex = findLastIndex(this.clineMessages, (m) => m.say === "api_req_started")
@@ -3346,7 +3332,6 @@ export class Cline {
role: "assistant",
content: [{ type: "text", text: assistantMessage }],
})
- telemetryService.captureConversationMessage(this.taskId, "assistant")
// NOTE: this comment is here for future reference - this was a workaround for userMessageContent not getting set to true. It was due to it not recursively calling for partial blocks when didRejectTool, so it would get stuck waiting for a partial block to complete before it could continue.
// in case the content blocks finished
@@ -3798,8 +3783,6 @@ export class Cline {
return
}
- telemetryService.captureCheckpointDiffed(this.taskId)
-
if (!previousCommitHash && mode === "checkpoint") {
const previousCheckpoint = this.clineMessages
.filter(({ say }) => say === "checkpoint_saved")
@@ -3851,8 +3834,6 @@ export class Cline {
return
}
- telemetryService.captureCheckpointCreated(this.taskId)
-
// Start the checkpoint process in the background.
service.saveCheckpoint(`Task: ${this.taskId}, Time: ${Date.now()}`).catch((err) => {
console.error("[Cline#checkpointSave] caught unexpected error, disabling checkpoints", err)
@@ -3884,8 +3865,6 @@ export class Cline {
try {
await service.restoreCheckpoint(commitHash)
- telemetryService.captureCheckpointRestored(this.taskId)
-
await this.providerRef.deref()?.postMessageToWebview({ type: "currentCheckpointUpdated", text: commitHash })
if (mode === "restore") {
diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts
index 72cf56d35b8..d18b17fe37d 100644
--- a/src/core/webview/ClineProvider.ts
+++ b/src/core/webview/ClineProvider.ts
@@ -53,8 +53,6 @@ import { Cline, ClineOptions } from "../Cline"
import { openMention } from "../mentions"
import { getNonce } from "./getNonce"
import { getUri } from "./getUri"
-import { telemetryService } from "../../services/telemetry/TelemetryService"
-import { TelemetrySetting } from "../../shared/TelemetrySetting"
/**
* https://github.com/microsoft/vscode-webview-ui-toolkit-samples/blob/main/default/weather-webview/src/providers/WeatherViewProvider.ts
@@ -85,9 +83,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
this.contextProxy = new ContextProxy(context)
ClineProvider.activeInstances.add(this)
- // Register this provider with the telemetry service to enable it to add properties like mode and provider
- telemetryService.setProvider(this)
-
this.workspaceTracker = new WorkspaceTracker(this)
this.configManager = new ConfigManager(this.context)
this.customModesManager = new CustomModesManager(this.context, async () => {
@@ -639,7 +634,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
- Roo Code
+ Kilo Code
@@ -719,7 +714,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
- Roo Code
+ Kilo Code
@@ -931,13 +926,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
),
)
- // If user already opted in to telemetry, enable telemetry service
- this.getStateToPostToWebview().then((state) => {
- const { telemetrySetting } = state
- const isOptedIn = telemetrySetting === "enabled"
- telemetryService.updateTelemetryState(isOptedIn)
- })
-
this.isViewLaunched = true
break
case "newTask":
@@ -1799,15 +1787,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
})
}
break
-
- case "telemetrySetting": {
- const telemetrySetting = message.text as TelemetrySetting
- await this.updateGlobalState("telemetrySetting", telemetrySetting)
- const isOptedIn = telemetrySetting === "enabled"
- telemetryService.updateTelemetryState(isOptedIn)
- await this.postStateToWebview()
- break
- }
}
},
null,
@@ -1867,12 +1846,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
* @param newMode The mode to switch to
*/
public async handleModeSwitch(newMode: Mode) {
- // Capture mode switch telemetry event
- const currentTaskId = this.getCurrentCline()?.taskId
- if (currentTaskId) {
- telemetryService.captureModeSwitch(currentTaskId, newMode)
- }
-
await this.updateGlobalState("mode", newMode)
// Load the saved API config for the new mode if it exists
@@ -2211,10 +2184,8 @@ export class ClineProvider implements vscode.WebviewViewProvider {
experiments,
maxOpenTabsContext,
browserToolEnabled,
- telemetrySetting,
showRooIgnoredFiles,
} = await this.getState()
- const telemetryKey = process.env.POSTHOG_API_KEY
const machineId = vscode.env.machineId
const allowedCommands = vscode.workspace.getConfiguration("roo-cline").get("allowedCommands") || []
@@ -2244,8 +2215,7 @@ export class ClineProvider implements vscode.WebviewViewProvider {
diffEnabled: diffEnabled ?? true,
enableCheckpoints: enableCheckpoints ?? true,
checkpointStorage: checkpointStorage ?? "task",
- shouldShowAnnouncement:
- telemetrySetting !== "unset" && lastShownAnnouncementId !== this.latestAnnouncementId,
+ shouldShowAnnouncement: lastShownAnnouncementId !== this.latestAnnouncementId,
allowedCommands,
soundVolume: soundVolume ?? 0.5,
browserViewportSize: browserViewportSize ?? "900x600",
@@ -2272,8 +2242,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
maxOpenTabsContext: maxOpenTabsContext ?? 20,
cwd,
browserToolEnabled: browserToolEnabled ?? true,
- telemetrySetting,
- telemetryKey,
machineId,
showRooIgnoredFiles: showRooIgnoredFiles ?? true,
}
@@ -2455,7 +2423,6 @@ export class ClineProvider implements vscode.WebviewViewProvider {
maxOpenTabsContext: stateValues.maxOpenTabsContext ?? 20,
openRouterUseMiddleOutTransform: stateValues.openRouterUseMiddleOutTransform ?? true,
browserToolEnabled: stateValues.browserToolEnabled ?? true,
- telemetrySetting: stateValues.telemetrySetting || "unset",
showRooIgnoredFiles: stateValues.showRooIgnoredFiles ?? true,
}
}
@@ -2535,47 +2502,4 @@ export class ClineProvider implements vscode.WebviewViewProvider {
public getMcpHub(): McpHub | undefined {
return this.mcpHub
}
-
- /**
- * Returns properties to be included in every telemetry event
- * This method is called by the telemetry service to get context information
- * like the current mode, API provider, etc.
- */
- public async getTelemetryProperties(): Promise> {
- const { mode, apiConfiguration } = await this.getState()
- const appVersion = this.context.extension?.packageJSON?.version
- const vscodeVersion = vscode.version
- const platform = process.platform
-
- const properties: Record = {
- vscodeVersion,
- platform,
- }
-
- // Add extension version
- if (appVersion) {
- properties.appVersion = appVersion
- }
-
- // Add current mode
- if (mode) {
- properties.mode = mode
- }
-
- // Add API provider
- if (apiConfiguration?.apiProvider) {
- properties.apiProvider = apiConfiguration.apiProvider
- }
-
- // Add model ID if available
- const currentCline = this.getCurrentCline()
- if (currentCline?.api) {
- const { id: modelId } = currentCline.api.getModel()
- if (modelId) {
- properties.modelId = modelId
- }
- }
-
- return properties
- }
}
diff --git a/src/core/webview/__tests__/ClineProvider.test.ts b/src/core/webview/__tests__/ClineProvider.test.ts
index 2e9fcdf3364..e87efadbdb6 100644
--- a/src/core/webview/__tests__/ClineProvider.test.ts
+++ b/src/core/webview/__tests__/ClineProvider.test.ts
@@ -444,7 +444,6 @@ describe("ClineProvider", () => {
experiments: experimentDefault,
maxOpenTabsContext: 20,
browserToolEnabled: true,
- telemetrySetting: "unset",
showRooIgnoredFiles: true,
}
@@ -1652,62 +1651,3 @@ describe("ContextProxy integration", () => {
expect(mockContextProxy.setValues).toBeDefined()
})
})
-
-describe("getTelemetryProperties", () => {
- let provider: ClineProvider
- let mockContext: vscode.ExtensionContext
- let mockOutputChannel: vscode.OutputChannel
- let mockCline: any
-
- beforeEach(() => {
- // Reset mocks
- jest.clearAllMocks()
-
- // Setup basic mocks
- mockContext = {
- globalState: {
- get: jest.fn().mockImplementation((key: string) => {
- if (key === "mode") return "code"
- if (key === "apiProvider") return "anthropic"
- return undefined
- }),
- update: jest.fn(),
- keys: jest.fn().mockReturnValue([]),
- },
- secrets: { get: jest.fn(), store: jest.fn(), delete: jest.fn() },
- extensionUri: {} as vscode.Uri,
- globalStorageUri: { fsPath: "/test/path" },
- extension: { packageJSON: { version: "1.0.0" } },
- } as unknown as vscode.ExtensionContext
-
- mockOutputChannel = { appendLine: jest.fn() } as unknown as vscode.OutputChannel
- provider = new ClineProvider(mockContext, mockOutputChannel)
-
- // Setup Cline instance with mocked getModel method
- const { Cline } = require("../../Cline")
- mockCline = new Cline()
- mockCline.api = {
- getModel: jest.fn().mockReturnValue({
- id: "claude-3-7-sonnet-20250219",
- info: { contextWindow: 200000 },
- }),
- }
- })
-
- test("includes basic properties in telemetry", async () => {
- const properties = await provider.getTelemetryProperties()
-
- expect(properties).toHaveProperty("vscodeVersion")
- expect(properties).toHaveProperty("platform")
- expect(properties).toHaveProperty("appVersion", "1.0.0")
- })
-
- test("includes model ID from current Cline instance if available", async () => {
- // Add mock Cline to stack
- await provider.addClineToStack(mockCline)
-
- const properties = await provider.getTelemetryProperties()
-
- expect(properties).toHaveProperty("modelId", "claude-3-7-sonnet-20250219")
- })
-})
diff --git a/src/extension.ts b/src/extension.ts
index d88bf2a251d..deec4b8a729 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -18,7 +18,6 @@ import { CodeActionProvider } from "./core/CodeActionProvider"
import { DIFF_VIEW_URI_SCHEME } from "./integrations/editor/DiffViewProvider"
import { handleUri, registerCommands, registerCodeActions } from "./activate"
import { McpServerManager } from "./services/mcp/McpServerManager"
-import { telemetryService } from "./services/telemetry/TelemetryService"
/**
* Built using https://github.com/microsoft/vscode-webview-ui-toolkit
@@ -51,9 +50,6 @@ export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(outputChannel)
outputChannel.appendLine("Roo-Code extension activated")
- // Initialize telemetry service after environment variables are loaded
- telemetryService.initialize()
-
// Get default commands from configuration.
const defaultCommands = vscode.workspace.getConfiguration("roo-cline").get("allowedCommands") || []
@@ -62,7 +58,6 @@ export function activate(context: vscode.ExtensionContext) {
context.globalState.update("allowedCommands", defaultCommands)
}
const sidebarProvider = new ClineProvider(context, outputChannel)
- telemetryService.setProvider(sidebarProvider)
context.subscriptions.push(
vscode.window.registerWebviewViewProvider(ClineProvider.sideBarId, sidebarProvider, {
@@ -151,5 +146,4 @@ export async function deactivate() {
outputChannel.appendLine("Roo-Code extension deactivated")
// Clean up MCP server manager
await McpServerManager.cleanup(extensionContext)
- telemetryService.shutdown()
}
diff --git a/src/services/telemetry/TelemetryService.ts b/src/services/telemetry/TelemetryService.ts
deleted file mode 100644
index d3ea8bfb5f2..00000000000
--- a/src/services/telemetry/TelemetryService.ts
+++ /dev/null
@@ -1,283 +0,0 @@
-import { PostHog } from "posthog-node"
-import * as vscode from "vscode"
-import { logger } from "../../utils/logging"
-
-// This forward declaration is needed to avoid circular dependencies
-interface ClineProviderInterface {
- // Gets telemetry properties to attach to every event
- getTelemetryProperties(): Promise>
-}
-
-/**
- * PostHogClient handles telemetry event tracking for the Roo Code extension
- * Uses PostHog analytics to track user interactions and system events
- * Respects user privacy settings and VSCode's global telemetry configuration
- */
-class PostHogClient {
- public static readonly EVENTS = {
- TASK: {
- CREATED: "Task Created",
- RESTARTED: "Task Reopened",
- COMPLETED: "Task Completed",
- CONVERSATION_MESSAGE: "Conversation Message",
- MODE_SWITCH: "Mode Switched",
- TOOL_USED: "Tool Used",
- CHECKPOINT_CREATED: "Checkpoint Created",
- CHECKPOINT_RESTORED: "Checkpoint Restored",
- CHECKPOINT_DIFFED: "Checkpoint Diffed",
- },
- }
-
- private static instance: PostHogClient
- private client: PostHog
- private distinctId: string = vscode.env.machineId
- private telemetryEnabled: boolean = false
- private providerRef: WeakRef | null = null
-
- private constructor() {
- this.client = new PostHog(process.env.POSTHOG_API_KEY || "", {
- host: "https://us.i.posthog.com",
- })
- }
-
- /**
- * Updates the telemetry state based on user preferences and VSCode settings
- * Only enables telemetry if both VSCode global telemetry is enabled and user has opted in
- * @param didUserOptIn Whether the user has explicitly opted into telemetry
- */
- public updateTelemetryState(didUserOptIn: boolean): void {
- this.telemetryEnabled = false
-
- // First check global telemetry level - telemetry should only be enabled when level is "all"
- const telemetryLevel = vscode.workspace.getConfiguration("telemetry").get("telemetryLevel", "all")
- const globalTelemetryEnabled = telemetryLevel === "all"
-
- // We only enable telemetry if global vscode telemetry is enabled
- if (globalTelemetryEnabled) {
- this.telemetryEnabled = didUserOptIn
- }
-
- // Update PostHog client state based on telemetry preference
- if (this.telemetryEnabled) {
- this.client.optIn()
- } else {
- this.client.optOut()
- }
- }
-
- /**
- * Gets or creates the singleton instance of PostHogClient
- * @returns The PostHogClient instance
- */
- public static getInstance(): PostHogClient {
- if (!PostHogClient.instance) {
- PostHogClient.instance = new PostHogClient()
- }
- return PostHogClient.instance
- }
-
- /**
- * Sets the ClineProvider reference to use for global properties
- * @param provider A ClineProvider instance to use
- */
- public setProvider(provider: ClineProviderInterface): void {
- this.providerRef = new WeakRef(provider)
- logger.debug("PostHogClient: ClineProvider reference set")
- }
-
- /**
- * Captures a telemetry event if telemetry is enabled
- * @param event The event to capture with its properties
- */
- public async capture(event: { event: string; properties?: any }): Promise {
- // Only send events if telemetry is enabled
- if (this.telemetryEnabled) {
- // Get global properties from ClineProvider if available
- let globalProperties: Record = {}
- const provider = this.providerRef?.deref()
-
- if (provider) {
- try {
- // Get the telemetry properties directly from the provider
- globalProperties = await provider.getTelemetryProperties()
- } catch (error) {
- // Log error but continue with capturing the event
- logger.error(
- `Error getting telemetry properties: ${error instanceof Error ? error.message : String(error)}`,
- )
- }
- }
-
- // Merge global properties with event-specific properties
- // Event properties take precedence in case of conflicts
- const mergedProperties = {
- ...globalProperties,
- ...(event.properties || {}),
- }
-
- this.client.capture({
- distinctId: this.distinctId,
- event: event.event,
- properties: mergedProperties,
- })
- }
- }
-
- /**
- * Checks if telemetry is currently enabled
- * @returns Whether telemetry is enabled
- */
- public isTelemetryEnabled(): boolean {
- return this.telemetryEnabled
- }
-
- /**
- * Shuts down the PostHog client
- */
- public async shutdown(): Promise {
- await this.client.shutdown()
- }
-}
-
-/**
- * TelemetryService wrapper class that defers PostHogClient initialization
- * This ensures that we only create the PostHogClient after environment variables are loaded
- */
-class TelemetryService {
- private client: PostHogClient | null = null
- private initialized = false
- private providerRef: WeakRef | null = null
-
- /**
- * Initialize the telemetry service with the PostHog client
- * This should be called after environment variables are loaded
- */
- public initialize(): void {
- if (this.initialized) {
- return
- }
-
- try {
- this.client = PostHogClient.getInstance()
- this.initialized = true
- } catch (error) {
- console.warn("Failed to initialize telemetry service:", error)
- }
- }
-
- /**
- * Sets the ClineProvider reference to use for global properties
- * @param provider A ClineProvider instance to use
- */
- public setProvider(provider: ClineProviderInterface): void {
- // Keep a weak reference to avoid memory leaks
- this.providerRef = new WeakRef(provider)
- // If client is initialized, pass the provider reference
- if (this.isReady()) {
- this.client!.setProvider(provider)
- }
- logger.debug("TelemetryService: ClineProvider reference set")
- }
-
- /**
- * Base method for all telemetry operations
- * Checks if the service is initialized before performing any operation
- * @returns Whether the service is ready to use
- */
- private isReady(): boolean {
- return this.initialized && this.client !== null
- }
-
- /**
- * Updates the telemetry state based on user preferences and VSCode settings
- * @param didUserOptIn Whether the user has explicitly opted into telemetry
- */
- public updateTelemetryState(didUserOptIn: boolean): void {
- if (!this.isReady()) return
- this.client!.updateTelemetryState(didUserOptIn)
- }
-
- /**
- * Captures a telemetry event if telemetry is enabled
- * @param event The event to capture with its properties
- */
- public capture(event: { event: string; properties?: any }): void {
- if (!this.isReady()) return
- this.client!.capture(event)
- }
-
- /**
- * Generic method to capture any type of event with specified properties
- * @param eventName The event name to capture
- * @param properties The event properties
- */
- public captureEvent(eventName: string, properties?: any): void {
- this.capture({ event: eventName, properties })
- }
-
- // Task events convenience methods
- public captureTaskCreated(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.CREATED, { taskId })
- }
-
- public captureTaskRestarted(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.RESTARTED, { taskId })
- }
-
- public captureTaskCompleted(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.COMPLETED, { taskId })
- }
-
- public captureConversationMessage(taskId: string, source: "user" | "assistant"): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.CONVERSATION_MESSAGE, {
- taskId,
- source,
- })
- }
-
- public captureModeSwitch(taskId: string, newMode: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.MODE_SWITCH, {
- taskId,
- newMode,
- })
- }
-
- public captureToolUsage(taskId: string, tool: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.TOOL_USED, {
- taskId,
- tool,
- })
- }
-
- public captureCheckpointCreated(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.CHECKPOINT_CREATED, { taskId })
- }
-
- public captureCheckpointDiffed(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.CHECKPOINT_DIFFED, { taskId })
- }
-
- public captureCheckpointRestored(taskId: string): void {
- this.captureEvent(PostHogClient.EVENTS.TASK.CHECKPOINT_RESTORED, { taskId })
- }
-
- /**
- * Checks if telemetry is currently enabled
- * @returns Whether telemetry is enabled
- */
- public isTelemetryEnabled(): boolean {
- if (!this.isReady()) return false
- return this.client!.isTelemetryEnabled()
- }
-
- /**
- * Shuts down the PostHog client
- */
- public async shutdown(): Promise {
- if (!this.isReady()) return
- await this.client!.shutdown()
- }
-}
-
-// Export a singleton instance of the telemetry service wrapper
-export const telemetryService = new TelemetryService()
diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts
index 73f8127c53a..fb714e45b30 100644
--- a/src/shared/ExtensionMessage.ts
+++ b/src/shared/ExtensionMessage.ts
@@ -8,7 +8,6 @@ import { Mode, CustomModePrompts, ModeConfig } from "./modes"
import { CustomSupportPrompts } from "./support-prompt"
import { ExperimentId } from "./experiments"
import { CheckpointStorage } from "./checkpoints"
-import { TelemetrySetting } from "./TelemetrySetting"
export interface LanguageModelChatSelector {
vendor?: string
@@ -139,8 +138,6 @@ export interface ExtensionState {
toolRequirements?: Record // Map of tool names to their requirements (e.g. {"apply_diff": true} if diffEnabled)
maxOpenTabsContext: number // Maximum number of VSCode open tabs to include in context (0-500)
cwd?: string // Current working directory
- telemetrySetting: TelemetrySetting
- telemetryKey?: string
machineId?: string
showRooIgnoredFiles: boolean // Whether to show .rooignore'd files in listings
}
diff --git a/src/shared/TelemetrySetting.ts b/src/shared/TelemetrySetting.ts
deleted file mode 100644
index 61444b5a090..00000000000
--- a/src/shared/TelemetrySetting.ts
+++ /dev/null
@@ -1 +0,0 @@
-export type TelemetrySetting = "unset" | "enabled" | "disabled"
diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts
index 724d7e5983b..5494cda7112 100644
--- a/src/shared/WebviewMessage.ts
+++ b/src/shared/WebviewMessage.ts
@@ -100,7 +100,6 @@ export interface WebviewMessage {
| "humanRelayResponse"
| "humanRelayCancel"
| "browserToolEnabled"
- | "telemetrySetting"
| "showRooIgnoredFiles"
text?: string
disabled?: boolean
diff --git a/src/shared/globalState.ts b/src/shared/globalState.ts
index 540b7e72be7..b1a4a86891f 100644
--- a/src/shared/globalState.ts
+++ b/src/shared/globalState.ts
@@ -98,7 +98,6 @@ export const GLOBAL_STATE_KEYS = [
"browserToolEnabled",
"lmStudioSpeculativeDecodingEnabled",
"lmStudioDraftModelId",
- "telemetrySetting",
"showRooIgnoredFiles",
] as const
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
+