UNPKG

@convo-lang/convo-lang

Version:
227 lines (226 loc) 10.7 kB
import { AnyFunction, CancelToken, DisposeCallback, 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, ConvoCompletionChunk, ConvoEmbeddingsService, ConvoMessage, ConvoStartOfConversationCallback, ConvoTranscriptionService, ConvoTtsService, FlatConvoConversation, FlatConvoMessage } from "./convo-types.js"; import { ConvoViewTheme } from "./convo-view-theme.js"; import { ConvoDb } from "./db/convo-db-types.js"; import { ConvoQueuedTextToSpeech, TtsCtrl } from "./TtsCtrl.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; theme?: ConvoViewTheme; transcriptionService?: ConvoTranscriptionService; ttsService?: ConvoTtsService; embeddingsService?: ConvoEmbeddingsService; db?: ConvoDb; } export declare class ConversationUiCtrl { readonly id: string; readonly autoSave: boolean; private readonly store; readonly tts: TtsCtrl; readonly transcriptionService?: ConvoTranscriptionService; readonly ttsService?: ConvoTtsService; readonly embeddingsService?: ConvoEmbeddingsService; readonly db?: ConvoDb; 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 _onChunk; get onChunk(): Observable<ConvoCompletionChunk>; private readonly _streamingMessages; get streamingMessagesSubject(): ReadonlySubject<FlatConvoMessage[] | null>; get streamingMessages(): FlatConvoMessage[] | null; private readonly _enableStreaming; get enableStreamingSubject(): ReadonlySubject<boolean | null>; get enableStreaming(): boolean | null; set enableStreaming(value: boolean | null); private readonly tasks; private readonly _currentTask; get currentTaskSubject(): ReadonlySubject<ConversationUiCtrlTask | null>; get currentTask(): ConversationUiCtrlTask | null; private readonly _flat; get flatSubject(): ReadonlySubject<FlatConvoConversation | null>; get flat(): FlatConvoConversation | 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 _enableSlashCommands; get enableSlashCommandsSubject(): 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 enableSlashCommands(): boolean; set enableSlashCommands(value: boolean); private readonly _themeOld; /** @deprecated */ get themeOldSubject(): ReadonlySubject<Record<string, any>>; /** @deprecated */ get themeOld(): Record<string, any>; /** @deprecated */ set themeOld(value: Record<string, any>); private readonly _theme; get themeSubject(): ReadonlySubject<ConvoViewTheme | null>; get theme(): ConvoViewTheme | null; set theme(value: ConvoViewTheme | null); 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); private readonly _modelOverride; get modelOverrideSubject(): ReadonlySubject<string | null>; /** * Will force the given LLM model to be used */ get modelOverride(): string | null; set modelOverride(value: string | null); 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, theme, transcriptionService, ttsService, embeddingsService, db, }?: 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 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; appendWithFunctionCallAsync(message: string, fn?: string): Promise<boolean | 'command'>; appendUiMessageAsync(message: string): Promise<boolean | 'command'>; private _appendUiMessageAsync; private triggerAppendUiMessageEvt; printHelp(): void; queueMediaAsync(media: string | ConvoPromptMedia | Blob | File | null | undefined): Promise<boolean>; 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[]; private readonly _readResponses; get readResponsesSubject(): ReadonlySubject<boolean>; get readResponses(): boolean; set readResponses(value: boolean); private requestResponseResponsesCount; requestResponseResponses(): DisposeCallback; readMessage(message: FlatConvoMessage | ConvoMessage | string | null | undefined, cancel?: CancelToken): ConvoQueuedTextToSpeech | null; }