UNPKG

@convo-lang/convo-lang

Version:
91 lines (90 loc) 3.21 kB
import { ConversationUiCtrl } from "./ConversationUiCtrl.js"; import { ConvoCompletionOptions, ConvoMessagePrefixOptions, FlatConvoMessage } from "./convo-types.js"; export declare const convoPromptImagePropKey: unique symbol; /** * code - Show full code of conversation * imports - Show full code plus imports of conversation * modules - Show registered modules * vars - Show evaluated variable values * flat - Show flat json structure * text - Show as code with all text content evaluated * tree - Show syntax tree * model - Show JSON model that will be sent to LLM * models - List all known LLM models */ export type ConvoEditorMode = 'code' | 'imports' | 'modules' | 'vars' | 'flat' | 'text' | 'tree' | 'model' | 'models'; export type ConvoPromptMediaPurpose = 'preview' | 'prompt'; /** * true - enables markdown for assistant messages * false - disables markdown for all messages * assistant - enables markdown for assistant messages * user - enables markdown for user messages * all - enables markdown for all messages */ export type ConvoMarkdownEnableState = boolean | 'user' | 'assistant' | 'all'; 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 type ConvoRagRenderer = (msg: FlatConvoMessage, ctrl: ConversationUiCtrl) => any; export interface ConvoUiMessageAppendEvt { isCommand: boolean; message: string; } export interface ConvoUiAppendTrigger { /** * If role is defined the `append` prop is appended as a content message using the role. * Otherwise append is appended as raw convo. */ role?: string; /** * The content or raw convo to append. */ append?: string; /** * Options used when a role is provided. */ options?: ConvoMessagePrefixOptions; /** * If true or an object the appended message should trigger the completions process. */ complete?: boolean | ConvoCompletionOptions; /** * If true and no role is provided the appended content will be merged with the previous message. */ mergeWithPrev?: boolean; /** * Call if an error occurs */ errorCallback?: (error: any) => void; } export type ConvoIconType = (props: { className?: string; }) => any;