n8n-editor-ui 1.105.2 → 1.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/assets/{AnimatedSpinner-JDPILr6I.js → AnimatedSpinner-BT-tHTIr.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DmrjfK8Z.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BeYYXOqm.js} +1 -1
  3. package/dist/assets/{AuthView-BCh-1Z6z.js → AuthView-qxCpg9Vt.js} +2 -2
  4. package/dist/assets/{ChangePasswordView-D0Q0acvn.js → ChangePasswordView-YpoX0OgW.js} +3 -3
  5. package/dist/assets/CollectionParameter-B7ioj7nV.js +4 -0
  6. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DxtfewND.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CYlb_OaL.js} +1 -1
  7. package/dist/assets/{CredentialsView-sqTk_3ut.js → CredentialsView-XfBa-FgD.js} +8 -8
  8. package/dist/assets/DataStoreView-D5shCvXR.js +344 -0
  9. package/dist/assets/DataStoreView-bZrewhaR.css +159 -0
  10. package/dist/assets/{DemoFooter-ChIs3TEK.js → DemoFooter-GL7a3c8m.js} +6 -6
  11. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-C6iCyiKz.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-B5QhpE-B.js} +1 -1
  12. package/dist/assets/{EntityNotFound-DqoB41Xj.js → EntityNotFound-BSClXGSU.js} +1 -1
  13. package/dist/assets/{EntityUnAuthorised-D7ekLA3c.js → EntityUnAuthorised-rdODRu8_.js} +1 -1
  14. package/dist/assets/{ErrorView-B75ngZOZ.js → ErrorView-DDtX9a9K.js} +1 -1
  15. package/dist/assets/{EvaluationsRootView-CS_kN4cR.js → EvaluationsRootView-NcI-bjuh.js} +1 -1
  16. package/dist/assets/{EvaluationsView-BGpOqIUW.js → EvaluationsView-P9DGMaUt.js} +3 -3
  17. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-CDMyE7bT.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-CIpd91fZ.js} +2 -2
  18. package/dist/assets/{ExecutionsView-B0u9SozU.js → ExecutionsView-NkCHKd3U.js} +8 -8
  19. package/dist/assets/{FixedCollectionParameter-KIEI8VzT.js → FixedCollectionParameter-0-xS_bRE.js} +1 -1
  20. package/dist/assets/{ForgotMyPasswordView-DfC4UKfi.js → ForgotMyPasswordView-DqADZ9FM.js} +3 -3
  21. package/dist/assets/{InfoAccordion-BN9vwyPs.js → InfoAccordion-CR3AoL8Q.js} +1 -1
  22. package/dist/assets/{InsightsChartAverageRuntime-BvvtAusX.js → InsightsChartAverageRuntime-C9xMoV66.js} +4 -4
  23. package/dist/assets/{InsightsChartFailed-Bjo1hBTW.js → InsightsChartFailed-BXTLYxeQ.js} +4 -4
  24. package/dist/assets/{InsightsChartFailureRate-dX8aUMsh.js → InsightsChartFailureRate-B0i0ej03.js} +4 -4
  25. package/dist/assets/{InsightsChartTimeSaved-DBlGT33W.js → InsightsChartTimeSaved-DvotshIJ.js} +4 -4
  26. package/dist/assets/{InsightsChartTotal-t0sBCGe-.js → InsightsChartTotal-BA2XNYoP.js} +4 -4
  27. package/dist/assets/{InsightsDashboard-u4CErQ7-.js → InsightsDashboard-CD18Zlv9.js} +10 -10
  28. package/dist/assets/{InsightsPaywall-kA0d5kpt.js → InsightsPaywall-DkCpVq9K.js} +1 -1
  29. package/dist/assets/{InsightsSummary-CiQDCYlN.js → InsightsSummary-te2NcZ9J.js} +1 -1
  30. package/dist/assets/{InsightsTableWorkflows-Bo--1NjV.js → InsightsTableWorkflows-BWxBUXJC.js} +4 -5
  31. package/dist/assets/{Logo-gUh2HCyK.js → Logo-BxRx1Sn7.js} +1 -1
  32. package/dist/assets/{LogsPanel-YfX3_zlm.js → LogsPanel-BMolfuZj.js} +6 -5
  33. package/dist/assets/{MainHeader-CzLBJESp.js → MainHeader-04Z61-C3.js} +8 -8
  34. package/dist/assets/{MainSidebar-tOhvCF2j.js → MainSidebar-w66HTCDw.js} +3 -5
  35. package/dist/assets/NodeCreation-Q_eKy6g5.js +172 -0
  36. package/dist/assets/{NodeCreator-B_8dEvl7.js → NodeCreator-CrAhvxUw.js} +1 -2
  37. package/dist/assets/{NodeDetailsView-CWivfrhu.js → NodeDetailsView-B8VNYLDG.js} +16 -30
  38. package/dist/assets/{NodeDetailsView-CaTI-1QQ.css → NodeDetailsView-Cam4nPwL.css} +0 -3
  39. package/dist/assets/{NodeDetailsViewV2-D0QNvUU4.js → NodeDetailsViewV2-DnGtw1tW.js} +18 -31
  40. package/dist/assets/{NodeDetailsViewV2-LLVofUjw.css → NodeDetailsViewV2-LzYZcnv5.css} +0 -124
  41. package/dist/assets/{NodeView-B2097MY0.css → NodeView-BMiOpmk4.css} +184 -10
  42. package/dist/assets/{NodeView-BmP6QAra.js → NodeView-C4gvxUVX.js} +137 -69
  43. package/dist/assets/{ProjectHeader-CXqD16W9.js → ProjectHeader-Dj1zlff0.js} +46 -6
  44. package/dist/assets/{ProjectSettings-B_kivKtm.js → ProjectSettings-DGLVLIdf.js} +3 -3
  45. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-L2apmmAP.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BMifVbDm.js} +1 -1
  46. package/dist/assets/{ResourcesListLayout-uBbUHbxU.css → ResourcesListLayout-6eIqe4Ld.css} +8 -8
  47. package/dist/assets/{ResourcesListLayout-CHi9R396.js → ResourcesListLayout-BBjWNm-W.js} +56 -30
  48. package/dist/assets/{RunDataJson-BqtpQ74w.js → RunDataJson-B9KyYBpg.js} +3 -3
  49. package/dist/assets/{RunDataJsonActions-CPE5zMeI.js → RunDataJsonActions-Duqt5QgE.js} +1 -1
  50. package/dist/assets/{RunDataParsedAiContent-C_QJQ-jI.js → RunDataParsedAiContent-CyGJ7cWY.js} +2 -2
  51. package/dist/assets/{RunDataSearch-BfGjAgIJ.js → RunDataSearch-CnT_s2fI.js} +3 -2
  52. package/dist/assets/{RunDataTable-5XpnxDMa.js → RunDataTable-DS--mKOx.js} +1 -1
  53. package/dist/assets/{SamlOnboarding-CS5B7xcA.js → SamlOnboarding-CXobvVPO.js} +3 -3
  54. package/dist/assets/{SettingsApiView-PY0xZKpc.js → SettingsApiView-d2EPD0v0.js} +1 -1
  55. package/dist/assets/{SettingsCommunityNodesView-DWEBMY_B.js → SettingsCommunityNodesView-D8Hu1ibZ.js} +4 -4
  56. package/dist/assets/{SettingsExternalSecrets-CV1WvCeS.js → SettingsExternalSecrets-CaEiVMrT.js} +1 -1
  57. package/dist/assets/{SettingsLdapView-xiDgGqB9.js → SettingsLdapView-BG-JZnoc.js} +1 -1
  58. package/dist/assets/{SettingsLogStreamingView-BOspN4AO.js → SettingsLogStreamingView-CSVfO_Zn.js} +1 -1
  59. package/dist/assets/{SettingsPersonalView-kRV4j0YU.js → SettingsPersonalView-CtYxuOr8.js} +1 -1
  60. package/dist/assets/{SettingsSourceControl-CqqUi0f_.js → SettingsSourceControl-CMY9og8f.js} +1 -1
  61. package/dist/assets/{SettingsSso-DMsJ0F9P.js → SettingsSso-Cb9eLBFc.js} +1 -1
  62. package/dist/assets/{SettingsUsageAndPlan-CiHtUrNM.js → SettingsUsageAndPlan-Ctu7EqQt.js} +1 -1
  63. package/dist/assets/{SettingsUsersView-GNuX-2-B.js → SettingsUsersView-CZ1NXmdI.js} +1 -2
  64. package/dist/assets/{SettingsView-OOetC5cT.js → SettingsView--K0sRU6u.js} +1 -1
  65. package/dist/assets/{SetupView-BWkYZ1ME.js → SetupView-B2miL_Xi.js} +3 -3
  66. package/dist/assets/{SetupWorkflowCredentialsButton-ulkxwZMC.js → SetupWorkflowCredentialsButton-BNtMeQ7B.js} +1 -1
  67. package/dist/assets/{SetupWorkflowFromTemplateView-CpIMt1Bt.js → SetupWorkflowFromTemplateView-CTKyYiT2.js} +3 -3
  68. package/dist/assets/{SigninView-DOWNbIF1.js → SigninView-Cwal9uDr.js} +3 -3
  69. package/dist/assets/{SignoutView-a1HcTjhY.js → SignoutView-HYdgGBTv.js} +1 -1
  70. package/dist/assets/{SignupView-B7r7yVXa.js → SignupView-C-cruKwR.js} +3 -3
  71. package/dist/assets/{TableBase-B-JATMPh.js → TableBase-BrU7ycgG.js} +1 -1
  72. package/dist/assets/{Tags-D74Ib0wR.js → Tags-B52OEMR8.js} +1 -1
  73. package/dist/assets/{TemplateDetails-BYccKOZI.js → TemplateDetails-CJHZRvKM.js} +2 -2
  74. package/dist/assets/{TemplateList-ph-ixTSZ.js → TemplateList-BNPtBAlT.js} +1 -1
  75. package/dist/assets/{TemplatesCollectionView-NBYqJ6Ng.js → TemplatesCollectionView-B3x_Q5aa.js} +6 -6
  76. package/dist/assets/{TemplatesSearchView-B4V7rMIp.js → TemplatesSearchView-Bu485VBl.js} +3 -3
  77. package/dist/assets/{TemplatesView-Ddfbp7vT.js → TemplatesView-D6dJhGNK.js} +1 -1
  78. package/dist/assets/{TemplatesWorkflowView-Ds0mtTkQ.js → TemplatesWorkflowView-Bpnh-uFe.js} +6 -6
  79. package/dist/assets/{TriggerPanel-B3c3br25.js → TriggerPanel-Bh-GmBcj.js} +5 -5
  80. package/dist/assets/{VariablesView-D2II0Fi0.js → VariablesView-DHHlaB3P.js} +5 -5
  81. package/dist/assets/{VueMarkdown--SekAVyI.js → VueMarkdown-CPLXg7f3.js} +1 -1
  82. package/dist/assets/{WorkerView-yp8_2tZK.js → WorkerView-BUNXsftd.js} +6 -6
  83. package/dist/assets/{WorkflowActivator-BTdTqaGo.js → WorkflowActivator-CxzTs9kB.js} +3 -3
  84. package/dist/assets/{WorkflowExecutionsInfoAccordion-DIZ_tUl3.js → WorkflowExecutionsInfoAccordion-DX3IfR5Z.js} +2 -2
  85. package/dist/assets/{WorkflowExecutionsLandingPage-D0-3jMZu.js → WorkflowExecutionsLandingPage-DOdAJCQJ.js} +3 -3
  86. package/dist/assets/{WorkflowExecutionsPreview-Ce57xC3f.js → WorkflowExecutionsPreview-BgTqxHb-.js} +4 -4
  87. package/dist/assets/{WorkflowExecutionsView-BUeGYaa4.js → WorkflowExecutionsView-EYRMn-We.js} +6 -6
  88. package/dist/assets/{WorkflowHistory-GeToQCRe.js → WorkflowHistory-hyAEcU5h.js} +2 -2
  89. package/dist/assets/{WorkflowOnboardingView-BoRFLWEc.js → WorkflowOnboardingView-SyPwYcj1.js} +1 -1
  90. package/dist/assets/{WorkflowPreview-BrIuYnws.js → WorkflowPreview-DtiGZ8jt.js} +1 -1
  91. package/dist/assets/{WorkflowsView-DsqUIQFn.js → WorkflowsView-B_kHCXhq.js} +125 -16
  92. package/dist/assets/{canvas-BRM7hzzm.js → canvas-CXoLZ47B.js} +1 -1
  93. package/dist/assets/{chartjs.utils-Dky7wifk.js → chartjs.utils-DvLXBjgm.js} +2 -2
  94. package/dist/assets/{en-D7cJPQEa.js → en-ORjqW56z.js} +41 -7
  95. package/dist/assets/{global-link-actions-BoKKYxTS.js → global-link-actions-DJzO0XY8.js} +1 -1
  96. package/dist/assets/{index-w62KClh_.js → index-CgvvLCqI.js} +12906 -8174
  97. package/dist/assets/{index-DFwCCuPV.js → index-Ci6ERb78.js} +1 -1
  98. package/dist/assets/{index-BwGKZdwg.css → index-DegUPemN.css} +1058 -482
  99. package/dist/assets/{pickBy-xEtyyEmB.js → pickBy-C3y4kDIS.js} +1 -1
  100. package/dist/assets/readyToRunWorkflows.store-BcJDo6QO.js +2436 -0
  101. package/dist/assets/{templateActions-Cn8MseRP.js → templateActions-UuwYO8mn.js} +1 -1
  102. package/dist/assets/{useBeforeUnload-DdD1AHGk.js → useBeforeUnload-DtWRHUnb.js} +1 -1
  103. package/dist/assets/{useExecutionDebugging-D8eatMV3.js → useExecutionDebugging-lNwnzl0B.js} +1 -1
  104. package/dist/assets/{useImportCurlCommand-B_dl1l2k.js → useImportCurlCommand-Y4wyh6JG.js} +1 -1
  105. package/dist/assets/useProjectPages-xsj6GD9u.js +17 -0
  106. package/dist/assets/{usePushConnection-Be_U6fZA.js → usePushConnection-Odqh2Hhm.js} +10 -3
  107. package/dist/assets/{useWorkflowActivate-CT3nXB8R.js → useWorkflowActivate-DFgPcDUt.js} +1 -1
  108. package/dist/index.html +2 -2
  109. package/package.json +1 -1
  110. package/vite.config.mts +2 -0
  111. package/dist/assets/CollectionParameter-BzqYcWCs.js +0 -4
  112. package/dist/assets/N8nDataTableServer-DELDZc8g.js +0 -3203
  113. package/dist/assets/NodeCreation-B9BKefxK.js +0 -440
  114. package/dist/assets/aiTemplatesStarterCollection.store-CnPDpZGx.js +0 -795
  115. package/dist/assets/useProjectPages-CyvDtt_i.js +0 -21
@@ -1,11 +1,11 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-B9BKefxK.js","assets/index-w62KClh_.js","assets/index-BwGKZdwg.css","assets/NodeCreation-CxN6JIS_.css","assets/NodeDetailsView-CWivfrhu.js","assets/TriggerPanel-B3c3br25.js","assets/RunDataParsedAiContent-C_QJQ-jI.js","assets/VueMarkdown--SekAVyI.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DxtfewND.js","assets/InfoAccordion-BN9vwyPs.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-gMtmEr6n.css","assets/useWorkflowActivate-CT3nXB8R.js","assets/global-link-actions-BoKKYxTS.js","assets/useExecutionDebugging-D8eatMV3.js","assets/useBeforeUnload-DdD1AHGk.js","assets/canvas-BRM7hzzm.js","assets/aiTemplatesStarterCollection.store-CnPDpZGx.js","assets/NodeDetailsView-CaTI-1QQ.css","assets/NodeDetailsViewV2-D0QNvUU4.js","assets/NodeDetailsViewV2-LLVofUjw.css","assets/SetupWorkflowCredentialsButton-ulkxwZMC.js"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, x as computed, r as ref, aP as useNDVStore, ab as watch, h as createElementBlock, g as openBlock, n as normalizeClass, e as createBlock, f as createCommentVNode, l as unref, p as N8nText, w as withCtx, k as createTextVNode, t as toDisplayString, cs as _sfc_main$9, i as createVNode, a0 as _sfc_main$a, _ as _export_sfc, Q as createEventBus, ac as useCssModule, v as useSettingsStore, ct as useVueFlow, bW as toRef, cu as useCanvasMapping, cv as refThrottled, j as createBaseVNode, J as renderSlot, cw as Canvas, D as mergeProps, a5 as useWorkflowsStore, bF as useNodeHelpers, cx as useFocusPanelStore, bK as useNodeTypesStore, cy as useNodeSettingsParameters, cz as useEnvironmentsStore, cA as useDeviceSupport, S as useDebounce, cB as HTML_NODE_TYPE, cC as isValueExpression, cD as isResourceLocatorValue, cE as AI_TRANSFORM_NODE_TYPE, cF as useResolvedExpression, cf as useThrottleFn, bS as withModifiers, cG as _sfc_main$b, N as N8nIcon, cH as InfoTip, c as useI18n, cI as __unplugin_components_2, cJ as __unplugin_components_3, F as Fragment, cK as __unplugin_components_4, cL as __unplugin_components_5, cM as __unplugin_components_6, cN as __unplugin_components_7, cO as __unplugin_components_8, cP as __unplugin_components_9, cQ as N8nInput, H as N8nRadioButtons, P as normalizeStyle, cd as useStyles, cc as N8nResizeWrapper, cR as getParameterTypeOption, cS as htmlEditorEventBus, cT as parseFromExpression, cU as isValidParameterOption, cV as formatAsExpression, aA as useTelemetry, K as nextTick, cW as hasFocusOnInput, cX as isFocusableEl, br as isChatNode, cY as truncateBeforeLast, q as N8nButton, a1 as I18nT, cb as KeyboardShortcutTooltip, bT as NodeIcon, ay as N8nActionDropdown, cZ as reactive, o as onMounted, c2 as onUnmounted, b as useRouter, a6 as useRoute, a as useToast, aj as useDocumentTitle, al as useWorkflowHelpers, ak as useWorkflowSaving, T as useUIStore, af as useSourceControlStore, c_ as useNodeCreatorStore, c$ as useCredentialsStore, d0 as useExternalSecretsStore, ad as useRootStore, aQ as useExecutionsStore, ae as useCanvasStore, ai as useNpsSurveyStore, d1 as useHistoryStore, ag as useProjectsStore, u as useUsersStore, R as useTagsStore, a4 as usePushConnectionStore, be as useTemplatesStore, d2 as useBuilderStore, ah as useFoldersStore, d3 as usePostHog, d4 as useAgentRequestStore, bE as useLogsStore, bG as useRunWorkflow, bJ as useCanvasOperations, d5 as useWorkflowExtraction, c5 as useClipboard, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, d6 as NEW_WORKFLOW_ID, V as VIEWS, d7 as NDV_UI_OVERHAUL_EXPERIMENT, bL as START_NODE_TYPE, d8 as getNodeViewTab, G as MAIN_HEADER_TABS, d9 as VALID_WORKFLOW_IMPORT_URL_REGEX, aC as useMessage, aD as MODAL_CONFIRM, da as jsonParse, an as getResourcePermissions, bB as CHAT_TRIGGER_NODE_TYPE, bA as MANUAL_CHAT_TRIGGER_NODE_TYPE, db as EVALUATION_TRIGGER_NODE_TYPE, dc as getBounds, dd as onBeforeRouteLeave, aU as onBeforeMount, aE as WORKFLOW_SETTINGS_MODAL_KEY, bg as useExternalHooks, de as onActivated, df as onDeactivated, I as onBeforeUnmount, dg as Suspense, dh as defineAsyncComponent, di as N8nCallout, aL as __vitePreload, aq as EnterpriseEditionFeature, dj as NODE_CREATOR_OPEN_SOURCES, dk as EVALUATION_NODE_TYPE, dl as getEasyAiWorkflowJson, dm as getRagStarterWorkflowJson, dn as tryToParseNumber, aB as nodeViewEventBus, bs as NodeConnectionTypes, dp as createCanvasConnectionHandleString, dq as isValidNodeConnectionType, dr as CanvasConnectionMode, b4 as sourceControlEventBus, ds as getNodesWithNormalizedPosition, aN as h, dt as CanvasNodeRenderType, aT as STICKY_NODE_TYPE, du as needsAgentInput, dv as FROM_AI_PARAMETERS_MODAL_KEY, dw as historyBus, dx as DRAG_EVENT_DATA_KEY } from "./index-w62KClh_.js";
3
- import { g as globalLinkActionsEventBus } from "./global-link-actions-BoKKYxTS.js";
4
- import { u as useExecutionDebugging } from "./useExecutionDebugging-D8eatMV3.js";
5
- import { u as useBeforeUnload } from "./useBeforeUnload-DdD1AHGk.js";
6
- import { c as canvasEventBus } from "./canvas-BRM7hzzm.js";
7
- import { u as useAITemplatesStarterCollectionStore } from "./aiTemplatesStarterCollection.store-CnPDpZGx.js";
8
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/NodeCreation-Q_eKy6g5.js","assets/index-CgvvLCqI.js","assets/index-DegUPemN.css","assets/NodeCreation-CxN6JIS_.css","assets/NodeDetailsView-B8VNYLDG.js","assets/TriggerPanel-Bh-GmBcj.js","assets/RunDataParsedAiContent-CyGJ7cWY.js","assets/VueMarkdown-CPLXg7f3.js","assets/RunDataParsedAiContent-wfIiKsq7.css","assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CYlb_OaL.js","assets/InfoAccordion-CR3AoL8Q.js","assets/InfoAccordion-dxudNqVC.css","assets/TriggerPanel-gMtmEr6n.css","assets/useWorkflowActivate-DFgPcDUt.js","assets/global-link-actions-DJzO0XY8.js","assets/useExecutionDebugging-lNwnzl0B.js","assets/useBeforeUnload-DtWRHUnb.js","assets/canvas-CXoLZ47B.js","assets/readyToRunWorkflows.store-BcJDo6QO.js","assets/NodeDetailsView-Cam4nPwL.css","assets/NodeDetailsViewV2-DnGtw1tW.js","assets/NodeDetailsViewV2-LzYZcnv5.css","assets/SetupWorkflowCredentialsButton-BNtMeQ7B.js"])))=>i.map(i=>d[i]);
2
+ import { d as defineComponent, x as computed, r as ref, aP as useNDVStore, ab as watch, h as createElementBlock, g as openBlock, n as normalizeClass, e as createBlock, f as createCommentVNode, l as unref, p as N8nText, w as withCtx, k as createTextVNode, t as toDisplayString, cs as _sfc_main$a, i as createVNode, a0 as _sfc_main$b, _ as _export_sfc, Q as createEventBus, ac as useCssModule, v as useSettingsStore, ct as useVueFlow, bW as toRef, cu as useCanvasMapping, cv as refThrottled, j as createBaseVNode, J as renderSlot, cw as Canvas, D as mergeProps, a5 as useWorkflowsStore, bF as useNodeHelpers, cx as useFocusPanelStore, bK as useNodeTypesStore, cy as useNodeSettingsParameters, cz as useEnvironmentsStore, cA as useDeviceSupport, S as useDebounce, cB as HTML_NODE_TYPE, cC as isValueExpression, cD as isResourceLocatorValue, cE as AI_TRANSFORM_NODE_TYPE, cF as useResolvedExpression, cf as useThrottleFn, bS as withModifiers, cG as _sfc_main$c, N as N8nIcon, cH as InfoTip, c as useI18n, cI as __unplugin_components_2, cJ as __unplugin_components_3, F as Fragment, cK as __unplugin_components_4, cL as __unplugin_components_5, cM as __unplugin_components_6, cN as __unplugin_components_7, cO as __unplugin_components_8, cP as __unplugin_components_9, cQ as N8nInput, H as N8nRadioButtons, P as normalizeStyle, cd as useStyles, cc as N8nResizeWrapper, cR as getParameterTypeOption, cS as htmlEditorEventBus, cT as parseFromExpression, cU as isValidParameterOption, cV as formatAsExpression, aA as useTelemetry, K as nextTick, cW as hasFocusOnInput, cX as isFocusableEl, br as isChatNode, cY as truncateBeforeLast, q as N8nButton, a1 as I18nT, cb as KeyboardShortcutTooltip, bT as NodeIcon, ay as N8nActionDropdown, cZ as reactive, o as onMounted, c2 as onUnmounted, c_ as _sfc_main$d, c$ as useI18n$1, b as useRouter, a6 as useRoute, a as useToast, aj as useDocumentTitle, al as useWorkflowHelpers, ak as useWorkflowSaving, T as useUIStore, af as useSourceControlStore, d0 as useNodeCreatorStore, d1 as useCredentialsStore, d2 as useExternalSecretsStore, ad as useRootStore, aQ as useExecutionsStore, ae as useCanvasStore, ai as useNpsSurveyStore, d3 as useHistoryStore, ag as useProjectsStore, u as useUsersStore, R as useTagsStore, a4 as usePushConnectionStore, be as useTemplatesStore, d4 as useBuilderStore, ah as useFoldersStore, d5 as usePostHog, d6 as useAgentRequestStore, bE as useLogsStore, bG as useRunWorkflow, bJ as useCanvasOperations, d7 as useWorkflowExtraction, c5 as useClipboard, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, d8 as NEW_WORKFLOW_ID, V as VIEWS, d9 as NDV_UI_OVERHAUL_EXPERIMENT, bL as START_NODE_TYPE, da as getNodeViewTab, G as MAIN_HEADER_TABS, db as VALID_WORKFLOW_IMPORT_URL_REGEX, aC as useMessage, aD as MODAL_CONFIRM, dc as jsonParse, an as getResourcePermissions, bB as CHAT_TRIGGER_NODE_TYPE, bA as MANUAL_CHAT_TRIGGER_NODE_TYPE, dd as EVALUATION_TRIGGER_NODE_TYPE, de as getBounds, df as onBeforeRouteLeave, aU as onBeforeMount, aE as WORKFLOW_SETTINGS_MODAL_KEY, bg as useExternalHooks, dg as onActivated, dh as onDeactivated, I as onBeforeUnmount, di as Suspense, dj as defineAsyncComponent, dk as N8nCallout, aL as __vitePreload, aq as EnterpriseEditionFeature, dl as NODE_CREATOR_OPEN_SOURCES, dm as EVALUATION_NODE_TYPE, dn as getEasyAiWorkflowJson, dp as getRagStarterWorkflowJson, dq as tryToParseNumber, aB as nodeViewEventBus, bs as NodeConnectionTypes, dr as createCanvasConnectionHandleString, ds as isValidNodeConnectionType, dt as CanvasConnectionMode, b4 as sourceControlEventBus, du as getNodesWithNormalizedPosition, aN as h, dv as CanvasNodeRenderType, aT as STICKY_NODE_TYPE, dw as needsAgentInput, dx as FROM_AI_PARAMETERS_MODAL_KEY, dy as historyBus, dz as DRAG_EVENT_DATA_KEY } from "./index-CgvvLCqI.js";
3
+ import { g as globalLinkActionsEventBus } from "./global-link-actions-DJzO0XY8.js";
4
+ import { u as useExecutionDebugging } from "./useExecutionDebugging-lNwnzl0B.js";
5
+ import { u as useBeforeUnload } from "./useBeforeUnload-DtWRHUnb.js";
6
+ import { c as canvasEventBus } from "./canvas-CXoLZ47B.js";
7
+ import { u as useAITemplatesStarterCollectionStore, a as useReadyToRunWorkflowsStore } from "./readyToRunWorkflows.store-BcJDo6QO.js";
8
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
9
9
  __name: "ExperimentalNodeDetailsDrawer",
10
10
  props: {
11
11
  selectedNodes: {}
@@ -31,7 +31,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
31
31
  { immediate: true }
32
32
  );
33
33
  return (_ctx, _cache) => {
34
- const _component_N8nIconButton = _sfc_main$a;
34
+ const _component_N8nIconButton = _sfc_main$b;
35
35
  return openBlock(), createElementBlock("div", {
36
36
  class: normalizeClass([_ctx.$style.component, content2.value === void 0 ? _ctx.$style.closed : ""])
37
37
  }, [
@@ -43,7 +43,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
43
43
  createTextVNode(toDisplayString(lastContent.value), 1)
44
44
  ]),
45
45
  _: 1
46
- })) : lastContent.value !== void 0 ? (openBlock(), createBlock(_sfc_main$9, {
46
+ })) : lastContent.value !== void 0 ? (openBlock(), createBlock(_sfc_main$a, {
47
47
  key: lastContent.value.id,
48
48
  "node-id": lastContent.value.id
49
49
  }, {
@@ -66,15 +66,15 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
66
66
  });
67
67
  const component$1 = "_component_wojby_123";
68
68
  const closed = "_closed_wojby_138";
69
- const style0$4 = {
69
+ const style0$5 = {
70
70
  component: component$1,
71
71
  closed
72
72
  };
73
- const cssModules$4 = {
74
- "$style": style0$4
73
+ const cssModules$5 = {
74
+ "$style": style0$5
75
75
  };
76
- const ExperimentalNodeDetailsDrawer = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$4]]);
77
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
76
+ const ExperimentalNodeDetailsDrawer = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$5]]);
77
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
78
78
  ...{
79
79
  inheritAttrs: false
80
80
  },
@@ -143,14 +143,14 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
143
143
  });
144
144
  const wrapper$2 = "_wrapper_jyurh_123";
145
145
  const canvas = "_canvas_jyurh_131";
146
- const style0$3 = {
146
+ const style0$4 = {
147
147
  wrapper: wrapper$2,
148
148
  canvas
149
149
  };
150
- const cssModules$3 = {
151
- "$style": style0$3
150
+ const cssModules$4 = {
151
+ "$style": style0$4
152
152
  };
153
- const WorkflowCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$3]]);
153
+ const WorkflowCanvas = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$4]]);
154
154
  function useExecutionData({ node }) {
155
155
  const workflowsStore = useWorkflowsStore();
156
156
  const workflowExecution = computed(() => {
@@ -178,7 +178,7 @@ function useExecutionData({ node }) {
178
178
  hasNodeRun
179
179
  };
180
180
  }
181
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
181
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
182
182
  ...{ name: "FocusPanel" },
183
183
  __name: "FocusPanel",
184
184
  props: {
@@ -413,7 +413,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
413
413
  }
414
414
  const onResizeThrottle = useThrottleFn(onResize, 10);
415
415
  return (_ctx, _cache) => {
416
- const _component_NodeExecuteButton = _sfc_main$b;
416
+ const _component_NodeExecuteButton = _sfc_main$c;
417
417
  const _component_N8nIcon = N8nIcon;
418
418
  const _component_ParameterOptions = __unplugin_components_2;
419
419
  const _component_ExpressionEditorModalInput = __unplugin_components_3;
@@ -711,7 +711,7 @@ const content = "_content_1ebmp_138";
711
711
  const emptyContent = "_emptyContent_1ebmp_144";
712
712
  const emptyText = "_emptyText_1ebmp_149";
713
713
  const focusParameterWrapper = "_focusParameterWrapper_1ebmp_155";
714
- const iconWrapper = "_iconWrapper_1ebmp_162";
714
+ const iconWrapper$1 = "_iconWrapper_1ebmp_162";
715
715
  const pointerIcon = "_pointerIcon_1ebmp_166";
716
716
  const tabHeader = "_tabHeader_1ebmp_176";
717
717
  const tabHeaderText = "_tabHeaderText_1ebmp_183";
@@ -726,14 +726,14 @@ const triggerShow = "_triggerShow_1ebmp_1";
726
726
  const closeButton = "_closeButton_1ebmp_233";
727
727
  const heightFull = "_heightFull_1ebmp_237";
728
728
  const forceHover = "_forceHover_1ebmp_241";
729
- const style0$2 = {
729
+ const style0$3 = {
730
730
  wrapper: wrapper$1,
731
731
  container,
732
732
  content,
733
733
  emptyContent,
734
734
  emptyText,
735
735
  focusParameterWrapper,
736
- iconWrapper,
736
+ iconWrapper: iconWrapper$1,
737
737
  pointerIcon,
738
738
  tabHeader,
739
739
  tabHeaderText,
@@ -749,11 +749,11 @@ const style0$2 = {
749
749
  heightFull,
750
750
  forceHover
751
751
  };
752
- const cssModules$2 = {
753
- "$style": style0$2
752
+ const cssModules$3 = {
753
+ "$style": style0$3
754
754
  };
755
- const FocusPanel = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$2]]);
756
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
755
+ const FocusPanel = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$3]]);
756
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
757
757
  __name: "CanvasRunWorkflowButton",
758
758
  props: {
759
759
  selectedTriggerNodeName: {},
@@ -933,7 +933,7 @@ const disabled = "_disabled_p52lz_158";
933
933
  const menuIcon = "_menuIcon_p52lz_158";
934
934
  const buttonContent = "_buttonContent_p52lz_162";
935
935
  const subText = "_subText_p52lz_169";
936
- const style0$1 = {
936
+ const style0$2 = {
937
937
  component,
938
938
  split,
939
939
  button,
@@ -946,10 +946,10 @@ const style0$1 = {
946
946
  buttonContent,
947
947
  subText
948
948
  };
949
- const cssModules$1 = {
950
- "$style": style0$1
949
+ const cssModules$2 = {
950
+ "$style": style0$2
951
951
  };
952
- const CanvasRunWorkflowButton = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__cssModules", cssModules$1]]);
952
+ const CanvasRunWorkflowButton = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__cssModules", cssModules$2]]);
953
953
  const state = reactive({
954
954
  customActions: {},
955
955
  delegatedClickHandler: null
@@ -1009,7 +1009,7 @@ function useGlobalLinkActions() {
1009
1009
  unregisterCustomAction
1010
1010
  };
1011
1011
  }
1012
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1012
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1013
1013
  __name: "CanvasStopCurrentExecutionButton",
1014
1014
  props: {
1015
1015
  stopping: { type: Boolean }
@@ -1021,7 +1021,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1021
1021
  () => props.stopping ? i18n.baseText("nodeView.stoppingCurrentExecution") : i18n.baseText("nodeView.stopCurrentExecution")
1022
1022
  );
1023
1023
  return (_ctx, _cache) => {
1024
- const _component_N8nIconButton = _sfc_main$a;
1024
+ const _component_N8nIconButton = _sfc_main$b;
1025
1025
  return openBlock(), createBlock(_component_N8nIconButton, {
1026
1026
  icon: "square",
1027
1027
  size: "large",
@@ -1034,12 +1034,12 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1034
1034
  };
1035
1035
  }
1036
1036
  });
1037
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1037
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1038
1038
  __name: "CanvasStopWaitingForWebhookButton",
1039
1039
  setup(__props) {
1040
1040
  const i18n = useI18n();
1041
1041
  return (_ctx, _cache) => {
1042
- const _component_N8nIconButton = _sfc_main$a;
1042
+ const _component_N8nIconButton = _sfc_main$b;
1043
1043
  return openBlock(), createBlock(_component_N8nIconButton, {
1044
1044
  class: "stop-execution",
1045
1045
  icon: "square",
@@ -1051,6 +1051,59 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1051
1051
  };
1052
1052
  }
1053
1053
  });
1054
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
1055
+ ...{
1056
+ name: "CanvasThinkingPill"
1057
+ },
1058
+ __name: "CanvasThinkingPill",
1059
+ props: {
1060
+ showStop: { type: Boolean }
1061
+ },
1062
+ emits: ["stop"],
1063
+ setup(__props, { emit: __emit }) {
1064
+ const emit = __emit;
1065
+ const { t } = useI18n$1();
1066
+ const $style = useCssModule();
1067
+ return (_ctx, _cache) => {
1068
+ return openBlock(), createElementBlock("div", {
1069
+ class: normalizeClass(unref($style).thinkingPill)
1070
+ }, [
1071
+ createBaseVNode("div", {
1072
+ class: normalizeClass(unref($style).iconWrapper)
1073
+ }, [
1074
+ createVNode(_sfc_main$d, { theme: "blank" })
1075
+ ], 2),
1076
+ createBaseVNode("span", {
1077
+ class: normalizeClass(unref($style).text)
1078
+ }, [
1079
+ createTextVNode(toDisplayString(unref(t)("aiAssistant.builder.canvas.thinking")) + " ", 1),
1080
+ _ctx.showStop ? (openBlock(), createBlock(unref(N8nButton), {
1081
+ key: 0,
1082
+ class: normalizeClass(unref($style).stopButton),
1083
+ label: "Stop",
1084
+ type: "secondary",
1085
+ size: "mini",
1086
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("stop"))
1087
+ }, null, 8, ["class"])) : createCommentVNode("", true)
1088
+ ], 2)
1089
+ ], 2);
1090
+ };
1091
+ }
1092
+ });
1093
+ const thinkingPill$1 = "_thinkingPill_nk220_123";
1094
+ const iconWrapper = "_iconWrapper_nk220_139";
1095
+ const stopButton = "_stopButton_nk220_149";
1096
+ const text = "_text_nk220_153";
1097
+ const style0$1 = {
1098
+ thinkingPill: thinkingPill$1,
1099
+ iconWrapper,
1100
+ stopButton,
1101
+ text
1102
+ };
1103
+ const cssModules$1 = {
1104
+ "$style": style0$1
1105
+ };
1106
+ const CanvasThinkingPill = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$1]]);
1054
1107
  const _hoisted_1 = { "data-action": "reload" };
1055
1108
  const _hoisted_2 = {
1056
1109
  href: "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/",
@@ -1096,16 +1149,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1096
1149
  __name: "NodeView",
1097
1150
  setup(__props) {
1098
1151
  const LazyNodeCreation = defineAsyncComponent(
1099
- async () => await __vitePreload(() => import("./NodeCreation-B9BKefxK.js").then((n) => n.N), true ? __vite__mapDeps([0,1,2,3]) : void 0)
1152
+ async () => await __vitePreload(() => import("./NodeCreation-Q_eKy6g5.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
1100
1153
  );
1101
1154
  const LazyNodeDetailsView = defineAsyncComponent(
1102
- async () => await __vitePreload(() => import("./NodeDetailsView-CWivfrhu.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) : void 0)
1155
+ async () => await __vitePreload(() => import("./NodeDetailsView-B8VNYLDG.js"), true ? __vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) : void 0)
1103
1156
  );
1104
1157
  const LazyNodeDetailsViewV2 = defineAsyncComponent(
1105
- async () => await __vitePreload(() => import("./NodeDetailsViewV2-D0QNvUU4.js"), true ? __vite__mapDeps([20,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,21]) : void 0)
1158
+ async () => await __vitePreload(() => import("./NodeDetailsViewV2-DnGtw1tW.js"), true ? __vite__mapDeps([20,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,21]) : void 0)
1106
1159
  );
1107
1160
  const LazySetupWorkflowCredentialsButton = defineAsyncComponent(
1108
- async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-ulkxwZMC.js"), true ? __vite__mapDeps([22,1,2]) : void 0)
1161
+ async () => await __vitePreload(() => import("./SetupWorkflowCredentialsButton-BNtMeQ7B.js"), true ? __vite__mapDeps([22,1,2]) : void 0)
1109
1162
  );
1110
1163
  const $style = useCssModule();
1111
1164
  const router = useRouter();
@@ -1146,6 +1199,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1146
1199
  const agentRequestStore = useAgentRequestStore();
1147
1200
  const logsStore = useLogsStore();
1148
1201
  const aiTemplatesStarterCollectionStore = useAITemplatesStarterCollectionStore();
1202
+ const readyToRunWorkflowsStore = useReadyToRunWorkflowsStore();
1149
1203
  const { addBeforeUnloadEventBindings, removeBeforeUnloadEventBindings } = useBeforeUnload({
1150
1204
  route
1151
1205
  });
@@ -1225,7 +1279,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1225
1279
  )
1226
1280
  );
1227
1281
  const isCanvasReadOnly = computed(() => {
1228
- return isDemoRoute.value || isReadOnlyEnvironment.value || !(workflowPermissions.value.update ?? projectPermissions.value.workflow.update) || editableWorkflow.value.isArchived;
1282
+ return isDemoRoute.value || isReadOnlyEnvironment.value || !(workflowPermissions.value.update ?? projectPermissions.value.workflow.update) || editableWorkflow.value.isArchived || builderStore.streaming;
1229
1283
  });
1230
1284
  const showFallbackNodes = computed(() => triggerNodes.value.length === 0);
1231
1285
  const keyBindingsEnabled = computed(() => {
@@ -1383,6 +1437,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1383
1437
  workflowData.meta.templateId.split("-").pop() ?? ""
1384
1438
  );
1385
1439
  }
1440
+ if (workflowData.meta?.templateId?.startsWith("37_onboarding_experiments_batch_aug11")) {
1441
+ readyToRunWorkflowsStore.trackOpenWorkflow(
1442
+ workflowData.meta.templateId.split("-").pop() ?? ""
1443
+ );
1444
+ }
1386
1445
  await projectsStore.setProjectNavActiveIdByWorkflowHomeProject(workflowData.homeProject);
1387
1446
  } catch (error) {
1388
1447
  if (error.httpStatusCode === 404) {
@@ -2347,27 +2406,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2347
2406
  return isLoading.value || isCanvasReadOnly.value || editableWorkflow.value.nodes.length !== 0;
2348
2407
  },
2349
2408
  (isReadOnlyOrLoading) => {
2350
- const defaultFallbackNodes = [
2351
- {
2352
- id: CanvasNodeRenderType.AddNodes,
2353
- name: CanvasNodeRenderType.AddNodes,
2354
- type: CanvasNodeRenderType.AddNodes,
2355
- typeVersion: 1,
2356
- position: [0, 0],
2357
- parameters: {}
2358
- }
2359
- ];
2360
- if (builderStore.isAIBuilderEnabled && builderStore.isAssistantEnabled) {
2361
- defaultFallbackNodes.unshift({
2362
- id: CanvasNodeRenderType.AIPrompt,
2363
- name: CanvasNodeRenderType.AIPrompt,
2364
- type: CanvasNodeRenderType.AIPrompt,
2365
- typeVersion: 1,
2366
- position: [-690, -15],
2367
- parameters: {}
2368
- });
2409
+ if (isReadOnlyOrLoading) {
2410
+ fallbackNodes.value = [];
2411
+ return;
2369
2412
  }
2370
- fallbackNodes.value = isReadOnlyOrLoading ? [] : defaultFallbackNodes;
2413
+ const addNodesItem = {
2414
+ id: CanvasNodeRenderType.AddNodes,
2415
+ name: CanvasNodeRenderType.AddNodes,
2416
+ type: CanvasNodeRenderType.AddNodes,
2417
+ typeVersion: 1,
2418
+ position: [0, 0],
2419
+ parameters: {}
2420
+ };
2421
+ const aiPromptItem = {
2422
+ id: CanvasNodeRenderType.AIPrompt,
2423
+ name: CanvasNodeRenderType.AIPrompt,
2424
+ type: CanvasNodeRenderType.AIPrompt,
2425
+ typeVersion: 1,
2426
+ position: [-690, -15],
2427
+ parameters: {},
2428
+ draggable: false
2429
+ };
2430
+ fallbackNodes.value = builderStore.isAIBuilderEnabled && builderStore.isAssistantEnabled ? [aiPromptItem] : [addNodesItem];
2371
2431
  }
2372
2432
  );
2373
2433
  watch(
@@ -2580,12 +2640,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2580
2640
  _: 1
2581
2641
  }, 8, ["label"]))
2582
2642
  ], 64)) : createCommentVNode("", true),
2583
- isStopExecutionButtonVisible.value ? (openBlock(), createBlock(_sfc_main$4, {
2643
+ isStopExecutionButtonVisible.value ? (openBlock(), createBlock(_sfc_main$5, {
2584
2644
  key: 2,
2585
2645
  stopping: isStoppingExecution.value,
2586
2646
  onClick: onStopExecution
2587
2647
  }, null, 8, ["stopping"])) : createCommentVNode("", true),
2588
- isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$3, {
2648
+ isStopWaitingForWebhookButtonVisible.value ? (openBlock(), createBlock(_sfc_main$4, {
2589
2649
  key: 3,
2590
2650
  onClick: onStopWaitingForWebhook
2591
2651
  })) : createCommentVNode("", true)
@@ -2601,6 +2661,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2601
2661
  ]),
2602
2662
  _: 1
2603
2663
  }, 8, ["class"])) : createCommentVNode("", true),
2664
+ unref(builderStore).streaming ? (openBlock(), createBlock(CanvasThinkingPill, {
2665
+ key: 2,
2666
+ class: normalizeClass(unref($style).thinkingPill),
2667
+ "show-stop": "",
2668
+ onStop: unref(builderStore).stopStreaming
2669
+ }, null, 8, ["class", "onStop"])) : createCommentVNode("", true),
2604
2670
  (openBlock(), createBlock(Suspense, null, {
2605
2671
  default: withCtx(() => [
2606
2672
  !isCanvasReadOnly.value ? (openBlock(), createBlock(unref(LazyNodeCreation), {
@@ -2658,17 +2724,19 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2658
2724
  };
2659
2725
  }
2660
2726
  });
2661
- const wrapper = "_wrapper_1xmhy_123";
2662
- const executionButtons = "_executionButtons_1xmhy_128";
2663
- const chatButton = "_chatButton_1xmhy_165";
2664
- const setupCredentialsButtonWrapper = "_setupCredentialsButtonWrapper_1xmhy_169";
2665
- const readOnlyEnvironmentNotification = "_readOnlyEnvironmentNotification_1xmhy_175";
2727
+ const wrapper = "_wrapper_16h3t_123";
2728
+ const executionButtons = "_executionButtons_16h3t_128";
2729
+ const chatButton = "_chatButton_16h3t_165";
2730
+ const setupCredentialsButtonWrapper = "_setupCredentialsButtonWrapper_16h3t_169";
2731
+ const readOnlyEnvironmentNotification = "_readOnlyEnvironmentNotification_16h3t_175";
2732
+ const thinkingPill = "_thinkingPill_16h3t_182";
2666
2733
  const style0 = {
2667
2734
  wrapper,
2668
2735
  executionButtons,
2669
2736
  chatButton,
2670
2737
  setupCredentialsButtonWrapper,
2671
- readOnlyEnvironmentNotification
2738
+ readOnlyEnvironmentNotification,
2739
+ thinkingPill
2672
2740
  };
2673
2741
  const cssModules = {
2674
2742
  "$style": style0
@@ -1,11 +1,31 @@
1
- import { d as defineComponent, a6 as useRoute, r as ref, x as computed, V as VIEWS, c as useI18n, ab as watch, e as createBlock, g as openBlock, g1 as N8nTabs, as as useTemplateRef, h as createElementBlock, n as normalizeClass, J as renderSlot, i as createVNode, l as unref, e3 as N8nActionToggle, w as withCtx, a0 as _sfc_main$3, _ as _export_sfc, b as useRouter, ag as useProjectsStore, af as useSourceControlStore, v as useSettingsStore, ar as ProjectTypes, f4 as isIconOrEmoji, an as getResourcePermissions, g2 as useElementSize, g3 as useResizeObserver, j as createBaseVNode, f as createCommentVNode, f5 as ProjectIcon, m as N8nHeading, k as createTextVNode, t as toDisplayString, p as N8nText, q as N8nButton, D as mergeProps, $ as N8nTooltip } from "./index-w62KClh_.js";
2
- import { u as useProjectPages } from "./useProjectPages-CyvDtt_i.js";
1
+ import { d as defineComponent, a6 as useRoute, r as ref, x as computed, V as VIEWS, c as useI18n, ab as watch, e as createBlock, g as openBlock, g1 as N8nTabs, as as useTemplateRef, h as createElementBlock, n as normalizeClass, J as renderSlot, i as createVNode, l as unref, e5 as N8nActionToggle, w as withCtx, a0 as _sfc_main$3, _ as _export_sfc, b as useRouter, ag as useProjectsStore, af as useSourceControlStore, v as useSettingsStore, T as useUIStore, ar as ProjectTypes, f7 as isIconOrEmoji, an as getResourcePermissions, g2 as useElementSize, g3 as useResizeObserver, j as createBaseVNode, f as createCommentVNode, f8 as __unplugin_components_0, m as N8nHeading, k as createTextVNode, t as toDisplayString, p as N8nText, q as N8nButton, D as mergeProps, $ as N8nTooltip } from "./index-CgvvLCqI.js";
2
+ import { u as useProjectPages } from "./useProjectPages-xsj6GD9u.js";
3
+ function processDynamicTab(tab, projectId) {
4
+ if (!tab.dynamicRoute) {
5
+ return tab;
6
+ }
7
+ const tabRoute = {
8
+ name: tab.dynamicRoute.name
9
+ };
10
+ if (tab.dynamicRoute.includeProjectId && projectId) {
11
+ tabRoute.params = { projectId };
12
+ }
13
+ const { dynamicRoute, ...tabWithoutDynamic } = tab;
14
+ return {
15
+ ...tabWithoutDynamic,
16
+ to: tabRoute
17
+ };
18
+ }
19
+ function processDynamicTabs(tabs, projectId) {
20
+ return tabs.map((tab) => processDynamicTab(tab, projectId));
21
+ }
3
22
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
4
23
  __name: "ProjectTabs",
5
24
  props: {
6
25
  showSettings: { type: Boolean, default: false },
7
26
  showExecutions: { type: Boolean, default: true },
8
- pageType: { default: "project" }
27
+ pageType: { default: "project" },
28
+ additionalTabs: { default: () => [] }
9
29
  },
10
30
  setup(__props) {
11
31
  const props = __props;
@@ -62,6 +82,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
62
82
  if (props.showExecutions) {
63
83
  tabs.push(createTab("mainSidebar.executions", "executions", routes));
64
84
  }
85
+ if (props.additionalTabs?.length) {
86
+ const processedAdditionalTabs = processDynamicTabs(props.additionalTabs, projectId.value);
87
+ tabs.push(...processedAdditionalTabs);
88
+ }
65
89
  if (props.showSettings) {
66
90
  tabs.push({
67
91
  label: locale.baseText("projects.settings"),
@@ -167,6 +191,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
167
191
  const projectsStore = useProjectsStore();
168
192
  const sourceControlStore = useSourceControlStore();
169
193
  const settingsStore = useSettingsStore();
194
+ const uiStore = useUIStore();
170
195
  const projectPages = useProjectPages();
171
196
  const emit = __emit;
172
197
  const headerIcon = computed(() => {
@@ -205,6 +230,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
205
230
  const showFolders = computed(() => {
206
231
  return settingsStore.isFoldersFeatureEnabled && [VIEWS.PROJECTS_WORKFLOWS, VIEWS.PROJECTS_FOLDERS].includes(route.name);
207
232
  });
233
+ const customProjectTabs = computed(() => {
234
+ let tabType;
235
+ if (projectPages.isSharedSubPage) {
236
+ tabType = "shared";
237
+ } else if (projectPages.isOverviewSubPage) {
238
+ tabType = "overview";
239
+ } else {
240
+ tabType = "project";
241
+ }
242
+ const activeModules = Object.keys(uiStore.moduleTabs[tabType]).filter(
243
+ settingsStore.isModuleActive
244
+ );
245
+ return activeModules.flatMap((module) => uiStore.moduleTabs[tabType][module]);
246
+ });
208
247
  const ACTION_TYPES = {
209
248
  WORKFLOW: "workflow",
210
249
  CREDENTIAL: "credential",
@@ -329,7 +368,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
329
368
  createBaseVNode("div", {
330
369
  class: normalizeClass(_ctx.$style.projectDetails)
331
370
  }, [
332
- showProjectIcon.value ? (openBlock(), createBlock(ProjectIcon, {
371
+ showProjectIcon.value ? (openBlock(), createBlock(__unplugin_components_0, {
333
372
  key: 0,
334
373
  icon: headerIcon.value,
335
374
  "border-less": true,
@@ -422,8 +461,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
422
461
  createVNode(_sfc_main$2, {
423
462
  "page-type": pageType.value,
424
463
  "show-executions": !unref(projectPages).isSharedSubPage,
425
- "show-settings": showSettings.value
426
- }, null, 8, ["page-type", "show-executions", "show-settings"])
464
+ "show-settings": showSettings.value,
465
+ "additional-tabs": customProjectTabs.value
466
+ }, null, 8, ["page-type", "show-executions", "show-settings", "additional-tabs"])
427
467
  ], 2)
428
468
  ]);
429
469
  };
@@ -1,6 +1,6 @@
1
- import { d as defineComponent, r as ref, x as computed, e as createBlock, g as openBlock, bi as createSlots, w as withCtx, J as renderSlot, h as createElementBlock, F as Fragment, y as renderList, l as unref, d$ as _sfc_main$5, n as normalizeClass, i as createVNode, C as N8nUserInfo, D as mergeProps, fh as useI18n, d_ as N8nSelect, _ as _export_sfc, e5 as mergeModels, e6 as useModel, bh as onClickOutside, j as createBaseVNode, f as createCommentVNode, $ as N8nTooltip, a0 as _sfc_main$6, q as N8nButton, k as createTextVNode, t as toDisplayString, g1 as N8nTabs, N as N8nIcon, c as useI18n$1, O as resolveComponent, p as N8nText, fs as ProjectSharing, dX as N8nInputLabel, cQ as N8nInput, bS as withModifiers, am as usePageRedirectionHelper, a1 as I18nT, u as useUsersStore, ag as useProjectsStore, gd as useRolesStore, b6 as useCloudPlanStore, a as useToast, b as useRouter, aj as useDocumentTitle, ab as watch, aU as onBeforeMount, o as onMounted, eJ as N8nFormInput, ge as N8nUsersList, dF as deepCopy, V as VIEWS, aA as useTelemetry, K as nextTick, f4 as isIconOrEmoji } from "./index-w62KClh_.js";
2
- import { P as ProjectHeader } from "./ProjectHeader-CXqD16W9.js";
3
- import "./useProjectPages-CyvDtt_i.js";
1
+ import { d as defineComponent, r as ref, x as computed, e as createBlock, g as openBlock, bi as createSlots, w as withCtx, J as renderSlot, h as createElementBlock, F as Fragment, y as renderList, l as unref, e1 as _sfc_main$5, n as normalizeClass, i as createVNode, C as N8nUserInfo, D as mergeProps, c$ as useI18n, e0 as N8nSelect, _ as _export_sfc, e7 as mergeModels, e8 as useModel, bh as onClickOutside, j as createBaseVNode, f as createCommentVNode, $ as N8nTooltip, a0 as _sfc_main$6, q as N8nButton, k as createTextVNode, t as toDisplayString, g1 as N8nTabs, N as N8nIcon, c as useI18n$1, O as resolveComponent, p as N8nText, fp as ProjectSharing, dZ as N8nInputLabel, cQ as N8nInput, bS as withModifiers, am as usePageRedirectionHelper, a1 as I18nT, u as useUsersStore, ag as useProjectsStore, gd as useRolesStore, b6 as useCloudPlanStore, a as useToast, b as useRouter, aj as useDocumentTitle, ab as watch, aU as onBeforeMount, o as onMounted, eM as N8nFormInput, ge as N8nUsersList, dH as deepCopy, V as VIEWS, aA as useTelemetry, K as nextTick, f7 as isIconOrEmoji } from "./index-CgvvLCqI.js";
2
+ import { P as ProjectHeader } from "./ProjectHeader-Dj1zlff0.js";
3
+ import "./useProjectPages-xsj6GD9u.js";
4
4
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5
5
  __name: "UserSelect",
6
6
  props: {
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, a4 as usePushConnectionStore, x as computed, c7 as resolveDirective, h as createElementBlock, g as openBlock, J as renderSlot, i as createVNode, $ as N8nTooltip, w as withCtx, j as createBaseVNode, k as createTextVNode, N as N8nIcon, t as toDisplayString, l as unref, c as useI18n, aV as withDirectives } from "./index-w62KClh_.js";
1
+ import { d as defineComponent, a4 as usePushConnectionStore, x as computed, c7 as resolveDirective, h as createElementBlock, g as openBlock, J as renderSlot, i as createVNode, $ as N8nTooltip, w as withCtx, j as createBaseVNode, k as createTextVNode, N as N8nIcon, t as toDisplayString, l as unref, c as useI18n, aV as withDirectives } from "./index-CgvvLCqI.js";
2
2
  const _hoisted_1 = {
3
3
  key: 0,
4
4
  class: "push-connection-lost primary-color"
@@ -754,7 +754,7 @@
754
754
  -------------------------- */
755
755
  /* BEM
756
756
  -------------------------- */
757
- .resource-list-loading[data-v-5a4d0558] {
757
+ .resource-list-loading[data-v-7aa13c30] {
758
758
  position: relative;
759
759
  height: 0;
760
760
  width: 100%;
@@ -762,25 +762,25 @@
762
762
  /*
763
763
  Show the loading skeleton only if the loading takes longer than 300ms
764
764
  */
765
- animation: 0.01s linear 0.3s forwards changeVisibility-5a4d0558;
765
+ animation: 0.01s linear 0.3s forwards changeVisibility-7aa13c30;
766
766
  }
767
- .resource-list-loading[data-v-5a4d0558] .el-skeleton {
767
+ .resource-list-loading[data-v-7aa13c30] .el-skeleton {
768
768
  position: absolute;
769
769
  height: 100%;
770
770
  width: 100%;
771
771
  overflow: hidden;
772
772
  }
773
- .resource-list-loading[data-v-5a4d0558] .el-skeleton > div > div:first-child .el-skeleton__item {
773
+ .resource-list-loading[data-v-7aa13c30] .el-skeleton > div > div:first-child .el-skeleton__item {
774
774
  height: 42px;
775
775
  margin: 0;
776
776
  }
777
- .resource-list-loading[data-v-5a4d0558] .el-skeleton .el-skeleton__item {
777
+ .resource-list-loading[data-v-7aa13c30] .el-skeleton .el-skeleton__item {
778
778
  height: 69px;
779
779
  }
780
- .resource-list-loading-instant[data-v-5a4d0558] {
781
- animation: 0.01s linear 0s forwards changeVisibility-5a4d0558;
780
+ .resource-list-loading-instant[data-v-7aa13c30] {
781
+ animation: 0.01s linear 0s forwards changeVisibility-7aa13c30;
782
782
  }
783
- @keyframes changeVisibility-5a4d0558 {
783
+ @keyframes changeVisibility-7aa13c30 {
784
784
  from {
785
785
  height: 0;
786
786
  }