From 0f263bfefeabdcd95c42269c3ca5cbbbb7854586 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 9 Sep 2025 03:16:44 -0400 Subject: [PATCH] Hide experimental models --- packages/opencode/src/flag/flag.ts | 1 + packages/opencode/src/provider/models.ts | 1 + packages/opencode/src/provider/provider.ts | 15 ++++++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts index a9d366e8..4af827d8 100644 --- a/packages/opencode/src/flag/flag.ts +++ b/packages/opencode/src/flag/flag.ts @@ -7,6 +7,7 @@ export namespace Flag { export const OPENCODE_PERMISSION = process.env["OPENCODE_PERMISSION"] export const OPENCODE_DISABLE_DEFAULT_PLUGINS = truthy("OPENCODE_DISABLE_DEFAULT_PLUGINS") export const OPENCODE_DISABLE_LSP_DOWNLOAD = truthy("OPENCODE_DISABLE_LSP_DOWNLOAD") + export const OPENCODE_ENABLE_EXPERIMENTAL_MODELS = truthy("OPENCODE_ENABLE_EXPERIMENTAL_MODELS") function truthy(key: string) { const value = process.env[key]?.toLowerCase() diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts index 56350ff2..8cd03088 100644 --- a/packages/opencode/src/provider/models.ts +++ b/packages/opencode/src/provider/models.ts @@ -28,6 +28,7 @@ export namespace ModelsDev { context: z.number(), output: z.number(), }), + experimental: z.boolean().optional(), options: z.record(z.any()), }) .openapi({ diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 37d7aa7c..9e0ed1d8 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -11,6 +11,7 @@ import { NamedError } from "../util/error" import { Auth } from "../auth" import { Instance } from "../project/instance" import { Global } from "../global" +import { Flag } from "../flag/flag" export namespace Provider { const log = Log.create({ service: "provider" }) @@ -286,14 +287,18 @@ export namespace Provider { for (const [providerID, provider] of configProviders) { mergeProvider(providerID, provider.options ?? {}, "config") } + console.log("!@#!@#", Flag.OPENCODE_ENABLE_EXPERIMENTAL_MODELS) for (const [providerID, provider] of Object.entries(providers)) { - // Filter out blacklisted models const filteredModels = Object.fromEntries( - Object.entries(provider.info.models).filter( - ([modelID]) => - modelID !== "gpt-5-chat-latest" && !(providerID === "openrouter" && modelID === "openai/gpt-5-chat"), - ), + Object.entries(provider.info.models) + // Filter out blacklisted models + .filter( + ([modelID]) => + modelID !== "gpt-5-chat-latest" && !(providerID === "openrouter" && modelID === "openai/gpt-5-chat"), + ) + // Filter out experimental models + .filter(([, model]) => !model.experimental || Flag.OPENCODE_ENABLE_EXPERIMENTAL_MODELS), ) provider.info.models = filteredModels