|
|
@@ -64,19 +64,23 @@ import type { ModelRecord, RouterModels } from "@roo/api"
|
|
|
import { useRouterModels } from "./useRouterModels"
|
|
|
import { useOpenRouterModelProviders } from "./useOpenRouterModelProviders"
|
|
|
import { useLmStudioModels } from "./useLmStudioModels"
|
|
|
+import { useOllamaModels } from "./useOllamaModels"
|
|
|
|
|
|
export const useSelectedModel = (apiConfiguration?: ProviderSettings) => {
|
|
|
const provider = apiConfiguration?.apiProvider || "anthropic"
|
|
|
const openRouterModelId = provider === "openrouter" ? apiConfiguration?.openRouterModelId : undefined
|
|
|
const lmStudioModelId = provider === "lmstudio" ? apiConfiguration?.lmStudioModelId : undefined
|
|
|
+ const ollamaModelId = provider === "ollama" ? apiConfiguration?.ollamaModelId : undefined
|
|
|
|
|
|
const routerModels = useRouterModels()
|
|
|
const openRouterModelProviders = useOpenRouterModelProviders(openRouterModelId)
|
|
|
const lmStudioModels = useLmStudioModels(lmStudioModelId)
|
|
|
+ const ollamaModels = useOllamaModels(ollamaModelId)
|
|
|
|
|
|
const { id, info } =
|
|
|
apiConfiguration &&
|
|
|
(typeof lmStudioModelId === "undefined" || typeof lmStudioModels.data !== "undefined") &&
|
|
|
+ (typeof ollamaModelId === "undefined" || typeof ollamaModels.data !== "undefined") &&
|
|
|
typeof routerModels.data !== "undefined" &&
|
|
|
typeof openRouterModelProviders.data !== "undefined"
|
|
|
? getSelectedModel({
|
|
|
@@ -85,6 +89,7 @@ export const useSelectedModel = (apiConfiguration?: ProviderSettings) => {
|
|
|
routerModels: routerModels.data,
|
|
|
openRouterModelProviders: openRouterModelProviders.data,
|
|
|
lmStudioModels: lmStudioModels.data,
|
|
|
+ ollamaModels: ollamaModels.data,
|
|
|
})
|
|
|
: { id: anthropicDefaultModelId, info: undefined }
|
|
|
|
|
|
@@ -109,12 +114,14 @@ function getSelectedModel({
|
|
|
routerModels,
|
|
|
openRouterModelProviders,
|
|
|
lmStudioModels,
|
|
|
+ ollamaModels,
|
|
|
}: {
|
|
|
provider: ProviderName
|
|
|
apiConfiguration: ProviderSettings
|
|
|
routerModels: RouterModels
|
|
|
openRouterModelProviders: Record<string, ModelInfo>
|
|
|
lmStudioModels: ModelRecord | undefined
|
|
|
+ ollamaModels: ModelRecord | undefined
|
|
|
}): { id: string; info: ModelInfo | undefined } {
|
|
|
// the `undefined` case are used to show the invalid selection to prevent
|
|
|
// users from seeing the default model if their selection is invalid
|
|
|
@@ -255,7 +262,7 @@ function getSelectedModel({
|
|
|
}
|
|
|
case "ollama": {
|
|
|
const id = apiConfiguration.ollamaModelId ?? ""
|
|
|
- const info = routerModels.ollama && routerModels.ollama[id]
|
|
|
+ const info = ollamaModels && ollamaModels[apiConfiguration.ollamaModelId!]
|
|
|
return {
|
|
|
id,
|
|
|
info: info || undefined,
|