feat: add variants toggle (#6325)

Co-authored-by: Github Action <action@github.com>
This commit is contained in:
Aiden Cline
2025-12-29 19:43:50 -08:00
committed by GitHub
parent e1dd9c4ccb
commit ed0c0d90be
14 changed files with 339 additions and 52 deletions

View File

@@ -74,6 +74,14 @@ export namespace LLM {
}
const provider = await Provider.getProvider(input.model.providerID)
const variant = input.model.variants && input.user.variant ? input.model.variants[input.user.variant] : undefined
const options = pipe(
ProviderTransform.options(input.model, input.sessionID, provider.options),
mergeDeep(input.small ? ProviderTransform.smallOptions(input.model) : {}),
mergeDeep(input.model.options),
mergeDeep(input.agent.options),
mergeDeep(variant && !variant.disabled ? variant : {}),
)
const params = await Plugin.trigger(
"chat.params",
@@ -90,13 +98,7 @@ export namespace LLM {
: undefined,
topP: input.agent.topP ?? ProviderTransform.topP(input.model),
topK: ProviderTransform.topK(input.model),
options: pipe(
{},
mergeDeep(ProviderTransform.options(input.model, input.sessionID, provider.options)),
input.small ? mergeDeep(ProviderTransform.smallOptions(input.model)) : mergeDeep({}),
mergeDeep(input.model.options),
mergeDeep(input.agent.options),
),
options,
},
)

View File

@@ -1,8 +1,6 @@
import { BusEvent } from "@/bus/bus-event"
import { Bus } from "@/bus"
import z from "zod"
import { NamedError } from "@opencode-ai/util/error"
import { Message } from "./message"
import { APICallError, convertToModelMessages, LoadAPIKeyError, type ModelMessage, type UIMessage } from "ai"
import { Identifier } from "../id/id"
import { LSP } from "../lsp"
@@ -308,6 +306,7 @@ export namespace MessageV2 {
}),
system: z.string().optional(),
tools: z.record(z.string(), z.boolean()).optional(),
variant: z.string().optional(),
}).meta({
ref: "UserMessage",
})

View File

@@ -90,6 +90,7 @@ export namespace SessionPrompt {
noReply: z.boolean().optional(),
tools: z.record(z.string(), z.boolean()).optional(),
system: z.string().optional(),
variant: z.string().optional(),
parts: z.array(
z.discriminatedUnion("type", [
MessageV2.TextPart.omit({
@@ -727,6 +728,7 @@ export namespace SessionPrompt {
agent: agent.name,
model: input.model ?? agent.model ?? (await lastModel(input.sessionID)),
system: input.system,
variant: input.variant,
}
const parts = await Promise.all(
@@ -1267,6 +1269,7 @@ export namespace SessionPrompt {
model: z.string().optional(),
arguments: z.string(),
command: z.string(),
variant: z.string().optional(),
})
export type CommandInput = z.infer<typeof CommandInput>
const bashRegex = /!`([^`]+)`/g
@@ -1369,6 +1372,7 @@ export namespace SessionPrompt {
model,
agent: agentName,
parts,
variant: input.variant,
})) as MessageV2.WithParts
Bus.publish(Command.Event.Executed, {