fix: preserve user-selected variant on first message instead of overriding with fallback chain default

First message variant gate was unconditionally overwriting message.variant
with the fallback chain value (e.g. 'medium' for Hephaestus), ignoring
any variant the user had already selected via OpenCode UI.

Now checks message.variant === undefined before applying the resolved
variant, matching the behavior already used for subsequent messages.

Closes #1861
This commit is contained in:
YeonGyu-Kim
2026-02-16 13:44:54 +09:00
parent 1f5e1f3f89
commit 0c1624a3d2
2 changed files with 126 additions and 6 deletions
+8 -6
View File
@@ -56,12 +56,14 @@ export function createChatMessageHandler(args: {
const message = output.message
if (firstMessageVariantGate.shouldOverride(input.sessionID)) {
const variant =
input.model && input.agent
? resolveVariantForModel(pluginConfig, input.agent, input.model)
: resolveAgentVariant(pluginConfig, input.agent)
if (variant !== undefined) {
message["variant"] = variant
if (message["variant"] === undefined) {
const variant =
input.model && input.agent
? resolveVariantForModel(pluginConfig, input.agent, input.model)
: resolveAgentVariant(pluginConfig, input.agent)
if (variant !== undefined) {
message["variant"] = variant
}
}
firstMessageVariantGate.markApplied(input.sessionID)
} else {