UNPKG

@botonic/plugin-flow-builder

Version:

Use Flow Builder to show your contents

105 lines (104 loc) 3.78 kB
import { BotContext, PluginPreRequest, ResolvedPlugins } from '@botonic/core'; import { FlowContent } from './content-fields'; import { HtFlowBuilderData } from './content-fields/hubtype-fields'; export interface InShadowingConfig { allowKeywords: boolean; allowSmartIntents: boolean; allowKnowledgeBases: boolean; } export interface BotonicPluginFlowBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> { apiUrl?: string; jsonVersion?: FlowBuilderJSONVersion; flow?: HtFlowBuilderData; customFunctions?: Record<any, any>; getAccessToken: () => string; trackEvent?: TrackEventFunction<TPlugins, TExtraData>; getKnowledgeBaseResponse?: KnowledgeBaseFunction<TPlugins, TExtraData>; getAiAgentResponse?: AiAgentFunction<TPlugins, TExtraData>; smartIntentsConfig?: { numSmartIntentsToUse: number; }; inShadowing?: Partial<InShadowingConfig>; contentFilters?: ContentFilter<TPlugins, TExtraData>[]; customRatingMessageEnabled?: boolean; } export type TrackEventFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = (request: BotContext<TPlugins, TExtraData>, eventAction: string, args?: Record<string, any>) => Promise<void>; export type KnowledgeBaseFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = (request: BotContext<TPlugins, TExtraData>, sources: string[], instructions: string, messageId: string, memoryLength: number) => Promise<KnowledgeBaseResponse>; export type AiAgentFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = (request: BotContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs) => Promise<AgenticOutputMessage[] | undefined>; export interface AiAgentArgs { name: string; instructions: string; activeTools?: { name: string; }[]; } export type ContentFilter<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = (request: BotContext<TPlugins, TExtraData>, content: FlowContent) => Promise<FlowContent> | FlowContent; export interface FlowBuilderApiOptions { url: string; flowUrl: string; flow?: HtFlowBuilderData; accessToken: string; request: PluginPreRequest; } export declare enum ProcessEnvNodeEnvs { PRODUCTION = "production", DEVELOPMENT = "development" } export declare enum FlowBuilderJSONVersion { DRAFT = "draft", LATEST = "latest" } export interface KnowledgeBaseResponse { inferenceId: string; hasKnowledge: boolean; isFaithful: boolean; chunkIds: string[]; answer: string; } export interface SmartIntentResponse { data: { smart_intent_title: string; text: string; smart_intents_used: { title: string; description: string; }[]; }; } export interface PayloadParamsBase { followUpContentID?: string; } export interface OutputBaseMessage { type: 'text' | 'textWithButtons' | 'carousel' | 'exit'; } export interface TextMessage extends OutputBaseMessage { type: 'text'; content: { text: string; }; } export interface TextWithButtonsMessage extends OutputBaseMessage { type: 'textWithButtons'; content: { text: string; buttons: string[]; }; } export interface CarouselMessage extends OutputBaseMessage { type: 'carousel'; content: { elements: { title: string; subtitle: string; image: string; button: { text: string; url: string; }; }[]; }; } export interface ExitMessage extends OutputBaseMessage { type: 'exit'; } export type AgenticOutputMessage = TextMessage | TextWithButtonsMessage | CarouselMessage | ExitMessage;