@convo-lang/convo-lang
Version:
The language of AI
62 lines (61 loc) • 2.19 kB
TypeScript
import { XmlNode } from "@iyio/common";
import { BehaviorSubject } from "rxjs";
import { ZodType } from "zod";
import { Conversation } from "./Conversation.js";
import type { ConversationUiCtrl } from "./ConversationUiCtrl.js";
import { ConvoCompletionMessage, FlatConvoConversation, FlatConvoMessage } from "./convo-types.js";
export interface ConvoComponentDef {
/**
* Name of the component
*/
name: string;
description?: string;
renderer?: ConvoComponentRenderer;
propsScheme?: ZodType;
}
export interface ConvoComponentRendererContext {
id: string;
ctrl: ConversationUiCtrl;
convo: Conversation;
flat: FlatConvoConversation;
message: FlatConvoMessage;
isUser: boolean;
index: number;
className?: string;
rowClassName?: string;
}
export type ConvoComponentRenderFunction = (component: ConvoComponent, renderCtx: ConvoComponentRendererContext) => any;
export interface ConvoComponentRendererWithOptions {
/**
* Convo script to be injected into the prompt the component is being used with
*/
convo?: string;
doNotRenderInRow?: boolean;
render: ConvoComponentRenderFunction;
}
export type ConvoComponentRenderer = ConvoComponentRenderFunction | ConvoComponentRendererWithOptions;
export interface ConvoComponent extends XmlNode {
isJson?: boolean;
}
export interface ConvoComponentMessageState {
last?: FlatConvoMessage;
all: FlatConvoMessage[];
flat: FlatConvoConversation;
convo: Conversation;
}
export type ConvoComponentMessagesCallback = ((state: ConvoComponentMessageState) => void) | BehaviorSubject<ConvoComponentMessageState | null>;
export interface ConvoComponentCompletionCtx {
message: FlatConvoMessage;
flat: FlatConvoConversation;
convo: Conversation;
component: ConvoComponent;
submit: (submission: ConvoComponentSubmission) => void;
}
export type ConvoComponentCompletionHandler = (ctx: ConvoComponentCompletionCtx) => void;
export interface ConvoComponentSubmission {
data?: any;
messages?: ConvoCompletionMessage[];
}
export interface ConvoComponentSubmissionWithIndex extends ConvoComponentSubmission {
componentIndex: number;
}