opencode/packages/storybook/.storybook/mocks/app/hooks/use-providers.ts
usrnk1 f7d5a1cbc7
feat(desktop): align provider onboarding dialogs (#36733)
Co-authored-by: Brendan Allan <git@brendonovich.dev>
2026-07-17 16:54:20 +08:00

56 lines
1.4 KiB
TypeScript

const model_id = "claude-3-7-sonnet"
export const popularProviders = [
"opencode",
"opencode-go",
"anthropic",
"github-copilot",
"openai",
"google",
"openrouter",
"vercel",
]
const provider = {
id: "anthropic",
name: "Anthropic",
models: {
[model_id]: {
id: model_id,
name: "Claude 3.7 Sonnet",
cost: { input: 1, output: 1 },
variants: { fast: {}, thinking: {} },
},
},
}
const popular = [
{ id: "opencode", name: "OpenCode Zen", models: {} },
{ id: "opencode-go", name: "OpenCode Go", models: {} },
{ id: "openai", name: "OpenAI", models: {} },
provider,
{ id: "google", name: "Google", models: {} },
{ id: "github-copilot", name: "GitHub Copilot", models: {} },
]
const catalog = [
...popular,
{ id: "openrouter", name: "OpenRouter", models: {} },
{ id: "vercel", name: "Vercel AI Gateway", models: {} },
{ id: "302ai", name: "302.AI", models: {} },
{ id: "abacus", name: "Abacus", models: {} },
{ id: "abliteration", name: "abliteration.ai", models: {} },
{ id: "alibaba", name: "Alibaba", models: {} },
{ id: "alibaba-cn", name: "Alibaba (China)", models: {} },
{ id: "alibaba-coding-plan", name: "Alibaba Coding Plan", models: {} },
]
export function useProviders() {
return {
all: () => new Map(catalog.map((item) => [item.id, item])),
default: () => ({ anthropic: model_id }),
connected: () => [provider],
paid: () => [provider],
popular: () => popular,
}
}