You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.6 KiB
TypeScript

import type { Message as UIMessage } from "ai";
import type { generateText } from "ai";
import type { Conversation, Fact } from "./database/lowdb.js";
export type OtherParameters = Omit<
Parameters<typeof generateText>[0],
"model" | "messages" | "abortSignal"
>;
export type ConversationUI = Conversation & {};
export type Store = {
/** This is a string because Milvus sends it as a string, and the value
* overflows the JS integer anyway. */
selectedConversationId: string;
conversations: Array<ConversationUI>;
messages: Array<DraftMessage | CommittedMessage>;
message: string;
systemPrompt: string;
parameters: OtherParameters;
facts: Array<Fact>;
loading: boolean;
setConversationId: (conversationId: string) => void;
setConversationTitle: (conversationTitle: string) => void;
setConversations: (conversations: Array<ConversationUI>) => void;
addConversation: (conversation: ConversationUI) => void;
removeConversation: (conversationId: string) => void;
setMessages: (messages: Array<DraftMessage | CommittedMessage>) => void;
setMessage: (message: string) => void;
setSystemPrompt: (systemPrompt: string) => void;
setParameters: (parameters: OtherParameters) => void;
setFacts: (facts: Array<Fact>) => void;
removeFact: (factId: string) => void;
setLoading: (loading: boolean) => void;
};
/** The message while it's being typed in the input box. */
export type DraftMessage = Omit<UIMessage, "id" | "createdAt">;
/** The message after it's been saved to the database. */
export type CommittedMessage = DraftMessage & {
id: string;
conversationId: string;
index: number;
runningSummary?: string;
createdAt: string;
};