Browse Source

tui: fix model selection for models with nested paths

Users can now select models with multiple slashes like 'openrouter/google/gemini-2.5-pro'
in the TUI. Previously the TUI would only parse the first two parts of the model
path, showing 'Invalid model openrouter/google' for nested models.
Dax Raad 3 months ago
parent
commit
c49f5939a2
1 changed files with 4 additions and 4 deletions
  1. 4 4
      packages/opencode/src/cli/cmd/tui/context/local.tsx

+ 4 - 4
packages/opencode/src/cli/cmd/tui/context/local.tsx

@@ -9,6 +9,7 @@ import { iife } from "@/util/iife"
 import { createSimpleContext } from "./helper"
 import { useToast } from "../ui/toast"
 import { createEventBus } from "@solid-primitives/event-bus"
+import { Provider } from "@/provider/provider"
 
 export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
   name: "Local",
@@ -38,7 +39,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
           agent.set(props.initialAgent)
         }
         if (props.initialModel) {
-          const [providerID, modelID] = props.initialModel.split("/")
+          const { providerID, modelID } = Provider.parseModel(props.initialModel)
           if (!providerID || !modelID)
             return toast.show({
               variant: "warning",
@@ -150,7 +151,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
 
       const fallbackModel = createMemo(() => {
         if (sync.data.config.model) {
-          const [providerID, modelID] = sync.data.config.model.split("/")
+          const { providerID, modelID } = Provider.parseModel(sync.data.config.model)
           if (isModelValid({ providerID, modelID })) {
             return {
               providerID,
@@ -243,8 +244,7 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
     const setInitialPrompt = createEventBus<string>()
 
     onMount(() => {
-      if (props.initialPrompt)
-        setInitialPrompt.emit(props.initialPrompt)
+      if (props.initialPrompt) setInitialPrompt.emit(props.initialPrompt)
     })
 
     const result = {