fix: strip reasoning effort on prompt model override, show actual model badge

When a prompt file overrides the turn model, the original agent's
reasoning effort was carried through even when the target model does
not support it. This caused session.create failures for models like
Claude Opus 4.5 which reject reasoning effort configuration.

Now: if the target model's reasoning capabilities are unknown
(supportedReasoningEfforts undefined) or it's an unresolved model
reference, reasoning effort is stripped entirely.

Also adds a model override badge on assistant messages when the run
used a different model than the session's primary agent. The badge
reads the actual model from the run record (SessionRunRecord.agents)
rather than inferring from the prompt invocation metadata.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-04-02 16:30:32 +02:00
co-authored by Copilot
parent a18803758b
commit 10316a2871
2 changed files with 40 additions and 3 deletions
+10 -3
View File
@@ -2944,9 +2944,16 @@ export class AryxAppService extends EventEmitter<AppServiceEvents> {
let didChange = false;
const agents = pattern.agents.map((agent) => {
const reasoningEffort = resolvedModel
? resolveReasoningEffort(resolvedModel, agent.reasoningEffort)
: agent.reasoningEffort;
// When overriding the model, re-normalize reasoning effort for the target model.
// If the target model's reasoning capabilities are unknown (supportedReasoningEfforts
// is undefined — common for dynamically-discovered models), strip reasoning effort
// entirely to avoid sending it to a model that may not support it.
let reasoningEffort: ReasoningEffort | undefined;
if (resolvedModel?.supportedReasoningEfforts) {
reasoningEffort = resolveReasoningEffort(resolvedModel, agent.reasoningEffort);
} else {
reasoningEffort = undefined;
}
if (agent.model === effectiveModelId && agent.reasoningEffort === reasoningEffort) {
return agent;