@convo-lang/convo-lang
Version:
A Conversational Language
87 lines (86 loc) • 3.08 kB
TypeScript
import { ConversationUiCtrl } from "./ConversationUiCtrl";
import { ConvoCompletionOptions, ConvoMessagePrefixOptions, FlatConvoMessage } from "./convo-types";
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
*/
export type ConvoEditorMode = 'code' | 'imports' | 'modules' | 'vars' | 'flat' | 'text' | 'tree' | 'model';
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;
}