docs: inkeep analytics with feedback integration (#5241)

Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
KinfeMichael Tariku
2025-10-12 03:17:48 +03:00
committed by GitHub
parent 562da0cc9b
commit 8c45985dec
7 changed files with 538 additions and 4 deletions

View File

@@ -21,6 +21,7 @@ import type { z } from "zod";
import { DefaultChatTransport } from "ai";
import { Markdown } from "./markdown";
import { Presence } from "@radix-ui/react-presence";
import { MessageFeedback } from "./message-feedback";
const Context = createContext<{
open: boolean;
@@ -286,8 +287,16 @@ function ThinkingIndicator() {
function Message({
message,
messages,
messageIndex,
isStreaming,
...props
}: { message: UIMessage } & ComponentProps<"div">) {
}: {
message: UIMessage;
messages?: UIMessage[];
messageIndex?: number;
isStreaming?: boolean;
} & ComponentProps<"div">) {
let markdown = "";
let links: z.infer<typeof ProvideLinksToolSchema>["links"] = [];
@@ -348,6 +357,18 @@ function Message({
</div>
</div>
)}
{message.role === "assistant" && message.id && !isStreaming && (
<MessageFeedback
messageId={message.id}
userMessageId={
messages && messageIndex !== undefined && messageIndex > 0
? messages[messageIndex - 1]?.id
: undefined
}
content={markdown}
className="opacity-100 transition-opacity"
/>
)}
</div>
);
}
@@ -481,9 +502,27 @@ export function AISearchTrigger() {
<div className="flex flex-col gap-4">
{chat.messages
.filter((msg: UIMessage) => msg.role !== "system")
.map((item: UIMessage) => (
<Message key={item.id} message={item} />
))}
.map((item: UIMessage, index: number) => {
const filteredMessages = chat.messages.filter(
(msg: UIMessage) => msg.role !== "system",
);
const isLastMessage = index === filteredMessages.length - 1;
const isCurrentlyStreaming =
(chat.status === "streaming" ||
chat.status === "submitted") &&
item.role === "assistant" &&
isLastMessage;
return (
<Message
key={item.id}
message={item}
messages={filteredMessages}
messageIndex={index}
isStreaming={isCurrentlyStreaming}
/>
);
})}
{chat.status === "submitted" && <ThinkingIndicator />}
</div>
</List>