Chore/refractor (#4454)

* markdown files and env examples cleanup

* components update

* update jsonlines description

* server refractor

* update telemetry

* add execute custom node

* add ui refractor

* add username and password authenticate

* correctly retrieve past images in agentflowv2

* disable e2e temporarily

* add existing username and password authenticate

* update migration to default workspace

* update todo

* blob storage migrating

* throw error on agent tool call error

* add missing execution import

* add referral

* chore: add error message when importData is undefined

* migrate api keys to db

* fix: data too long for column executionData

* migrate api keys from json to db at init

* add info on account setup

* update docstore missing fields

---------

Co-authored-by: chungyau97 <chungyau97@gmail.com>
This commit is contained in:
Henry Heng
2025-05-27 14:29:42 +08:00
committed by GitHub
parent e35a126b46
commit 5a37227d14
560 changed files with 62127 additions and 4100 deletions
+21 -6
View File
@@ -1,6 +1,8 @@
import { ChatFlow } from '../database/entities/ChatFlow'
import { IReactFlowObject } from '../Interface'
import { addBase64FilesToStorage } from 'flowise-components'
import { checkStorage, updateStorageUsage } from './quotaUsage'
import { UsageCacheManager } from '../UsageCacheManager'
export const containsBase64File = (chatflow: ChatFlow) => {
const parsedFlowData: IReactFlowObject = JSON.parse(chatflow.flowData)
@@ -46,11 +48,19 @@ export const containsBase64File = (chatflow: ChatFlow) => {
return found
}
export const updateFlowDataWithFilePaths = async (chatflowid: string, flowData: string) => {
export const updateFlowDataWithFilePaths = async (
chatflowid: string,
flowData: string,
orgId: string,
workspaceId: string,
subscriptionId: string,
usageCacheManager: UsageCacheManager
) => {
try {
const parsedFlowData: IReactFlowObject = JSON.parse(flowData)
const re = new RegExp('^data.*;base64', 'i')
const nodes = parsedFlowData.nodes
for (let j = 0; j < nodes.length; j++) {
const node = nodes[j]
if (node.data.category !== 'Document Loaders') {
@@ -75,21 +85,26 @@ export const updateFlowDataWithFilePaths = async (chatflowid: string, flowData:
for (let j = 0; j < files.length; j++) {
const file = files[j]
if (re.test(file)) {
node.data.inputs[key] = await addBase64FilesToStorage(file, chatflowid, fileNames)
await checkStorage(orgId, subscriptionId, usageCacheManager)
const { path, totalSize } = await addBase64FilesToStorage(file, chatflowid, fileNames, orgId)
node.data.inputs[key] = path
await updateStorageUsage(orgId, workspaceId, totalSize, usageCacheManager)
}
}
} catch (e) {
continue
}
} else if (re.test(input)) {
node.data.inputs[key] = await addBase64FilesToStorage(input, chatflowid, fileNames)
await checkStorage(orgId, subscriptionId, usageCacheManager)
const { path, totalSize } = await addBase64FilesToStorage(input, chatflowid, fileNames, orgId)
node.data.inputs[key] = path
await updateStorageUsage(orgId, workspaceId, totalSize, usageCacheManager)
}
}
}
}
return JSON.stringify(parsedFlowData)
} catch (e) {
return ''
} catch (e: any) {
throw new Error(`Error updating flow data with file paths: ${e.message}`)
}
}