Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Chore: Enhanced Controlled Export/Import Process with Intelligent Conflict Management #5352

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
iokinpardo wants to merge 27 commits into FlowiseAI:main
base: main
Choose a base branch
Loading
from iokinpardo:main
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a2f96de
Add import conflict preview and update handling
iokinpardo Oct 13, 2025
22b3eb1
Merge pull request #1 from iokinpardo/codex/modify-import-system-for-...
iokinpardo Oct 13, 2025
a329306
Fix assistant conflict type mapping
iokinpardo Oct 13, 2025
c19e506
Merge branch 'main' into codex/modify-import-system-for-conflict-reso...
iokinpardo Oct 13, 2025
2ff842d
Merge pull request #2 from iokinpardo/codex/modify-import-system-for-...
iokinpardo Oct 13, 2025
21e9b3d
Fix duplicate assistant type mapping declaration
iokinpardo Oct 13, 2025
d181085
Merge pull request #3 from iokinpardo/codex/solucionar-problema-de-de...
iokinpardo Oct 13, 2025
5da3699
Enhance import conflict review UI
iokinpardo Oct 14, 2025
f8e4fb1
Merge pull request #4 from iokinpardo/codex/apply-adjustments-to-flow...
iokinpardo Oct 14, 2025
5d1462c
Add credential binding metadata to workspace exports
iokinpardo Oct 14, 2025
366f113
Merge pull request #5 from iokinpardo/codex/confirm-credential-export...
iokinpardo Oct 14, 2025
1c71941
feat: improve import review with tabs and summary
iokinpardo Oct 15, 2025
0ebcfae
Merge pull request #6 from iokinpardo/codex/add-tabs-for-import-overv...
iokinpardo Oct 15, 2025
3a6965c
Fix duplicate document store sections when switching tabs
iokinpardo Oct 15, 2025
b476df1
Merge pull request #7 from iokinpardo/codex/fix-incorrect-document-st...
iokinpardo Oct 15, 2025
6cf7d9e
feat(ui): add import review accordions
iokinpardo Oct 15, 2025
a097e48
Merge pull request #8 from iokinpardo/codex/set-default-checkbox-stat...
iokinpardo Oct 15, 2025
899fd79
Improve import dialog visibility and summary
iokinpardo Oct 15, 2025
437d47e
Merge pull request #9 from iokinpardo/codex/improve-visibility-of-dis...
iokinpardo Oct 15, 2025
49ac7c6
Fix conflict selection keys and expand new item accordions
iokinpardo Oct 16, 2025
09ee16f
Merge pull request #10 from iokinpardo/codex/fix-selection-issue-in-c...
iokinpardo Oct 16, 2025
57f725a
Fix import review new items including conflicts
iokinpardo Oct 16, 2025
52f1a36
Merge pull request #11 from iokinpardo/codex/verify-item-duplication-...
iokinpardo Oct 16, 2025
1e4e080
Fix chatflow credential bindings during import
iokinpardo Oct 16, 2025
6252a61
Merge pull request #12 from iokinpardo/codex/fix-chatflows-credential...
iokinpardo Oct 16, 2025
94bf351
Adjust duplicate import handling and new item UI
iokinpardo Oct 16, 2025
ad9cca9
Merge pull request #13 from iokinpardo/codex/add-clone-suffix-to-dupl...
iokinpardo Oct 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions docs/credential-export-options.md
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Exportación e importación de credenciales en Agentflow V2

Esta guía describe el flujo actual para preservar los nombres de las credenciales al exportar flujos de Agentflow V2 (y otros `ChatFlow`) y cómo se reconstruyen automáticamente al importarlos.

## Qué se incluye en la exportación

* `generateExportFlowData` continúa eliminando cualquier clave `FLOWISE_CREDENTIAL_ID` de los nodos para no exponer IDs sensibles en el archivo descargado.【F:packages/ui/src/utils/genericHelper.js†L551-L607】
* Antes de que los datos lleguen al cliente, `exportImportService.exportData` inspecciona cada `ChatFlow`, identifica los nodos que referencian credenciales y adjunta una sección `credentialBindings` con pares `{ nodeId, path, credentialName, credentialType }`. Sólo se incluyen entradas cuyo nombre y tipo pudieron resolverse en la base de datos.【F:packages/server/src/services/export-import/index.ts†L224-L327】【F:packages/server/src/services/export-import/index.ts†L180-L222】
* Al exportar un workspace, la sección `credentialBindings` se conserva dentro del JSON de cada flujo, junto con la lista de nodos y edges ya sanitizados.【F:packages/ui/src/utils/exportImport.js†L22-L30】【F:packages/ui/src/utils/genericHelper.js†L559-L606】

## Cómo se reconstruyen al importar

* Durante la importación, `exportImportService.importData` busca la sección `credentialBindings` en cada flujo y consulta las credenciales disponibles en el workspace de destino (incluyendo compartidas) por nombre y tipo.【F:packages/server/src/services/export-import/index.ts†L329-L433】
* Si encuentra una coincidencia, inserta el nuevo ID bajo la clave `FLOWISE_CREDENTIAL_ID` en el nodo indicado y elimina la sección `credentialBindings` antes de persistir el flujo.【F:packages/server/src/services/export-import/index.ts†L374-L433】
* Cuando no existe una credencial con el mismo nombre y tipo, se registra una advertencia en los logs para que el usuario pueda completar la vinculación de forma manual tras la importación.【F:packages/server/src/services/export-import/index.ts†L356-L433】

## Notas y limitaciones

* Sólo se generan entradas en `credentialBindings` para credenciales resolubles; si un flujo hacía referencia a una credencial eliminada, no habrá mapeo automático y el nodo seguirá requiriendo configuración manual al importarse.
* El mecanismo confía en que los nombres de credencial y sus tipos (`credentialName`) coincidan exactamente entre origen y destino. Diferencias en mayúsculas/minúsculas o en el tipo impedirán la reconexión automática.
* Las exportaciones individuales desde el canvas no incluyen `credentialBindings`; el mapeo automático sólo se aplica a las exportaciones de workspace.
28 changes: 27 additions & 1 deletion packages/server/src/controllers/export-import/index.ts
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,33 @@ const importData = async (req: Request, res: Response, next: NextFunction) => {
}
}

const previewImportData = async (req: Request, res: Response, next: NextFunction) => {
try {
const workspaceId = req.user?.activeWorkspaceId
if (!workspaceId) {
throw new InternalFlowiseError(
StatusCodes.NOT_FOUND,
`Error: exportImportController.previewImportData - workspace ${workspaceId} not found!`
)
}

const importData = req.body
if (!importData) {
throw new InternalFlowiseError(
StatusCodes.BAD_REQUEST,
'Error: exportImportController.previewImportData - importData is required!'
)
}

const preview = await exportImportService.previewImportData(importData, workspaceId)
return res.status(StatusCodes.OK).json(preview)
} catch (error) {
next(error)
}
}

export default {
exportData,
importData
importData,
previewImportData
}
2 changes: 2 additions & 0 deletions packages/server/src/routes/export-import/index.ts
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ const router = express.Router()

router.post('/export', checkPermission('workspace:export'), exportImportController.exportData)

router.post('/preview', checkPermission('workspace:import'), exportImportController.previewImportData)

router.post('/import', checkPermission('workspace:import'), exportImportController.importData)

export default router
Loading

AltStyle によって変換されたページ (->オリジナル) /