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.
This commit is contained in:
Dax Raad
2025-11-03 19:52:38 -05:00
parent 63862b1609
commit c49f5939a2

View File

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