UNPKG

@convo-lang/convo-lang

Version:
179 lines (178 loc) 8.22 kB
import { AnyFunction, MarkdownImage, ReadonlySubject, SceneCtrl } from "@iyio/common"; import { Observable } from "rxjs"; import { Conversation, ConversationOptions } from "./Conversation.js"; import { ConvoComponentRenderer } from "./convo-component-types.js"; import { ConvoDataStore, ConvoEditorMode, ConvoMessageRenderResult, ConvoMessageRenderer, ConvoPromptMedia, ConvoUiMessageAppendEvt } from "./convo-lang-ui-types.js"; import { BeforeCreateConversationExeCtx, ConvoAppend, ConvoStartOfConversationCallback, FlatConvoMessage } from "./convo-types.js"; export type ConversationUiCtrlTask = 'completing' | 'loading' | 'clearing' | 'disposed'; export interface InitConversationUiCtrlConvoOptions { appendTemplate: boolean; } export interface ConversationUiCtrlOptions { id?: string; /** * If true and an id is given the conversation will be auto loaded. */ autoLoad?: boolean; template?: string; convo?: Conversation; convoOptions?: ConversationOptions; initConvo?: (convo: Conversation) => void; autoSave?: boolean; store?: null | 'localStorage' | ConvoDataStore; removeDanglingUserMessages?: boolean; enableSlashCommand?: boolean; sceneCtrl?: SceneCtrl; defaultVars?: Record<string, any>; externFunctions?: Record<string, (...args: any[]) => any>; imagePathConverter?: (img: MarkdownImage, className: string, msg: FlatConvoMessage) => string; imageRenderer?: (img: MarkdownImage, className: string, msg: FlatConvoMessage) => any; } export declare class ConversationUiCtrl { readonly id: string; readonly autoSave: boolean; private readonly store; private readonly convoOptions?; private readonly initConvoCallback?; private readonly _lastCompletion; get lastCompletionSubject(): ReadonlySubject<string | null>; get lastCompletion(): string | null; private readonly _onAppend; get onAppend(): Observable<ConvoAppend>; private readonly tasks; private readonly _currentTask; get currentTaskSubject(): ReadonlySubject<ConversationUiCtrlTask | null>; get currentTask(): ConversationUiCtrlTask | null; private readonly _template; get templateSubject(): ReadonlySubject<string | undefined>; get template(): string | undefined; set template(value: string | undefined); private readonly _removeDanglingUserMessages; get removeDanglingUserMessagesSubject(): ReadonlySubject<boolean>; get removeDanglingUserMessages(): boolean; set removeDanglingUserMessages(value: boolean); private readonly _convo; get convoSubject(): ReadonlySubject<Conversation | null>; get convo(): Conversation | null; private readonly _showSource; get showSourceSubject(): ReadonlySubject<boolean>; /** * If true the source convo-lang syntax should be displayed to the user */ get showSource(): boolean; set showSource(value: boolean); private readonly _editorMode; get editorModeSubject(): ReadonlySubject<ConvoEditorMode>; get editorMode(): ConvoEditorMode; set editorMode(value: ConvoEditorMode); private readonly _showSystemMessages; get showSystemMessagesSubject(): ReadonlySubject<boolean>; /** * If true the system messages should be displayed to the user */ get showSystemMessages(): boolean; set showSystemMessages(value: boolean); /** * If true function call results will be displayed to the user */ private readonly _showResults; get showResultsSubject(): ReadonlySubject<boolean>; get showResults(): boolean; set showResults(value: boolean); private readonly _enabledInitMessage; get enabledInitMessageSubject(): ReadonlySubject<boolean>; get enabledInitMessage(): boolean; set enabledInitMessage(value: boolean); private readonly _showFunctions; get showFunctionsSubject(): ReadonlySubject<boolean>; /** * If true function calls should be displayed to the user */ get showFunctions(): boolean; set showFunctions(value: boolean); private readonly _enabledSlashCommands; get enabledSlashCommandsSubject(): ReadonlySubject<boolean>; /** * If messages appended to the conversation using the appendUiMessage will be checked for messages * starting with a forward slash and be interpreted as a command. */ get enabledSlashCommands(): boolean; set enabledSlashCommands(value: boolean); private readonly _theme; get themeSubject(): ReadonlySubject<Record<string, any>>; get theme(): Record<string, any>; set theme(value: Record<string, any>); private readonly _mediaQueue; get mediaQueueSubject(): ReadonlySubject<readonly (ConvoPromptMedia)[]>; get mediaQueue(): readonly (ConvoPromptMedia)[]; private readonly _collapsed; get collapsedSubject(): ReadonlySubject<boolean>; /** * Often used to indicate if the conversation is display in a collapsed state */ get collapsed(): boolean; set collapsed(value: boolean); private readonly _onClear; get onClear(): Observable<void>; private readonly _onAppendUiMessage; get onAppendUiMessage(): Observable<ConvoUiMessageAppendEvt>; private readonly _expandOnUiMessage; get expandOnUiMessageSubject(): ReadonlySubject<boolean>; get expandOnUiMessage(): boolean; set expandOnUiMessage(value: boolean); readonly sceneCtrl?: SceneCtrl; private readonly _beforeCreateExeCtx; get beforeCreateExeCtxSubject(): ReadonlySubject<BeforeCreateConversationExeCtx | null | undefined>; get beforeCreateExeCtx(): BeforeCreateConversationExeCtx | null | undefined; set beforeCreateExeCtx(value: BeforeCreateConversationExeCtx | null | undefined); private readonly _defaultVars; get defaultVarsSubject(): ReadonlySubject<Record<string, any>>; get defaultVars(): Record<string, any>; set defaultVars(value: Record<string, any>); private readonly _externFunctions; get externFunctionsSubject(): ReadonlySubject<Record<string, AnyFunction>>; get externFunctions(): Record<string, AnyFunction>; set externFunctions(value: Record<string, AnyFunction>); private readonly _getStartOfConversation; get getStartOfConversationSubject(): ReadonlySubject<{ cb: ConvoStartOfConversationCallback; } | null | undefined>; get getStartOfConversation(): { cb: ConvoStartOfConversationCallback; } | null | undefined; set getStartOfConversation(value: { cb: ConvoStartOfConversationCallback; } | null | undefined); readonly componentRenderers: Record<string, ConvoComponentRenderer>; imagePathConverter?: (img: MarkdownImage, className: string, msg: FlatConvoMessage) => string; imageRenderer?: (img: MarkdownImage, className: string, msg: FlatConvoMessage) => any; constructor({ id, autoLoad, convo, initConvo, convoOptions, template, autoSave, removeDanglingUserMessages, store, enableSlashCommand, sceneCtrl, defaultVars, externFunctions, imagePathConverter, imageRenderer, }?: ConversationUiCtrlOptions); private _isDisposed; get isDisposed(): boolean; dispose(): void; protected initConvo(convo: Conversation, options: InitConversationUiCtrlConvoOptions): void; private createConvo; loadAsync(): Promise<boolean>; clear(): boolean; private pushTask; private popTask; private convoTaskCount; private convoCleanup; private setConvo; replace(convo: string): boolean; replaceAndCompleteAsync(convo: string): Promise<boolean>; isSlashCommand(message: string): boolean; appendDefineVars(vars: Record<string, any>): void | undefined; appendDefineVar(name: string, value: any): void | undefined; appendUiMessageAsync(message: string): Promise<boolean | 'command'>; private triggerAppendUiMessageEvt; printHelp(): void; queueMedia(media: string | ConvoPromptMedia): void; dequeueMedia(media: string | ConvoPromptMedia): boolean; private isAutoSaving; private autoSaveRequested; private queueAutoSave; private _autoSaveAsync; renderMessage(message: FlatConvoMessage, index: number): ConvoMessageRenderResult; readonly messageRenderers: ConvoMessageRenderer[]; }