File tree Expand file tree Collapse file tree 8 files changed +58
-34
lines changed
webview-ui/src/components/settings Expand file tree Collapse file tree 8 files changed +58
-34
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ " claude-dev " : patch
3+ ---
4+
5+ getLmStudioModels protobus migration
Original file line number Diff line number Diff line change @@ -10,4 +10,7 @@ import "common.proto";
1010service ModelsService {
1111 // Fetches available models from Ollama
1212 rpc getOllamaModels (StringRequest ) returns (StringArray );
13+
14+ // Fetches available models from LM Studio
15+ rpc getLmStudioModels (StringRequest ) returns (StringArray );
1316}
Original file line number Diff line number Diff line change @@ -335,13 +335,6 @@ export class Controller {
335335 case "resetState" :
336336 await this . resetState ( )
337337 break
338- case "requestLmStudioModels" :
339- const lmStudioModels = await this . getLmStudioModels ( message . text )
340- this . postMessageToWebview ( {
341- type : "lmStudioModels" ,
342- lmStudioModels,
343- } )
344- break
345338 case "requestVsCodeLmModels" :
346339 const vsCodeLmModels = await this . getVsCodeLmModels ( )
347340 this . postMessageToWebview ( { type : "vsCodeLmModels" , vsCodeLmModels } )
@@ -906,25 +899,6 @@ export class Controller {
906899 }
907900 }
908901
909- // LM Studio
910-
911- async getLmStudioModels ( baseUrl ?: string ) {
912- try {
913- if ( ! baseUrl ) {
914- baseUrl = "http://localhost:1234"
915- }
916- if ( ! URL . canParse ( baseUrl ) ) {
917- return [ ]
918- }
919- const response = await axios . get ( `${ baseUrl } /v1/models` )
920- const modelsArray = response . data ?. data ?. map ( ( model : any ) => model . id ) || [ ]
921- const models = [ ...new Set < string > ( modelsArray ) ]
922- return models
923- } catch ( error ) {
924- return [ ]
925- }
926- }
927-
928902 // Account
929903
930904 async fetchUserCreditsData ( ) {
Original file line number Diff line number Diff line change 1+ import { Controller } from ".."
2+ import { StringArray , StringRequest } from "../../../shared/proto/common"
3+ import axios from "axios"
4+
5+ /**
6+ * Fetches available models from LM Studio
7+ * @param controller The controller instance
8+ * @param request The request containing the base URL (optional)
9+ * @returns Array of model names
10+ */
11+ export async function getLmStudioModels ( controller : Controller , request : StringRequest ) : Promise < StringArray > {
12+ try {
13+ let baseUrl = request . value || "http://localhost:1234"
14+
15+ if ( ! URL . canParse ( baseUrl ) ) {
16+ return StringArray . create ( { values : [ ] } )
17+ }
18+
19+ const response = await axios . get ( `${ baseUrl } /v1/models` )
20+ const modelsArray = response . data ?. data ?. map ( ( model : any ) => model . id ) || [ ]
21+ const models = [ ...new Set < string > ( modelsArray ) ]
22+
23+ return StringArray . create ( { values : models } )
24+ } catch ( error ) {
25+ return StringArray . create ( { values : [ ] } )
26+ }
27+ }
Original file line number Diff line number Diff line change 33
44// Import all method implementations
55import { registerMethod } from "./index"
6+ import { getLmStudioModels } from "./getLmStudioModels"
67import { getOllamaModels } from "./getOllamaModels"
78
89// Register all models service methods
910export function registerAllMethods ( ) : void {
1011 // Register each method with the registry
12+ registerMethod ( "getLmStudioModels" , getLmStudioModels )
1113 registerMethod ( "getOllamaModels" , getOllamaModels )
1214}
Original file line number Diff line number Diff line change @@ -18,7 +18,6 @@ export interface WebviewMessage {
1818 | "selectImages"
1919 | "showTaskWithId"
2020 | "resetState"
21- | "requestLmStudioModels"
2221 | "openInBrowser"
2322 | "openMention"
2423 | "showChatView"
Original file line number Diff line number Diff line change @@ -197,10 +197,17 @@ const ApiOptions = ({
197197 setOllamaModels ( [ ] )
198198 }
199199 } else if ( selectedProvider === "lmstudio" ) {
200- vscode . postMessage ( {
201- type : "requestLmStudioModels" ,
202- text : apiConfiguration ?. lmStudioBaseUrl ,
203- } )
200+ try {
201+ const response = await ModelsServiceClient . getLmStudioModels ( {
202+ value : apiConfiguration ?. lmStudioBaseUrl || "" ,
203+ } )
204+ if ( response && response . values ) {
205+ setLmStudioModels ( response . values )
206+ }
207+ } catch ( error ) {
208+ console . error ( "Failed to fetch LM Studio models:" , error )
209+ setLmStudioModels ( [ ] )
210+ }
204211 } else if ( selectedProvider === "vscode-lm" ) {
205212 vscode . postMessage ( { type : "requestVsCodeLmModels" } )
206213 }
@@ -217,9 +224,7 @@ const ApiOptions = ({
217224
218225 const handleMessage = useCallback ( ( event : MessageEvent ) => {
219226 const message : ExtensionMessage = event . data
220- if ( message . type === "lmStudioModels" && message . lmStudioModels ) {
221- setLmStudioModels ( message . lmStudioModels )
222- } else if ( message . type === "vsCodeLmModels" && message . vsCodeLmModels ) {
227+ if ( message . type === "vsCodeLmModels" && message . vsCodeLmModels ) {
223228 setVsCodeLmModels ( message . vsCodeLmModels )
224229 }
225230 } , [ ] )
You can’t perform that action at this time.
0 commit comments