diff --git a/packages/components/nodes/agentflow/Agent/Agent.ts b/packages/components/nodes/agentflow/Agent/Agent.ts index bdd6eae048f..b58bcc64bb0 100644 --- a/packages/components/nodes/agentflow/Agent/Agent.ts +++ b/packages/components/nodes/agentflow/Agent/Agent.ts @@ -547,7 +547,28 @@ class Agent_Agentflow implements INode { const nodeInstanceFilePath = options.componentNodes['retrieverTool'].filePath as string const nodeModule = await import(nodeInstanceFilePath) const newRetrieverToolNodeInstance = new nodeModule.nodeClass() - const [storeId, storeName] = knowledgeBase.documentStore.split(':') + + // Handle both old format (id:name) and new format (id only) + let storeId = knowledgeBase.documentStore + let storeName = '' + + if (knowledgeBase.documentStore.includes(':')) { + // Old format - split to get ID and name + ;[storeId, storeName] = knowledgeBase.documentStore.split(':') + } else { + // New format - only ID is stored, need to look up current name + storeId = knowledgeBase.documentStore + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const store = await appDataSource.getRepository(databaseEntities['DocumentStore']).findOneBy({ id: storeId }) + storeName = store?.name || storeId // Fallback to ID if store not found + } + + // Always fetch the current store name from database for referential integrity + const appDataSource = options.appDataSource as DataSource + const databaseEntities = options.databaseEntities as IDatabaseEntity + const store = await appDataSource.getRepository(databaseEntities['DocumentStore']).findOneBy({ id: storeId }) + const currentStoreName = store?.name || storeId // Use current name from database const docStoreVectorInstanceFilePath = options.componentNodes['documentStoreVS'].filePath as string const docStoreVectorModule = await import(docStoreVectorInstanceFilePath) @@ -571,7 +592,7 @@ class Agent_Agentflow implements INode { ...nodeData, inputs: { ...nodeData.inputs, - name: storeName + name: currentStoreName .toLowerCase() .replace(/ /g, '_') .replace(/[^a-z0-9_-]/g, ''), @@ -591,7 +612,7 @@ class Agent_Agentflow implements INode { const componentNode = options.componentNodes['retrieverTool'] availableTools.push({ - name: storeName + name: currentStoreName .toLowerCase() .replace(/ /g, '_') .replace(/[^a-z0-9_-]/g, ''), diff --git a/packages/components/nodes/agentflow/Retriever/Retriever.ts b/packages/components/nodes/agentflow/Retriever/Retriever.ts index 8524fcd12d3..c4037814fef 100644 --- a/packages/components/nodes/agentflow/Retriever/Retriever.ts +++ b/packages/components/nodes/agentflow/Retriever/Retriever.ts @@ -152,7 +152,7 @@ class Retriever_Agentflow implements INode { const knowledgeBases = nodeData.inputs?.retrieverKnowledgeDocumentStores as IKnowledgeBase[] if (knowledgeBases && knowledgeBases.length > 0) { for (const knowledgeBase of knowledgeBases) { - const [storeId, _] = knowledgeBase.documentStore.split(':') + const [storeId] = knowledgeBase.documentStore.split(':') const docStoreVectorInstanceFilePath = options.componentNodes['documentStoreVS'].filePath as string const docStoreVectorModule = await import(docStoreVectorInstanceFilePath)