Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
21d618f
fix(server): Claude on Bedrock runs the model picked in the composer
only21mil Oct 24, 2026
75b14f7
fix(server): Claude turns route models from the live catalog
only21mil Oct 25, 2026
e8fc703
refactor(server): read the Claude model catalog once per adapter
only21mil Oct 25, 2026
d50ab9b
Merge upstream main into fix/i24214-claude-picker-ignores-availablemo…
only21mil Oct 25, 2026
6e7af0c
fix(claude): reported model ids apply only where they mean the same m…
only21mil Nov 1, 2026
e828b63
refactor(server): Claude Code model routes get their own module
only21mil Nov 1, 2026
d5c3a89
fix(claude): reported model ids skip worktrees whose main checkout's …
only21mil Nov 1, 2026
7ed38fb
refactor(server): drop an always-true guard and an extra span from th…
only21mil Nov 1, 2026
3367fc8
fix(claude): preserve model routing on current main
maria-rcks Nov 1, 2026
9c56242
fix(claude): keep launch settings from redirecting model aliases
maria-rcks Nov 1, 2026
8dfaedf
fix(claude): preserve routing with current main
maria-rcks Nov 2, 2026
0abaac9
Merge remote-tracking branch 'github/main' into HEAD
maria-rcks Nov 2, 2026
aabed5d
fix(claude): reuse live continuations before reading launch settings
maria-rcks Nov 2, 2026
3b26589
fix(claude): retain loaded settings for live query reuse
maria-rcks Nov 2, 2026
4f00fd1
Merge upstream main into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 10, 2026
2fd753e
Merge upstream main into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 11, 2026
75e4c18
Merge upstream main into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 11, 2026
00514a7
fix(server): Claude steers and effort changes keep the reported model id
only21mil Nov 11, 2026
ee0ea0c
fix(server): a timed-out first Claude probe wait is not repeated
only21mil Nov 12, 2026
b009651
Merge branch 'main' into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 12, 2026
1a18cb6
fix(server): a Claude Code alias the Bedrock route picks is not pinne…
only21mil Nov 12, 2026
4878411
Merge branch 'main' into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 13, 2026
22b81c4
Merge branch 'main' into fix/i24214-claude-picker-ignores-availablemo…
only21mil Nov 14, 2026
9a63cb9
Merge remote-tracking branch 'origin/main' into fix/i24214-claude-pic…
juliusmarminge Nov 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion apps/server/src/claudeModelOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,19 @@ import {
normalizeClaudeCatalogEffort,
resolveClaudeCatalogApiModelId,
resolveClaudeCatalogEffort,
resolveClaudeModelSlug,
type ClaudeModelCatalog,
} from "./provider/ClaudeModelCatalog.ts";

const CLAUDE_CODE_MODEL_ALIASES = new Set(["opus", "sonnet", "haiku", "fable"]);

export interface CompiledClaudeModelSelection {
readonly apiModelId: string;
readonly effort: string | undefined;
readonly promptEffort: string | undefined;
readonly settings: Readonly<Record<string, boolean>>;
/** The alias of a custom model named like one, which Claude Code would otherwise expand. */
readonly pinnedAlias: string | undefined;
readonly queryIdentity: string;
}

Expand Down Expand Up @@ -51,11 +56,23 @@ export function compileClaudeModelSelection(
};
const apiModelId = resolveClaudeCatalogApiModelId(catalog, selection);
const promptEffort = resolvePromptInjectedEffort(capabilities, rawEffort) ?? undefined;
// An alias the catalog routes a built-in model to is Claude Code's own and is not pinned.
const pinnedAlias =
CLAUDE_CODE_MODEL_ALIASES.has(apiModelId) &&
resolveClaudeModelSlug(catalog, selection.model) === apiModelId
? apiModelId
: undefined;
return {
apiModelId,
effort,
promptEffort,
settings,
queryIdentity: JSON.stringify({ apiModelId, effort: effort ?? null, settings }),
pinnedAlias,
queryIdentity: JSON.stringify({
apiModelId,
effort: effort ?? null,
settings,
pinnedAlias: pinnedAlias ?? null,
}),
};
}
Loading
Loading