Add chat sources and citations
This commit is contained in:
@@ -13,6 +13,15 @@ const toolTraceValidator = v.object({
|
||||
inputSummary: v.string(),
|
||||
resultSummary: v.string(),
|
||||
});
|
||||
const sourceValidator = v.object({
|
||||
id: v.string(),
|
||||
title: v.string(),
|
||||
description: v.optional(v.string()),
|
||||
});
|
||||
const citationValidator = v.object({
|
||||
marker: v.string(),
|
||||
sourceId: v.string(),
|
||||
});
|
||||
|
||||
const chatRoleValidator = v.union(v.literal("user"), v.literal("assistant"));
|
||||
|
||||
@@ -20,6 +29,8 @@ const importMessageValidator = v.object({
|
||||
role: chatRoleValidator,
|
||||
content: v.string(),
|
||||
toolTrace: v.optional(v.array(toolTraceValidator)),
|
||||
sources: v.optional(v.array(sourceValidator)),
|
||||
citations: v.optional(v.array(citationValidator)),
|
||||
});
|
||||
|
||||
const sessionValidator = v.object({
|
||||
@@ -43,6 +54,8 @@ const messageValidator = v.object({
|
||||
content: v.string(),
|
||||
createdAt: v.number(),
|
||||
toolTrace: v.optional(v.array(toolTraceValidator)),
|
||||
sources: v.optional(v.array(sourceValidator)),
|
||||
citations: v.optional(v.array(citationValidator)),
|
||||
});
|
||||
|
||||
const promptMessageValidator = v.object({
|
||||
@@ -181,6 +194,8 @@ export const importLocalSession = mutation({
|
||||
content: message.content,
|
||||
createdAt: args.createdAt + index,
|
||||
...(message.toolTrace ? { toolTrace: message.toolTrace } : {}),
|
||||
...(message.sources ? { sources: message.sources } : {}),
|
||||
...(message.citations ? { citations: message.citations } : {}),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -219,6 +234,8 @@ export const appendAssistantMessage = internalMutation({
|
||||
sessionId: v.id("chatSessions"),
|
||||
content: v.string(),
|
||||
toolTrace: v.optional(v.array(toolTraceValidator)),
|
||||
sources: v.optional(v.array(sourceValidator)),
|
||||
citations: v.optional(v.array(citationValidator)),
|
||||
},
|
||||
returns: v.object({ messageId: v.id("chatMessages") }),
|
||||
handler: async (ctx, args) => {
|
||||
@@ -232,6 +249,8 @@ export const appendAssistantMessage = internalMutation({
|
||||
content: args.content,
|
||||
createdAt: now,
|
||||
...(args.toolTrace ? { toolTrace: args.toolTrace } : {}),
|
||||
...(args.sources ? { sources: args.sources } : {}),
|
||||
...(args.citations ? { citations: args.citations } : {}),
|
||||
});
|
||||
await ctx.db.patch(args.sessionId, {
|
||||
updatedAt: now,
|
||||
|
||||
Reference in New Issue
Block a user