import { ChangelogSettingsCard } from "@agent-native/core/client/changelog"; import { useActionMutation, useActionQuery, } from "@agent-native/core/client/hooks"; import { LanguagePicker, useT } from "@agent-native/core/client/i18n"; import { TeamPage } from "@agent-native/core/client/org"; import { AccountSettingsCard, SettingsTabsPage, useAgentSettingsTabs, type SettingsSearchEntry, type SettingsTabItem, } from "@agent-native/core/client/settings"; import { IconAdjustments, IconDeviceFloppy, IconFileText, IconGauge, IconLock, IconMessageCircle, IconShieldCheck, IconUsersGroup, } from "@tabler/icons-react"; import { useEffect, useMemo, useState } from "react"; import { useSearchParams } from "react-router"; import { EmptyActionState } from "@/components/brain/Surface"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Progress } from "@/components/ui/progress"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Separator } from "@/components/ui/separator"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import { type BrainSettings, type SettingsResponse, type BrainHealthResponse, defaultSettings, } from "@/lib/brain"; import { createSettingsSectionIds, resolveSettingsSection, withSettingsSection, } from "@/lib/settings-navigation"; import changelog from "../../CHANGELOG.md?raw"; const toneValues = ["direct", "friendly", "formal", "technical"] as const; const sourcePolicyValues = ["strict", "balanced", "exploratory"] as const; type ToneValue = (typeof toneValues)[number]; type SourcePolicyValue = (typeof sourcePolicyValues)[number]; type ToneOption = { value: ToneValue; label: string; description: string; }; type SourcePolicyOption = { value: SourcePolicyValue; label: string; description: string; }; function toneOptions(t: ReturnType): ToneOption[] { return toneValues.map((value) => ({ value, label: t(`settings.tone.${value}.label`), description: t(`settings.tone.${value}.description`), })); } function sourcePolicyOptions(t: ReturnType): SourcePolicyOption[] { return sourcePolicyValues.map((value) => ({ value, label: t(`settings.sourcePolicy.${value}.label`), description: t(`settings.sourcePolicy.${value}.description`), })); } type UpdateBrainSettings = ( key: K, value: BrainSettings[K], ) => void; function AssistantBehaviorSettings({ settings, update, toneOptions, sourcePolicyOptions, }: { settings: BrainSettings; update: UpdateBrainSettings; toneOptions: ToneOption[]; sourcePolicyOptions: SourcePolicyOption[]; }) { const t = useT(); const toneDescription = toneOptions.find((option) => option.value === settings.assistantTone) ?.description ?? toneOptions[0].description; const sourcePolicyDescription = sourcePolicyOptions.find((option) => option.value === settings.sourcePolicy) ?.description ?? sourcePolicyOptions[1].description; return (
{t("settings.assistantBehaviorTitle")} {t("settings.assistantBehaviorDescription")}
update("assistantTone", value)} /> update("sourcePolicy", value)} />

{toneDescription}

{sourcePolicyDescription}