@convo-lang/convo-lang
Version:
The language of AI
179 lines (178 loc) • 8.22 kB
TypeScript
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[];
}