UNPKG

@iyio/convo-lang

Version:

A conversational language.

58 lines (57 loc) 2.22 kB
import { XmlNode } from "@iyio/common"; import { Conversation } from "./Conversation"; import { ConversationUiCtrl } from "./ConversationUiCtrl"; import { FlatConvoConversation, FlatConvoMessage } from "./convo-types"; export declare const convoPromptImagePropKey: unique symbol; export type ConvoEditorMode = 'code' | 'vars' | 'flat' | 'tree'; export type ConvoPromptMediaPurpose = 'preview' | 'prompt'; export interface ConvoPromptMedia { url?: string; getUrl?: (purpose: ConvoPromptMediaPurpose) => string; data?: any; [convoPromptImagePropKey]?: () => string; } export interface ConvoDataStore { loadConvo?(id: string): string | undefined | Promise<string | undefined>; saveConvo?(id: string, convo: string): void | Promise<void>; deleteConvo?(id: string): void | Promise<void>; } /** * null - use default renderer * undefined - use default renderer * false - do not render message */ export type ConvoMessageRenderResult = RenderedConvoMessage | null | undefined | false; /** * Used to return a convo message. */ export type ConvoMessageRenderer = (message: FlatConvoMessage, index: number, ctrl: ConversationUiCtrl) => ConvoMessageRenderResult; export type RenderedConvoMessagePosition = 'before' | 'replace' | 'after'; export interface RenderedConvoMessage { role?: string; content?: string; component?: any; /** * @default 'replace' */ position?: RenderedConvoMessagePosition; } export interface ConvoComponentRendererContext { id: string; ctrl: ConversationUiCtrl; convo: Conversation; flat: FlatConvoConversation; message: FlatConvoMessage; isUser: boolean; index: number; className?: string; rowClassName?: string; } export type ConvoComponentRenderFunction = (component: ConvoMessageComponent, renderCtx: ConvoComponentRendererContext) => any; export interface ConvoComponentRendererWithOptions { doNotRenderInRow?: boolean; render: ConvoComponentRenderFunction; } export type ConvoComponentRenderer = ConvoComponentRenderFunction | ConvoComponentRendererWithOptions; export type ConvoMessageComponent = XmlNode; export type ConvoRagRenderer = (msg: FlatConvoMessage, ctrl: ConversationUiCtrl) => any;