mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-24 15:35:46 +03:00
GenAI Chat Improvements (#24173)
* Initial tool approval implementation * Cleanups and fixes * Improve robustness of loading case
This commit is contained in:
@@ -16,12 +16,15 @@ import { Label } from "@/components/ui/label";
|
||||
import { DropdownMenuSeparator } from "@/components/ui/dropdown-menu";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import type { ShowStatsMode } from "@/types/chat";
|
||||
import { formatToolName } from "@/utils/chatUtil";
|
||||
|
||||
type ChatSettingsProps = {
|
||||
showStats: ShowStatsMode;
|
||||
setShowStats: (mode: ShowStatsMode) => void;
|
||||
autoScroll: boolean;
|
||||
setAutoScroll: (enabled: boolean) => void;
|
||||
alwaysAllowTools: string[];
|
||||
clearAlwaysAllowTools: () => void;
|
||||
};
|
||||
|
||||
export default function ChatSettings({
|
||||
@@ -29,6 +32,8 @@ export default function ChatSettings({
|
||||
setShowStats,
|
||||
autoScroll,
|
||||
setAutoScroll,
|
||||
alwaysAllowTools,
|
||||
clearAlwaysAllowTools,
|
||||
}: ChatSettingsProps) {
|
||||
const { t } = useTranslation(["views/chat"]);
|
||||
const [open, setOpen] = useState(false);
|
||||
@@ -90,6 +95,40 @@ export default function ChatSettings({
|
||||
onCheckedChange={setAutoScroll}
|
||||
/>
|
||||
</div>
|
||||
<DropdownMenuSeparator />
|
||||
<div className="space-y-3">
|
||||
<div className="space-y-0.5">
|
||||
<div>{t("settings.always_allow.title")}</div>
|
||||
<div className="text-xs text-muted-foreground">
|
||||
{t("settings.always_allow.desc")}
|
||||
</div>
|
||||
</div>
|
||||
{alwaysAllowTools.length > 0 ? (
|
||||
<div className="flex flex-wrap gap-1.5">
|
||||
{alwaysAllowTools.map((name) => (
|
||||
<span
|
||||
key={name}
|
||||
className="rounded-md bg-secondary px-2 py-0.5 text-xs text-secondary-foreground"
|
||||
>
|
||||
{formatToolName(name)}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
<div className="text-xs text-muted-foreground">
|
||||
{t("settings.always_allow.none")}
|
||||
</div>
|
||||
)}
|
||||
<Button
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className="w-full"
|
||||
disabled={alwaysAllowTools.length === 0}
|
||||
onClick={clearAlwaysAllowTools}
|
||||
>
|
||||
{t("settings.always_allow.reset")}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user