mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-22 23:01:20 +03:00
9b8fee3d8f
* Add tts UI * Add tts backend * Add description to eleven labs credentials * Fix issue with fetching eleven labs voices * Fix issue with text to speech tab not showing correct saved voice * Add option to autoplay tts audio after prediction completes * Fix crash issue when first changing tts provider * Set up streaming response for text to speech audio * Update controllers - fix issue with sse client getting removed before tts events are sent * Use existing sse streamer to stream tts audio before sse client is removed * Add tts sse to redis publisher * Fix issues with TTS - openai voices, streaming audio, rate limiting, speed of speech * Refactor * Refactor TTS - fix issues with tts loading and stop audio buttons * Abort TTS SSE when clicking the stop button * Update SSE handling for TTS * Fix issue with test voice feature * Fix issue with tts voices not loading * Update generate tts endpoint and its usage in internal chat * Whitelist tts generate endpoint * Refactor Text-to-Speech Provider Selection and Enhance UI Components - Updated the text-to-speech controller to select the active provider based on status instead of the first available provider - Added audio waveform controls and test audio functionality in the TextToSpeech component, allowing users to play and pause test audio - Integrated Autocomplete for voice selection in the TextToSpeech component - Implemented TTS action management in ChatMessage to prevent auto-scrolling during TTS actions * - Implemented stopAllTTS function calls to halt existing TTS audio before playing new audio or starting a new TTS stream * Updated the condition for enabling TTS providers to exclude the 'none' provider, ensuring only valid providers are considered for text-to-speech functionality. * Remove unnecessary code * Add ability to abort audio streaming in TTS and release lock on chat input * Remove logger * Fix tts audio not playing when clicking speaker button * update * TTS abort controller * Fix abort not working for TTS autoplay * Send metadata event when aborting autoplay TTS * Fix UI issue * Remove elevenlabs sdk from root package.json * Remove redundant condition for tts autoplay in chatflow --------- Co-authored-by: Henry <hzj94@hotmail.com>
437 lines
8.6 KiB
TypeScript
437 lines
8.6 KiB
TypeScript
import {
|
|
IAction,
|
|
ICommonObject,
|
|
IFileUpload,
|
|
IHumanInput,
|
|
INode,
|
|
INodeData as INodeDataFromComponent,
|
|
INodeExecutionData,
|
|
INodeParams,
|
|
IServerSideEventStreamer
|
|
} from 'flowise-components'
|
|
import { DataSource } from 'typeorm'
|
|
import { CachePool } from './CachePool'
|
|
import { Telemetry } from './utils/telemetry'
|
|
import { UsageCacheManager } from './UsageCacheManager'
|
|
|
|
export type MessageType = 'apiMessage' | 'userMessage'
|
|
|
|
export type ChatflowType = 'CHATFLOW' | 'MULTIAGENT' | 'ASSISTANT' | 'AGENTFLOW'
|
|
|
|
export type AssistantType = 'CUSTOM' | 'OPENAI' | 'AZURE'
|
|
|
|
export type ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED'
|
|
|
|
export enum MODE {
|
|
QUEUE = 'queue',
|
|
MAIN = 'main'
|
|
}
|
|
|
|
export enum ChatType {
|
|
INTERNAL = 'INTERNAL',
|
|
EXTERNAL = 'EXTERNAL',
|
|
EVALUATION = 'EVALUATION'
|
|
}
|
|
|
|
export enum ChatMessageRatingType {
|
|
THUMBS_UP = 'THUMBS_UP',
|
|
THUMBS_DOWN = 'THUMBS_DOWN'
|
|
}
|
|
|
|
export enum Platform {
|
|
OPEN_SOURCE = 'open source',
|
|
CLOUD = 'cloud',
|
|
ENTERPRISE = 'enterprise'
|
|
}
|
|
|
|
export enum UserPlan {
|
|
STARTER = 'STARTER',
|
|
PRO = 'PRO',
|
|
FREE = 'FREE'
|
|
}
|
|
|
|
/**
|
|
* Databases
|
|
*/
|
|
export interface IChatFlow {
|
|
id: string
|
|
name: string
|
|
flowData: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
deployed?: boolean
|
|
isPublic?: boolean
|
|
apikeyid?: string
|
|
analytic?: string
|
|
speechToText?: string
|
|
textToSpeech?: string
|
|
chatbotConfig?: string
|
|
followUpPrompts?: string
|
|
apiConfig?: string
|
|
category?: string
|
|
type?: ChatflowType
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface IChatMessage {
|
|
id: string
|
|
role: MessageType
|
|
content: string
|
|
chatflowid: string
|
|
executionId?: string
|
|
sourceDocuments?: string
|
|
usedTools?: string
|
|
fileAnnotations?: string
|
|
agentReasoning?: string
|
|
fileUploads?: string
|
|
artifacts?: string
|
|
chatType: string
|
|
chatId: string
|
|
memoryType?: string
|
|
sessionId?: string
|
|
createdDate: Date
|
|
leadEmail?: string
|
|
action?: string | null
|
|
followUpPrompts?: string
|
|
}
|
|
|
|
export interface IChatMessageFeedback {
|
|
id: string
|
|
content?: string
|
|
chatflowid: string
|
|
chatId: string
|
|
messageId: string
|
|
rating: ChatMessageRatingType
|
|
createdDate: Date
|
|
}
|
|
|
|
export interface ITool {
|
|
id: string
|
|
name: string
|
|
description: string
|
|
color: string
|
|
iconSrc?: string
|
|
schema?: string
|
|
func?: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface IAssistant {
|
|
id: string
|
|
details: string
|
|
credential: string
|
|
iconSrc?: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface ICredential {
|
|
id: string
|
|
name: string
|
|
credentialName: string
|
|
encryptedData: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface IVariable {
|
|
id: string
|
|
name: string
|
|
value: string
|
|
type: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface ILead {
|
|
id: string
|
|
name?: string
|
|
email?: string
|
|
phone?: string
|
|
chatflowid: string
|
|
chatId: string
|
|
createdDate: Date
|
|
}
|
|
|
|
export interface IUpsertHistory {
|
|
id: string
|
|
chatflowid: string
|
|
result: string
|
|
flowData: string
|
|
date: Date
|
|
}
|
|
|
|
export interface IExecution {
|
|
id: string
|
|
executionData: string
|
|
state: ExecutionState
|
|
agentflowId: string
|
|
sessionId: string
|
|
isPublic?: boolean
|
|
action?: string
|
|
createdDate: Date
|
|
updatedDate: Date
|
|
stoppedDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface IComponentNodes {
|
|
[key: string]: INode
|
|
}
|
|
|
|
export interface IComponentCredentials {
|
|
[key: string]: INode
|
|
}
|
|
|
|
export interface IVariableDict {
|
|
[key: string]: string
|
|
}
|
|
|
|
export interface INodeDependencies {
|
|
[key: string]: number
|
|
}
|
|
|
|
export interface INodeDirectedGraph {
|
|
[key: string]: string[]
|
|
}
|
|
|
|
export interface INodeData extends INodeDataFromComponent {
|
|
inputAnchors: INodeParams[]
|
|
inputParams: INodeParams[]
|
|
outputAnchors: INodeParams[]
|
|
}
|
|
|
|
export interface IReactFlowNode {
|
|
id: string
|
|
position: {
|
|
x: number
|
|
y: number
|
|
}
|
|
type: string
|
|
data: INodeData
|
|
positionAbsolute: {
|
|
x: number
|
|
y: number
|
|
}
|
|
z: number
|
|
handleBounds: {
|
|
source: any
|
|
target: any
|
|
}
|
|
width: number
|
|
height: number
|
|
selected: boolean
|
|
dragging: boolean
|
|
parentNode?: string
|
|
extent?: string
|
|
}
|
|
|
|
export interface IReactFlowEdge {
|
|
source: string
|
|
sourceHandle: string
|
|
target: string
|
|
targetHandle: string
|
|
type: string
|
|
id: string
|
|
data: {
|
|
label: string
|
|
}
|
|
}
|
|
|
|
export interface IReactFlowObject {
|
|
nodes: IReactFlowNode[]
|
|
edges: IReactFlowEdge[]
|
|
viewport: {
|
|
x: number
|
|
y: number
|
|
zoom: number
|
|
}
|
|
}
|
|
|
|
export interface IExploredNode {
|
|
[key: string]: {
|
|
remainingLoop: number
|
|
lastSeenDepth: number
|
|
}
|
|
}
|
|
|
|
export interface INodeQueue {
|
|
nodeId: string
|
|
depth: number
|
|
}
|
|
|
|
export interface IDepthQueue {
|
|
[key: string]: number
|
|
}
|
|
|
|
export interface IAgentflowExecutedData {
|
|
nodeLabel: string
|
|
nodeId: string
|
|
data: INodeExecutionData
|
|
previousNodeIds: string[]
|
|
status?: ExecutionState
|
|
}
|
|
|
|
export interface IMessage {
|
|
message: string
|
|
type: MessageType
|
|
role?: MessageType
|
|
content?: string
|
|
}
|
|
|
|
export interface IncomingInput {
|
|
question: string
|
|
overrideConfig?: ICommonObject
|
|
chatId?: string
|
|
sessionId?: string
|
|
stopNodeId?: string
|
|
uploads?: IFileUpload[]
|
|
leadEmail?: string
|
|
history?: IMessage[]
|
|
action?: IAction
|
|
streaming?: boolean
|
|
}
|
|
|
|
export interface IncomingAgentflowInput extends Omit<IncomingInput, 'question'> {
|
|
question?: string
|
|
form?: Record<string, any>
|
|
humanInput?: IHumanInput
|
|
}
|
|
|
|
export interface IActiveChatflows {
|
|
[key: string]: {
|
|
startingNodes: IReactFlowNode[]
|
|
endingNodeData?: INodeData
|
|
inSync: boolean
|
|
overrideConfig?: ICommonObject
|
|
chatId?: string
|
|
}
|
|
}
|
|
|
|
export interface IActiveCache {
|
|
[key: string]: Map<any, any>
|
|
}
|
|
|
|
export interface IOverrideConfig {
|
|
node: string
|
|
nodeId: string
|
|
label: string
|
|
name: string
|
|
type: string
|
|
schema?: ICommonObject[] | Record<string, string>
|
|
}
|
|
|
|
export type ICredentialDataDecrypted = ICommonObject
|
|
|
|
// Plain credential object sent to server
|
|
export interface ICredentialReqBody {
|
|
name: string
|
|
credentialName: string
|
|
plainDataObj: ICredentialDataDecrypted
|
|
workspaceId?: string
|
|
}
|
|
|
|
// Decrypted credential object sent back to client
|
|
export interface ICredentialReturnResponse extends ICredential {
|
|
plainDataObj: ICredentialDataDecrypted
|
|
}
|
|
|
|
export interface IUploadFileSizeAndTypes {
|
|
fileTypes: string[]
|
|
maxUploadSize: number
|
|
}
|
|
|
|
export interface IApiKey {
|
|
id: string
|
|
keyName: string
|
|
apiKey: string
|
|
apiSecret: string
|
|
updatedDate: Date
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface ICustomTemplate {
|
|
id: string
|
|
name: string
|
|
flowData: string
|
|
updatedDate: Date
|
|
createdDate: Date
|
|
description?: string
|
|
type?: string
|
|
badge?: string
|
|
framework?: string
|
|
usecases?: string
|
|
workspaceId?: string
|
|
}
|
|
|
|
export interface IFlowConfig {
|
|
chatflowid: string
|
|
chatflowId: string
|
|
chatId: string
|
|
sessionId: string
|
|
chatHistory: IMessage[]
|
|
apiMessageId: string
|
|
overrideConfig?: ICommonObject
|
|
state?: ICommonObject
|
|
runtimeChatHistoryLength?: number
|
|
}
|
|
|
|
export interface IPredictionQueueAppServer {
|
|
appDataSource: DataSource
|
|
componentNodes: IComponentNodes
|
|
sseStreamer: IServerSideEventStreamer
|
|
telemetry: Telemetry
|
|
cachePool: CachePool
|
|
usageCacheManager: UsageCacheManager
|
|
}
|
|
|
|
export interface IExecuteFlowParams extends IPredictionQueueAppServer {
|
|
incomingInput: IncomingInput
|
|
chatflow: IChatFlow
|
|
chatId: string
|
|
orgId: string
|
|
workspaceId: string
|
|
subscriptionId: string
|
|
productId: string
|
|
baseURL: string
|
|
isInternal: boolean
|
|
isEvaluation?: boolean
|
|
evaluationRunId?: string
|
|
signal?: AbortController
|
|
files?: Express.Multer.File[]
|
|
fileUploads?: IFileUpload[]
|
|
uploadedFilesContent?: string
|
|
isUpsert?: boolean
|
|
isRecursive?: boolean
|
|
parentExecutionId?: string
|
|
iterationContext?: ICommonObject
|
|
isTool?: boolean
|
|
}
|
|
|
|
export interface INodeOverrides {
|
|
[key: string]: {
|
|
label: string
|
|
name: string
|
|
type: string
|
|
enabled: boolean
|
|
}[]
|
|
}
|
|
|
|
export interface IVariableOverride {
|
|
id: string
|
|
name: string
|
|
type: 'static' | 'runtime'
|
|
enabled: boolean
|
|
}
|
|
|
|
// DocumentStore related
|
|
export * from './Interface.DocumentStore'
|
|
|
|
// Evaluations related
|
|
export * from './Interface.Evaluation'
|