Skip to content

Commit 445e252

Browse files
authored
[PROTOBUS] Move requestVsCodeLmModels to protobus (RooCodeInc#3344)
* Task Favorites * getOllamaModels protobus migration * VsCodeLmModels protobus migration * cleanup
1 parent 489a051 commit 445e252

File tree

10 files changed

+302
-34
lines changed

10 files changed

+302
-34
lines changed

.changeset/old-jeans-applaud.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"claude-dev": patch
3+
---
4+
5+
requestVsCodeLmModels protobus migration

proto/models.proto

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,21 @@ import "common.proto";
1010
service ModelsService {
1111
// Fetches available models from Ollama
1212
rpc getOllamaModels(StringRequest) returns (StringArray);
13-
1413
// Fetches available models from LM Studio
1514
rpc getLmStudioModels(StringRequest) returns (StringArray);
15+
// Fetches available models from VS Code LM API
16+
rpc getVsCodeLmModels(EmptyRequest) returns (VsCodeLmModelsArray);
17+
}
18+
19+
// List of VS Code LM models
20+
message VsCodeLmModelsArray {
21+
repeated VsCodeLmModel models = 1;
22+
}
23+
24+
// Structure representing a VS Code LM model
25+
message VsCodeLmModel {
26+
string vendor = 1;
27+
string family = 2;
28+
string version = 3;
29+
string id = 4;
1630
}

proto/task.proto

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,3 @@ message NewTaskRequest {
2727
string text = 2;
2828
repeated string images = 3;
2929
}
30-

src/core/controller/index.ts

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import WorkspaceTracker from "@integrations/workspace/WorkspaceTracker"
1919
import { ClineAccountService } from "@services/account/ClineAccountService"
2020
import { BrowserSession } from "@services/browser/BrowserSession"
2121
import { McpHub } from "@services/mcp/McpHub"
22-
import { searchWorkspaceFiles } from "@services/search/file-search"
2322
import { telemetryService } from "@/services/posthog/telemetry/TelemetryService"
2423
import { ApiProvider, ModelInfo } from "@shared/api"
2524
import { ChatContent } from "@shared/ChatContent"
@@ -28,11 +27,10 @@ import { ExtensionMessage, ExtensionState, Invoke, Platform } from "@shared/Exte
2827
import { HistoryItem } from "@shared/HistoryItem"
2928
import { McpDownloadResponse, McpMarketplaceCatalog, McpServer } from "@shared/mcp"
3029
import { TelemetrySetting } from "@shared/TelemetrySetting"
31-
import { ClineCheckpointRestore, WebviewMessage } from "@shared/WebviewMessage"
30+
import { WebviewMessage } from "@shared/WebviewMessage"
3231
import { fileExistsAtPath } from "@utils/fs"
33-
import { searchCommits, getWorkingState } from "@utils/git"
32+
import { getWorkingState } from "@utils/git"
3433
import { extractCommitMessage } from "@integrations/git/commit-message-generator"
35-
import { getWorkspacePath } from "@utils/path"
3634
import { getTotalTasksSize } from "@utils/storage"
3735
import { openMention } from "../mentions"
3836
import { ensureMcpServersDirectoryExists, ensureSettingsDirectoryExists, GlobalFileNames } from "../storage/disk"
@@ -332,10 +330,6 @@ export class Controller {
332330
case "resetState":
333331
await this.resetState()
334332
break
335-
case "requestVsCodeLmModels":
336-
const vsCodeLmModels = await this.getVsCodeLmModels()
337-
this.postMessageToWebview({ type: "vsCodeLmModels", vsCodeLmModels })
338-
break
339333
case "refreshOpenRouterModels":
340334
await this.refreshOpenRouterModels()
341335
break
@@ -884,18 +878,6 @@ export class Controller {
884878
}
885879
}
886880

887-
// VSCode LM API
888-
889-
private async getVsCodeLmModels() {
890-
try {
891-
const models = await vscode.lm.selectChatModels({})
892-
return models || []
893-
} catch (error) {
894-
console.error("Error fetching VS Code LM models:", error)
895-
return []
896-
}
897-
}
898-
899881
// Account
900882

901883
async fetchUserCreditsData() {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Controller } from ".."
2+
import { EmptyRequest } from "../../../shared/proto/common"
3+
import { VsCodeLmModelsArray } from "../../../shared/proto/models"
4+
import * as vscode from "vscode"
5+
import { convertVsCodeNativeModelsToProtoModels } from "../../../shared/proto-conversions/models/vscode-lm-models-conversion"
6+
7+
/**
8+
* Fetches available models from VS Code LM API
9+
* @param controller The controller instance
10+
* @param request Empty request
11+
* @returns Array of VS Code LM models
12+
*/
13+
export async function getVsCodeLmModels(controller: Controller, request: EmptyRequest): Promise<VsCodeLmModelsArray> {
14+
try {
15+
const models = await vscode.lm.selectChatModels({})
16+
17+
const protoModels = convertVsCodeNativeModelsToProtoModels(models || [])
18+
19+
return VsCodeLmModelsArray.create({ models: protoModels })
20+
} catch (error) {
21+
console.error("Error fetching VS Code LM models:", error)
22+
return VsCodeLmModelsArray.create({ models: [] })
23+
}
24+
}

src/core/controller/models/methods.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import { registerMethod } from "./index"
66
import { getLmStudioModels } from "./getLmStudioModels"
77
import { getOllamaModels } from "./getOllamaModels"
8+
import { getVsCodeLmModels } from "./getVsCodeLmModels"
89

910
// Register all models service methods
1011
export function registerAllMethods(): void {
1112
// Register each method with the registry
1213
registerMethod("getLmStudioModels", getLmStudioModels)
1314
registerMethod("getOllamaModels", getOllamaModels)
15+
registerMethod("getVsCodeLmModels", getVsCodeLmModels)
1416
}

src/shared/ExtensionMessage.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ export interface ExtensionMessage {
2828
| "requestyModels"
2929
| "mcpServers"
3030
| "relinquishControl"
31-
| "vsCodeLmModels"
32-
| "requestVsCodeLmModels"
3331
| "authCallback"
3432
| "mcpMarketplaceCatalog"
3533
| "mcpDownloadDetails"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { VsCodeLmModel } from "../../proto/models"
2+
3+
/**
4+
* Represents a VS Code language model in the native VS Code format
5+
*/
6+
export interface VsCodeNativeModel {
7+
vendor?: string
8+
family?: string
9+
version?: string
10+
id?: string
11+
}
12+
13+
/**
14+
* Converts VS Code native model format to protobuf format
15+
*/
16+
export function convertVsCodeNativeModelsToProtoModels(models: VsCodeNativeModel[]): VsCodeLmModel[] {
17+
return (models || []).map((model) => ({
18+
vendor: model.vendor || "",
19+
family: model.family || "",
20+
version: model.version || "",
21+
id: model.id || "",
22+
}))
23+
}

src/shared/proto/models.ts

Lines changed: 222 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)