UNPKG

@botonic/plugin-flow-builder

Version:

Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.

71 lines (70 loc) 3.28 kB
import type { BotonicContext, ResolvedPlugins } from '@botonic/core'; import type { AiAgentArgs, EventAction, HtEventProps, InferenceResponse, UserExtraData } from '@botonic/shared'; import type { FlowContent } from './content-fields'; import { HtFlowBuilderData, HtRatingButton } from './content-fields/hubtype-fields/index'; 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 type AiAgentFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, aiAgentArgs: AiAgentArgs) => Promise<InferenceResponse>; export type TrackEventFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, eventAction: EventAction, args: Omit<HtEventProps, 'action'>) => Promise<void>; export type KnowledgeBaseFunction<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, sources: string[], instructions: string, messageId: string, memoryLength: number) => Promise<KnowledgeBaseResponse>; export interface BotonicPluginFlowBuilderOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> { apiUrl?: string; flowVersion?: FlowBuilderJSONVersion; flow?: HtFlowBuilderData; customFunctions?: Record<any, any>; trackEvent?: TrackEventFunction<TPlugins, TExtraData>; getKnowledgeBaseResponse?: KnowledgeBaseFunction<TPlugins, TExtraData>; getAiAgentResponse?: AiAgentFunction<TPlugins, TExtraData>; smartIntentsConfig?: { numSmartIntentsToUse: number; }; contentFilters?: ContentFilter<TPlugins, TExtraData>[]; inShadowing?: Partial<InShadowingConfig>; disableAIAgentInFirstInteraction?: boolean; } export interface InShadowingConfig { allowKeywords: boolean; allowSmartIntents: boolean; allowKnowledgeBases: boolean; allowAiAgents: boolean; } export interface SmartIntentsInferenceConfig { useLatest: boolean; numSmartIntentsToUse?: number; } export interface SmartIntentsInferenceRequestData { bot_id: string; text: string; num_smart_intents_to_use?: number; use_latest: boolean; } export interface SmartIntentResponse { smart_intent_title: string; text: string; smart_intents_used: { title: string; description: string; }[]; } export interface PayloadParamsBase { followUpContentID?: string; } export type ContentFilter<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData extends UserExtraData = UserExtraData> = (context: BotonicContext<TPlugins, TExtraData>, content: FlowContent) => Promise<FlowContent> | FlowContent; export type { HtFlowBuilderData }; export interface RatingSubmittedInfo extends HtRatingButton { possibleOptions: string[]; possibleValues: number[]; }