@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
TypeScript
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[];
}