feat(editor): Add pre-built agents experiment (#18124)

This commit is contained in:
Jaakko Husso
2025-08-09 10:28:14 +03:00
committed by GitHub
parent a3b625fc18
commit 5a69d2a2f3
44 changed files with 2635 additions and 653 deletions

View File

@@ -123,7 +123,7 @@ import { getResourcePermissions } from '@n8n/permissions';
import NodeViewUnfinishedWorkflowMessage from '@/components/NodeViewUnfinishedWorkflowMessage.vue';
import { createCanvasConnectionHandleString } from '@/utils/canvasUtils';
import { isValidNodeConnectionType } from '@/utils/typeGuards';
import { getEasyAiWorkflowJson, getRagStarterWorkflowJson } from '@/utils/easyAiWorkflowUtils';
import { getSampleWorkflowByTemplateId } from '@/utils/templates/workflowSamples';
import type { CanvasLayoutEvent } from '@/composables/useCanvasLayout';
import { useWorkflowSaving } from '@/composables/useWorkflowSaving';
import { useBuilderStore } from '@/stores/builder.store';
@@ -389,27 +389,24 @@ async function initializeRoute(force = false) {
if (isBlankRedirect.value) {
isBlankRedirect.value = false;
} else if (route.name === VIEWS.TEMPLATE_IMPORT) {
const templateId = route.params.id;
const loadWorkflowFromJSON = route.query.fromJson === 'true';
const templateId = route.params.id;
if (!templateId) {
return;
}
if (loadWorkflowFromJSON) {
const easyAiWorkflowJson = getEasyAiWorkflowJson();
const ragStarterWorkflowJson = getRagStarterWorkflowJson();
switch (templateId) {
case easyAiWorkflowJson.meta.templateId:
await openTemplateFromWorkflowJSON(easyAiWorkflowJson);
break;
case ragStarterWorkflowJson.meta.templateId:
await openTemplateFromWorkflowJSON(ragStarterWorkflowJson);
break;
default:
toast.showError(
new Error(i18n.baseText('nodeView.couldntLoadWorkflow.invalidWorkflowObject')),
i18n.baseText('nodeView.couldntImportWorkflow'),
);
await router.replace({ name: VIEWS.NEW_WORKFLOW });
const workflow = getSampleWorkflowByTemplateId(templateId.toString());
if (!workflow) {
toast.showError(
new Error(i18n.baseText('nodeView.couldntLoadWorkflow.invalidWorkflowObject')),
i18n.baseText('nodeView.couldntImportWorkflow'),
);
await router.replace({ name: VIEWS.NEW_WORKFLOW });
return;
}
await openTemplateFromWorkflowJSON(workflow);
} else {
await openWorkflowTemplate(templateId.toString());
}
@@ -609,7 +606,11 @@ async function openTemplateFromWorkflowJSON(workflow: WorkflowDataWithTemplateId
query: { templateId, parentFolderId },
});
await importTemplate({ id: templateId, name: workflow.name, workflow });
await importTemplate({
id: templateId,
name: workflow.name,
workflow,
});
uiStore.stateIsDirty = true;