28 lines
850 B
TypeScript
28 lines
850 B
TypeScript
import type { Provider } from "@opencode-ai/sdk/v2"
|
|
|
|
export function parse(value: string) {
|
|
const [providerID, ...modelID] = value.split("/")
|
|
return { providerID, modelID: modelID.join("/") }
|
|
}
|
|
|
|
export function index(list: Provider[] | undefined) {
|
|
return new Map((list ?? []).map((item) => [item.id, item] as const))
|
|
}
|
|
|
|
export function get(list: Provider[] | ReadonlyMap<string, Provider> | undefined, providerID: string, modelID: string) {
|
|
const provider =
|
|
list instanceof Map
|
|
? list.get(providerID)
|
|
: Array.isArray(list)
|
|
? list.find((item) => item.id === providerID)
|
|
: undefined
|
|
return provider?.models[modelID]
|
|
}
|
|
|
|
export function name(
|
|
list: Provider[] | ReadonlyMap<string, Provider> | undefined,
|
|
providerID: string,
|
|
modelID: string,
|
|
) {
|
|
return get(list, providerID, modelID)?.name ?? modelID
|
|
}
|