"use client";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { Label } from "@kandev/ui/label";
import { Switch } from "@kandev/ui/switch";
import { ModelCombobox } from "@/components/settings/model-combobox";
import {
FallbackOptionHelp,
ModelFallbackSettingsShell,
} from "@/components/settings/model-fallback-settings-shell";
function ExactModelOption({
requireExactModel,
onChange,
}: {
requireExactModel: boolean;
onChange: (value: boolean) => void;
}) {
const { t } = useTranslation();
return (
{t("settings:requireExactModelHelper")}
);
}
function ExplicitFallbackOption({
availableModels,
fallbackModel,
fallbackModelGone,
autoFallback,
requireExactModel,
currentModelId,
onFallbackModelChange,
}: {
availableModels: { id: string; name: string }[];
fallbackModel: string;
fallbackModelGone: boolean;
autoFallback: boolean;
requireExactModel: boolean;
currentModelId: string | undefined;
onFallbackModelChange: (value: string) => void;
}) {
const { t } = useTranslation();
const [optedIn, setOptedIn] = useState(false);
const fallbackEnabled = Boolean(fallbackModel) || optedIn;
return (
{
setOptedIn(checked);
if (!checked) onFallbackModelChange("");
}}
aria-label={t("settings:agentFallback")}
/>
{fallbackEnabled && (
)}
{autoFallback || requireExactModel
? t("settings:agentFallbackDisabledHelper")
: t("settings:agentFallbackHelper")}
);
}
// ModelFallbackFields renders the no-silent-model-fallback controls for the
// inline CLI profile editor inside the shared fallback-settings disclosure.
export function ModelFallbackFields({
availableModels,
fallbackModel,
fallbackModelGone,
autoFallback,
requireExactModel,
currentModelId,
onFallbackModelChange,
onAutoFallbackChange,
onRequireExactModelChange,
}: {
availableModels: { id: string; name: string }[];
fallbackModel: string;
fallbackModelGone: boolean;
autoFallback: boolean;
requireExactModel: boolean;
currentModelId: string | undefined;
onFallbackModelChange: (v: string) => void;
onAutoFallbackChange: (v: boolean) => void;
onRequireExactModelChange: (v: boolean) => void;
}) {
const { t } = useTranslation();
return (
}
fallbackModel={fallbackModel}
automaticOption={
{t("settings:autoFallbackHelper")}
}
explicitOption={
}
/>
);
}