fix(claude): show the Fast toggle on Opus 5 (#2939)

The Claude model manifest declares fast-mode support per model, and the
`claude-opus-5` entry was added without `supportsFastMode`. Claude Code
supports fast mode on Opus 5, so the composer and Command Center hid a
toggle the model actually has.

Set the flag. Everything downstream already keys off it:
`claudeManifestModelSupportsFastMode` gates `buildClaudeFeatures`, which
feeds `listFeatures`, the session `features` getter, `setFeature`, and
the `setModel` auto-clear.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Christoph Leiter
2026-08-07 07:14:21 +08:00
committed by GitHub
co-authored by Claude Opus 5
parent ef6d7b3b9a
commit b4357139bb
3 changed files with 23 additions and 0 deletions
@@ -679,6 +679,14 @@ describe("ClaudeAgentSession features", () => {
}), }),
).resolves.toEqual([expect.objectContaining({ id: "fast_mode", value: false })]); ).resolves.toEqual([expect.objectContaining({ id: "fast_mode", value: false })]);
await expect(
client.listFeatures({
provider: "claude",
cwd: process.cwd(),
model: "claude-opus-5",
}),
).resolves.toEqual([expect.objectContaining({ id: "fast_mode", value: false })]);
await expect( await expect(
client.listFeatures({ client.listFeatures({
provider: "claude", provider: "claude",
@@ -687,6 +695,14 @@ describe("ClaudeAgentSession features", () => {
}), }),
).resolves.toEqual([]); ).resolves.toEqual([]);
await expect(
client.listFeatures({
provider: "claude",
cwd: process.cwd(),
model: "claude-sonnet-5",
}),
).resolves.toEqual([]);
await expect( await expect(
client.listFeatures({ client.listFeatures({
provider: "claude", provider: "claude",
@@ -43,6 +43,7 @@ export const CLAUDE_MODEL_MANIFEST = [
contextWindowMaxTokens: 1_000_000, contextWindowMaxTokens: 1_000_000,
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh, effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
supportsThinkingDisabled: true, supportsThinkingDisabled: true,
supportsFastMode: true,
}, },
{ {
id: "claude-fable-5", id: "claude-fable-5",
@@ -497,4 +497,10 @@ describe("claudeManifestModelSupportsFastMode", () => {
expect(claudeManifestModelSupportsFastMode("openrouter/anthropic/claude-opus-4-8")).toBe(false); expect(claudeManifestModelSupportsFastMode("openrouter/anthropic/claude-opus-4-8")).toBe(false);
expect(claudeManifestModelSupportsFastMode("claude-opus-4-8-20260101")).toBe(true); expect(claudeManifestModelSupportsFastMode("claude-opus-4-8-20260101")).toBe(true);
}); });
it("supports fast mode on Opus 5 but not on other Claude 5 models", () => {
expect(claudeManifestModelSupportsFastMode("claude-opus-5")).toBe(true);
expect(claudeManifestModelSupportsFastMode("claude-sonnet-5")).toBe(false);
expect(claudeManifestModelSupportsFastMode("claude-fable-5")).toBe(false);
});
}); });