show effective model in agent comment/review footers (#618)
`toolState.model` was set only to `payload.model` (the stored slug, often undefined for router/oss runs that derive the target from `proxyModel`). the footer's "Using `…`" segment is gated on a truthy model, so router runs on repos without an explicit model setting shipped reviews/comments with no model badge — e.g. PR #614's review showed no model despite running `openrouter/anthropic/claude-opus-4.7` via proxy. now mirror the priority used by `resolveModelForLog` and `isGeminiRouted`: `payload.proxyModel ?? resolvedModel ?? payload.model`. also reverse-look up by `resolve`/`openRouterResolve` in `formatModelLabel` so a proxy target like "openrouter/anthropic/claude-opus-4.7" still renders as "Claude Opus".
This commit is contained in:
committed by
pullfrog[bot]
parent
851e49e2d7
commit
93cc7b1a44
@@ -578,6 +578,12 @@ export async function main(): Promise<MainResult> {
|
|||||||
const resolvedModel = payload.proxyModel ? undefined : resolveModel({ slug: payload.model });
|
const resolvedModel = payload.proxyModel ? undefined : resolveModel({ slug: payload.model });
|
||||||
const agent = resolveAgent({ model: resolvedModel });
|
const agent = resolveAgent({ model: resolvedModel });
|
||||||
|
|
||||||
|
// surface the effective model in comment/review footers. payload.model is
|
||||||
|
// just the stored slug (often undefined for router/oss runs that derive
|
||||||
|
// the target from proxyModel). matching priority with resolveModelForLog
|
||||||
|
// so the "Using `…`" badge reflects what actually ran.
|
||||||
|
toolState.model = payload.proxyModel ?? resolvedModel ?? payload.model;
|
||||||
|
|
||||||
validateAgentApiKey({
|
validateAgentApiKey({
|
||||||
agent,
|
agent,
|
||||||
model: payload.proxyModel ?? resolvedModel ?? payload.model,
|
model: payload.proxyModel ?? resolvedModel ?? payload.model,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { resolveDisplayAlias } from "../models.ts";
|
import { modelAliases, resolveDisplayAlias } from "../models.ts";
|
||||||
|
|
||||||
export const PULLFROG_DIVIDER = "<!-- PULLFROG_DIVIDER_DO_NOT_REMOVE_PLZ -->";
|
export const PULLFROG_DIVIDER = "<!-- PULLFROG_DIVIDER_DO_NOT_REMOVE_PLZ -->";
|
||||||
|
|
||||||
@@ -28,7 +28,13 @@ export interface BuildPullfrogFooterParams {
|
|||||||
function formatModelLabel(slug: string): string {
|
function formatModelLabel(slug: string): string {
|
||||||
// walk the fallback chain so a deprecated stored slug shows the model the
|
// walk the fallback chain so a deprecated stored slug shows the model the
|
||||||
// run actually executed against (e.g. "GPT", not "GPT Codex").
|
// run actually executed against (e.g. "GPT", not "GPT Codex").
|
||||||
const alias = resolveDisplayAlias(slug);
|
const alias =
|
||||||
|
resolveDisplayAlias(slug) ??
|
||||||
|
// reverse-lookup: when the caller passes an effective model (proxy or
|
||||||
|
// resolved target like "openrouter/anthropic/claude-opus-4.7") instead of
|
||||||
|
// a stored alias slug, find the alias whose resolve target matches so we
|
||||||
|
// still render a friendly display name.
|
||||||
|
modelAliases.find((a) => a.resolve === slug || a.openRouterResolve === slug);
|
||||||
if (!alias) return `\`${slug}\``;
|
if (!alias) return `\`${slug}\``;
|
||||||
return alias.isFree ? `\`${alias.displayName}\` (free)` : `\`${alias.displayName}\``;
|
return alias.isFree ? `\`${alias.displayName}\` (free)` : `\`${alias.displayName}\``;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user