remix-nlux
Version:
Remix IDE NLUX integration. Remix IDE is the leading IDE for building and deploying smart contracts on Ethereum. NLUX is a JavaScript and React library for building conversational AI experiences.
66 lines (58 loc) • 1.76 kB
text/typescript
import {ServerComponentExecutionResult} from '../adapters/chat/serverComponentChatAdapter';
export type AiStreamedMessage<AiMsg> = {
uid: string;
time: Date;
participantRole: 'assistant';
dataTransferMode: 'stream';
} & ({
status: 'streaming';
} | {
status: 'complete';
// For streamed messages, AiMsg is used for both chunks and the final message pre-processed by the adapter.
// For strings, this is straightforward. For objects, the adapter must pre-process the final message passed
// through complete() to match the AiMsg type.
content: Array<AiMsg>;
contentType: 'text';
// Chunks streamed from the AI. Only available for standard adapters.
serverResponse: Array<string | object | undefined> | undefined;
} | {
status: 'error';
error: string;
});
export type AiBatchedMessage<AiMsg> = {
uid: string;
time: Date;
participantRole: 'assistant';
dataTransferMode: 'batch';
} & ({
status: 'complete';
content: AiMsg;
contentType: 'text';
// The raw response from the AI. Only available for standard adapters.
serverResponse: string | object | undefined;
} | {
status: 'error';
error: string;
} | {
status: 'loading';
});
export type AiStreamedServerComponentMessage = {
uid: string;
time: Date;
participantRole: 'assistant';
dataTransferMode: 'stream';
} & ({
status: 'streaming';
contentType: 'server-component';
content: ServerComponentExecutionResult;
} | {
status: 'complete';
content: ServerComponentExecutionResult;
} | {
status: 'error';
error: string;
});
export type ChatSegmentAiMessage<AiMsg> =
AiStreamedMessage<AiMsg>
| AiBatchedMessage<AiMsg>
| AiStreamedServerComponentMessage;