Files
stanp-opencode/src/provider.ts
T
StanPonomarev 1c48fab124
CI / verify (pull_request) Successful in 10s
fix: update deps for opencode 2.0.4
2026-09-16 09:46:01 +02:00

33 lines
1.4 KiB
TypeScript

import type { Plugin } from "@opencode/plugin";
import type { ModelInfo } from "@opencode/client";
import { z } from "zod";
function priority(model: ModelInfo) {
if (model.modelID !== "gpt-5.6-luna") return undefined;
for (const settings of [model.settings, ...model.variants.map((variant) => variant.settings)]) {
if (settings?.serviceTier === "priority" || settings?.serviceTier === "fast")
return settings.serviceTier;
}
const baseURL = model.settings?.baseURL;
if (model.package !== "@opencode/ai/providers/openai" && model.package !== "@ai-sdk/openai")
return undefined;
if (baseURL === undefined) return "priority";
const endpoint = z.url().safeParse(baseURL);
if (!endpoint.success) return undefined;
const url = new URL(endpoint.data);
return url.origin === "https://api.openai.com" && /^\/v1\/?$/.test(url.pathname)
? "priority"
: undefined;
}
export async function discover(context: Plugin.Context, providerID: string) {
// Native lists already apply activation, integrations, configuration, and model transforms.
const { data } = await context.model.list();
const models = new Map<string, { model: ModelInfo; serviceTier: string | undefined }>();
for (const model of data) {
if (model.providerID === providerID && model.enabled)
models.set(model.id, { model, serviceTier: priority(model) });
}
return models;
}