instantsearch-ui-components
Version:
Common UI components for InstantSearch.
30 lines (29 loc) • 1.42 kB
TypeScript
import type { AbstractChat, ChatInit, UIMessage } from 'ai';
export type ChatStatus = 'ready' | 'submitted' | 'streaming' | 'error';
export type ChatRole = 'data' | 'user' | 'assistant' | 'system';
export type ChatMessageBase = UIMessage;
export type ChatToolMessage = Extract<ChatMessageBase['parts'][number], {
type: `tool-${string}`;
}>;
export type ChatToolType = ChatToolMessage['type'];
export type { ChatInit } from 'ai';
export type AddToolResult = AbstractChat<UIMessage>['addToolResult'];
export type AddToolResultWithOutput = (params: Pick<Parameters<AddToolResult>[0], 'output'>) => ReturnType<AddToolResult>;
export type ClientSideToolComponentProps = {
message: ChatToolMessage;
indexUiState: object;
setIndexUiState: (state: object) => void;
onClose: () => void;
addToolResult: AddToolResultWithOutput;
};
export type ClientSideToolComponent = (props: ClientSideToolComponentProps) => JSX.Element;
export type ClientSideTool = {
layoutComponent?: ClientSideToolComponent;
addToolResult: AddToolResult;
onToolCall?: (params: Parameters<NonNullable<ChatInit<UIMessage>['onToolCall']>>[0]['toolCall'] & {
addToolResult: AddToolResultWithOutput;
}) => void;
};
export type ClientSideTools = Record<string, ClientSideTool>;
export type UserClientSideTool = Omit<ClientSideTool, 'addToolResult'>;
export type UserClientSideTools = Record<string, UserClientSideTool>;