mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-10-08 15:52:48 +03:00
* Add score fusion helpers for find_similar_objects chat tool * Add candidate query builder for find_similar_objects chat tool * register find_similar_objects chat tool definition * implement _execute_find_similar_objects chat tool dispatcher * Dispatch find_similar_objects in chat tool executor * Teach chat system prompt when to use find_similar_objects * Add i18n strings for find_similar_objects chat tool * Add frontend extractor for find_similar_objects tool response * Render anchor badge and similarity scores in chat results * formatting * filter similarity results in python, not sqlite-vec * extract pure chat helpers to chat_util module * Teach chat system prompt about attached_event marker * Add parseAttachedEvent and prependAttachment helpers * Add i18n strings for chat event attachments * Add ChatAttachmentChip component * Make chat thumbnails attach to composer on click * Render attachment chip in user chat bubbles * Add ChatQuickReplies pill row component * Add ChatPaperclipButton with event picker popover * Wire event attachments into chat composer and messages * add ability to stop streaming * tweak cursor to appear at the end of the same line of the streaming response * use abort signal * add tooltip * display label and camera on attachment chip
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { useTranslation } from "react-i18next";
|
|
import { Button } from "@/components/ui/button";
|
|
|
|
type QuickReply = { labelKey: string; textKey: string };
|
|
|
|
const REPLIES: QuickReply[] = [
|
|
{
|
|
labelKey: "quick_reply_find_similar",
|
|
textKey: "quick_reply_find_similar_text",
|
|
},
|
|
{
|
|
labelKey: "quick_reply_tell_me_more",
|
|
textKey: "quick_reply_tell_me_more_text",
|
|
},
|
|
{ labelKey: "quick_reply_when_else", textKey: "quick_reply_when_else_text" },
|
|
];
|
|
|
|
type ChatQuickRepliesProps = {
|
|
onSend: (text: string) => void;
|
|
disabled?: boolean;
|
|
};
|
|
|
|
/**
|
|
* Row of pill buttons shown in the composer while an attachment is pending.
|
|
* Clicking a pill immediately calls onSend with the canned text.
|
|
*/
|
|
export function ChatQuickReplies({
|
|
onSend,
|
|
disabled = false,
|
|
}: ChatQuickRepliesProps) {
|
|
const { t } = useTranslation(["views/chat"]);
|
|
|
|
return (
|
|
<div className="flex w-full flex-wrap gap-2">
|
|
{REPLIES.map((reply) => (
|
|
<Button
|
|
key={reply.labelKey}
|
|
variant="outline"
|
|
size="sm"
|
|
className="h-7 rounded-full px-3 text-xs"
|
|
disabled={disabled}
|
|
onClick={() => onSend(t(reply.textKey))}
|
|
>
|
|
{t(reply.labelKey)}
|
|
</Button>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|