import React, { useMemo } from 'react'; import { resolveAnthropicFastMode, resolveAnthropicRuntimeSelection, } from '@features/anthropic-runtime-profile/renderer'; import { useAppTranslation } from '@features/localization/renderer'; import { Label } from '@renderer/components/ui/label'; import { useEffectiveCliProviderStatus } from '@renderer/hooks/useEffectiveCliProviderStatus'; import { cn } from '@renderer/lib/utils'; import { Zap } from 'lucide-react'; import type { TeamFastMode } from '@shared/types'; export interface AnthropicFastModeSelectorProps { value: TeamFastMode; onValueChange: (value: TeamFastMode) => void; providerFastModeDefault: boolean; model?: string; limitContext: boolean; id?: string; } export const AnthropicFastModeSelector: React.FC = ({ value, onValueChange, providerFastModeDefault, model, limitContext, id, }) => { const { t } = useAppTranslation('team'); const { providerStatus } = useEffectiveCliProviderStatus('anthropic'); const selection = useMemo( () => resolveAnthropicRuntimeSelection({ source: { modelCatalog: providerStatus?.modelCatalog, runtimeCapabilities: providerStatus?.runtimeCapabilities, }, selectedModel: model, limitContext, }), [limitContext, model, providerStatus?.modelCatalog, providerStatus?.runtimeCapabilities] ); const resolution = useMemo( () => resolveAnthropicFastMode({ selection, selectedFastMode: value, providerFastModeDefault, }), [providerFastModeDefault, selection, value] ); if (!resolution.showFastModeControl) { return null; } const defaultLabel = providerFastModeDefault ? t('modelSelector.fastMode.defaultFast') : t('modelSelector.fastMode.defaultOff'); const helperText = value === 'inherit' ? t('modelSelector.fastMode.defaultResolvesTo', { mode: resolution.resolvedFastMode ? t('modelSelector.fastMode.fast') : t('modelSelector.fastMode.off'), }) : (resolution.disabledReason ?? t('modelSelector.fastMode.runtimeBackedHint')); return (
{[ { value: 'inherit' as const, label: defaultLabel, disabled: false }, { value: 'on' as const, label: t('modelSelector.fastMode.fast'), disabled: !resolution.selectable, }, { value: 'off' as const, label: t('modelSelector.fastMode.off'), disabled: false }, ].map((option) => ( ))}

{helperText}

); };