feat(model-bank): add claude-fable-5 to Anthropic models (#15639)

*  feat(model-bank): add claude-fable-5 to Anthropic models

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* 🐛 fix(agent): allow adding directory topics on web when agent targets a bound device

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Arvin Xu
2026-06-10 16:57:57 +08:00
committed by GitHub
parent 3fb732da66
commit c02e5720c2
2 changed files with 37 additions and 1 deletions
@@ -1,6 +1,37 @@
import { type AIChatModelCard } from '../types/aiModel';
const anthropicChatModels: AIChatModelCard[] = [
{
abilities: {
functionCall: true,
reasoning: true,
search: true,
structuredOutput: true,
vision: true,
},
contextWindowTokens: 1_000_000,
description:
"Claude Fable 5 is Anthropic's most capable model — a new tier above Opus for the most demanding reasoning and long-horizon agentic work.",
displayName: 'Claude Fable 5',
enabled: true,
id: 'claude-fable-5',
maxOutput: 128_000,
pricing: {
units: [
{ name: 'textInput_cacheRead', rate: 1, strategy: 'fixed', unit: 'millionTokens' },
{ name: 'textInput', rate: 10, strategy: 'fixed', unit: 'millionTokens' },
{ name: 'textOutput', rate: 50, strategy: 'fixed', unit: 'millionTokens' },
{ name: 'textInput_cacheWrite', rate: 12.5, strategy: 'fixed', unit: 'millionTokens' },
],
},
releasedAt: '2026-06-09',
settings: {
disabledParams: ['temperature', 'top_p'],
extendParams: ['disableContextCaching', 'enableAdaptiveThinking', 'opus47Effort'],
searchImpl: 'params',
},
type: 'chat',
},
{
abilities: {
functionCall: true,
@@ -7,6 +7,7 @@ import { useTranslation } from 'react-i18next';
import { isDesktop } from '@/const/version';
import { useCommitWorkingDirectory } from '@/features/ChatInput/ControlBar/useCommitWorkingDirectory';
import { useAgentStore } from '@/store/agent';
import { agentByIdSelectors } from '@/store/agent/selectors';
import { useChatStore } from '@/store/chat';
import TopicItem from '../../List/Item';
@@ -24,6 +25,7 @@ const GroupItem = memo<GroupItemComponentProps>(({ group, activeTopicId, activeT
);
const agentId = useAgentStore((s) => s.activeAgentId);
const agencyConfig = useAgentStore(agentByIdSelectors.getAgencyConfigById(agentId ?? ''));
const { commitAgentDefault } = useCommitWorkingDirectory(agentId ?? '');
const handleAddTopic = useCallback(async () => {
@@ -35,7 +37,10 @@ const GroupItem = memo<GroupItemComponentProps>(({ group, activeTopicId, activeT
useChatStore.getState().switchTopic(null, { skipRefreshMessage: true });
}, [workingDirectory, agentId, commitAgentDefault]);
const canAddTopic = isDesktop && !!workingDirectory;
// Web can add a topic in a directory too when the agent targets a bound
// device — the write goes to `workingDirByDevice`, no Electron dependency.
const isDeviceMode = agencyConfig?.executionTarget === 'device' && !!agencyConfig?.boundDeviceId;
const canAddTopic = (isDesktop || isDeviceMode) && !!workingDirectory;
return (
<AccordionItem