n8n-editor-ui 1.118.1 → 1.119.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 (298) hide show
  1. package/.build/cache-marker +1 -1
  2. package/.build/node-popularity.json +1987 -1987
  3. package/README.md +1 -1
  4. package/dist/assets/{AddDataTableModal-i8GQtKYX.js → AddDataTableModal-78UiDOZ6.js} +20 -20
  5. package/dist/assets/AnimatedSpinner-CoP6Lyme.css +39 -0
  6. package/dist/assets/{AnimatedSpinner-DRB4A7Dx.js → AnimatedSpinner-Dd4F9nQ8.js} +2 -2
  7. package/dist/assets/{AnnotationTagsDropdown.ee-DV_Mobmt.js → AnnotationTagsDropdown.ee-B5SGfmxY.js} +2 -3
  8. package/dist/assets/{AuthView-BucJoBVs.js → AuthView-CaCXt20h.js} +6 -6
  9. package/dist/assets/{ChangePasswordView-mVWAZ3kL.js → ChangePasswordView-sh87mWR6.js} +12 -12
  10. package/dist/assets/ChatAgentsView-4SiYQ9YJ.js +339 -0
  11. package/dist/assets/{SettingsUsageAndPlan-pptm91gP.css → ChatAgentsView-Be_TXcAc.css} +94 -68
  12. package/dist/assets/{ChatSidebar-CXnF23Sm.js → ChatSidebar-C0XXqw3v.js} +38 -31
  13. package/dist/assets/{ChatView-BOWzOn2x.js → ChatView-BlkLzP1X.js} +345 -502
  14. package/dist/assets/{ChatView-tcBlz_g5.css → ChatView-DHznMgQO.css} +60 -349
  15. package/dist/assets/CollectionParameter-C5ROyrxR.js +58 -0
  16. package/dist/assets/{CommunityNodeUpdateInfo-Bk-rYnfU.js → CommunityNodeUpdateInfo-rHUGLO4H.js} +9 -9
  17. package/dist/assets/{CopyInput-CwgZTYF4.css → CopyInput-BiDmlr9B.css} +12 -10
  18. package/dist/assets/{CopyInput-DQBVF_BG.js → CopyInput-DX-FL085.js} +11 -11
  19. package/dist/assets/{CredentialIcon-BmzfYSyO.js → CredentialIcon-DS3l06t2.js} +2 -2
  20. package/dist/assets/{CredentialsView-VSMpVIfN.js → CredentialsView-C3SKDwtI.js} +33 -34
  21. package/dist/assets/{DataTableActions-CLoVJ5kV.js → DataTableActions-lgRuMb9F.js} +7 -7
  22. package/dist/assets/{DataTableDetailsView-B8wQLLu_.js → DataTableDetailsView-CoWw-4gy.js} +24 -24
  23. package/dist/assets/{DataTableDetailsView-CxS46D7a.css → DataTableDetailsView-D4DdqXoL.css} +46 -49
  24. package/dist/assets/{DataTableView-D2eeWDUi.js → DataTableView-hUsgVnZS.js} +30 -31
  25. package/dist/assets/DemoFooter-C4xOK61v.js +71 -0
  26. package/dist/assets/{Draggable-BSa80qci.js → Draggable-DFf4aD-Y.js} +1 -1
  27. package/dist/assets/{EmptySharedSectionActionBox-32M48kPX.js → EmptySharedSectionActionBox-BkPu0yI0.js} +4 -4
  28. package/dist/assets/{EnterpriseEdition.ee-B_ZSY4rl.js → EnterpriseEdition.ee-BoNEV-MB.js} +1 -1
  29. package/dist/assets/{EntityNotFound-CKlXW1IL.js → EntityNotFound-Bs-aLs3W.js} +5 -5
  30. package/dist/assets/{EntityNotFound-DfstTvbZ.css → EntityNotFound-D6gi5ngN.css} +2 -2
  31. package/dist/assets/{EntityUnAuthorised-DB0HgLOM.js → EntityUnAuthorised-BwhGn6eD.js} +5 -5
  32. package/dist/assets/{EntityUnAuthorised-C6EIQ1Pq.css → EntityUnAuthorised-D3XTbU6Y.css} +2 -2
  33. package/dist/assets/{ErrorView-DAsa-PS_.js → ErrorView-Cvlb8nm0.js} +6 -6
  34. package/dist/assets/{EvaluationsRootView-CcJipqTv.js → EvaluationsRootView-BoWo5n7U.js} +23 -23
  35. package/dist/assets/{EvaluationsView-DsfXDJ-U.css → EvaluationsView-CmcDUAS_.css} +6 -6
  36. package/dist/assets/{EvaluationsView-Dr4m1cGH.js → EvaluationsView-DxiPOlGL.js} +22 -22
  37. package/dist/assets/{ExecutionsTime-qhi9xQEs.css → ExecutionsTime-BpajgDjV.css} +6 -6
  38. package/dist/assets/{ExecutionsTime-DQ0lKlTn.js → ExecutionsTime-DwXL-TY4.js} +10 -10
  39. package/dist/assets/{ExecutionsView-D4k3uqTy.js → ExecutionsView-B4XGhWmY.js} +52 -42
  40. package/dist/assets/{ExecutionsView-f-kKRR2k.css → ExecutionsView-DP5OXlS4.css} +6 -6
  41. package/dist/assets/{ExternalSecretsProviderConnectionSwitch-Df3YK0La.css → ExternalSecretsProviderConnectionSwitch-dpp96SMy.css} +2 -2
  42. package/dist/assets/{ExternalSecretsProviderConnectionSwitch.ee-ps4K4bOK.js → ExternalSecretsProviderConnectionSwitch.ee-DCTg0mdX.js} +5 -5
  43. package/dist/assets/{FixedCollectionParameter-C8Nz7bot.js → FixedCollectionParameter-CbrkbI18.js} +49 -49
  44. package/dist/assets/{FixedCollectionParameter-BkEju_IA.css → FixedCollectionParameter-CgkIJeik.css} +19 -19
  45. package/dist/assets/{ForgotMyPasswordView-B9XpVVQb.js → ForgotMyPasswordView-KkAVBYit.js} +12 -12
  46. package/dist/assets/{InsightsChartAverageRuntime-B9_qwMgO.js → InsightsChartAverageRuntime-D5Gh8Rz5.js} +8 -8
  47. package/dist/assets/{InsightsChartFailed-D8rDUthj.js → InsightsChartFailed-D7PZ_ctV.js} +7 -7
  48. package/dist/assets/{InsightsChartFailureRate-D7MEDAWL.js → InsightsChartFailureRate-CpPU5Kwd.js} +8 -8
  49. package/dist/assets/{InsightsChartTimeSaved-BjEX9cpj.js → InsightsChartTimeSaved-DYrv2t2N.js} +8 -8
  50. package/dist/assets/{InsightsChartTotal-f6iwgPv4.js → InsightsChartTotal-CNqL-Qn3.js} +7 -7
  51. package/dist/assets/{InsightsDashboard-CXRybzGm.css → InsightsDashboard-B5vBl-U6.css} +24 -24
  52. package/dist/assets/{InsightsDashboard-DgPTPhXD.js → InsightsDashboard-CrJZtNDS.js} +54 -49
  53. package/dist/assets/{InsightsPaywall-C_Osp3Xn.js → InsightsPaywall-DxgcxZ5z.js} +13 -13
  54. package/dist/assets/{InsightsSummary-CAapTcha.js → InsightsSummary-Bew3_p6D.js} +18 -18
  55. package/dist/assets/{InsightsSummary-BazqPYQ0.css → InsightsSummary-D4HBxG4I.css} +26 -26
  56. package/dist/assets/{InsightsTableWorkflows-BY4sevh1.js → InsightsTableWorkflows-TAIASHgR.js} +13 -13
  57. package/dist/assets/{ItemsRenderer-CTbNG2s3.js → ItemsRenderer-CDnrNwFM.js} +21 -25
  58. package/dist/assets/{ItemsRenderer-B89wKDHQ.css → ItemsRenderer-Cr6c6uYy.css} +21 -21
  59. package/dist/assets/{KeyboardShortcutTooltip-CXKgjDIT.js → KeyboardShortcutTooltip-y1pBqAge.js} +1 -1
  60. package/dist/assets/LogsPanel-DO45i29S.js +58 -0
  61. package/dist/assets/{LogsPanel-BSFP3TRR.js → LogsPanel-DjqKF4Sg.js} +35 -35
  62. package/dist/assets/{LogsPanel-K1M_gOCT.css → LogsPanel-GVBE8bfm.css} +17 -17
  63. package/dist/assets/{MainHeader-Dwzc_Fak.js → MainHeader-BSUhbWAN.js} +53 -53
  64. package/dist/assets/{MainHeader-QMv9Ba5g.css → MainHeader-Dz9UViYg.css} +22 -22
  65. package/dist/assets/{MainSidebar-BqoiqeXY.css → MainSidebar-BBUhoceu.css} +15 -15
  66. package/dist/assets/{MainSidebar-fP7bVKd-.js → MainSidebar-DIKtZSUX.js} +50 -43
  67. package/dist/assets/{MainSidebarUserArea-DZmO7pT1.js → MainSidebarUserArea-UHX8ACa4.js} +5 -5
  68. package/dist/assets/{Modal-C6HnfA6j.css → Modal-DNkRJkUt.css} +5 -5
  69. package/dist/assets/{Modal-B8k7lYVM.js → Modal-DwutFKNY.js} +12 -12
  70. package/dist/assets/{ModalDrawer-K2QDXW8H.js → ModalDrawer-B2sNzJVm.js} +6 -6
  71. package/dist/assets/{NDVEmptyState-CFiiknri.js → NDVEmptyState-DdpBamQ9.js} +1 -1
  72. package/dist/assets/{NodeCreation-Bbr4mTby.js → NodeCreation-C1Hw9qFl.js} +44 -44
  73. package/dist/assets/{NodeCreator-C-oYFkbs.css → NodeCreator-JpUhf2LN.css} +63 -52
  74. package/dist/assets/{NodeCreator-CE-6q5bn.js → NodeCreator-ZjTzj0ie.js} +63 -61
  75. package/dist/assets/{NodeDetailsView-CTnk_X5i.js → NodeDetailsView-CvvoyhiW.js} +64 -64
  76. package/dist/assets/{NodeDetailsViewV2-rAVfbsOa.css → NodeDetailsViewV2-Ckt2LIo-.css} +19 -19
  77. package/dist/assets/{NodeDetailsViewV2-REUcA-GA.js → NodeDetailsViewV2-yMKVDJ3k.js} +77 -77
  78. package/dist/assets/{NodeIcon-Bbl9Jpsi.js → NodeIcon-C-rkj6sB.js} +7 -6
  79. package/dist/assets/{NodeIcon-C-Ise6x6.css → NodeIcon-eaW3atZy.css} +2 -2
  80. package/dist/assets/{NodeSettings-B50suDD9.css → NodeSettings-DKlYbu9E.css} +80 -77
  81. package/dist/assets/{NodeSettings-BKd6Pbpi.js → NodeSettings-Dr-l_1nO.js} +35 -35
  82. package/dist/assets/{NodeView-KpAB56Z3.css → NodeView-CnbgHMAv.css} +25 -26
  83. package/dist/assets/{NodeView-BjGTiM1O.js → NodeView-DUcpE7do.js} +97 -97
  84. package/dist/assets/{PageViewLayout-CCwb27rd.js → PageViewLayout-Ccqeja5V.js} +2 -2
  85. package/dist/assets/{PageViewLayout-BIiboMgG.css → PageViewLayout-Cn6FD0Wt.css} +4 -4
  86. package/dist/assets/{ParameterInputList-CtoyrDjR.js → ParameterInputList-BzN5Xx73.js} +175 -171
  87. package/dist/assets/{ParameterInputList-aGPYvt18.css → ParameterInputList-D18bFGrO.css} +265 -265
  88. package/dist/assets/{PrebuiltAgentTemplatesView-C6IbTjn9.js → PrebuiltAgentTemplatesView-BTy_QfVt.js} +15 -15
  89. package/dist/assets/{ProjectBreadcrumb-CmmsF90D.js → ProjectBreadcrumb-scGlGqYf.js} +4 -4
  90. package/dist/assets/{ProjectCardBadge-SSY0HK9w.js → ProjectCardBadge-p4AY0ubu.js} +5 -5
  91. package/dist/assets/{ProjectHeader-BRHPT2Gf.js → ProjectHeader-BZeiGuD6.js} +34 -11
  92. package/dist/assets/{ProjectIcon-Doey-RQc.js → ProjectIcon-DqKjDNbR.js} +1 -1
  93. package/dist/assets/{ProjectRoleView-Dz82Hr5N.js → ProjectRoleView-ByzrSQP-.js} +22 -22
  94. package/dist/assets/{ProjectRoleView-Cewy9KCA.css → ProjectRoleView-Ds9qdhh9.css} +12 -12
  95. package/dist/assets/{ProjectRolesView-JblQF33a.js → ProjectRolesView-DclD8eEm.js} +16 -16
  96. package/dist/assets/{ProjectSettings-1ZQGH61x.js → ProjectSettings-4wa93sE4.js} +36 -37
  97. package/dist/assets/{ProjectSettings-BQOluc3A.css → ProjectSettings-vir6puPd.css} +23 -23
  98. package/dist/assets/{ProjectSharing-CRwSdefc.js → ProjectSharing-BVPUxo_M.js} +5 -5
  99. package/dist/assets/ProjectVariables-eH7fm87s.css +421 -0
  100. package/dist/assets/{ProjectVariables-BKV1_OBU.js → ProjectVariables-x9spBaqX.js} +86 -79
  101. package/dist/assets/{PushConnectionTracker-V3T3vpnB.js → PushConnectionTracker-DYamPLyc.js} +3 -3
  102. package/dist/assets/{ResourcesListLayout-B8d0Asrt.css → ResourcesListLayout-BXBf2iZI.css} +8 -8
  103. package/dist/assets/{ResourcesListLayout-BYno1UYD.js → ResourcesListLayout-UXbxK1S7.js} +11 -11
  104. package/dist/assets/{RunDataHtml-DCb1Egc3.js → RunDataHtml-X9lzUZaX.js} +1 -1
  105. package/dist/assets/{RunDataJson-7ml4EtqQ.js → RunDataJson-CxLotBq-.js} +14 -14
  106. package/dist/assets/{RunDataJsonActions-D534H82r.js → RunDataJsonActions-qylVa2u8.js} +12 -12
  107. package/dist/assets/{RunDataParsedAiContent-FqLolSOE.js → RunDataParsedAiContent-Cs80jq_q.js} +8 -8
  108. package/dist/assets/RunDataParsedAiContent-DBP5JHe4.js +25 -0
  109. package/dist/assets/{RunDataSearch-DYsCHxYY.js → RunDataSearch-BvoYWH8W.js} +7 -7
  110. package/dist/assets/{RunDataTable-CnUH-sL_.css → RunDataTable-HBCyaP8o.css} +54 -54
  111. package/dist/assets/{RunDataTable-D5O-BPg9.js → RunDataTable-d3eXUdSg.js} +44 -44
  112. package/dist/assets/{SamlOnboarding-EExl-EAp.js → SamlOnboarding-CRtDDWqf.js} +12 -12
  113. package/dist/assets/{SaveButton-C2Gkwcd6.js → SaveButton-D1iDaopV.js} +3 -3
  114. package/dist/assets/{SelectedItemsInfo-BO9w2ntq.js → SelectedItemsInfo-CSzniBOD.js} +2 -2
  115. package/dist/assets/{SettingsApiView-DHCr1LrA.js → SettingsApiView-DqnHEaAj.js} +17 -17
  116. package/dist/assets/{SettingsCommunityNodesView-3swLF8oI.js → SettingsCommunityNodesView-BzheuUxN.js} +31 -32
  117. package/dist/assets/{SettingsExternalSecrets-Czm8izQh.js → SettingsExternalSecrets-CqTHs6zk.js} +15 -15
  118. package/dist/assets/{SettingsLdapView-KgMO_1GA.css → SettingsLdapView-BuamZyhu.css} +11 -11
  119. package/dist/assets/{SettingsLdapView-DOse-1bN.js → SettingsLdapView-zifHhZKy.js} +25 -25
  120. package/dist/assets/{SettingsLogStreamingView-BVSln3cm.js → SettingsLogStreamingView-CQwuqSl8.js} +17 -17
  121. package/dist/assets/{SettingsMCPView-B9w3XrA9.js → SettingsMCPView-3CpNrA5D.js} +36 -35
  122. package/dist/assets/{SettingsPersonalView-DWGs5wge.js → SettingsPersonalView-C1NF8zuk.js} +22 -22
  123. package/dist/assets/{SettingsPersonalView-D6LtKnaF.css → SettingsPersonalView-DEpYU3TT.css} +14 -17
  124. package/dist/assets/{SettingsProvisioningView-Bd7_e49M.js → SettingsProvisioningView-BFUB6c2Z.js} +10 -10
  125. package/dist/assets/{SettingsSourceControl-BmJrrMbt.js → SettingsSourceControl-CZryQCqT.js} +17 -17
  126. package/dist/assets/{SettingsSso-LCXnYtLn.js → SettingsSso-CeeFO_Pv.js} +18 -18
  127. package/dist/assets/SettingsUsageAndPlan-DLcBOCSU.css +462 -0
  128. package/dist/assets/{SettingsUsageAndPlan-BcyB9_cH.js → SettingsUsageAndPlan-M1DF8QfE.js} +139 -22
  129. package/dist/assets/{SettingsUsersView-8_Y7zQMz.js → SettingsUsersView-DWVyE4hY.js} +23 -18
  130. package/dist/assets/{SettingsView-BdM6C-Pa.js → SettingsView-trF6L-tM.js} +8 -8
  131. package/dist/assets/{SetupTemplateFormStep-vegHZ86T.js → SetupTemplateFormStep-BsgzR5CN.js} +6 -6
  132. package/dist/assets/{SetupView-DXmGJi1C.js → SetupView-Bx4ZLcja.js} +12 -12
  133. package/dist/assets/{SetupWorkflowCredentialsButton-Gbq-mJNZ.js → SetupWorkflowCredentialsButton-DR_aufFd.js} +9 -9
  134. package/dist/assets/{SetupWorkflowFromTemplateView-B77sQQ6O.js → SetupWorkflowFromTemplateView-Ded77Ph-.js} +18 -18
  135. package/dist/assets/{SigninView-Di3btl9A.js → SigninView-DXPofyPm.js} +13 -13
  136. package/dist/assets/{SignoutView-WKs5gvAj.js → SignoutView-B7H_dRJO.js} +9 -9
  137. package/dist/assets/{SignupView-BM4OXX-x.js → SignupView-BHWVvwh8.js} +12 -12
  138. package/dist/assets/{TagsDropdown-B9w42ULo.js → TagsDropdown-D6CYk5R8.js} +4 -5
  139. package/dist/assets/{TemplateDetails-DNyPiFTw.js → TemplateDetails-ezK9JOOl.js} +7 -7
  140. package/dist/assets/{TemplateList-C7Gtb7cW.js → TemplateList-DztR2yKa.js} +5 -5
  141. package/dist/assets/{TemplatesCollectionView-DdMjHvDQ.js → TemplatesCollectionView-Bu_YRd84.js} +20 -20
  142. package/dist/assets/{TemplatesSearchView-BtUlSZXh.js → TemplatesSearchView-C7zBEV2b.js} +18 -18
  143. package/dist/assets/{TemplatesView-FCDPW2Yq.js → TemplatesView-BnozPkTX.js} +7 -7
  144. package/dist/assets/{TemplatesView-BgdyYmrL.css → TemplatesView-iSPzXjQB.css} +6 -6
  145. package/dist/assets/{TemplatesWorkflowView-B8_w-yL7.js → TemplatesWorkflowView-BTyHc3MG.js} +22 -22
  146. package/dist/assets/{TestRunDetailView-CEE1M2hn.js → TestRunDetailView-B76TM9u8.js} +36 -36
  147. package/dist/assets/{TestRunDetailView-DkQcfFP4.css → TestRunDetailView-CVGty0j0.css} +28 -28
  148. package/dist/assets/{TimeAgo-FvYQex-v.js → TimeAgo-Gv5h1Utx.js} +2 -2
  149. package/dist/assets/{TriggerPanel-DqHc-mXl.js → TriggerPanel-BD9WuZSq.js} +28 -28
  150. package/dist/assets/{TriggerPanel-D5WejHyJ.css → TriggerPanel-BQveVt6Q.css} +19 -19
  151. package/dist/assets/{VirtualSchema-CSh2c6Ec.css → VirtualSchema-BJ-Q30Fz.css} +51 -49
  152. package/dist/assets/{VirtualSchema-CC3sIZuJ.js → VirtualSchema-BwIrkOUg.js} +21 -21
  153. package/dist/assets/VirtualSchema-ksNVivg3.js +43 -0
  154. package/dist/assets/{VueMarkdown-70GnkI0W.js → VueMarkdown-CiR4a0gO.js} +1 -1
  155. package/dist/assets/{WorkerView-a-85mW7s.js → WorkerView-DNyW9R8a.js} +36 -39
  156. package/dist/assets/{WorkflowActivator-BNp0duVE.css → WorkflowActivator-DSgMORP6.css} +2 -2
  157. package/dist/assets/{WorkflowActivator-FQDQyW1o.js → WorkflowActivator-k3HTYXbc.js} +9 -9
  158. package/dist/assets/{WorkflowExecutionsInfoAccordion-JHl30LoQ.js → WorkflowExecutionsInfoAccordion-DL5cBkbK.js} +7 -7
  159. package/dist/assets/{WorkflowExecutionsLandingPage-CcJ9U18X.js → WorkflowExecutionsLandingPage-DlXz9Jry.js} +18 -18
  160. package/dist/assets/{WorkflowExecutionsPreview-BYWh0GBH.js → WorkflowExecutionsPreview-DJWD2i74.js} +22 -22
  161. package/dist/assets/{WorkflowExecutionsView-FCkyyfKq.js → WorkflowExecutionsView-4l7hfPcb.js} +71 -71
  162. package/dist/assets/{WorkflowExecutionsView-9RB5OO5c.css → WorkflowExecutionsView-J4lWGYW8.css} +36 -36
  163. package/dist/assets/{WorkflowHistory-BDm1H5BL.js → WorkflowHistory-Cb-ZoRBp.js} +26 -35
  164. package/dist/assets/{WorkflowOnboardingView-BZP0l2UH.js → WorkflowOnboardingView-CguOMlib.js} +8 -8
  165. package/dist/assets/{WorkflowPreview-Bt03akXc.css → WorkflowPreview-CYpzxJej.css} +8 -8
  166. package/dist/assets/{WorkflowPreview-CQzIuWsu.js → WorkflowPreview-DY79uYFw.js} +12 -12
  167. package/dist/assets/{WorkflowTagsDropdown-C4m2b8q6.js → WorkflowTagsDropdown-CdEFZM1A.js} +2 -3
  168. package/dist/assets/{WorkflowsView-CUeNwQmg.js → WorkflowsView-DIavWNuQ.js} +53 -49
  169. package/dist/assets/{_MapCache-BGBKpT5S.js → _MapCache-Byd-DTfo.js} +50 -12
  170. package/dist/assets/{apiKeys.store-CHTKph22.js → apiKeys.store-CPsBJKkq.js} +1 -1
  171. package/dist/assets/{assistant.store-D6Fihh2i.js → assistant.store-DvuxtpS4.js} +16 -8
  172. package/dist/assets/{auth.eventBus-CUpasXbj.js → auth.eventBus-YsWbuB84.js} +1 -1
  173. package/dist/assets/{VariablesView-PPP4k5c3.css → banners-UK5wWFEI.css} +21 -25
  174. package/dist/assets/banners.store-BQPwuqhn.js +192 -0
  175. package/dist/assets/{chartjs.utils-DrHDj0Lr.js → chartjs.utils-Bf07Y-P-.js} +3 -3
  176. package/dist/assets/{chatPanel.store-Dt9ypdvG.js → chatPanel.store-fM-8PK9i.js} +4 -4
  177. package/dist/assets/{cloudPlan.store-x1IpiElw.js → cloudPlan.store-DrraBpZJ.js} +18 -3
  178. package/dist/assets/{col-b1w4xo57.js → col-DK_GtMhM.js} +3 -3
  179. package/dist/assets/{constants-DlQs6Cav.js → constants-CPQyU8WO.js} +4 -2
  180. package/dist/assets/{constants-B1JYxPAR.js → constants-DvlTm3U4.js} +402 -313
  181. package/dist/assets/{core-CGHB7oTc.js → core-6lPsS9S5.js} +1 -1
  182. package/dist/assets/{dataTable.store-Bgg7dsRy.js → dataTable.store-u9fGWest.js} +2 -2
  183. package/dist/assets/{date-picker-YLC0sjSf.js → date-picker-CVSd-BRt.js} +3 -3
  184. package/dist/assets/{dateFormatter-jkly8a5N.js → dateFormatter-BD73Za8B.js} +1 -1
  185. package/dist/assets/{dialog-B1U4ND70.js → dialog-BMoy5MDa.js} +4 -4
  186. package/dist/assets/{dist-BCqe3G7U.js → dist-CWw8iddm.js} +1 -1
  187. package/dist/assets/{es-BO7MlKL2.js → es-BazDU8Wd.js} +1 -1
  188. package/dist/assets/{evaluation.constants-BLT71nuf.js → evaluation.constants-CIiAC2dT.js} +3 -3
  189. package/dist/assets/{executions.store-DmR1JjSC.js → executions.store-IU9p1s46.js} +1 -1
  190. package/dist/assets/{externalSecrets.ee.store-px6HohWF.js → externalSecrets.ee.store-1z63wMHN.js} +2 -2
  191. package/dist/assets/{focusPanel.store-Pqc2v-Ms.js → focusPanel.store-BJpwjMIG.js} +4 -4
  192. package/dist/assets/{folders.store-x8KuYpUo.js → folders.store-Db975T-w.js} +2 -2
  193. package/dist/assets/{icon-C8yfF1LY.js → icon-DhADuA9N.js} +1 -1
  194. package/dist/assets/{index-D9KM9gTZ.css → index-C8erHZ_Y.css} +492 -321
  195. package/dist/assets/{index-C4u3WVDF.js → index-Dqdzxupj.js} +615 -519
  196. package/dist/assets/{insights.store-LOsCbJQU.js → insights.store-DC_enAA-.js} +16 -8
  197. package/dist/assets/{insights.utils-7zZgNSKk.js → insights.utils-ClJRVRAK.js} +2 -2
  198. package/dist/assets/{isEmpty-CRyMT0C3.js → isEmpty-BLwDER56.js} +144 -120
  199. package/dist/assets/{isEmpty-B-mcFJ04.css → isEmpty-CAtRkxE7.css} +101 -101
  200. package/dist/assets/{languageModules-B8UNBljm.js → languageModules-CNluY7w0.js} +1 -1
  201. package/dist/assets/{logStreaming.store-DUt3HvR4.js → logStreaming.store-CPvxjcQB.js} +1 -1
  202. package/dist/assets/{mcp.store-Cwt_hzwD.js → mcp.store-YGfe2oZU.js} +2 -2
  203. package/dist/assets/{merge-Db6rb1_m.js → merge-CKEa8BM2.js} +1 -1
  204. package/dist/assets/{nodeCreator.store-DDUlc1Wi.js → nodeCreator.store-Cxxl141g.js} +1995 -1995
  205. package/dist/assets/nodeIcon-ry_JIpAT.js +98 -0
  206. package/dist/assets/{nodeTransforms-CJd0FLm1.js → nodeTransforms-PeZUYiCs.js} +2 -2
  207. package/dist/assets/{npsSurvey.store-DTTUiGq9.js → npsSurvey.store-BTpA4Bdf.js} +2 -2
  208. package/dist/assets/{orderBy-CanHuORU.js → orderBy-CMVxNao4.js} +2 -2
  209. package/dist/assets/{overlay-DeoWJ8oB.js → overlay-B8MMvNgs.js} +2 -2
  210. package/dist/assets/{personalizedTemplatesV3.store-CJ9Bfy5u.js → personalizedTemplatesV3.store-C0D2WZuq.js} +4 -4
  211. package/dist/assets/{pickBy-DoRblpyg.js → pickBy-DWZbVA0W.js} +2 -3
  212. package/dist/assets/{radio-j4rSUoao.js → radio-5XOrKEP7.js} +3 -3
  213. package/dist/assets/{readyToRunWorkflows.store-CjgkGuJy.js → readyToRunWorkflows.store-C23cIyhu.js} +5 -5
  214. package/dist/assets/{readyToRunWorkflowsV2.store-6CMdkLg0.js → readyToRunWorkflowsV2.store-BxZUJyXQ.js} +18 -10
  215. package/dist/assets/{roles.store-D2mgfxDv.js → roles.store-Bk6Eo7y8.js} +2 -2
  216. package/dist/assets/{router-Ebv1qMhT.js → router-CSYdJor8.js} +118 -115
  217. package/dist/assets/{schemaPreview.store-BdP1Rtj4.js → schemaPreview.store-BVhugjbw.js} +2 -2
  218. package/dist/assets/{semver-C8_oAvi8.js → semver-lN9oCZPq.js} +1 -1
  219. package/dist/assets/{sourceControl.eventBus-B10rpVhp.js → sourceControl.eventBus-BkPwCZw_.js} +1 -1
  220. package/dist/assets/{src-Cl0xZtCE.js → src-D6S9Khji.js} +38 -24
  221. package/dist/assets/{src-C5a_PFvg.css → src-sI-DsSQQ.css} +10 -9
  222. package/dist/assets/{sso.store-BSJgAn6v.js → sso.store-qzj82Xj4.js} +1 -1
  223. package/dist/assets/{table-B9oFv7WW.js → table-s-zqHExs.js} +3 -3
  224. package/dist/assets/{templateActions-CAMtj2SG.js → templateActions-BeIpzgaa.js} +4 -4
  225. package/dist/assets/{templateTransforms-ClSZtrME.js → templateTransforms-Cgy40V1P.js} +1 -1
  226. package/dist/assets/templates.store-COjIpQaS.js +3907 -0
  227. package/dist/assets/{truncate-Dc79aML5.js → truncate-DGRsht-H.js} +1 -1
  228. package/dist/assets/{uniqBy-C2OAfwKy.js → uniqBy-BUNHbbw3.js} +1 -1
  229. package/dist/assets/{usage.store-DXgdlM1s.js → usage.store-EBmhHKPv.js} +6 -3
  230. package/dist/assets/{useActions-CYE2yaOW.js → useActions-BATfRxpg.js} +5 -5
  231. package/dist/assets/useAgent-BHJHCfap.js +10 -0
  232. package/dist/assets/{useBeforeUnload-BDgq2LXA.js → useBeforeUnload-BPhnlPrH.js} +3 -3
  233. package/dist/assets/{useBugReporting-C4eU8DLn.js → useBugReporting-oDEHgPM1.js} +9 -9
  234. package/dist/assets/{Canvas-Bn6gWZ4a.css → useCanvasMapping-Bldjj0CO.css} +154 -133
  235. package/dist/assets/{Canvas-Td0SIV0U.js → useCanvasMapping-D6tov6XL.js} +2385 -2379
  236. package/dist/assets/{useCanvasOperations-BxV5Dc21.js → useCanvasOperations-DTN9RbNQ.js} +13 -13
  237. package/dist/assets/useChatCredentials-AjXB38tk.css +442 -0
  238. package/dist/assets/useChatCredentials-CMV_NA0l.js +591 -0
  239. package/dist/assets/useChatHubSidebarState-CM9tokIj.js +640 -0
  240. package/dist/assets/{useClipboard-BPg-srt1.js → useClipboard-fRnZpGbX.js} +2 -2
  241. package/dist/assets/{useCommandBar-CLraT-A2.js → useCommandBar-BqWmMYs4.js} +108 -115
  242. package/dist/assets/{useDebounce-BRhQZVIC.js → useDebounce-BgcdaJ78.js} +2 -2
  243. package/dist/assets/{useExecutionData-B4rCxtFJ.js → useExecutionData-Bk540rxU.js} +1 -1
  244. package/dist/assets/{useExecutionDebugging-B-lTq5hU.js → useExecutionDebugging-BNrxsZTN.js} +7 -7
  245. package/dist/assets/{useExecutionHelpers-5AFgT_t7.js → useExecutionHelpers-DrFWi6u7.js} +5 -5
  246. package/dist/assets/{useExternalHooks-ChElZw8W.js → useExternalHooks-SxBXYVNW.js} +1 -1
  247. package/dist/assets/{useImportCurlCommand-BW8wZKLy.js → useImportCurlCommand-obipPNWg.js} +9 -9
  248. package/dist/assets/useIntersectionObserver-BkAtQAzK.js +33 -0
  249. package/dist/assets/{useKeybindings-fJZrJyDB.js → useKeybindings-Ds1QlWW4.js} +4 -4
  250. package/dist/assets/{useLogsTreeExpand-DbXAJb89.js → useLogsTreeExpand-BWca4dLp.js} +32 -32
  251. package/dist/assets/{useLogsTreeExpand-BT6XJR8J.css → useLogsTreeExpand-nZMKe2ps.css} +38 -35
  252. package/dist/assets/{useMcp-ClSG_eXg.js → useMcp-_gyuyL1x.js} +2 -2
  253. package/dist/assets/{useMessage-CVZHrsoz.js → useMessage-Ceo97RRX.js} +5 -5
  254. package/dist/assets/{usePageRedirectionHelper-Cn-LYQLi.js → usePageRedirectionHelper-C_ctyI4O.js} +4 -4
  255. package/dist/assets/{usePinnedData-_-i0LUdd.js → usePinnedData-Csij2qN3.js} +5 -5
  256. package/dist/assets/{usePushConnection-BHaxo8fR.js → usePushConnection-30v29qWj.js} +16 -15
  257. package/dist/assets/{useRecentResources-D_WnXWIZ.js → useRecentResources-BRKdroHL.js} +9 -9
  258. package/dist/assets/{useRunWorkflow-D5rKvgfC.js → useRunWorkflow-hT6C_xWD.js} +10 -10
  259. package/dist/assets/{useTelemetry-BxbCYDca.js → useTelemetry-EOV0Llso.js} +52 -157
  260. package/dist/assets/{useTelemetryContext-55FklHQh.js → useTelemetryContext-CSMUQPEW.js} +1 -1
  261. package/dist/assets/{useToast-CKD06lpn.js → useToast-BlMNYwds.js} +7 -7
  262. package/dist/assets/{useWorkflowActivate-B2RbrKj9.js → useWorkflowActivate-OfPMIBJ5.js} +8 -8
  263. package/dist/assets/{useWorkflowSaving-DOwP3C1n.js → useWorkflowSaving-CWyt929n.js} +9 -9
  264. package/dist/assets/{useWorkflowsCache-4ARgZCpO.js → useWorkflowsCache-BSXTJC8C.js} +1 -1
  265. package/dist/assets/{versions.store-DyddKRXT.js → versions.store-Dx98n6R_.js} +3 -3
  266. package/dist/assets/{vue-json-pretty-DiH9ZFoW.js → vue-json-pretty-BltKoWq2.js} +1 -1
  267. package/dist/index.html +116 -114
  268. package/package.json +1 -1
  269. package/scripts/fetch-node-popularity.mjs +1 -1
  270. package/stylelint.config.mjs +7 -1
  271. package/dist/assets/AnimatedSpinner-ChSRgyeI.css +0 -39
  272. package/dist/assets/CollectionParameter-Dr2sbWu0.js +0 -58
  273. package/dist/assets/DemoFooter-CWdsp2am.js +0 -71
  274. package/dist/assets/LogsPanel-mv855bJ4.js +0 -58
  275. package/dist/assets/ProjectVariables-Cw92ZPKE.css +0 -293
  276. package/dist/assets/RunDataParsedAiContent-D30b0eQs.js +0 -25
  277. package/dist/assets/VariablesUsageBadge-CEu0Fi7I.js +0 -35
  278. package/dist/assets/VariablesUsageBadge-CQU1F9NU.css +0 -129
  279. package/dist/assets/VariablesView-CnlNqt-I.js +0 -456
  280. package/dist/assets/VirtualSchema-BXzJEXJR.js +0 -43
  281. package/dist/assets/nodeIcon-CyGsA5TL.js +0 -75
  282. package/dist/assets/templates.store-pF0jvUy0.js +0 -337
  283. package/dist/assets/useChatHubSidebarState-CTFhoZRQ.js +0 -383
  284. package/dist/assets/useProjectPages-DrIHs-hv.js +0 -13
  285. /package/dist/assets/{FileSaver.min-CR_3Le5x.js → FileSaver.min-DaytN8ae.js} +0 -0
  286. /package/dist/assets/{RunDataHtml-DOQ0pkg3.js → RunDataHtml-DdtrEw19.js} +0 -0
  287. /package/dist/assets/{TextWithHighlights-B8mQwCVK.js → TextWithHighlights-CxxIad3D.js} +0 -0
  288. /package/dist/assets/{buttons.esm-CnepylvE.js → buttons.esm-Euf82NbC.js} +0 -0
  289. /package/dist/assets/{chart-inxSB4fp.js → chart-BI8B7UPV.js} +0 -0
  290. /package/dist/assets/{core-BfCr8skN.js → core-CIkXL_1D.js} +0 -0
  291. /package/dist/assets/{exports-RJH1xso1.js → exports-D2D_Xd3F.js} +0 -0
  292. /package/dist/assets/{insights.constants-DK2g3nnD.js → insights.constants-NogjFJ3a.js} +0 -0
  293. /package/dist/assets/{smartDecimal-BitNC0jz.js → smartDecimal-5rgLDM96.js} +0 -0
  294. /package/dist/assets/{sortByProperty-CUhVU03p.js → sortByProperty-0UtqPmvJ.js} +0 -0
  295. /package/dist/assets/{typescript.worker-CkR7RUha.js → typescript.worker-DK2Qdfu7.js} +0 -0
  296. /package/dist/assets/{vue-B27A1Apg.js → vue-LyXhKoPx.js} +0 -0
  297. /package/dist/assets/{worker-DYbBH4SI.js → worker-CIvWfg3a.js} +0 -0
  298. /package/dist/assets/{xml-CcxXd9zY.js → xml-F7krcG3E.js} +0 -0
@@ -1,112 +1,113 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useImportCurlCommand-BW8wZKLy.js","assets/icon-C8yfF1LY.js","assets/vue.runtime.esm-bundler-DDuXT-9r.js","assets/chunk-6z4oVpB-.js","assets/truncate-Dc79aML5.js","assets/_MapCache-BGBKpT5S.js","assets/constants-B1JYxPAR.js","assets/empty-BuGRxzl4.js","assets/merge-Db6rb1_m.js","assets/useTelemetry-BxbCYDca.js","assets/dateformat-D7TIhVd4.js","assets/useDebounce-BRhQZVIC.js","assets/useToast-CKD06lpn.js","assets/useExternalHooks-ChElZw8W.js","assets/path-browserify-DsmB_HMK.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useImportCurlCommand-obipPNWg.js","assets/icon-DhADuA9N.js","assets/vue.runtime.esm-bundler-DDuXT-9r.js","assets/chunk-6z4oVpB-.js","assets/truncate-DGRsht-H.js","assets/_MapCache-Byd-DTfo.js","assets/constants-DvlTm3U4.js","assets/empty-BuGRxzl4.js","assets/merge-CKEa8BM2.js","assets/useTelemetry-EOV0Llso.js","assets/dateformat-D7TIhVd4.js","assets/useDebounce-BgcdaJ78.js","assets/useToast-BlMNYwds.js","assets/useExternalHooks-SxBXYVNW.js","assets/path-browserify-DsmB_HMK.js"])))=>i.map(i=>d[i]);
2
2
  import { o as __toESM, t as __commonJSMin } from "./chunk-6z4oVpB-.js";
3
- import { $ as onUpdated, Bt as toRaw, C as computed, D as createElementBlock, E as createCommentVNode, En as init_dist, G as nextTick, Gt as unref, I as guardReactiveProps, It as ref, J as onBeforeUnmount, L as h, M as createVNode, N as defineAsyncComponent, P as defineComponent, Pt as reactive, Q as onUnmounted, Sn as toDisplayString, T as createBlock, Tn as global, U as mergeModels, Ut as toValue, W as mergeProps, Z as onMounted, _ as Fragment, _n as normalizeClass, _t as watch, at as renderSlot, bt as withCtx, c as useCssModule, ct as resolveDynamicComponent, et as openBlock, ft as useModel, h as withModifiers, i as createApp, it as renderList, j as createTextVNode, jt as isRef, k as createSlots, l as useCssVars, m as withKeys, mt as useTemplateRef, n as Transition, ot as resolveComponent, p as vShow, pt as useSlots, q as onBeforeMount, r as TransitionGroup, st as resolveDirective, v as KeepAlive, vn as normalizeProps, vt as watchEffect, w as createBaseVNode, xt as withDirectives, yn as normalizeStyle, zt as shallowRef } from "./vue.runtime.esm-bundler-DDuXT-9r.js";
4
- import { C as useCssVar, E as useElementSize, H as createEventHook, R as useStorage, U as createInjectionState, X as refDebounced, _t as I18nT, gt as useI18n, ht as setLanguage, m as require_isArray, mt as i18nInstance, pt as i18n$1, ut as addCredentialTranslation, x as useAsyncState } from "./_MapCache-BGBKpT5S.js";
5
- import { A as N8nMenuItem_default, At as ElOption, B as N8nFormInput_default, Bn as use, Ct as N8nIconButton_default, Dt as ElSwitch, E as N8nNotice_default, Fn as N8nText_default, Ft as ElDropdownMenu, G as N8nOption_default, I as InlineAskAssistantButton_default, In as N8nButton_default, J as N8nCheckbox_default, Ln as N8nSpinner_default, Mt as ElSelect, Nn as N8nHeading_default, Nt as ElDropdown, P as N8nInfoTip_default, Pn as N8nCallout_default, Pt as ElDropdownItem, R as N8nFormInputs_default, Rn as N8nIcon_default, Rt as ElTag, St as createFormEventBus, Tt as N8nActionBox_default, W as N8nSelect_default, X as N8nCard_default, Y as N8nInputLabel_default, a as N8nInlineTextEdit_default, at as AskAssistantText_default, bt as N8nInput_default, ct as AskAssistantChat_default$1, fn as pick_default, ft as N8nLink_default, g as N8nTabs_default, ht as N8nTooltip_default, it as N8nBadge_default, j as N8nMarkdown_default, jt as ElOptionGroup, mn as isEqual_default, mt as isWorkflowUpdatedMessage, n as N8nCommandBar_default, ot as AskAssistantAvatar_default, rt as useDeviceSupport, s as N8nDataTableServer_default, st as AskAssistantIcon_default, t as N8nPlugin, u as N8nUsersList_default, w as N8nPopover_default, wt as AskAssistantButton_default, x as N8nRadioButtons_default, y as N8nResizeWrapper_default, zt as ElCheckbox } from "./src-Cl0xZtCE.js";
3
+ import { $ as onUpdated, Bt as toRaw, C as computed, D as createElementBlock, E as createCommentVNode, En as init_dist, G as nextTick, Gt as unref, I as guardReactiveProps, It as ref, J as onBeforeUnmount, L as h, M as createVNode, N as defineAsyncComponent, P as defineComponent, Pt as reactive, Q as onUnmounted, Sn as toDisplayString, T as createBlock, Tn as global, U as mergeModels, Ut as toValue, W as mergeProps, Z as onMounted, _ as Fragment, _n as normalizeClass, _t as watch, at as renderSlot, bt as withCtx, c as useCssModule, ct as resolveDynamicComponent, et as openBlock, ft as useModel, h as withModifiers, i as createApp, it as renderList, j as createTextVNode, jt as isRef, k as createSlots, l as useCssVars, m as withKeys, mt as useTemplateRef, n as Transition, ot as resolveComponent, p as vShow, q as onBeforeMount, r as TransitionGroup, st as resolveDirective, v as KeepAlive, vn as normalizeProps, vt as watchEffect, w as createBaseVNode, xt as withDirectives, yn as normalizeStyle, zt as shallowRef } from "./vue.runtime.esm-bundler-DDuXT-9r.js";
4
+ import { C as useCssVar, E as useElementSize, H as createEventHook, R as useStorage, U as createInjectionState, X as refDebounced, _t as I18nT, gt as useI18n, ht as setLanguage, m as require_isArray, mt as i18nInstance, pt as i18n$1, ut as addCredentialTranslation, x as useAsyncState } from "./_MapCache-Byd-DTfo.js";
5
+ import { A as N8nMenuItem_default, B as N8nFormInput_default, Bt as ElTag, Ct as N8nInput_default, Dt as N8nActionBox_default, E as N8nNotice_default, Et as AskAssistantButton_default, Fn as N8nCallout_default, Ft as ElDropdown, G as N8nOption_default, I as InlineAskAssistantButton_default, In as N8nText_default, It as ElDropdownItem, J as N8nCheckbox_default, Ln as N8nButton_default, Lt as ElDropdownMenu, Mt as ElOption, Nt as ElOptionGroup, P as N8nInfoTip_default, Pn as N8nHeading_default, Pt as ElSelect, R as N8nFormInputs_default, Rn as N8nSpinner_default, Tt as N8nIconButton_default, Vn as use, Vt as ElCheckbox, W as N8nSelect_default, X as N8nCard_default, Y as N8nInputLabel_default, _t as isWorkflowUpdatedMessage, a as N8nInlineTextEdit_default, at as AskAssistantText_default, ct as AskAssistantChat_default$1, g as N8nTabs_default, ht as isTaskAbortedMessage, it as N8nBadge_default, j as N8nMarkdown_default, kt as ElSwitch, mt as N8nLink_default, n as N8nCommandBar_default, ot as AskAssistantAvatar_default, rt as useDeviceSupport, s as N8nDataTableServer_default, st as AskAssistantIcon_default, t as N8nPlugin, u as N8nUsersList_default, vt as N8nTooltip_default, w as N8nPopover_default, wt as createFormEventBus, x as N8nRadioButtons_default, y as N8nResizeWrapper_default, zn as N8nIcon_default } from "./src-D6S9Khji.js";
6
6
  import "./en-BYTsM8fR.js";
7
7
  import { t as __vitePreload } from "./preload-helper-CR0ecmWK.js";
8
8
  import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BwBpWJRZ.js";
9
- import { b as useRouter, c as require__arrayMap, r as require_get, t as truncate, x as createEventBus, y as useRoute } from "./truncate-Dc79aML5.js";
10
- import { n as ElTableColumn, t as ElTable } from "./table-B9oFv7WW.js";
11
- import "./icon-C8yfF1LY.js";
12
- import { t as ElDatePicker } from "./date-picker-YLC0sjSf.js";
13
- import "./overlay-DeoWJ8oB.js";
14
- import { O as JsEditor_default, a as ParameterOptions_default, b as require_unset, i as ParameterInputFull_default, k as HtmlEditor_default, o as ParameterInputWrapper_default, t as ParameterInputList_default, x as require_set } from "./ParameterInputList-CtoyrDjR.js";
9
+ import { b as useRouter, c as require__arrayMap, r as require_get, t as truncate, x as createEventBus, y as useRoute } from "./truncate-DGRsht-H.js";
10
+ import { n as ElTableColumn, t as ElTable } from "./table-s-zqHExs.js";
11
+ import "./icon-DhADuA9N.js";
12
+ import { t as ElDatePicker } from "./date-picker-CVSd-BRt.js";
13
+ import "./overlay-B8MMvNgs.js";
14
+ import { O as JsEditor_default, a as ParameterOptions_default, b as require_unset, i as ParameterInputFull_default, k as HtmlEditor_default, o as ParameterInputWrapper_default, t as ParameterInputList_default, x as require_set } from "./ParameterInputList-BzN5Xx73.js";
15
15
  import { C as require_range, S as require_syntax, T as require___vite_browser_external, _ as require_has_symbols, a as require_callBound, b as require_gopd, c as require_has_property_descriptors, d as require_hasown, o as require_call_bind, u as require_get_intrinsic, w as require_es_object_atoms, x as require_type, y as require_es_define_property } from "./empty-BuGRxzl4.js";
16
- import { n as ElMessageBox, t as useMessage } from "./useMessage-CVZHrsoz.js";
17
- import { t as ElRadio } from "./radio-j4rSUoao.js";
18
- import { n as ElRow, t as ElCol } from "./col-b1w4xo57.js";
19
- import "./dialog-B1U4ND70.js";
20
- import { t as ModalDrawer_default } from "./ModalDrawer-K2QDXW8H.js";
21
- import { $a as OTHER_MARKETING_AUTOMATION_GOAL_KEY, $r as getNodeAuthOptions, Aa as EDUCATION_TYPE, Ai as nodeViewEventBus, An as useProjectsStore, Ao as CREDENTIAL_SELECT_MODAL_KEY, Ar as BulkCommand, Ba as MARKETING_AUTOMATION_CUSTOMER_COMMUNICATION, Bi as subscribe, Br as ResourceType, Ca as DEVOPS_AUTOMATION_OTHER, Co as ROLE_SALES_AND_MARKETING, Da as DEVOPS_TICKETING_SYSTEMS_INTEGRATIONS_GOAL, Do as SYSTEMS_INTEGRATOR_COMPANY_TYPE, Dr as useHistoryStore, Ea as DEVOPS_REPORTING_GOAL, Eo as SECURITY_INDUSTRY, Fa as IT_INDUSTRY, G as isChatNode, Ga as MARKETING_AUTOMATION_REPORTING, Gi as COMMUNITY_PACKAGE_INSTALL_MODAL_KEY, Ha as MARKETING_AUTOMATION_GOAL_KEY, Hi as COMMUNITY_NODES_INSTALLATION_DOCS_URL, Hr as splitName, Ht as useCredentialsStore, Ia as LEGAL_INDUSTRY, Ja as MSP_INDUSTRY, Ji as PROJECT_MOVE_RESOURCE_MODAL, Jn as useLoadingService, Jr as getAppNameFromCredType, Js as useRootStore, Ka as MARKETING_INDUSTRY, Ki as COMMUNITY_PACKAGE_MANAGE_ACTIONS, Kr as getActivatableTriggerNodes, La as MANUFACTURING_INDUSTRY, Li as useUIStore, Lt as require__baseEach, M as _sfc_main$d, Ma as GOVERNMENT_INDUSTRY, Mn as ProjectTypes, Mo as COMMUNITY_PLUS_DOCS_URL, Na as HEALTHCARE_INDUSTRY, No as COMMUNITY_PLUS_ENROLLMENT_MODAL, Oa as DIGITAL_AGENCY_COMPANY_TYPE, Oo as TELECOMS_INDUSTRY, Pa as INVITE_USER_MODAL_KEY, Po as DEBUG_PAYWALL_MODAL_KEY, Pt as capitalCase, Qa as OTHER_INDUSTRY_OPTION, Qr as getNodeAuthFields, Ra as MARKETING_AUTOMATION_ACTIONS, Ri as getAll, Ro as useStorage$1, Sa as DEVOPS_AUTOMATION_GOAL_OTHER_KEY, Sn as injectWorkflowState, So as ROLE_OTHER_KEY, Ta as DEVOPS_MONITORING_AND_ALERTING_GOAL, To as SAAS_COMPANY_TYPE, Ua as MARKETING_AUTOMATION_LEAD_GENERATION_GOAL, Ui as COMMUNITY_NODES_RISKS_DOCS_URL, V as useVueFlow, Va as MARKETING_AUTOMATION_DATA_SYNCHING, Vi as API_KEY_CREATE_OR_EDIT_MODAL_KEY, Vr as getTruncatedProjectName, Wa as MARKETING_AUTOMATION_OTHER, Wi as COMMUNITY_PACKAGE_CONFIRM_MODAL_KEY, Xa as OTHER_COMPANY_INDUSTRY_EXTENDED_KEY, Xi as SOURCE_CONTROL_PUSH_MODAL_KEY, Xo as getThirdPartyLicenses, Xr as getAuthTypeForNodeCredential, Ya as OTHER_AUTOMATION_GOAL, Yi as SOURCE_CONTROL_PULL_MODAL_KEY, Yn as hasPermission, Ys as getAndParseConfigFromMetaTag, Za as OTHER_COMPANY_TYPE, Zi as DELETE_FOLDER_MODAL_KEY, _a as DELETE_USER_MODAL_KEY, _c as storeToRefs, _n as useTagsStore, _o as ROLE_DEVOPS, a as useNDVStore, aa as AUTOMATION_BENEFICIARY_MY_TEAM, ac as ResponseError, ai as isAuthRelatedParameter, ao as REPORTED_SOURCE_FRIEND, ba as DEVOPS_AUTOMATION_DATA_SYNCING_GOAL, bc as validate_default, bn as useEnvironmentsStore, bo as ROLE_KEY, ca as COMPANY_INDUSTRY_EXTENDED_KEY, co as REPORTED_SOURCE_LINKEDIN, da as COMPANY_SIZE_20_99, dc as axios_default, di as updateNodeAuthType, do as REPORTED_SOURCE_PODCAST, ei as getNodeCredentialForSelectedAuthType, eo as PERSONALIZATION_MODAL_KEY, fa as COMPANY_SIZE_20_OR_LESS, fc as assert, fo as REPORTED_SOURCE_TWITTER, ga as COMPANY_TYPE_KEY, gn as useAnnotationTagsStore, go as ROLE_DATA_SCIENCE, ha as COMPANY_SIZE_PERSONAL_USE, hc as createPinia, hn as useWorkflowsEEStore, ho as ROLE_CUSTOMER_SUPPORT, i as usePostHog, ia as AUTOMATION_BENEFICIARY_KEY, io as REPORTED_SOURCE_EVENT, ir as useUsersStore, ja as FINANCE_INSURANCE_INDUSTRY, jn as useSourceControlStore, jo as VARIABLE_MODAL_KEY, jr as Command, ka as ECOMMERCE_COMPANY_TYPE, kn as useDocumentTitle, ko as CREDENTIAL_EDIT_MODAL_KEY, la as COMPANY_SIZE_1000_OR_MORE, li as isValueExpression, lo as REPORTED_SOURCE_OTHER, ma as COMPANY_SIZE_KEY, mc as PiniaVuePlugin, mn as useWorkflowHelpers, mo as ROLE_BUSINESS_OWNER, n as TelemetryPlugin, ni as getTriggerNodeServiceName, no as PHYSICAL_RETAIL_OR_SERVICES, nr as useRBACStore, o as useWorkflowsStore, oa as AUTOMATION_BENEFICIARY_OTHER_TEAMS, oo as REPORTED_SOURCE_GOOGLE, pa as COMPANY_SIZE_500_999, po as REPORTED_SOURCE_YOUTUBE, qa as MEDIA_INDUSTRY, qi as NPM_KEYWORD_SEARCH_URL, r as telemetry, ra as MOVE_FOLDER_MODAL_KEY, ro as REAL_ESTATE_OR_CONSTRUCTION, rt as useNodeTypesStore, sa as AUTOMATION_BENEFICIARY_SELF, sn as isTestableExpression, so as REPORTED_SOURCE_KEY, sr as isCredentialModalState, t as useTelemetry, to as PERSONAL_COMPANY_TYPE, ua as COMPANY_SIZE_100_499, uc as AxiosError, uo as REPORTED_SOURCE_OTHER_KEY, va as DEVOPS_AUTOMATION_CI_CD_GOAL, vo as ROLE_ENGINEERING, wa as DEVOPS_INCIDENT_RESPONSE_GOAL, wn as workflowStateEventBus, wo as ROLE_SECURITY, x as getNodeViewTab, xa as DEVOPS_AUTOMATION_GOAL_KEY, xc as ElLoading, xn as useNodeHelpers, xo as ROLE_OTHER, ya as DEVOPS_AUTOMATION_CLOUD_INFRASTRUCTURE_ORCHESTRATION_GOAL, yc as v4_default, yo as ROLE_IT, yr as isValidCredentialResponse, za as MARKETING_AUTOMATION_AD_CAMPAIGN, zo as useSettingsStore, zr as MAX_NAME_LENGTH } from "./useTelemetry-BxbCYDca.js";
22
- import { i as getBannerRowHeight, n as useStyles, t as useToast } from "./useToast-CKD06lpn.js";
16
+ import { n as ElMessageBox, t as useMessage } from "./useMessage-Ceo97RRX.js";
17
+ import { t as ElRadio } from "./radio-5XOrKEP7.js";
18
+ import { n as ElRow, t as ElCol } from "./col-DK_GtMhM.js";
19
+ import "./dialog-BMoy5MDa.js";
20
+ import { t as ModalDrawer_default } from "./ModalDrawer-B2sNzJVm.js";
21
+ import { $a as REAL_ESTATE_OR_CONSTRUCTION, $i as MOVE_FOLDER_MODAL_KEY, Aa as INVITE_USER_MODAL_KEY, Ao as DEBUG_PAYWALL_MODAL_KEY, Ba as MARKETING_AUTOMATION_OTHER, Bi as COMMUNITY_PACKAGE_CONFIRM_MODAL_KEY, Ca as DEVOPS_TICKETING_SYSTEMS_INTEGRATIONS_GOAL, Cc as ElLoading, Co as SYSTEMS_INTEGRATOR_COMPANY_TYPE, Cr as useHistoryStore, Da as FINANCE_INSURANCE_INDUSTRY, Dn as useSourceControlStore, Do as VARIABLE_MODAL_KEY, Dr as Command, Ea as EDUCATION_TYPE, Ei as nodeViewEventBus, En as useProjectsStore, Eo as CREDENTIAL_SELECT_MODAL_KEY, Er as BulkCommand, Fa as MARKETING_AUTOMATION_AD_CAMPAIGN, Fr as MAX_NAME_LENGTH, G as isChatNode, Ga as OTHER_AUTOMATION_GOAL, Gi as SOURCE_CONTROL_PULL_MODAL_KEY, Gn as hasPermission, Ha as MARKETING_INDUSTRY, Hi as COMMUNITY_PACKAGE_MANAGE_ACTIONS, Hr as getActivatableTriggerNodes, Ht as useCredentialsStore, Ia as MARKETING_AUTOMATION_CUSTOMER_COMMUNICATION, Ii as subscribe, Ir as ResourceType, Ja as OTHER_INDUSTRY_OPTION, Jr as getNodeAuthFields, Ka as OTHER_COMPANY_INDUSTRY_EXTENDED_KEY, Ki as SOURCE_CONTROL_PUSH_MODAL_KEY, Kr as getAuthTypeForNodeCredential, La as MARKETING_AUTOMATION_DATA_SYNCHING, Li as API_KEY_CREATE_OR_EDIT_MODAL_KEY, Lo as useStorage$1, Lr as getTruncatedProjectName, Lt as require__baseEach, M as _sfc_main$d, Ma as LEGAL_INDUSTRY, Mo as MAX_TAG_NAME_LENGTH, Na as MANUFACTURING_INDUSTRY, Ni as useUIStore, No as TAGS_MANAGER_MODAL_KEY, Oa as GOVERNMENT_INDUSTRY, On as ProjectTypes, Oo as COMMUNITY_PLUS_DOCS_URL, Pa as MARKETING_AUTOMATION_ACTIONS, Pi as getAll, Pt as capitalCase, Qa as PHYSICAL_RETAIL_OR_SERVICES, Qn as useRBACStore, Qr as getTriggerNodeServiceName, Ra as MARKETING_AUTOMATION_GOAL_KEY, Ri as COMMUNITY_NODES_INSTALLATION_DOCS_URL, Ro as useSettingsStore, Rr as splitName, Sa as DEVOPS_REPORTING_GOAL, Sc as validate_default, Sn as injectWorkflowState, So as SECURITY_INDUSTRY, Ta as ECOMMERCE_COMPANY_TYPE, Tn as useDocumentTitle, To as CREDENTIAL_EDIT_MODAL_KEY, Ua as MEDIA_INDUSTRY, Ui as NPM_KEYWORD_SEARCH_URL, Us as sendUserEvent, V as useVueFlow, Va as MARKETING_AUTOMATION_REPORTING, Vi as COMMUNITY_PACKAGE_INSTALL_MODAL_KEY, Wa as MSP_INDUSTRY, Wi as PROJECT_MOVE_RESOURCE_MODAL, Wn as useLoadingService, Wr as getAppNameFromCredType, Xa as PERSONALIZATION_MODAL_KEY, Xo as getThirdPartyLicenses, Xr as getNodeCredentialForSelectedAuthType, Xs as getAndParseConfigFromMetaTag, Ya as OTHER_MARKETING_AUTOMATION_GOAL_KEY, Yr as getNodeAuthOptions, Ys as useRootStore, Za as PERSONAL_COMPANY_TYPE, _a as DEVOPS_AUTOMATION_GOAL_KEY, _c as createPinia, _n as useTagsStore, _o as ROLE_OTHER, a as useNDVStore, aa as COMPANY_SIZE_1000_OR_MORE, ai as isValueExpression, ao as REPORTED_SOURCE_OTHER, ba as DEVOPS_INCIDENT_RESPONSE_GOAL, bn as useEnvironmentsStore, bo as ROLE_SECURITY, ca as COMPANY_SIZE_20_OR_LESS, co as REPORTED_SOURCE_TWITTER, da as COMPANY_SIZE_PERSONAL_USE, do as ROLE_CUSTOMER_SUPPORT, ea as AUTOMATION_BENEFICIARY_KEY, eo as REPORTED_SOURCE_EVENT, er as useUsersStore, fa as COMPANY_TYPE_KEY, fc as AxiosError, fo as ROLE_DATA_SCIENCE, ga as DEVOPS_AUTOMATION_DATA_SYNCING_GOAL, gc as PiniaVuePlugin, gn as useAnnotationTagsStore, go as ROLE_KEY, ha as DEVOPS_AUTOMATION_CLOUD_INFRASTRUCTURE_ORCHESTRATION_GOAL, hn as useWorkflowsEEStore, ho as ROLE_IT, hr as isValidCredentialResponse, i as usePostHog, ia as COMPANY_INDUSTRY_EXTENDED_KEY, io as REPORTED_SOURCE_LINKEDIN, ja as IT_INDUSTRY, jo as ANNOTATION_TAGS_MANAGER_MODAL_KEY, ka as HEALTHCARE_INDUSTRY, ko as COMMUNITY_PLUS_ENROLLMENT_MODAL, la as COMPANY_SIZE_500_999, lo as REPORTED_SOURCE_YOUTUBE, ma as DEVOPS_AUTOMATION_CI_CD_GOAL, mc as assert, mn as useWorkflowHelpers, mo as ROLE_ENGINEERING, n as TelemetryPlugin, na as AUTOMATION_BENEFICIARY_OTHER_TEAMS, no as REPORTED_SOURCE_GOOGLE, o as useWorkflowsStore, oa as COMPANY_SIZE_100_499, oc as ResponseError, oo as REPORTED_SOURCE_OTHER_KEY, pa as DELETE_USER_MODAL_KEY, pc as axios_default, po as ROLE_DEVOPS, qa as OTHER_COMPANY_TYPE, qi as DELETE_FOLDER_MODAL_KEY, r as telemetry, ra as AUTOMATION_BENEFICIARY_SELF, ro as REPORTED_SOURCE_KEY, rr as isCredentialModalState, rt as useNodeTypesStore, sa as COMPANY_SIZE_20_99, si as updateNodeAuthType, sn as isTestableExpression, so as REPORTED_SOURCE_PODCAST, t as useTelemetry, ta as AUTOMATION_BENEFICIARY_MY_TEAM, ti as isAuthRelatedParameter, to as REPORTED_SOURCE_FRIEND, ua as COMPANY_SIZE_KEY, uo as ROLE_BUSINESS_OWNER, va as DEVOPS_AUTOMATION_GOAL_OTHER_KEY, vo as ROLE_OTHER_KEY, wa as DIGITAL_AGENCY_COMPANY_TYPE, wn as workflowStateEventBus, wo as TELECOMS_INDUSTRY, x as getNodeViewTab, xa as DEVOPS_MONITORING_AND_ALERTING_GOAL, xc as v4_default, xn as useNodeHelpers, xo as SAAS_COMPANY_TYPE, ya as DEVOPS_AUTOMATION_OTHER, yc as storeToRefs, yo as ROLE_SALES_AND_MARKETING, za as MARKETING_AUTOMATION_LEAD_GENERATION_GOAL, zi as COMMUNITY_NODES_RISKS_DOCS_URL } from "./useTelemetry-EOV0Llso.js";
22
+ import { i as getBannerRowHeight, n as useStyles, t as useToast } from "./useToast-BlMNYwds.js";
23
23
  import "./sanitize-html-BuXr7o4T.js";
24
24
  import "./path-browserify-DsmB_HMK.js";
25
- import { $r as defaultMessageEventBusDestinationSyslogOptions, Ao as NPS_SURVEY_MODAL_KEY, Ar as require__baseIteratee, Bo as WORKFLOW_EXTRACTION_NAME_MODAL_KEY, Co as LOG_STREAM_MODAL_KEY, D as APP_MODALS_ELEMENT_ID, Do as MODAL_CONFIRM, Ei as mergeNodeProperties, Fi as deepCopy, Fo as VERSIONS_MODAL_KEY, Fs as EnterpriseEditionFeature, H as HIRING_BANNER, Ho as WORKFLOW_SETTINGS_MODAL_KEY, Ii as isCommunityPackageName, Io as WHATS_NEW_MODAL_KEY, Ir as traverseNodeParameters, Js as MFA_AUTHENTICATION_CODE_WINDOW_EXPIRED, Ki as DateTime, Lo as WORKFLOW_ACTIVATION_CONFLICTING_WEBHOOK_MODAL_KEY, M as VALID_WORKFLOW_IMPORT_URL_REGEX, Mo as PROMPT_MFA_CODE_MODAL_KEY, No as SETUP_CREDENTIALS_MODAL_KEY, O as CODEMIRROR_TOOLTIP_CONTAINER_ELEMENT_ID, On as WEBHOOK_NODE_TYPE$1, Oo as NEW_ASSISTANT_SESSION_MODAL, Po as TAGS_MANAGER_MODAL_KEY, Q as CHAT_TRIGGER_NODE_TYPE$1, Qr as defaultMessageEventBusDestinationSentryOptions, Ro as WORKFLOW_ACTIVE_MODAL_KEY, S as RELEASE_NOTES_URL, So as IMPORT_WORKFLOW_URL_MODAL_KEY, Uo as WORKFLOW_SHARE_MODAL_KEY, Vo as WORKFLOW_HISTORY_VERSION_RESTORE, Wo as LOCAL_STORAGE_ACTIVATION_FLAG, Xr as MessageEventBusDestinationTypeNames, Yr as isExpression, Zr as defaultMessageEventBusDestinationOptions, _a as WEBHOOK_NODE_TYPE, _o as EXPERIMENT_TEMPLATE_RECO_V2_KEY, a as MAX_WORKFLOW_NAME_LENGTH, ac as require_callBound$1, ar as ROLE, ba as require_keys, bo as FROM_AI_PARAMETERS_MODAL_KEY, cc as require_is_regex, co as VIEWS, dc as require_is_callable, do as CHANGE_PASSWORD_MODAL_KEY, ei as defaultMessageEventBusDestinationWebhookOptions, fc as require_define_properties, fi as getNodeParameters, fo as CHAT_EMBED_MODAL_KEY, fr as SOURCE_CONTROL_FILE_LOCATION, go as DUPLICATE_MODAL_KEY, h as DOCS_DOMAIN, ho as CONTACT_PROMPT_MODAL_KEY, hr as getResourcePermissions, j as VALID_EMAIL_REGEX, jo as PRE_BUILT_AGENTS_MODAL_KEY, ks as NDV_UI_OVERHAUL_EXPERIMENT, l as BUILTIN_CREDENTIALS_DOCS_URL, lc as require_shams, lo as ABOUT_MODAL_KEY, mo as CONFIRM_PASSWORD_MODAL_KEY, mr as SOURCE_CONTROL_FILE_TYPE, ms as MAX_TAG_NAME_LENGTH, na as CHAT_TRIGGER_NODE_TYPE, oc as require_call_bind$1, pr as SOURCE_CONTROL_FILE_STATUS, q as AI_MCP_TOOL_NODE_TYPE, qi as NodeConnectionTypes, qs as MFA_AUTHENTICATION_CODE_INPUT_MAX_LENGTH, s as PLACEHOLDER_EMPTY_WORKFLOW_ID, sa as FORM_TRIGGER_NODE_TYPE, sc as require_safe_regex_test$1, so as MAIN_HEADER_TABS, ti as messageEventBusDestinationTypeNames, uc as require_call_bound, uo as ANNOTATION_TAGS_MANAGER_MODAL_KEY, vo as EXPERIMENT_TEMPLATE_RECO_V3_KEY, w as TEMPLATES_URLS, wo as MFA_SETUP_MODAL_KEY, xn as STICKY_NODE_TYPE, xo as IMPORT_CURL_MODAL_KEY, yo as EXTERNAL_SECRETS_PROVIDER_MODAL_KEY, zo as WORKFLOW_DIFF_MODAL_KEY } from "./constants-B1JYxPAR.js";
26
- import { p as require__copyArray, v as require__baseAssignValue } from "./merge-Db6rb1_m.js";
27
- import { i as useBuilderStore, o as BUILDER_ENABLED_VIEWS, t as useAssistantStore } from "./assistant.store-D6Fihh2i.js";
25
+ import { $i as DateTime, $s as MFA_AUTHENTICATION_CODE_WINDOW_EXPIRED, Ao as MFA_SETUP_MODAL_KEY, Bo as VERSIONS_MODAL_KEY, Bs as EnterpriseEditionFeature, Co as EXPERIMENT_TEMPLATE_RECO_V2_KEY, D as APP_MODALS_ELEMENT_ID, Da as require_keys, Do as IMPORT_CURL_MODAL_KEY, Eo as FROM_AI_PARAMETERS_MODAL_KEY, Er as compareWorkflowsNodes, Go as WORKFLOW_EXTRACTION_NAME_MODAL_KEY, H as HIRING_BANNER, Hi as deepCopy, Ho as WORKFLOW_ACTIVATION_CONFLICTING_WEBHOOK_MODAL_KEY, Io as NPS_SURVEY_MODAL_KEY, Jo as WORKFLOW_SHARE_MODAL_KEY, Ko as WORKFLOW_HISTORY_VERSION_RESTORE, Lo as PRE_BUILT_AGENTS_MODAL_KEY, M as VALID_WORKFLOW_IMPORT_URL_REGEX, Ni as mergeNodeProperties, No as MODAL_CONFIRM, Ns as NDV_UI_OVERHAUL_EXPERIMENT, O as CODEMIRROR_TOOLTIP_CONTAINER_ELEMENT_ID, On as WEBHOOK_NODE_TYPE$1, Oo as IMPORT_WORKFLOW_URL_MODAL_KEY, Po as NEW_ASSISTANT_SESSION_MODAL, Q as CHAT_TRIGGER_NODE_TYPE$1, Qs as MFA_AUTHENTICATION_CODE_INPUT_MAX_LENGTH, Ro as PROMPT_MFA_CODE_MODAL_KEY, Rr as require__baseIteratee, S as RELEASE_NOTES_URL, So as EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY, To as EXTERNAL_SECRETS_PROVIDER_MODAL_KEY, Tr as NodeDiffStatus, Ui as isCommunityPackageName, Uo as WORKFLOW_ACTIVE_MODAL_KEY, Ur as traverseNodeParameters, Vo as WHATS_NEW_MODAL_KEY, Wo as WORKFLOW_DIFF_MODAL_KEY, Yo as LOCAL_STORAGE_ACTIVATION_FLAG, _c as require_define_properties, _o as CHAT_EMBED_MODAL_KEY, _r as getResourcePermissions, a as MAX_WORKFLOW_NAME_LENGTH, ai as defaultMessageEventBusDestinationSentryOptions, ar as ROLE, bo as CONTACT_PROMPT_MODAL_KEY, ci as messageEventBusDestinationTypeNames, dc as require_call_bind$1, ea as NodeConnectionTypes, fc as require_safe_regex_test$1, gc as require_is_callable, go as CHANGE_PASSWORD_MODAL_KEY, gr as SOURCE_CONTROL_FILE_TYPE, h as DOCS_DOMAIN, hc as require_call_bound, ho as ABOUT_MODAL_KEY, hr as SOURCE_CONTROL_FILE_STATUS, ii as defaultMessageEventBusDestinationOptions, j as VALID_EMAIL_REGEX, ko as LOG_STREAM_MODAL_KEY, l as BUILTIN_CREDENTIALS_DOCS_URL, la as CHAT_TRIGGER_NODE_TYPE, ma as FORM_TRIGGER_NODE_TYPE, mc as require_shams, mo as VIEWS, mr as SOURCE_CONTROL_FILE_LOCATION, ni as isExpression, oi as defaultMessageEventBusDestinationSyslogOptions, pc as require_is_regex, po as MAIN_HEADER_TABS, q as AI_MCP_TOOL_NODE_TYPE, qo as WORKFLOW_SETTINGS_MODAL_KEY, ri as MessageEventBusDestinationTypeNames, s as PLACEHOLDER_EMPTY_WORKFLOW_ID, si as defaultMessageEventBusDestinationWebhookOptions, uc as require_callBound$1, w as TEMPLATES_URLS, wa as WEBHOOK_NODE_TYPE, wo as EXPERIMENT_TEMPLATE_RECO_V3_KEY, xn as STICKY_NODE_TYPE, xo as DUPLICATE_MODAL_KEY, yi as getNodeParameters, yo as CONFIRM_PASSWORD_MODAL_KEY, zo as SETUP_CREDENTIALS_MODAL_KEY } from "./constants-DvlTm3U4.js";
26
+ import { p as require__copyArray, v as require__baseAssignValue } from "./merge-CKEa8BM2.js";
27
+ import { i as useBuilderStore, o as BUILDER_ENABLED_VIEWS, t as useAssistantStore } from "./assistant.store-DvuxtpS4.js";
28
28
  import { t as require_dateformat } from "./dateformat-D7TIhVd4.js";
29
- import { t as useDebounce } from "./useDebounce-BRhQZVIC.js";
30
- import { t as useExternalHooks } from "./useExternalHooks-ChElZw8W.js";
31
- import { t as useChatPanelStore } from "./chatPanel.store-Dt9ypdvG.js";
32
- import { i as SlideTransition_default, t as ItemsRenderer_default } from "./ItemsRenderer-CTbNG2s3.js";
33
- import { t as useNpsSurveyStore } from "./npsSurvey.store-DTTUiGq9.js";
34
- import { t as useCloudPlanStore } from "./cloudPlan.store-x1IpiElw.js";
35
- import "./templates.store-pF0jvUy0.js";
36
- import "./focusPanel.store-Pqc2v-Ms.js";
37
- import { t as useWorkflowSaving } from "./useWorkflowSaving-DOwP3C1n.js";
29
+ import { t as useDebounce } from "./useDebounce-BgcdaJ78.js";
30
+ import { t as useExternalHooks } from "./useExternalHooks-SxBXYVNW.js";
31
+ import { t as useChatPanelStore } from "./chatPanel.store-fM-8PK9i.js";
32
+ import { i as SlideTransition_default, t as ItemsRenderer_default } from "./ItemsRenderer-CDnrNwFM.js";
33
+ import { t as useNpsSurveyStore } from "./npsSurvey.store-BTpA4Bdf.js";
34
+ import { t as useCloudPlanStore } from "./cloudPlan.store-DrraBpZJ.js";
35
+ import { a as useTemplatesDataQualityStore } from "./templates.store-COjIpQaS.js";
36
+ import "./focusPanel.store-BJpwjMIG.js";
37
+ import { t as useWorkflowSaving } from "./useWorkflowSaving-CWyt929n.js";
38
38
  import "./retry-sDkwzrPY.js";
39
- import { t as useExecutionsStore } from "./executions.store-DmR1JjSC.js";
40
- import { n as useAgentRequestStore, t as useRunWorkflow } from "./useRunWorkflow-D5rKvgfC.js";
41
- import "./usePinnedData-_-i0LUdd.js";
42
- import { _ as useCalloutHelpers, u as shouldIgnoreCanvasShortcut } from "./nodeCreator.store-DDUlc1Wi.js";
43
- import "./nodeIcon-CyGsA5TL.js";
44
- import { t as useClipboard } from "./useClipboard-BPg-srt1.js";
45
- import { a as useLogsStore } from "./useCanvasOperations-BxV5Dc21.js";
46
- import { t as useFoldersStore } from "./folders.store-x8KuYpUo.js";
47
- import { t as NodeIcon_default } from "./NodeIcon-Bbl9Jpsi.js";
48
- import "./KeyboardShortcutTooltip-CXKgjDIT.js";
49
- import { a as CanvasNode_default, i as useCanvasMapping, l as useWorkflowExtraction, n as CanvasEdge_default, r as CanvasBackground_default, t as Canvas_default, u as CanvasRunWorkflowButton_default } from "./Canvas-Td0SIV0U.js";
50
- import { t as useVersionsStore } from "./versions.store-DyddKRXT.js";
51
- import { t as usePageRedirectionHelper } from "./usePageRedirectionHelper-Cn-LYQLi.js";
52
- import { t as useDataTableStore } from "./dataTable.store-Bgg7dsRy.js";
53
- import { t as Modal_default } from "./Modal-B8k7lYVM.js";
54
- import { i as useDebugInfo } from "./useBugReporting-C4eU8DLn.js";
55
- import { t as CopyInput_default } from "./CopyInput-DQBVF_BG.js";
56
- import { t as useApiKeysStore } from "./apiKeys.store-CHTKph22.js";
57
- import { n as mfaEventBus, r as promptMfaCodeBus, t as confirmPasswordEventBus } from "./auth.eventBus-CUpasXbj.js";
58
- import "./isEmpty-CRyMT0C3.js";
59
- import "./NDVEmptyState-CFiiknri.js";
60
- import { $ as generateTraceId, A as spanTimeInputToSeconds, At as isThenable, B as SEMANTIC_ATTRIBUTE_SENTRY_OP, Bt as getGlobalSingleton, C as convertSpanLinksForEnvelope, Ct as isEvent, D as getStatusMessage, Dt as isPrimitive, E as getSpanDescendants, Et as isPlainObject, F as SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, Ft as stackParserFromStackParserOptions, G as getCurrentScope, Gt as DEBUG_BUILD$3, H as SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Ht as getSentryCarrier, I as SEMANTIC_ATTRIBUTE_PROFILE_ID, It as CONSOLE_LEVELS, J as withScope, K as getIsolationScope, L as SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, Lt as consoleSandbox, M as spanToTransactionTraceContext, Mt as createStackParser, N as getCapturedScopesOnSpan, Nt as getFramesFromEvent, O as showSpanDropWarning, Ot as isRequest, P as setCapturedScopesOnSpan, Pt as getFunctionName, Q as generateSpanId, R as SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, Rt as debug, S as addChildSpanToSpan, St as isErrorEvent, T as getRootSpan, Tt as isParameterizedString, U as SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, Ut as SDK_VERSION, V as SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, Vt as getMainCarrier, W as getClient, Wt as GLOBAL_OBJ, X as _getSpanForScope, Y as getAsyncContextStrategy, Z as _setSpanForScope, _ as makeDsn, _t as getLocationHref, a as setTag, at as addExceptionTypeValue, b as TRACE_FLAG_NONE, bt as isDOMException, c as SyncPromise, ct as uuid4, d as normalize, dt as fill, et as merge, f as normalizeToSize, ft as getOriginalFunction, g as dsnToString, gt as getComponentName, h as getDynamicSamplingContextFromSpan, ht as stringMatchesSomePattern, i as captureSession, it as addExceptionMechanism, j as spanToJSON, jt as UNKNOWN_FUNCTION, k as spanIsSampled, kt as isString, l as rejectedSyncPromise, lt as addNonEnumerableProperty, m as getDynamicSamplingContextFromScope, mt as safeJoin, n as captureException, nt as dateTimestampInSeconds, o as startSession, ot as checkOrSetAlreadyCaught, p as freezeDscOnSpan, pt as markFunctionWrapped, q as getTraceContextFromScope, r as captureMessage, rt as timestampInSeconds, s as prepareEvent, st as getEventDescription, t as captureEvent, tt as updateSession, u as resolvedSyncPromise, ut as extractExceptionKeysForMessage, v as DEFAULT_ENVIRONMENT, vt as htmlTreeAsString, w as getActiveSpan, wt as isInstanceOf, x as TRACE_FLAG_SAMPLED, xt as isError, y as hasSpansEnabled, yt as isDOMError, z as SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, zt as originalConsoleMethods } from "./exports-RJH1xso1.js";
61
- import { t as useExternalSecretsStore } from "./externalSecrets.ee.store-px6HohWF.js";
62
- import "./uniqBy-C2OAfwKy.js";
63
- import { n as useCommunityNodesStore, t as require_semver } from "./semver-C8_oAvi8.js";
64
- import { a as useInstallNode } from "./CommunityNodeUpdateInfo-Bk-rYnfU.js";
65
- import "./ProjectIcon-Doey-RQc.js";
66
- import { t as ProjectCardBadge_default } from "./ProjectCardBadge-SSY0HK9w.js";
67
- import { t as useUsageStore } from "./usage.store-DXgdlM1s.js";
68
- import { t as CredentialIcon_default } from "./CredentialIcon-BmzfYSyO.js";
69
- import "./Draggable-BSa80qci.js";
70
- import { c as script$1, s as script } from "./VirtualSchema-CC3sIZuJ.js";
71
- import "./TextWithHighlights-B8mQwCVK.js";
72
- import { t as useTelemetryContext } from "./useTelemetryContext-55FklHQh.js";
73
- import "./schemaPreview.store-BdP1Rtj4.js";
74
- import "./nodeTransforms-CJd0FLm1.js";
75
- import "./FileSaver.min-CR_3Le5x.js";
76
- import "./vue-B27A1Apg.js";
77
- import "./vue-json-pretty-DiH9ZFoW.js";
78
- import "./RunDataHtml-DOQ0pkg3.js";
79
- import "./dateFormatter-jkly8a5N.js";
80
- import "./useExecutionHelpers-5AFgT_t7.js";
81
- import { t as EnterpriseEdition_ee_default } from "./EnterpriseEdition.ee-B_ZSY4rl.js";
82
- import { r as FreeAiCreditsCallout_default } from "./NodeSettings-BKd6Pbpi.js";
83
- import { t as TimeAgo_default } from "./TimeAgo-FvYQex-v.js";
84
- import { t as require_orderBy } from "./orderBy-CanHuORU.js";
85
- import { t as ProjectSharing_default } from "./ProjectSharing-CRwSdefc.js";
86
- import { t as useRolesStore } from "./roles.store-D2mgfxDv.js";
87
- import { t as SaveButton_default } from "./SaveButton-C2Gkwcd6.js";
88
- import { t as sortByProperty } from "./sortByProperty-CUhVU03p.js";
89
- import "./TagsDropdown-B9w42ULo.js";
90
- import { t as WorkflowTagsDropdown_default } from "./WorkflowTagsDropdown-C4m2b8q6.js";
91
- import { n as ExternalSecretsProviderImage_ee_default, r as useExternalSecretsProvider, t as ExternalSecretsProviderConnectionSwitch_ee_default } from "./ExternalSecretsProviderConnectionSwitch.ee-ps4K4bOK.js";
92
- import "./sso.store-BSJgAn6v.js";
93
- import { n as registerModuleRoutes, t as router_default } from "./router-Ebv1qMhT.js";
94
- import "./insights.store-LOsCbJQU.js";
95
- import "./insights.constants-DK2g3nnD.js";
96
- import "./insights.utils-7zZgNSKk.js";
97
- import { t as useMcp } from "./useMcp-ClSG_eXg.js";
98
- import "./constants-DlQs6Cav.js";
99
- import "./useRecentResources-D_WnXWIZ.js";
100
- import "./useActions-CYE2yaOW.js";
101
- import { t as useLogStreamingStore } from "./logStreaming.store-DUt3HvR4.js";
102
- import "./templateTransforms-ClSZtrME.js";
103
- import { n as AppsRequiringCredsNotice_default, r as useCredentialSetupState, t as SetupTemplateFormStep_default } from "./SetupTemplateFormStep-vegHZ86T.js";
104
- import { t as sourceControlEventBus } from "./sourceControl.eventBus-B10rpVhp.js";
105
- import "./useKeybindings-fJZrJyDB.js";
106
- import { n as usePersonalizedTemplatesV2Store, t as usePersonalizedTemplatesV3Store } from "./personalizedTemplatesV3.store-CJ9Bfy5u.js";
107
- import { t as useCommandBar } from "./useCommandBar-CLraT-A2.js";
108
- import "./useWorkflowActivate-B2RbrKj9.js";
109
- import { a as LineController, c as PointElement, d as plugin_title, f as plugin_tooltip, i as Chart, n as BarElement, o as LineElement, r as CategoryScale, s as LinearScale, u as plugin_legend } from "./chart-inxSB4fp.js";
39
+ import { t as useExecutionsStore } from "./executions.store-IU9p1s46.js";
40
+ import { n as useAgentRequestStore, t as useRunWorkflow } from "./useRunWorkflow-hT6C_xWD.js";
41
+ import "./usePinnedData-Csij2qN3.js";
42
+ import { _ as useCalloutHelpers, u as shouldIgnoreCanvasShortcut } from "./nodeCreator.store-Cxxl141g.js";
43
+ import "./nodeIcon-ry_JIpAT.js";
44
+ import { t as useClipboard } from "./useClipboard-fRnZpGbX.js";
45
+ import { a as useLogsStore } from "./useCanvasOperations-DTN9RbNQ.js";
46
+ import { t as useFoldersStore } from "./folders.store-Db975T-w.js";
47
+ import { t as NodeIcon_default } from "./NodeIcon-C-rkj6sB.js";
48
+ import "./KeyboardShortcutTooltip-y1pBqAge.js";
49
+ import { a as CanvasNode_default, i as CanvasBackground_default, l as useWorkflowExtraction, n as Canvas_default, r as CanvasEdge_default, t as useCanvasMapping, u as CanvasRunWorkflowButton_default } from "./useCanvasMapping-D6tov6XL.js";
50
+ import { t as useVersionsStore } from "./versions.store-Dx98n6R_.js";
51
+ import { t as usePageRedirectionHelper } from "./usePageRedirectionHelper-C_ctyI4O.js";
52
+ import { n as BaseBanner_default, t as useBannersStore } from "./banners.store-BQPwuqhn.js";
53
+ import { t as useDataTableStore } from "./dataTable.store-u9fGWest.js";
54
+ import { t as Modal_default } from "./Modal-DwutFKNY.js";
55
+ import { i as useDebugInfo } from "./useBugReporting-oDEHgPM1.js";
56
+ import { t as CopyInput_default } from "./CopyInput-DX-FL085.js";
57
+ import { t as useApiKeysStore } from "./apiKeys.store-CPsBJKkq.js";
58
+ import { n as mfaEventBus, r as promptMfaCodeBus, t as confirmPasswordEventBus } from "./auth.eventBus-YsWbuB84.js";
59
+ import "./isEmpty-BLwDER56.js";
60
+ import "./NDVEmptyState-DdpBamQ9.js";
61
+ import { $ as generateTraceId, A as spanTimeInputToSeconds, At as isThenable, B as SEMANTIC_ATTRIBUTE_SENTRY_OP, Bt as getGlobalSingleton, C as convertSpanLinksForEnvelope, Ct as isEvent, D as getStatusMessage, Dt as isPrimitive, E as getSpanDescendants, Et as isPlainObject, F as SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, Ft as stackParserFromStackParserOptions, G as getCurrentScope, Gt as DEBUG_BUILD$3, H as SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Ht as getSentryCarrier, I as SEMANTIC_ATTRIBUTE_PROFILE_ID, It as CONSOLE_LEVELS, J as withScope, K as getIsolationScope, L as SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, Lt as consoleSandbox, M as spanToTransactionTraceContext, Mt as createStackParser, N as getCapturedScopesOnSpan, Nt as getFramesFromEvent, O as showSpanDropWarning, Ot as isRequest, P as setCapturedScopesOnSpan, Pt as getFunctionName, Q as generateSpanId, R as SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, Rt as debug, S as addChildSpanToSpan, St as isErrorEvent, T as getRootSpan, Tt as isParameterizedString, U as SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, Ut as SDK_VERSION, V as SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, Vt as getMainCarrier, W as getClient, Wt as GLOBAL_OBJ, X as _getSpanForScope, Y as getAsyncContextStrategy, Z as _setSpanForScope, _ as makeDsn, _t as getLocationHref, a as setTag, at as addExceptionTypeValue, b as TRACE_FLAG_NONE, bt as isDOMException, c as SyncPromise, ct as uuid4, d as normalize, dt as fill, et as merge, f as normalizeToSize, ft as getOriginalFunction, g as dsnToString, gt as getComponentName, h as getDynamicSamplingContextFromSpan, ht as stringMatchesSomePattern, i as captureSession, it as addExceptionMechanism, j as spanToJSON, jt as UNKNOWN_FUNCTION, k as spanIsSampled, kt as isString, l as rejectedSyncPromise, lt as addNonEnumerableProperty, m as getDynamicSamplingContextFromScope, mt as safeJoin, n as captureException, nt as dateTimestampInSeconds, o as startSession, ot as checkOrSetAlreadyCaught, p as freezeDscOnSpan, pt as markFunctionWrapped, q as getTraceContextFromScope, r as captureMessage, rt as timestampInSeconds, s as prepareEvent, st as getEventDescription, t as captureEvent, tt as updateSession, u as resolvedSyncPromise, ut as extractExceptionKeysForMessage, v as DEFAULT_ENVIRONMENT, vt as htmlTreeAsString, w as getActiveSpan, wt as isInstanceOf, x as TRACE_FLAG_SAMPLED, xt as isError, y as hasSpansEnabled, yt as isDOMError, z as SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, zt as originalConsoleMethods } from "./exports-D2D_Xd3F.js";
62
+ import { t as useExternalSecretsStore } from "./externalSecrets.ee.store-1z63wMHN.js";
63
+ import "./uniqBy-BUNHbbw3.js";
64
+ import { n as useCommunityNodesStore, t as require_semver } from "./semver-lN9oCZPq.js";
65
+ import { a as useInstallNode } from "./CommunityNodeUpdateInfo-rHUGLO4H.js";
66
+ import "./ProjectIcon-DqKjDNbR.js";
67
+ import { t as ProjectCardBadge_default } from "./ProjectCardBadge-p4AY0ubu.js";
68
+ import { t as useUsageStore } from "./usage.store-EBmhHKPv.js";
69
+ import { t as CredentialIcon_default } from "./CredentialIcon-DS3l06t2.js";
70
+ import "./Draggable-DFf4aD-Y.js";
71
+ import { c as script$1, s as script } from "./VirtualSchema-BwIrkOUg.js";
72
+ import "./TextWithHighlights-CxxIad3D.js";
73
+ import { t as useTelemetryContext } from "./useTelemetryContext-CSMUQPEW.js";
74
+ import "./schemaPreview.store-BVhugjbw.js";
75
+ import "./nodeTransforms-PeZUYiCs.js";
76
+ import "./FileSaver.min-DaytN8ae.js";
77
+ import "./vue-LyXhKoPx.js";
78
+ import "./vue-json-pretty-BltKoWq2.js";
79
+ import "./RunDataHtml-DdtrEw19.js";
80
+ import "./dateFormatter-BD73Za8B.js";
81
+ import "./useExecutionHelpers-DrFWi6u7.js";
82
+ import { t as EnterpriseEdition_ee_default } from "./EnterpriseEdition.ee-BoNEV-MB.js";
83
+ import { r as FreeAiCreditsCallout_default } from "./NodeSettings-Dr-l_1nO.js";
84
+ import { t as TimeAgo_default } from "./TimeAgo-Gv5h1Utx.js";
85
+ import { t as require_orderBy } from "./orderBy-CMVxNao4.js";
86
+ import { t as ProjectSharing_default } from "./ProjectSharing-BVPUxo_M.js";
87
+ import { t as useRolesStore } from "./roles.store-Bk6Eo7y8.js";
88
+ import { t as SaveButton_default } from "./SaveButton-D1iDaopV.js";
89
+ import { t as sortByProperty } from "./sortByProperty-0UtqPmvJ.js";
90
+ import "./TagsDropdown-D6CYk5R8.js";
91
+ import { t as WorkflowTagsDropdown_default } from "./WorkflowTagsDropdown-CdEFZM1A.js";
92
+ import { n as ExternalSecretsProviderImage_ee_default, r as useExternalSecretsProvider, t as ExternalSecretsProviderConnectionSwitch_ee_default } from "./ExternalSecretsProviderConnectionSwitch.ee-DCTg0mdX.js";
93
+ import "./sso.store-qzj82Xj4.js";
94
+ import { n as registerModuleRoutes, t as router_default } from "./router-CSYdJor8.js";
95
+ import "./insights.store-DC_enAA-.js";
96
+ import "./insights.constants-NogjFJ3a.js";
97
+ import "./insights.utils-ClJRVRAK.js";
98
+ import { t as useMcp } from "./useMcp-_gyuyL1x.js";
99
+ import "./constants-CPQyU8WO.js";
100
+ import "./useRecentResources-BRKdroHL.js";
101
+ import "./useActions-BATfRxpg.js";
102
+ import { t as useLogStreamingStore } from "./logStreaming.store-CPvxjcQB.js";
103
+ import "./templateTransforms-Cgy40V1P.js";
104
+ import { n as AppsRequiringCredsNotice_default, r as useCredentialSetupState, t as SetupTemplateFormStep_default } from "./SetupTemplateFormStep-BsgzR5CN.js";
105
+ import { t as sourceControlEventBus } from "./sourceControl.eventBus-BkPwCZw_.js";
106
+ import "./useKeybindings-Ds1QlWW4.js";
107
+ import { n as usePersonalizedTemplatesV2Store, t as usePersonalizedTemplatesV3Store } from "./personalizedTemplatesV3.store-C0D2WZuq.js";
108
+ import { t as useCommandBar } from "./useCommandBar-BqWmMYs4.js";
109
+ import "./useWorkflowActivate-OfPMIBJ5.js";
110
+ import { a as LineController, c as PointElement, d as plugin_title, f as plugin_tooltip, i as Chart, n as BarElement, o as LineElement, r as CategoryScale, s as LinearScale, u as plugin_legend } from "./chart-BI8B7UPV.js";
110
111
  (function polyfill$1() {
111
112
  const relList = document.createElement("link").relList;
112
113
  if (relList && relList.supports && relList.supports("modulepreload")) return;
@@ -1841,7 +1842,7 @@ var ExecuteMessage_vue_vue_type_style_index_1_lang_module_default = {
1841
1842
  issuesList: "_issuesList_nh612_147",
1842
1843
  runButton: "_runButton_nh612_153"
1843
1844
  };
1844
- var ExecuteMessage_default = /* @__PURE__ */ __plugin_vue_export_helper_default(ExecuteMessage_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": ExecuteMessage_vue_vue_type_style_index_1_lang_module_default }], ["__scopeId", "data-v-3b59dbb6"]]);
1845
+ var ExecuteMessage_default = /* @__PURE__ */ __plugin_vue_export_helper_default(ExecuteMessage_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": ExecuteMessage_vue_vue_type_style_index_1_lang_module_default }], ["__scopeId", "data-v-a659b118"]]);
1845
1846
  const WORKFLOW_SUGGESTIONS = [
1846
1847
  {
1847
1848
  id: "invoice-pipeline",
@@ -1971,8 +1972,10 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
1971
1972
  const currentRoute = computed(() => route.name);
1972
1973
  const showExecuteMessage = computed(() => {
1973
1974
  const builderUpdatedWorkflowMessageIndex = builderStore.chatMessages.findLastIndex((msg) => msg.type === "workflow-updated" || msg.type === "tool" && msg.toolName === "update_node_parameters");
1974
- const hasErrorAfterUpdate = builderStore.chatMessages.slice(builderUpdatedWorkflowMessageIndex + 1).some((msg) => msg.type === "error");
1975
- return !builderStore.streaming && workflowsStore.workflow.nodes.length > 0 && builderUpdatedWorkflowMessageIndex > -1 && !hasErrorAfterUpdate;
1975
+ const messagesAfterUpdate = builderStore.chatMessages.slice(builderUpdatedWorkflowMessageIndex + 1);
1976
+ const hasErrorAfterUpdate = messagesAfterUpdate.some((msg) => msg.type === "error");
1977
+ const hasTaskAbortedAfterUpdate = messagesAfterUpdate.some((msg) => isTaskAbortedMessage(msg));
1978
+ return !builderStore.streaming && workflowsStore.workflow.nodes.length > 0 && builderUpdatedWorkflowMessageIndex > -1 && !hasErrorAfterUpdate && !hasTaskAbortedAfterUpdate;
1976
1979
  });
1977
1980
  const creditsQuota = computed(() => builderStore.creditsQuota);
1978
1981
  const creditsRemaining = computed(() => builderStore.creditsRemaining);
@@ -2087,7 +2090,7 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
2087
2090
  if (!isStreaming) trackWorkflowModifications();
2088
2091
  if (builderStore.initialGeneration && !isStreaming && workflowsStore.workflow.nodes.length > 0) {
2089
2092
  const lastMessage = builderStore.chatMessages[builderStore.chatMessages.length - 1];
2090
- const successful = lastMessage && lastMessage.type !== "error" && !(lastMessage.type === "text" && lastMessage.content === i18n$2.baseText("aiAssistant.builder.streamAbortedMessage"));
2093
+ const successful = lastMessage && lastMessage.type !== "error" && !isTaskAbortedMessage(lastMessage);
2091
2094
  builderStore.initialGeneration = false;
2092
2095
  if (successful) await workflowSaver.saveCurrentWorkflow();
2093
2096
  }
@@ -2231,7 +2234,7 @@ var AskAssistantChat_default = /* @__PURE__ */ __plugin_vue_export_helper_defaul
2231
2234
  ])], 32);
2232
2235
  };
2233
2236
  }
2234
- }), [["__scopeId", "data-v-c5bdf047"]]);
2237
+ }), [["__scopeId", "data-v-ace8d134"]]);
2235
2238
  var HubSwitcher_default = /* @__PURE__ */ defineComponent({
2236
2239
  __name: "HubSwitcher",
2237
2240
  props: { isBuildMode: { type: Boolean } },
@@ -2374,9 +2377,9 @@ var AssistantsHub_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
2374
2377
  }
2375
2378
  });
2376
2379
  var AssistantsHub_vue_vue_type_style_index_0_lang_module_default = {
2377
- resizeWrapper: "_resizeWrapper_nn7zp_123",
2378
- wrapper: "_wrapper_nn7zp_127",
2379
- assistantContent: "_assistantContent_nn7zp_133"
2380
+ resizeWrapper: "_resizeWrapper_1ffdf_123",
2381
+ wrapper: "_wrapper_1ffdf_127",
2382
+ assistantContent: "_assistantContent_1ffdf_133"
2380
2383
  };
2381
2384
  var AssistantsHub_default = /* @__PURE__ */ __plugin_vue_export_helper_default(AssistantsHub_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": AssistantsHub_vue_vue_type_style_index_0_lang_module_default }]]);
2382
2385
  var AskAssistantFloatingButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -2429,74 +2432,12 @@ var AskAssistantFloatingButton_vue_vue_type_script_setup_true_lang_default = /*
2429
2432
  }
2430
2433
  });
2431
2434
  var AskAssistantFloatingButton_vue_vue_type_style_index_0_lang_module_default = {
2432
- container: "_container_xc7r2_123",
2433
- tooltip: "_tooltip_xc7r2_130",
2434
- assistant: "_assistant_xc7r2_136",
2435
- text: "_text_xc7r2_146"
2435
+ container: "_container_1tr4s_123",
2436
+ tooltip: "_tooltip_1tr4s_130",
2437
+ assistant: "_assistant_1tr4s_136",
2438
+ text: "_text_1tr4s_146"
2436
2439
  };
2437
2440
  var AskAssistantFloatingButton_default = /* @__PURE__ */ __plugin_vue_export_helper_default(AskAssistantFloatingButton_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": AskAssistantFloatingButton_vue_vue_type_style_index_0_lang_module_default }]]);
2438
- var BaseBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
2439
- __name: "BaseBanner",
2440
- props: {
2441
- name: {},
2442
- theme: { default: "info" },
2443
- customIcon: { default: void 0 },
2444
- dismissible: {
2445
- type: Boolean,
2446
- default: true
2447
- }
2448
- },
2449
- emits: ["close"],
2450
- setup(__props, { emit: __emit }) {
2451
- const i18n$2 = useI18n();
2452
- const uiStore = useUIStore();
2453
- const slots = useSlots();
2454
- const props = __props;
2455
- const emit = __emit;
2456
- const hasTrailingContent = computed(() => {
2457
- return !!slots.trailingContent;
2458
- });
2459
- async function onCloseClick() {
2460
- await uiStore.dismissBanner(props.name);
2461
- emit("close");
2462
- }
2463
- return (_ctx, _cache) => {
2464
- return openBlock(), createBlock(unref(N8nCallout_default), {
2465
- class: normalizeClass(_ctx.$style.callout),
2466
- theme: props.theme,
2467
- icon: props.customIcon,
2468
- "icon-size": "medium",
2469
- "round-corners": false,
2470
- "data-test-id": `banners-${props.name}`,
2471
- "only-bottom-border": true
2472
- }, {
2473
- trailingContent: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.trailingContent) }, [renderSlot(_ctx.$slots, "trailingContent"), _ctx.dismissible ? (openBlock(), createBlock(unref(N8nIcon_default), {
2474
- key: 0,
2475
- size: "small",
2476
- icon: "x",
2477
- title: unref(i18n$2).baseText("generic.dismiss"),
2478
- class: "clickable",
2479
- "data-test-id": `banner-${props.name}-close`,
2480
- onClick: onCloseClick
2481
- }, null, 8, ["title", "data-test-id"])) : createCommentVNode("", true)], 2)]),
2482
- default: withCtx(() => [createBaseVNode("div", { class: normalizeClass([_ctx.$style.mainContent, !hasTrailingContent.value ? _ctx.$style.keepSpace : ""]) }, [renderSlot(_ctx.$slots, "mainContent")], 2)]),
2483
- _: 3
2484
- }, 8, [
2485
- "class",
2486
- "theme",
2487
- "icon",
2488
- "data-test-id"
2489
- ]);
2490
- };
2491
- }
2492
- });
2493
- var BaseBanner_vue_vue_type_style_index_0_lang_module_default = {
2494
- callout: "_callout_otapo_123",
2495
- mainContent: "_mainContent_otapo_127",
2496
- keepSpace: "_keepSpace_otapo_132",
2497
- trailingContent: "_trailingContent_otapo_136"
2498
- };
2499
- var BaseBanner_default = /* @__PURE__ */ __plugin_vue_export_helper_default(BaseBanner_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": BaseBanner_vue_vue_type_style_index_0_lang_module_default }]]);
2500
2441
  var NonProductionLicenseBanner_default = /* @__PURE__ */ defineComponent({
2501
2442
  __name: "NonProductionLicenseBanner",
2502
2443
  setup(__props) {
@@ -2545,6 +2486,8 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2545
2486
  setup(__props) {
2546
2487
  const cloudPlanStore = useCloudPlanStore();
2547
2488
  const pageRedirectionHelper = usePageRedirectionHelper();
2489
+ const shouldShowTrialBanner = computed(() => cloudPlanStore.shouldShowDynamicTrialBanner);
2490
+ const trialBannerText = computed(() => cloudPlanStore.dynamicTrialBannerText);
2548
2491
  const trialDaysLeft = computed(() => -1 * cloudPlanStore.trialDaysLeft);
2549
2492
  const messageText = computed(() => {
2550
2493
  return i18n$1.baseText("banners.trial.message", {
@@ -2582,6 +2525,7 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2582
2525
  return usedExecutions > executionsQuota ? executionsQuota : usedExecutions;
2583
2526
  });
2584
2527
  function onUpdatePlanClick() {
2528
+ if (shouldShowTrialBanner.value) cloudPlanStore.dismissDynamicTrialBanner();
2585
2529
  pageRedirectionHelper.goToUpgrade("canvas-nav", "upgrade-canvas-nav", "redirect");
2586
2530
  }
2587
2531
  return (_ctx, _cache) => {
@@ -2614,7 +2558,16 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2614
2558
  }, 8, ["color"])
2615
2559
  ], 2)], 2)
2616
2560
  ], 2)]),
2617
- trailingContent: withCtx(() => [createVNode(unref(N8nButton_default), {
2561
+ trailingContent: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.trailingContentWrapper) }, [shouldShowTrialBanner.value ? (openBlock(), createBlock(unref(N8nBadge_default), {
2562
+ key: 0,
2563
+ class: normalizeClass(_ctx.$style.dynamicBanner),
2564
+ size: "small",
2565
+ "show-border": false,
2566
+ bold: true
2567
+ }, {
2568
+ default: withCtx(() => [createTextVNode(toDisplayString(trialBannerText.value), 1)]),
2569
+ _: 1
2570
+ }, 8, ["class"])) : createCommentVNode("", true), createVNode(unref(N8nButton_default), {
2618
2571
  type: "success",
2619
2572
  icon: "gem",
2620
2573
  size: "small",
@@ -2622,31 +2575,33 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2622
2575
  }, {
2623
2576
  default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n$1).baseText("generic.upgradeNow")), 1)]),
2624
2577
  _: 1
2625
- })]),
2578
+ })], 2)]),
2626
2579
  _: 1
2627
2580
  });
2628
2581
  };
2629
2582
  }
2630
2583
  });
2631
2584
  var TrialBanner_vue_vue_type_style_index_0_lang_module_default = {
2632
- content: "_content_a9eav_123",
2633
- pipe: "_pipe_a9eav_129",
2634
- progressBarDiv: "_progressBarDiv_a9eav_135",
2635
- progressBar: "_progressBar_a9eav_135",
2636
- progressBarSuccess: "_progressBarSuccess_a9eav_164",
2637
- progressBarDanger: "_progressBarDanger_a9eav_174",
2638
- usageText: "_usageText_a9eav_183",
2639
- usageCounter: "_usageCounter_a9eav_190",
2640
- danger: "_danger_a9eav_198",
2641
- executionsCountSection: "_executionsCountSection_a9eav_202"
2585
+ content: "_content_14odr_123",
2586
+ pipe: "_pipe_14odr_129",
2587
+ progressBarDiv: "_progressBarDiv_14odr_135",
2588
+ progressBar: "_progressBar_14odr_135",
2589
+ progressBarSuccess: "_progressBarSuccess_14odr_164",
2590
+ progressBarDanger: "_progressBarDanger_14odr_174",
2591
+ usageText: "_usageText_14odr_183",
2592
+ usageCounter: "_usageCounter_14odr_190",
2593
+ danger: "_danger_14odr_198",
2594
+ executionsCountSection: "_executionsCountSection_14odr_202",
2595
+ trailingContentWrapper: "_trailingContentWrapper_14odr_206",
2596
+ dynamicBanner: "_dynamicBanner_14odr_212"
2642
2597
  };
2643
2598
  var TrialBanner_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TrialBanner_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TrialBanner_vue_vue_type_style_index_0_lang_module_default }]]);
2644
2599
  var V1Banner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
2645
2600
  __name: "V1Banner",
2646
2601
  setup(__props) {
2647
- const uiStore = useUIStore();
2602
+ const bannersStore = useBannersStore();
2648
2603
  async function dismissPermanently() {
2649
- await uiStore.dismissBanner("V1", "permanent");
2604
+ await bannersStore.dismissBanner("V1", "permanent");
2650
2605
  }
2651
2606
  const hasOwnerPermission = computed(() => hasPermission(["instanceOwner"]));
2652
2607
  return (_ctx, _cache) => {
@@ -2794,27 +2749,43 @@ const N8N_BANNERS = {
2794
2749
  var BannerStack_default = /* @__PURE__ */ defineComponent({
2795
2750
  __name: "BannerStack",
2796
2751
  setup(__props) {
2797
- const uiStore = useUIStore();
2752
+ const bannersStore = useBannersStore();
2798
2753
  async function updateCurrentBannerHeight() {
2799
2754
  const bannerHeight = await getBannerRowHeight();
2800
- uiStore.updateBannersHeight(bannerHeight);
2755
+ bannersStore.updateBannersHeight(bannerHeight);
2801
2756
  }
2757
+ const getBannerForName = (bannerName) => {
2758
+ return N8N_BANNERS[bannerName] || bannersStore.dynamicBannersMap[bannerName];
2759
+ };
2802
2760
  const currentlyShownBanner = computed(() => {
2803
2761
  updateCurrentBannerHeight();
2804
- if (uiStore.bannerStack.length === 0) return null;
2805
- let banner$1 = N8N_BANNERS[uiStore.bannerStack[0]];
2806
- uiStore.bannerStack.forEach((bannerName, index) => {
2762
+ if (bannersStore.bannerStack.length === 0) return null;
2763
+ let currentBanner = getBannerForName(bannersStore.bannerStack[0]);
2764
+ let currentBannerName = bannersStore.bannerStack[0];
2765
+ bannersStore.bannerStack.forEach((bannerName, index) => {
2807
2766
  if (index === 0) return;
2808
- const bannerToCompare = N8N_BANNERS[bannerName];
2809
- if (bannerToCompare.priority > banner$1.priority) banner$1 = bannerToCompare;
2767
+ const bannerToCompare = getBannerForName(bannerName);
2768
+ if (bannerToCompare.priority > currentBanner.priority) {
2769
+ currentBanner = bannerToCompare;
2770
+ currentBannerName = bannerName;
2771
+ }
2810
2772
  });
2811
- return banner$1.component;
2773
+ return {
2774
+ component: currentBanner.component,
2775
+ props: {
2776
+ name: currentBannerName,
2777
+ content: currentBanner.content,
2778
+ theme: currentBanner.theme,
2779
+ isDismissible: currentBanner.isDismissible,
2780
+ dismissPermanently: currentBanner.dismissPermanently
2781
+ }
2782
+ };
2812
2783
  });
2813
2784
  onMounted(async () => {
2814
2785
  await updateCurrentBannerHeight();
2815
2786
  });
2816
2787
  return (_ctx, _cache) => {
2817
- return openBlock(), createElementBlock("div", _hoisted_1$37, [(openBlock(), createBlock(resolveDynamicComponent(currentlyShownBanner.value)))]);
2788
+ return openBlock(), createElementBlock("div", _hoisted_1$37, [currentlyShownBanner.value ? (openBlock(), createBlock(resolveDynamicComponent(currentlyShownBanner.value.component), normalizeProps(mergeProps({ key: 0 }, currentlyShownBanner.value.props)), null, 16)) : createCommentVNode("", true)]);
2818
2789
  };
2819
2790
  }
2820
2791
  });
@@ -3184,13 +3155,13 @@ var ApiKeyScopes_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
3184
3155
  "class",
3185
3156
  "indeterminate"
3186
3157
  ])]),
3187
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(groupedScopes.value, (actions$1, resource) => {
3158
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(groupedScopes.value, (actions$2, resource) => {
3188
3159
  return openBlock(), createBlock(unref(ElOptionGroup), {
3189
3160
  key: resource,
3190
3161
  disabled: !__props.enabled,
3191
3162
  label: unref(capitalCase)(resource).toUpperCase()
3192
3163
  }, {
3193
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(actions$1, (action) => {
3164
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(actions$2, (action) => {
3194
3165
  return openBlock(), createBlock(unref(ElOption), {
3195
3166
  key: `${resource}:${action}`,
3196
3167
  label: `${resource}:${action}`,
@@ -3254,7 +3225,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3254
3225
  const expirationDaysFromNow = ref(EXPIRATION_OPTIONS["30_DAYS"]);
3255
3226
  const modalBus = createEventBus();
3256
3227
  const newApiKey = ref(null);
3257
- const loading$2 = ref(false);
3228
+ const loading$3 = ref(false);
3258
3229
  const rawApiKey = ref("");
3259
3230
  const customExpirationDate = ref("");
3260
3231
  const showExpirationDateSelector = ref(false);
@@ -3304,7 +3275,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3304
3275
  };
3305
3276
  async function onEdit() {
3306
3277
  try {
3307
- loading$2.value = true;
3278
+ loading$3.value = true;
3308
3279
  await updateApiKey(props.activeId, {
3309
3280
  label: label$1.value,
3310
3281
  scopes: selectedScopes.value
@@ -3317,7 +3288,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3317
3288
  } catch (error$2) {
3318
3289
  showError(error$2, i18n$2.baseText("settings.api.edit.error"));
3319
3290
  } finally {
3320
- loading$2.value = false;
3291
+ loading$3.value = false;
3321
3292
  }
3322
3293
  }
3323
3294
  function closeModal() {
@@ -3334,7 +3305,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3334
3305
  scopes: selectedScopes.value
3335
3306
  };
3336
3307
  try {
3337
- loading$2.value = true;
3308
+ loading$3.value = true;
3338
3309
  newApiKey.value = await createApiKey(payload);
3339
3310
  rawApiKey.value = newApiKey.value.rawApiKey;
3340
3311
  showMessage({
@@ -3344,7 +3315,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3344
3315
  } catch (error$2) {
3345
3316
  showError(error$2, i18n$2.baseText("settings.api.create.error"));
3346
3317
  } finally {
3347
- loading$2.value = false;
3318
+ loading$3.value = false;
3348
3319
  }
3349
3320
  };
3350
3321
  const modalTitle = computed(() => {
@@ -3482,7 +3453,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3482
3453
  footer: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.footer) }, [
3483
3454
  _ctx.mode === "new" && !newApiKey.value ? (openBlock(), createBlock(unref(N8nButton_default), {
3484
3455
  key: 0,
3485
- loading: loading$2.value,
3456
+ loading: loading$3.value,
3486
3457
  disabled: !allFormFieldsAreSet.value,
3487
3458
  label: unref(i18n$2).baseText("settings.api.view.modal.save.button"),
3488
3459
  onClick: onSave
@@ -3603,7 +3574,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3603
3574
  const formBus = createFormEventBus();
3604
3575
  const modalBus = createEventBus();
3605
3576
  const password = ref("");
3606
- const loading$2 = ref(false);
3577
+ const loading$3 = ref(false);
3607
3578
  const i18n$2 = useI18n();
3608
3579
  const { showMessage, showError } = useToast();
3609
3580
  const usersStore = useUsersStore();
@@ -3618,7 +3589,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3618
3589
  const onSubmit = async (data) => {
3619
3590
  const values$2 = data;
3620
3591
  try {
3621
- loading$2.value = true;
3592
+ loading$3.value = true;
3622
3593
  await usersStore.updateCurrentUserPassword({
3623
3594
  currentPassword: values$2.currentPassword,
3624
3595
  newPassword: values$2.password,
@@ -3633,7 +3604,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3633
3604
  } catch (error$2) {
3634
3605
  showError(error$2, i18n$2.baseText("auth.changePassword.error"));
3635
3606
  } finally {
3636
- loading$2.value = false;
3607
+ loading$3.value = false;
3637
3608
  }
3638
3609
  };
3639
3610
  const onSubmitClick = () => {
@@ -3716,7 +3687,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3716
3687
  onSubmit
3717
3688
  }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)]),
3718
3689
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
3719
- loading: loading$2.value,
3690
+ loading: loading$3.value,
3720
3691
  label: unref(i18n$2).baseText("auth.changePassword"),
3721
3692
  float: "right",
3722
3693
  "data-test-id": "change-password-button",
@@ -3736,12 +3707,12 @@ var ConfirmPasswordModal_vue_vue_type_script_setup_true_lang_default = /* @__PUR
3736
3707
  setup(__props) {
3737
3708
  const config$1 = ref(null);
3738
3709
  const formBus = createFormEventBus();
3739
- const loading$2 = ref(false);
3710
+ const loading$3 = ref(false);
3740
3711
  const i18n$2 = useI18n();
3741
3712
  const onSubmit = (data) => {
3742
3713
  const currentPassword = data.currentPassword;
3743
3714
  if (!currentPassword) return;
3744
- loading$2.value = true;
3715
+ loading$3.value = true;
3745
3716
  confirmPasswordEventBus.emit("close", { currentPassword });
3746
3717
  };
3747
3718
  const onSubmitClick = () => {
@@ -3783,7 +3754,7 @@ var ConfirmPasswordModal_vue_vue_type_script_setup_true_lang_default = /* @__PUR
3783
3754
  onSubmit
3784
3755
  }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)]),
3785
3756
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
3786
- loading: loading$2.value,
3757
+ loading: loading$3.value,
3787
3758
  label: unref(i18n$2).baseText("generic.confirm"),
3788
3759
  float: "right",
3789
3760
  "data-test-id": "confirm-password-button",
@@ -4071,7 +4042,7 @@ function logSpanStart(span) {
4071
4042
  const sampled = spanIsSampled(span);
4072
4043
  const rootSpan = getRootSpan(span);
4073
4044
  const isRootSpan = rootSpan === span;
4074
- const header$10 = `[Tracing] Starting ${sampled ? "sampled" : "unsampled"} ${isRootSpan ? "root " : ""}span`;
4045
+ const header$11 = `[Tracing] Starting ${sampled ? "sampled" : "unsampled"} ${isRootSpan ? "root " : ""}span`;
4075
4046
  const infoParts = [
4076
4047
  `op: ${op}`,
4077
4048
  `name: ${description$8}`,
@@ -4084,7 +4055,7 @@ function logSpanStart(span) {
4084
4055
  if (op$1) infoParts.push(`root op: ${op$1}`);
4085
4056
  if (description$9) infoParts.push(`root description: ${description$9}`);
4086
4057
  }
4087
- debug.log(`${header$10}
4058
+ debug.log(`${header$11}
4088
4059
  ${infoParts.join("\n ")}`);
4089
4060
  }
4090
4061
  function logSpanEnd(span) {
@@ -5100,10 +5071,10 @@ function makePromiseBuffer(limit) {
5100
5071
  };
5101
5072
  }
5102
5073
  var DEFAULT_RETRY_AFTER = 60 * 1e3;
5103
- function parseRetryAfterHeader(header$10, now = Date.now()) {
5104
- const headerDelay = parseInt(`${header$10}`, 10);
5074
+ function parseRetryAfterHeader(header$11, now = Date.now()) {
5075
+ const headerDelay = parseInt(`${header$11}`, 10);
5105
5076
  if (!isNaN(headerDelay)) return headerDelay * 1e3;
5106
- const headerDate = Date.parse(`${header$10}`);
5077
+ const headerDate = Date.parse(`${header$11}`);
5107
5078
  if (!isNaN(headerDate)) return headerDate - now;
5108
5079
  return DEFAULT_RETRY_AFTER;
5109
5080
  }
@@ -6289,9 +6260,9 @@ function instrumentXHR() {
6289
6260
  } });
6290
6261
  else xhrOpenThisArg.addEventListener("readystatechange", onreadystatechangeHandler);
6291
6262
  xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, { apply(originalSetRequestHeader, setRequestHeaderThisArg, setRequestHeaderArgArray) {
6292
- const [header$10, value] = setRequestHeaderArgArray;
6263
+ const [header$11, value] = setRequestHeaderArgArray;
6293
6264
  const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];
6294
- if (xhrInfo && isString(header$10) && isString(value)) xhrInfo.request_headers[header$10.toLowerCase()] = value;
6265
+ if (xhrInfo && isString(header$11) && isString(value)) xhrInfo.request_headers[header$11.toLowerCase()] = value;
6295
6266
  return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);
6296
6267
  } });
6297
6268
  return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);
@@ -7336,7 +7307,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7336
7307
  setup(__props) {
7337
7308
  const telemetry$1 = useTelemetry();
7338
7309
  const i18n$2 = useI18n();
7339
- const { installNode, loading: loading$2 } = useInstallNode();
7310
+ const { installNode, loading: loading$3 } = useInstallNode();
7340
7311
  const uiStore = useUIStore();
7341
7312
  const modalBus = createEventBus();
7342
7313
  const modalData = computed(() => uiStore.modalsById[COMMUNITY_PACKAGE_INSTALL_MODAL_KEY]?.data);
@@ -7369,7 +7340,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7369
7340
  checkboxWarning.value = false;
7370
7341
  };
7371
7342
  const onModalClose = () => {
7372
- return !loading$2.value;
7343
+ return !loading$3.value;
7373
7344
  };
7374
7345
  const onInputBlur = () => {
7375
7346
  packageName.value = packageName.value.replaceAll("npm i ", "").replaceAll("npm install ", "");
@@ -7388,7 +7359,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7388
7359
  "event-bus": unref(modalBus),
7389
7360
  center: true,
7390
7361
  "before-close": onModalClose,
7391
- "show-close": !unref(loading$2)
7362
+ "show-close": !unref(loading$3)
7392
7363
  }, {
7393
7364
  content: withCtx(() => [!modalData.value?.hideSuggestion ? (openBlock(), createElementBlock("div", {
7394
7365
  key: 0,
@@ -7426,7 +7397,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7426
7397
  maxlength: 214,
7427
7398
  placeholder: unref(i18n$2).baseText("settings.communityNodes.installModal.packageName.placeholder"),
7428
7399
  required: true,
7429
- disabled: unref(loading$2) || modalData.value?.disableInput,
7400
+ disabled: unref(loading$3) || modalData.value?.disableInput,
7430
7401
  onBlur: onInputBlur
7431
7402
  }, null, 8, [
7432
7403
  "modelValue",
@@ -7452,7 +7423,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7452
7423
  checkboxWarning.value ? _ctx.$style.error : "",
7453
7424
  "mt-l"
7454
7425
  ]),
7455
- disabled: unref(loading$2),
7426
+ disabled: unref(loading$3),
7456
7427
  "data-test-id": "user-agreement-checkbox"
7457
7428
  }, {
7458
7429
  default: withCtx(() => [
@@ -7477,9 +7448,9 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7477
7448
  ])
7478
7449
  ], 2)]),
7479
7450
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
7480
- loading: unref(loading$2),
7481
- disabled: !userAgreed.value || packageName.value === "" || unref(loading$2),
7482
- label: unref(loading$2) ? unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label.loading") : unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label"),
7451
+ loading: unref(loading$3),
7452
+ disabled: !userAgreed.value || packageName.value === "" || unref(loading$3),
7453
+ label: unref(loading$3) ? unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label.loading") : unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label"),
7483
7454
  size: "large",
7484
7455
  float: "right",
7485
7456
  "data-test-id": "install-community-package-button",
@@ -7606,7 +7577,7 @@ var NodesInWorkflowTable_default = /* @__PURE__ */ __plugin_vue_export_helper_de
7606
7577
  ])) : createCommentVNode("", true)]);
7607
7578
  };
7608
7579
  }
7609
- }), [["__scopeId", "data-v-36eb6310"]]);
7580
+ }), [["__scopeId", "data-v-c38bafc6"]]);
7610
7581
  var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7611
7582
  __name: "CommunityPackageManageConfirmModal",
7612
7583
  props: {
@@ -7624,7 +7595,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7624
7595
  const toast = useToast();
7625
7596
  const i18n$2 = useI18n();
7626
7597
  const telemetry$1 = useTelemetry();
7627
- const loading$2 = ref(false);
7598
+ const loading$3 = ref(false);
7628
7599
  const workflowsWithPackageNodes = ref([]);
7629
7600
  const isUsingVerifiedAndUnverifiedPackages = settingsStore.isCommunityNodesFeatureEnabled && settingsStore.isUnverifiedPackagesEnabled;
7630
7601
  const isUsingVerifiedPackagesOnly = settingsStore.isCommunityNodesFeatureEnabled && !settingsStore.isUnverifiedPackagesEnabled;
@@ -7656,7 +7627,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7656
7627
  };
7657
7628
  });
7658
7629
  const onModalClose = () => {
7659
- return !loading$2.value;
7630
+ return !loading$3.value;
7660
7631
  };
7661
7632
  const onConfirmButtonClick = async () => {
7662
7633
  if (props.mode === COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL) await onUninstall();
@@ -7671,7 +7642,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7671
7642
  package_author: communityStorePackage.value.authorName,
7672
7643
  package_author_email: communityStorePackage.value.authorEmail
7673
7644
  });
7674
- loading$2.value = true;
7645
+ loading$3.value = true;
7675
7646
  await communityNodesStore.uninstallPackage(props.activePackageName);
7676
7647
  await useNodeTypesStore().getNodeTypes();
7677
7648
  toast.showMessage({
@@ -7681,7 +7652,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7681
7652
  } catch (error$2) {
7682
7653
  toast.showError(error$2, i18n$2.baseText("settings.communityNodes.messages.uninstall.error"));
7683
7654
  } finally {
7684
- loading$2.value = false;
7655
+ loading$3.value = false;
7685
7656
  modalBus.emit("close");
7686
7657
  }
7687
7658
  };
@@ -7695,7 +7666,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7695
7666
  package_author: communityStorePackage.value.authorName,
7696
7667
  package_author_email: communityStorePackage.value.authorEmail
7697
7668
  });
7698
- loading$2.value = true;
7669
+ loading$3.value = true;
7699
7670
  if (settingsStore.isUnverifiedPackagesEnabled) await communityNodesStore.updatePackage(props.activePackageName);
7700
7671
  else if (settingsStore.isCommunityNodesFeatureEnabled) await communityNodesStore.updatePackage(props.activePackageName, updateVersion.value, nodeTypeStorePackage.value?.checksum);
7701
7672
  else throw new Error("Community nodes feature is not correctly enabled.");
@@ -7711,7 +7682,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7711
7682
  } catch (error$2) {
7712
7683
  toast.showError(error$2, i18n$2.baseText("settings.communityNodes.messages.update.error.title"));
7713
7684
  } finally {
7714
- loading$2.value = false;
7685
+ loading$3.value = false;
7715
7686
  modalBus.emit("close");
7716
7687
  }
7717
7688
  };
@@ -7745,7 +7716,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7745
7716
  title: getModalContent.value.title,
7746
7717
  "event-bus": unref(modalBus),
7747
7718
  center: true,
7748
- "show-close": !loading$2.value,
7719
+ "show-close": !loading$3.value,
7749
7720
  "before-close": onModalClose
7750
7721
  }, {
7751
7722
  content: withCtx(() => [
@@ -7781,9 +7752,9 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7781
7752
  "data-test-id": "close-button",
7782
7753
  onClick
7783
7754
  }, null, 8, ["label"]), createVNode(unref(N8nButton_default), {
7784
- loading: loading$2.value,
7785
- disabled: loading$2.value,
7786
- label: loading$2.value ? getModalContent.value.buttonLoadingLabel : getModalContent.value.buttonLabel,
7755
+ loading: loading$3.value,
7756
+ disabled: loading$3.value,
7757
+ label: loading$3.value ? getModalContent.value.buttonLoadingLabel : getModalContent.value.buttonLabel,
7787
7758
  size: "large",
7788
7759
  float: "right",
7789
7760
  onClick: onConfirmButtonClick
@@ -8471,10 +8442,10 @@ var GoogleAuthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
8471
8442
  const type = useUIStore().appliedTheme === "dark" ? ".dark.png" : ".png";
8472
8443
  const i18n$2 = useI18n();
8473
8444
  const googleAuthButtons = {
8474
- "--google-auth-btn-normal": `url(${baseUrl}static/google-auth/normal${type}`,
8475
- "--google-auth-btn-focus": `url(${baseUrl}static/google-auth/focus${type}`,
8476
- "--google-auth-btn-pressed": `url(${baseUrl}static/google-auth/pressed${type}`,
8477
- "--google-auth-btn-disabled": `url(${baseUrl}static/google-auth/disabled${type}`
8445
+ "--google-auth-btn--color--background--normal": `url(${baseUrl}static/google-auth/normal${type}`,
8446
+ "--google-auth-btn--color--background--focus": `url(${baseUrl}static/google-auth/focus${type}`,
8447
+ "--google-auth-btn--color--background--pressed": `url(${baseUrl}static/google-auth/pressed${type}`,
8448
+ "--google-auth-btn--color--background--disabled": `url(${baseUrl}static/google-auth/disabled${type}`
8478
8449
  };
8479
8450
  return (_ctx, _cache) => {
8480
8451
  return openBlock(), createElementBlock("button", {
@@ -8485,7 +8456,7 @@ var GoogleAuthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
8485
8456
  };
8486
8457
  }
8487
8458
  });
8488
- var GoogleAuthButton_vue_vue_type_style_index_0_lang_module_default = { googleAuthBtn: "_googleAuthBtn_1tor9_123" };
8459
+ var GoogleAuthButton_vue_vue_type_style_index_0_lang_module_default = { googleAuthBtn: "_googleAuthBtn_1ja0c_123" };
8489
8460
  var GoogleAuthButton_default = /* @__PURE__ */ __plugin_vue_export_helper_default(GoogleAuthButton_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": GoogleAuthButton_vue_vue_type_style_index_0_lang_module_default }]]);
8490
8461
  var OauthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8491
8462
  __name: "OauthButton",
@@ -9038,6 +9009,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9038
9009
  const i18n$2 = useI18n();
9039
9010
  const telemetry$1 = useTelemetry();
9040
9011
  const router = useRouter();
9012
+ const rootStore = useRootStore();
9041
9013
  const activeTab = ref("connection");
9042
9014
  const authError = ref("");
9043
9015
  const credentialId = ref("");
@@ -9051,7 +9023,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9051
9023
  const isTesting = ref(false);
9052
9024
  const hasUnsavedChanges = ref(false);
9053
9025
  const isSaved = ref(false);
9054
- const loading$2 = ref(false);
9026
+ const loading$3 = ref(false);
9055
9027
  const showValidationWarning = ref(false);
9056
9028
  const testedSuccessfully = ref(false);
9057
9029
  const isRetesting = ref(false);
@@ -9207,7 +9179,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9207
9179
  if (credentialId.value) if (!requiredPropertiesFilled.value && credentialPermissions.value.update) showValidationWarning.value = true;
9208
9180
  else await retestCredential();
9209
9181
  }, 0);
9210
- loading$2.value = false;
9182
+ loading$3.value = false;
9211
9183
  });
9212
9184
  async function beforeClose() {
9213
9185
  let keepEditing = false;
@@ -9414,11 +9386,34 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9414
9386
  else if (isCredentialTestable.value) trackProperties.is_valid = !!testedSuccessfully.value;
9415
9387
  if (ndvStore.activeNode) trackProperties.node_type = ndvStore.activeNode.type;
9416
9388
  if (authError.value && authError.value !== "") trackProperties.authError = authError.value;
9417
- if (!isOAuthType.value) telemetry$1.track("User saved credentials", trackProperties);
9389
+ if (!isOAuthType.value) {
9390
+ telemetry$1.track("User saved credentials", trackProperties);
9391
+ handleDynamicNotification(!!trackProperties.is_valid);
9392
+ }
9418
9393
  await externalHooks.run("credentialEdit.saveCredential", trackProperties);
9419
9394
  }
9420
9395
  return credential;
9421
9396
  }
9397
+ async function handleDynamicNotification(isValid) {
9398
+ if (!isValid || !settingsStore.isCloudDeployment) return;
9399
+ try {
9400
+ const response = await sendUserEvent(rootStore.restApiContext, {
9401
+ eventType: "credential-saved",
9402
+ metadata: { credential_type: credentialTypeName.value }
9403
+ });
9404
+ if (response.title && response.message) setTimeout(async () => {
9405
+ try {
9406
+ await message$1.confirm(response.message, response.title, {
9407
+ confirmButtonText: i18n$2.baseText("generic.keepBuilding"),
9408
+ cancelButtonText: "",
9409
+ showCancelButton: false,
9410
+ closeOnClickModal: true,
9411
+ closeOnPressEscape: true
9412
+ });
9413
+ } catch (error$2) {}
9414
+ }, 15e3);
9415
+ } catch (error$2) {}
9416
+ }
9422
9417
  const createToastMessagingForNewCredentials = (project) => {
9423
9418
  let toastTitle = i18n$2.baseText("credentials.create.personal.toast.title");
9424
9419
  let toastText = "";
@@ -9549,6 +9544,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9549
9544
  };
9550
9545
  if (ndvStore.activeNode) trackProperties.node_type = ndvStore.activeNode.type;
9551
9546
  telemetry$1.track("User saved credentials", trackProperties);
9547
+ handleDynamicNotification(successfullyConnected);
9552
9548
  if (successfullyConnected) {
9553
9549
  oauthChannel.removeEventListener("message", receiveMessage);
9554
9550
  credentialData.value = {
@@ -9593,7 +9589,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9593
9589
  name: _ctx.modalName,
9594
9590
  "custom-class": _ctx.$style.credentialModal,
9595
9591
  "event-bus": modalBus.value,
9596
- loading: loading$2.value,
9592
+ loading: loading$3.value,
9597
9593
  "before-close": beforeClose,
9598
9594
  width: "70%",
9599
9595
  height: "80%"
@@ -9742,15 +9738,15 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9742
9738
  }
9743
9739
  });
9744
9740
  var CredentialEdit_vue_vue_type_style_index_0_lang_module_default = {
9745
- credentialModal: "_credentialModal_1j8ec_123",
9746
- mainContent: "_mainContent_1j8ec_137",
9747
- credName: "_credName_1j8ec_143",
9748
- sidebar: "_sidebar_1j8ec_150",
9749
- header: "_header_1j8ec_160",
9750
- container: "_container_1j8ec_164",
9751
- credInfo: "_credInfo_1j8ec_169",
9752
- credActions: "_credActions_1j8ec_177",
9753
- credIcon: "_credIcon_1j8ec_188"
9741
+ credentialModal: "_credentialModal_qzlbd_123",
9742
+ mainContent: "_mainContent_qzlbd_137",
9743
+ credName: "_credName_qzlbd_143",
9744
+ sidebar: "_sidebar_qzlbd_150",
9745
+ header: "_header_qzlbd_160",
9746
+ container: "_container_qzlbd_164",
9747
+ credInfo: "_credInfo_qzlbd_169",
9748
+ credActions: "_credActions_qzlbd_177",
9749
+ credIcon: "_credIcon_qzlbd_188"
9754
9750
  };
9755
9751
  var CredentialEdit_default = /* @__PURE__ */ __plugin_vue_export_helper_default(CredentialEdit_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": CredentialEdit_vue_vue_type_style_index_0_lang_module_default }]]);
9756
9752
  var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -9761,7 +9757,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9761
9757
  const i18n$2 = useI18n();
9762
9758
  const modalBus = ref(createEventBus());
9763
9759
  const selected = ref("");
9764
- const loading$2 = ref(true);
9760
+ const loading$3 = ref(true);
9765
9761
  const selectRef = ref();
9766
9762
  const credentialsStore = useCredentialsStore();
9767
9763
  const uiStore = useUIStore();
@@ -9770,7 +9766,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9770
9766
  try {
9771
9767
  await credentialsStore.fetchCredentialTypes(false);
9772
9768
  } catch (e) {}
9773
- loading$2.value = false;
9769
+ loading$3.value = false;
9774
9770
  setTimeout(() => {
9775
9771
  if (selectRef.value) selectRef.value.focus();
9776
9772
  }, 0);
@@ -9796,7 +9792,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9796
9792
  "event-bus": modalBus.value,
9797
9793
  width: "50%",
9798
9794
  center: true,
9799
- loading: loading$2.value,
9795
+ loading: loading$3.value,
9800
9796
  "max-width": "460px",
9801
9797
  "min-height": "250px"
9802
9798
  }, {
@@ -9916,9 +9912,9 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9916
9912
  emit("location:selected", location);
9917
9913
  }
9918
9914
  });
9919
- const loading$2 = ref(false);
9915
+ const loading$3 = ref(false);
9920
9916
  const fetchAvailableLocations = async (query) => {
9921
- loading$2.value = true;
9917
+ loading$3.value = true;
9922
9918
  const folders = await foldersStore.fetchFoldersAvailableForMove(props.selectedProjectId, props.currentFolderId, { name: query ?? void 0 });
9923
9919
  if (!props.parentFolderId) availableLocations.value = folders;
9924
9920
  else availableLocations.value = folders.filter((folder) => folder.id !== props.parentFolderId);
@@ -9935,7 +9931,7 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9935
9931
  subFolderCount: 0,
9936
9932
  path: []
9937
9933
  });
9938
- loading$2.value = false;
9934
+ loading$3.value = false;
9939
9935
  };
9940
9936
  watch(() => [
9941
9937
  props.selectedProjectId,
@@ -9964,7 +9960,7 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9964
9960
  filterable: true,
9965
9961
  remote: true,
9966
9962
  "remote-method": fetchAvailableLocations,
9967
- loading: loading$2.value,
9963
+ loading: loading$3.value,
9968
9964
  placeholder: unref(i18n$2).baseText("folders.move.modal.folder.placeholder"),
9969
9965
  "no-data-text": unref(i18n$2).baseText("folders.move.modal.folder.noData.label"),
9970
9966
  "option-label": "name",
@@ -10063,7 +10059,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10063
10059
  const route = useRoute();
10064
10060
  const foldersStore = useFoldersStore();
10065
10061
  const projectsStore = useProjectsStore();
10066
- const loading$2 = ref(false);
10062
+ const loading$3 = ref(false);
10067
10063
  const operation = ref("");
10068
10064
  const deleteConfirmText = ref("");
10069
10065
  const selectedFolder = ref(null);
@@ -10105,7 +10101,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10105
10101
  async function onSubmit() {
10106
10102
  if (!enabled.value) return;
10107
10103
  try {
10108
- loading$2.value = true;
10104
+ loading$3.value = true;
10109
10105
  const newParentId = selectedFolder.value?.resource === "project" ? "0" : selectedFolder.value?.id ?? void 0;
10110
10106
  await foldersStore.deleteFolder(route.params.projectId, props.activeId, newParentId);
10111
10107
  let message$1 = "";
@@ -10124,7 +10120,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10124
10120
  } catch (error$2) {
10125
10121
  showError(error$2, i18n$2.baseText("folders.delete.error.message"));
10126
10122
  } finally {
10127
- loading$2.value = false;
10123
+ loading$3.value = false;
10128
10124
  }
10129
10125
  }
10130
10126
  const onFolderSelected = (payload) => {
@@ -10216,7 +10212,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10216
10212
  }, 8, ["label"])], 2)) : createCommentVNode("", true)
10217
10213
  ], 2))])]),
10218
10214
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
10219
- loading: loading$2.value,
10215
+ loading: loading$3.value,
10220
10216
  disabled: !enabled.value,
10221
10217
  label: unref(i18n$2).baseText("generic.delete"),
10222
10218
  float: "right",
@@ -10619,7 +10615,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10619
10615
  setup(__props) {
10620
10616
  const props = __props;
10621
10617
  const modalBus = createEventBus();
10622
- const loading$2 = ref(false);
10618
+ const loading$3 = ref(false);
10623
10619
  const operation = ref("");
10624
10620
  const deleteConfirmText = ref("");
10625
10621
  const selectedProject = ref(null);
@@ -10650,7 +10646,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10650
10646
  async function onSubmit() {
10651
10647
  if (!enabled.value) return;
10652
10648
  try {
10653
- loading$2.value = true;
10649
+ loading$3.value = true;
10654
10650
  const params = { id: props.data.userId };
10655
10651
  if (operation.value === "transfer" && selectedProject.value) params.transferId = selectedProject.value.id;
10656
10652
  await usersStore.deleteUser(params);
@@ -10669,7 +10665,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10669
10665
  } catch (error$2) {
10670
10666
  showError(error$2, i18n$2.baseText("settings.users.userDeletedError"));
10671
10667
  } finally {
10672
- loading$2.value = false;
10668
+ loading$3.value = false;
10673
10669
  }
10674
10670
  }
10675
10671
  return (_ctx, _cache) => {
@@ -10745,7 +10741,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10745
10741
  }, 8, ["label"])], 2)) : createCommentVNode("", true)
10746
10742
  ], 2))])]),
10747
10743
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
10748
- loading: loading$2.value,
10744
+ loading: loading$3.value,
10749
10745
  disabled: !enabled.value,
10750
10746
  label: unref(i18n$2).baseText("settings.users.delete"),
10751
10747
  float: "right",
@@ -11419,7 +11415,7 @@ var ImportCurlModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
11419
11415
  }
11420
11416
  async function onImport() {
11421
11417
  const { useImportCurlCommand } = await __vitePreload(async () => {
11422
- const { useImportCurlCommand: useImportCurlCommand$1 } = await import("./useImportCurlCommand-BW8wZKLy.js");
11418
+ const { useImportCurlCommand: useImportCurlCommand$1 } = await import("./useImportCurlCommand-obipPNWg.js");
11423
11419
  return { useImportCurlCommand: useImportCurlCommand$1 };
11424
11420
  }, __vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));
11425
11421
  const { importCurlCommand } = useImportCurlCommand({
@@ -11577,7 +11573,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11577
11573
  const emails = ref("");
11578
11574
  const role = ref(ROLE.Member);
11579
11575
  const showInviteUrls = ref(null);
11580
- const loading$2 = ref(false);
11576
+ const loading$3 = ref(false);
11581
11577
  onMounted(() => {
11582
11578
  config$1.value = [{
11583
11579
  name: "emails",
@@ -11647,7 +11643,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11647
11643
  }
11648
11644
  async function onSubmit() {
11649
11645
  try {
11650
- loading$2.value = true;
11646
+ loading$3.value = true;
11651
11647
  const emailList = emails.value.split(",").map((email) => ({
11652
11648
  email: getEmail(email),
11653
11649
  role: role.value
@@ -11683,7 +11679,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11683
11679
  } catch (error$2) {
11684
11680
  showError(error$2, i18n$2.baseText("settings.users.usersInvitedError"));
11685
11681
  }
11686
- loading$2.value = false;
11682
+ loading$3.value = false;
11687
11683
  }
11688
11684
  function showCopyInviteLinkToast(successfulUrlInvites) {
11689
11685
  showMessage({
@@ -11761,7 +11757,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11761
11757
  }, [!showInviteUrls.value ? {
11762
11758
  name: "footer",
11763
11759
  fn: withCtx(() => [createVNode(unref(N8nButton_default), {
11764
- loading: loading$2.value,
11760
+ loading: loading$3.value,
11765
11761
  disabled: !enabledButton.value,
11766
11762
  label: buttonLabel.value,
11767
11763
  float: "right",
@@ -15336,11 +15332,11 @@ var EventSelection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
15336
15332
  }
15337
15333
  });
15338
15334
  var EventSelection_vue_vue_type_style_index_0_lang_module_default = {
15339
- eventListCard: "_eventListCard_1g8cw_123",
15340
- eventList: "_eventList_1g8cw_123",
15341
- eventListItem: "_eventListItem_1g8cw_135",
15342
- eventListItemDisabled: "_eventListItemDisabled_1g8cw_143",
15343
- listItem: "_listItem_1g8cw_150"
15335
+ eventListCard: "_eventListCard_17kwo_123",
15336
+ eventList: "_eventList_17kwo_123",
15337
+ eventListItem: "_eventListItem_17kwo_135",
15338
+ eventListItemDisabled: "_eventListItemDisabled_17kwo_143",
15339
+ listItem: "_listItem_17kwo_150"
15344
15340
  };
15345
15341
  var EventSelection_default = /* @__PURE__ */ __plugin_vue_export_helper_default(EventSelection_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": EventSelection_vue_vue_type_style_index_0_lang_module_default }]]);
15346
15342
  const webhookModalDescription = [
@@ -15766,7 +15762,7 @@ var EventDestinationSettingsModal_vue_vue_type_script_setup_true_lang_default =
15766
15762
  const hasOnceBeenSaved = ref(!isNew);
15767
15763
  const isSaving = ref(false);
15768
15764
  const isDeleting = ref(false);
15769
- const loading$2 = ref(false);
15765
+ const loading$3 = ref(false);
15770
15766
  const typeSelectValue = ref("");
15771
15767
  const typeSelectPlaceholder = ref("Destination Type");
15772
15768
  const nodeParameters = ref(deepCopy(defaultMessageEventBusDestinationOptions));
@@ -15951,7 +15947,7 @@ var EventDestinationSettingsModal_vue_vue_type_script_setup_true_lang_default =
15951
15947
  "before-close": onModalClose,
15952
15948
  scrollable: true,
15953
15949
  center: true,
15954
- loading: loading$2.value,
15950
+ loading: loading$3.value,
15955
15951
  "min-width": isTypeAbstract.value ? "460px" : "70%",
15956
15952
  "max-width": isTypeAbstract.value ? "460px" : "70%",
15957
15953
  "min-height": isTypeAbstract.value ? "160px" : "650px",
@@ -16359,7 +16355,7 @@ var pushStatusPriority = {
16359
16355
  const getPushPriorityByStatus = (status) => pushStatusPriority[status] ?? 0;
16360
16356
  var createVariablesToast = (router) => {
16361
16357
  const route = {
16362
- name: VIEWS.VARIABLES,
16358
+ name: VIEWS.PROJECTS_VARIABLES,
16363
16359
  query: { incomplete: "true" }
16364
16360
  };
16365
16361
  const { href } = router.resolve(route);
@@ -16833,6 +16829,9 @@ var SourceControlPushModal_vue_vue_type_script_setup_true_lang_default = /* @__P
16833
16829
  return;
16834
16830
  }
16835
16831
  status.value = freshStatus;
16832
+ freshStatus.forEach((file) => {
16833
+ if (file.type === "credential") selectedCredentials.add(file.id);
16834
+ });
16836
16835
  } catch (error$2) {
16837
16836
  toast.showError(error$2, i18n$2.baseText("error"));
16838
16837
  close();
@@ -17569,7 +17568,7 @@ var TagsTableHeader_default = /* @__PURE__ */ __plugin_vue_export_helper_default
17569
17568
  });
17570
17569
  };
17571
17570
  }
17572
- }), [["__scopeId", "data-v-210ea652"]]);
17571
+ }), [["__scopeId", "data-v-02364ed2"]]);
17573
17572
  var _hoisted_1$14 = { key: 1 };
17574
17573
  var INPUT_TRANSITION_TIMEOUT = 350;
17575
17574
  var DELETE_TRANSITION_TIMEOUT = 100;
@@ -17797,7 +17796,7 @@ var TagsTable_vue_vue_type_style_index_0_lang_module_default = {
17797
17796
  main,
17798
17797
  hidden
17799
17798
  };
17800
- var TagsTable_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TagsTable_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TagsTable_vue_vue_type_style_index_0_lang_module_default }], ["__scopeId", "data-v-697d105c"]]);
17799
+ var TagsTable_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TagsTable_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TagsTable_vue_vue_type_style_index_0_lang_module_default }], ["__scopeId", "data-v-17987132"]]);
17801
17800
  var TagsView_default = /* @__PURE__ */ defineComponent({
17802
17801
  name: "TagsView",
17803
17802
  __name: "TagsView",
@@ -17977,7 +17976,7 @@ var NoTagsView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
17977
17976
  }
17978
17977
  });
17979
17978
  var NoTagsView_vue_vue_type_style_index_0_lang_module_default = { container: "_container_1hbqb_123" };
17980
- var NoTagsView_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NoTagsView_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NoTagsView_vue_vue_type_style_index_0_lang_module_default }], ["__scopeId", "data-v-cc10eaa1"]]);
17979
+ var NoTagsView_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NoTagsView_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NoTagsView_vue_vue_type_style_index_0_lang_module_default }], ["__scopeId", "data-v-f3a701a0"]]);
17981
17980
  var TagsManager_default = /* @__PURE__ */ defineComponent({
17982
17981
  __name: "TagsManager",
17983
17982
  props: {
@@ -18378,19 +18377,19 @@ var VersionCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
18378
18377
  }
18379
18378
  });
18380
18379
  const card = "_card_p0mal_123";
18381
- const header$5 = "_header_p0mal_135";
18380
+ const header$6 = "_header_p0mal_135";
18382
18381
  const name = "_name_p0mal_150";
18383
18382
  const divider = "_divider_p0mal_157";
18384
18383
  const description$3 = "_description_p0mal_163";
18385
- const nodes$2 = "_nodes_p0mal_177";
18384
+ const nodes$3 = "_nodes_p0mal_177";
18386
18385
  var VersionCard_vue_vue_type_style_index_0_lang_module_default = {
18387
18386
  card,
18388
- header: header$5,
18387
+ header: header$6,
18389
18388
  name,
18390
18389
  divider,
18391
18390
  description: description$3,
18392
18391
  "release-date": "_release-date_p0mal_170",
18393
- nodes: nodes$2
18392
+ nodes: nodes$3
18394
18393
  };
18395
18394
  var VersionCard_default = /* @__PURE__ */ __plugin_vue_export_helper_default(VersionCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": VersionCard_vue_vue_type_style_index_0_lang_module_default }]]);
18396
18395
  var _hoisted_1$11 = { key: 0 };
@@ -19806,7 +19805,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19806
19805
  const route = useRoute();
19807
19806
  const workflowSaving = useWorkflowSaving({ router });
19808
19807
  const workflow = ref(data.id === "__EMPTY__" ? workflowsStore.workflow : workflowsStore.workflowsById[data.id]);
19809
- const loading$2 = ref(true);
19808
+ const loading$3 = ref(true);
19810
19809
  const isDirty = ref(false);
19811
19810
  const modalBus = createEventBus();
19812
19811
  const sharedWithProjects = ref([...workflow.value.sharedWithProjects ?? []]);
@@ -19853,8 +19852,8 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19853
19852
  });
19854
19853
  };
19855
19854
  const onSave = async () => {
19856
- if (loading$2.value) return;
19857
- loading$2.value = true;
19855
+ if (loading$3.value) return;
19856
+ loading$3.value = true;
19858
19857
  const saveWorkflowPromise = async () => {
19859
19858
  if (workflow.value.id === "__EMPTY__") {
19860
19859
  const parentFolderId = route.query.folderId;
@@ -19875,7 +19874,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19875
19874
  toast.showError(error$2, i18n$2.baseText("workflows.shareModal.onSave.error.title"));
19876
19875
  } finally {
19877
19876
  modalBus.emit("close");
19878
- loading$2.value = false;
19877
+ loading$3.value = false;
19879
19878
  }
19880
19879
  };
19881
19880
  const onCloseModal = async () => {
@@ -19897,7 +19896,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19897
19896
  if (workflow.value.id !== "__EMPTY__") await workflowsStore.fetchWorkflow(workflow.value.id);
19898
19897
  if (isHomeTeamProject.value && workflow.value.homeProject) teamProject.value = await projectsStore.fetchProject(workflow.value.homeProject.id);
19899
19898
  }
19900
- loading$2.value = false;
19899
+ loading$3.value = false;
19901
19900
  };
19902
19901
  onMounted(async () => {
19903
19902
  await initialize();
@@ -20013,7 +20012,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
20013
20012
  _: 1
20014
20013
  })) : withDirectives((openBlock(), createBlock(unref(N8nButton_default), {
20015
20014
  key: 1,
20016
- loading: loading$2.value,
20015
+ loading: loading$3.value,
20017
20016
  disabled: !isDirty.value,
20018
20017
  "data-test-id": "workflow-sharing-modal-save-button",
20019
20018
  onClick: onSave
@@ -20041,162 +20040,11 @@ var WorkflowShareModal_ee_vue_vue_type_style_index_0_lang_module_default = {
20041
20040
  roleSelectRemoveOption: "_roleSelectRemoveOption_1fvpr_155"
20042
20041
  };
20043
20042
  var WorkflowShareModal_ee_default = /* @__PURE__ */ __plugin_vue_export_helper_default(WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": WorkflowShareModal_ee_vue_vue_type_style_index_0_lang_module_default }]]);
20044
- let NodeDiffStatus = /* @__PURE__ */ function(NodeDiffStatus$1) {
20045
- NodeDiffStatus$1["Eq"] = "equal";
20046
- NodeDiffStatus$1["Modified"] = "modified";
20047
- NodeDiffStatus$1["Added"] = "added";
20048
- NodeDiffStatus$1["Deleted"] = "deleted";
20049
- return NodeDiffStatus$1;
20050
- }({});
20051
- function compareNodes(base, target) {
20052
- const propsToCompare = [
20053
- "name",
20054
- "type",
20055
- "typeVersion",
20056
- "webhookId",
20057
- "credentials",
20058
- "parameters"
20059
- ];
20060
- return isEqual_default(pick_default(base, propsToCompare), pick_default(target, propsToCompare));
20061
- }
20062
- function compareWorkflowsNodes(base, target, nodesEqual = compareNodes) {
20063
- const baseNodes = base.reduce((acc, node) => {
20064
- acc.set(node.id, node);
20065
- return acc;
20066
- }, /* @__PURE__ */ new Map());
20067
- const targetNodes = target.reduce((acc, node) => {
20068
- acc.set(node.id, node);
20069
- return acc;
20070
- }, /* @__PURE__ */ new Map());
20071
- const diff = /* @__PURE__ */ new Map();
20072
- for (const [id, node] of baseNodes.entries()) if (!targetNodes.has(id)) diff.set(id, {
20073
- status: NodeDiffStatus.Deleted,
20074
- node
20075
- });
20076
- else if (!nodesEqual(baseNodes.get(id), targetNodes.get(id))) diff.set(id, {
20077
- status: NodeDiffStatus.Modified,
20078
- node
20079
- });
20080
- else diff.set(id, {
20081
- status: NodeDiffStatus.Eq,
20082
- node
20083
- });
20084
- for (const [id, node] of targetNodes.entries()) if (!baseNodes.has(id)) diff.set(id, {
20085
- status: NodeDiffStatus.Added,
20086
- node
20087
- });
20088
- return diff;
20089
- }
20090
- function mapConnections(connections) {
20091
- return connections.reduce((acc, connection) => {
20092
- acc.set.add(connection.id);
20093
- acc.map.set(connection.id, connection);
20094
- return acc;
20095
- }, {
20096
- set: /* @__PURE__ */ new Set(),
20097
- map: /* @__PURE__ */ new Map()
20098
- });
20099
- }
20100
- function createWorkflowRefs(workflow, createWorkflowObject) {
20101
- const workflowRef = computed(() => toValue(workflow));
20102
- const workflowNodes = ref([]);
20103
- const workflowConnections = ref({});
20104
- const workflowObjectRef = shallowRef(createWorkflowObject([], {}));
20105
- watchEffect(() => {
20106
- const workflowValue = workflowRef.value;
20107
- if (workflowValue) {
20108
- workflowObjectRef.value = createWorkflowObject(workflowValue.nodes, workflowValue.connections);
20109
- workflowNodes.value = workflowValue.nodes;
20110
- workflowConnections.value = workflowValue.connections;
20111
- }
20112
- });
20113
- return {
20114
- workflowRef,
20115
- workflowNodes,
20116
- workflowConnections,
20117
- workflowObjectRef
20118
- };
20119
- }
20120
- function createWorkflowDiff(workflowRef, workflowNodes, workflowConnections, workflowObjectRef) {
20121
- return computed(() => {
20122
- if (!workflowRef.value) return {
20123
- workflow: void 0,
20124
- nodes: [],
20125
- connections: []
20126
- };
20127
- const { nodes: nodes$3, connections } = useCanvasMapping({
20128
- nodes: workflowNodes,
20129
- connections: workflowConnections,
20130
- workflowObject: workflowObjectRef
20131
- });
20132
- return {
20133
- workflow: workflowRef,
20134
- nodes: nodes$3.value.map((node) => {
20135
- node.draggable = false;
20136
- node.selectable = false;
20137
- node.focusable = false;
20138
- return node;
20139
- }),
20140
- connections: connections.value.map((connection) => {
20141
- connection.selectable = false;
20142
- connection.focusable = false;
20143
- connection.label = "";
20144
- return connection;
20145
- })
20146
- };
20147
- });
20148
- }
20149
- const useWorkflowDiff = (sourceWorkflow, targetWorkflow) => {
20150
- const workflowsStore = useWorkflowsStore();
20151
- const nodeTypesStore = useNodeTypesStore();
20152
- const sourceRefs = createWorkflowRefs(sourceWorkflow, workflowsStore.createWorkflowObject);
20153
- const targetRefs = createWorkflowRefs(targetWorkflow, workflowsStore.createWorkflowObject);
20154
- const source = createWorkflowDiff(sourceRefs.workflowRef, sourceRefs.workflowNodes, sourceRefs.workflowConnections, sourceRefs.workflowObjectRef);
20155
- const target = createWorkflowDiff(targetRefs.workflowRef, targetRefs.workflowNodes, targetRefs.workflowConnections, targetRefs.workflowObjectRef);
20156
- const nodesDiff = computed(() => {
20157
- const sourceNodes = source.value?.workflow?.value?.nodes ?? [];
20158
- const targetNodes = target.value?.workflow?.value?.nodes ?? [];
20159
- if (sourceNodes.length === 0 && targetNodes.length === 0) return /* @__PURE__ */ new Map();
20160
- return compareWorkflowsNodes(sourceNodes, targetNodes);
20161
- });
20162
- function formatConnectionDiff(id, status, collection, accumulator) {
20163
- const connection = collection.get(id);
20164
- if (!connection) return;
20165
- const sourceNode = nodesDiff.value.get(connection.source)?.node;
20166
- const targetNode = nodesDiff.value.get(connection.target)?.node;
20167
- accumulator.set(id, {
20168
- status,
20169
- connection: {
20170
- id,
20171
- source: sourceNode,
20172
- target: targetNode,
20173
- sourceType: sourceNode ? nodeTypesStore.getNodeType(sourceNode.type, sourceNode.typeVersion) : null,
20174
- targetType: targetNode ? nodeTypesStore.getNodeType(targetNode.type, targetNode.typeVersion) : null
20175
- }
20176
- });
20177
- }
20178
- return {
20179
- source,
20180
- target,
20181
- nodesDiff,
20182
- connectionsDiff: computed(() => {
20183
- const sourceConnections = mapConnections(source.value?.connections ?? []);
20184
- const targetConnections = mapConnections(target.value?.connections ?? []);
20185
- if (sourceConnections.set.size === 0 && targetConnections.set.size === 0) return /* @__PURE__ */ new Map();
20186
- const added$1 = targetConnections.set.difference(sourceConnections.set);
20187
- const removed = sourceConnections.set.difference(targetConnections.set);
20188
- const acc = /* @__PURE__ */ new Map();
20189
- for (const id of added$1.values()) formatConnectionDiff(id, NodeDiffStatus.Added, targetConnections.map, acc);
20190
- for (const id of removed.values()) formatConnectionDiff(id, NodeDiffStatus.Deleted, sourceConnections.map, acc);
20191
- return acc;
20192
- })
20193
- };
20194
- };
20195
20043
  var DiffBadge_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20196
20044
  __name: "DiffBadge",
20197
20045
  props: { type: {} },
20198
20046
  setup(__props) {
20199
- useCssVars((_ctx) => ({ "7d406fae": backgroundColor.value }));
20047
+ useCssVars((_ctx) => ({ "2f23a409": backgroundColor.value }));
20200
20048
  const props = __props;
20201
20049
  const label$1 = computed(() => {
20202
20050
  switch (props.type) {
@@ -24706,7 +24554,7 @@ var NodeDiff_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
24706
24554
  };
24707
24555
  }
24708
24556
  });
24709
- var NodeDiff_vue_vue_type_style_index_0_lang_module_default = { codeDiff: "_codeDiff_it86q_124" };
24557
+ var NodeDiff_vue_vue_type_style_index_0_lang_module_default = { codeDiff: "_codeDiff_itzsi_124" };
24710
24558
  var NodeDiff_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeDiff_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NodeDiff_vue_vue_type_style_index_0_lang_module_default }]]);
24711
24559
  var [useProvideViewportSync, useInject] = createInjectionState(() => {
24712
24560
  const onViewportChange = createEventHook();
@@ -24824,6 +24672,111 @@ var SyncedWorkflowCanvas_default = /* @__PURE__ */ defineComponent({
24824
24672
  };
24825
24673
  }
24826
24674
  });
24675
+ function mapConnections(connections) {
24676
+ return connections.reduce((acc, connection) => {
24677
+ acc.set.add(connection.id);
24678
+ acc.map.set(connection.id, connection);
24679
+ return acc;
24680
+ }, {
24681
+ set: /* @__PURE__ */ new Set(),
24682
+ map: /* @__PURE__ */ new Map()
24683
+ });
24684
+ }
24685
+ function createWorkflowRefs(workflow, createWorkflowObject) {
24686
+ const workflowRef = computed(() => toValue(workflow));
24687
+ const workflowNodes = ref([]);
24688
+ const workflowConnections = ref({});
24689
+ const workflowObjectRef = shallowRef(createWorkflowObject([], {}));
24690
+ watchEffect(() => {
24691
+ const workflowValue = workflowRef.value;
24692
+ if (workflowValue) {
24693
+ workflowObjectRef.value = createWorkflowObject(workflowValue.nodes, workflowValue.connections);
24694
+ workflowNodes.value = workflowValue.nodes;
24695
+ workflowConnections.value = workflowValue.connections;
24696
+ }
24697
+ });
24698
+ return {
24699
+ workflowRef,
24700
+ workflowNodes,
24701
+ workflowConnections,
24702
+ workflowObjectRef
24703
+ };
24704
+ }
24705
+ function createWorkflowDiff(workflowRef, workflowNodes, workflowConnections, workflowObjectRef) {
24706
+ return computed(() => {
24707
+ if (!workflowRef.value) return {
24708
+ workflow: void 0,
24709
+ nodes: [],
24710
+ connections: []
24711
+ };
24712
+ const { nodes: nodes$4, connections } = useCanvasMapping({
24713
+ nodes: workflowNodes,
24714
+ connections: workflowConnections,
24715
+ workflowObject: workflowObjectRef
24716
+ });
24717
+ return {
24718
+ workflow: workflowRef,
24719
+ nodes: nodes$4.value.map((node) => {
24720
+ node.draggable = false;
24721
+ node.selectable = false;
24722
+ node.focusable = false;
24723
+ return node;
24724
+ }),
24725
+ connections: connections.value.map((connection) => {
24726
+ connection.selectable = false;
24727
+ connection.focusable = false;
24728
+ connection.label = "";
24729
+ return connection;
24730
+ })
24731
+ };
24732
+ });
24733
+ }
24734
+ const useWorkflowDiff = (sourceWorkflow, targetWorkflow) => {
24735
+ const workflowsStore = useWorkflowsStore();
24736
+ const nodeTypesStore = useNodeTypesStore();
24737
+ const sourceRefs = createWorkflowRefs(sourceWorkflow, workflowsStore.createWorkflowObject);
24738
+ const targetRefs = createWorkflowRefs(targetWorkflow, workflowsStore.createWorkflowObject);
24739
+ const source = createWorkflowDiff(sourceRefs.workflowRef, sourceRefs.workflowNodes, sourceRefs.workflowConnections, sourceRefs.workflowObjectRef);
24740
+ const target = createWorkflowDiff(targetRefs.workflowRef, targetRefs.workflowNodes, targetRefs.workflowConnections, targetRefs.workflowObjectRef);
24741
+ const nodesDiff = computed(() => {
24742
+ const sourceNodes = source.value?.workflow?.value?.nodes ?? [];
24743
+ const targetNodes = target.value?.workflow?.value?.nodes ?? [];
24744
+ if (sourceNodes.length === 0 && targetNodes.length === 0) return /* @__PURE__ */ new Map();
24745
+ return compareWorkflowsNodes(sourceNodes, targetNodes);
24746
+ });
24747
+ function formatConnectionDiff(id, status, collection, accumulator) {
24748
+ const connection = collection.get(id);
24749
+ if (!connection) return;
24750
+ const sourceNode = nodesDiff.value.get(connection.source)?.node;
24751
+ const targetNode = nodesDiff.value.get(connection.target)?.node;
24752
+ accumulator.set(id, {
24753
+ status,
24754
+ connection: {
24755
+ id,
24756
+ source: sourceNode,
24757
+ target: targetNode,
24758
+ sourceType: sourceNode ? nodeTypesStore.getNodeType(sourceNode.type, sourceNode.typeVersion) : null,
24759
+ targetType: targetNode ? nodeTypesStore.getNodeType(targetNode.type, targetNode.typeVersion) : null
24760
+ }
24761
+ });
24762
+ }
24763
+ return {
24764
+ source,
24765
+ target,
24766
+ nodesDiff,
24767
+ connectionsDiff: computed(() => {
24768
+ const sourceConnections = mapConnections(source.value?.connections ?? []);
24769
+ const targetConnections = mapConnections(target.value?.connections ?? []);
24770
+ if (sourceConnections.set.size === 0 && targetConnections.set.size === 0) return /* @__PURE__ */ new Map();
24771
+ const added$1 = targetConnections.set.difference(sourceConnections.set);
24772
+ const removed = sourceConnections.set.difference(targetConnections.set);
24773
+ const acc = /* @__PURE__ */ new Map();
24774
+ for (const id of added$1.values()) formatConnectionDiff(id, NodeDiffStatus.Added, targetConnections.map, acc);
24775
+ for (const id of removed.values()) formatConnectionDiff(id, NodeDiffStatus.Deleted, sourceConnections.map, acc);
24776
+ return acc;
24777
+ })
24778
+ };
24779
+ };
24827
24780
  function removeWorkflowExecutionData(workflow) {
24828
24781
  if (!workflow) return workflow;
24829
24782
  const { pinData,...cleanWorkflow } = workflow;
@@ -24885,7 +24838,7 @@ var HighlightedEdge_default = /* @__PURE__ */ defineComponent({
24885
24838
  key: segment[0],
24886
24839
  style: {
24887
24840
  strokeWidth: 15,
24888
- stroke: "var(--edge-highlight-color)"
24841
+ stroke: "var(--edge--color--highlight)"
24889
24842
  },
24890
24843
  path: segment[0],
24891
24844
  "interaction-width": 0
@@ -24908,7 +24861,7 @@ var WorkflowDiffAside_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
24908
24861
  props: { node: {} },
24909
24862
  emits: ["close"],
24910
24863
  setup(__props, { emit: __emit }) {
24911
- useCssVars((_ctx) => ({ "389f8962": panelWidth.value }));
24864
+ useCssVars((_ctx) => ({ "3eb5ea38": panelWidth.value }));
24912
24865
  const props = __props;
24913
24866
  const nodeTypesStore = useNodeTypesStore();
24914
24867
  const nodeType = computed(() => nodeTypesStore.getNodeType(props.node.type, props.node.typeVersion));
@@ -25505,33 +25458,33 @@ var WorkflowDiffModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
25505
25458
  };
25506
25459
  }
25507
25460
  });
25508
- const workflowDiffModal = "_workflowDiffModal_1h4fi_124";
25509
- const sourceBadge = "_sourceBadge_1h4fi_138";
25510
- const tabs = "_tabs_1h4fi_154";
25511
- const popper = "_popper_1h4fi_165";
25512
- const changes = "_changes_1h4fi_172";
25513
- const clickableChange = "_clickableChange_1h4fi_181";
25514
- const changesNested = "_changesNested_1h4fi_185";
25515
- const clickableChangeActive = "_clickableChangeActive_1h4fi_206";
25516
- const nodeName = "_nodeName_1h4fi_210";
25517
- const separator = "_separator_1h4fi_218";
25518
- const deleted = "_deleted_1h4fi_227";
25519
- const added = "_added_1h4fi_228";
25520
- const modified = "_modified_1h4fi_229";
25521
- const equal = "_equal_1h4fi_295";
25522
- const circleBadge = "_circleBadge_1h4fi_344";
25523
- const dropdownContent = "_dropdownContent_1h4fi_358";
25524
- const noNumberDiff = "_noNumberDiff_1h4fi_370";
25525
- const workflowDiffContent = "_workflowDiffContent_1h4fi_379";
25526
- const workflowDiff = "_workflowDiff_1h4fi_124";
25527
- const workflowDiffPanel = "_workflowDiffPanel_1h4fi_391";
25528
- const emptyWorkflow = "_emptyWorkflow_1h4fi_397";
25529
- const header$3 = "_header_1h4fi_405";
25530
- const navigationButton = "_navigationButton_1h4fi_410";
25531
- const backButton = "_backButton_1h4fi_414";
25532
- const headerLeft = "_headerLeft_1h4fi_418";
25533
- const headerRight = "_headerRight_1h4fi_419";
25534
- const emptyState = "_emptyState_1h4fi_424";
25461
+ const workflowDiffModal = "_workflowDiffModal_1tkg3_124";
25462
+ const sourceBadge = "_sourceBadge_1tkg3_138";
25463
+ const tabs = "_tabs_1tkg3_154";
25464
+ const popper = "_popper_1tkg3_165";
25465
+ const changes = "_changes_1tkg3_172";
25466
+ const clickableChange = "_clickableChange_1tkg3_181";
25467
+ const changesNested = "_changesNested_1tkg3_185";
25468
+ const clickableChangeActive = "_clickableChangeActive_1tkg3_206";
25469
+ const nodeName = "_nodeName_1tkg3_210";
25470
+ const separator = "_separator_1tkg3_218";
25471
+ const deleted = "_deleted_1tkg3_227";
25472
+ const added = "_added_1tkg3_228";
25473
+ const modified = "_modified_1tkg3_229";
25474
+ const equal = "_equal_1tkg3_295";
25475
+ const circleBadge = "_circleBadge_1tkg3_344";
25476
+ const dropdownContent = "_dropdownContent_1tkg3_358";
25477
+ const noNumberDiff = "_noNumberDiff_1tkg3_370";
25478
+ const workflowDiffContent = "_workflowDiffContent_1tkg3_379";
25479
+ const workflowDiff = "_workflowDiff_1tkg3_124";
25480
+ const workflowDiffPanel = "_workflowDiffPanel_1tkg3_391";
25481
+ const emptyWorkflow = "_emptyWorkflow_1tkg3_397";
25482
+ const header$4 = "_header_1tkg3_405";
25483
+ const navigationButton = "_navigationButton_1tkg3_410";
25484
+ const backButton = "_backButton_1tkg3_414";
25485
+ const headerLeft = "_headerLeft_1tkg3_418";
25486
+ const headerRight = "_headerRight_1tkg3_419";
25487
+ const emptyState = "_emptyState_1tkg3_424";
25535
25488
  var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25536
25489
  workflowDiffModal,
25537
25490
  sourceBadge,
@@ -25547,9 +25500,9 @@ var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25547
25500
  added,
25548
25501
  modified,
25549
25502
  equal,
25550
- "edge-deleted": "_edge-deleted_1h4fi_330",
25551
- "edge-added": "_edge-added_1h4fi_335",
25552
- "edge-equal": "_edge-equal_1h4fi_340",
25503
+ "edge-deleted": "_edge-deleted_1tkg3_330",
25504
+ "edge-added": "_edge-added_1tkg3_335",
25505
+ "edge-equal": "_edge-equal_1tkg3_340",
25553
25506
  circleBadge,
25554
25507
  dropdownContent,
25555
25508
  noNumberDiff,
@@ -25557,7 +25510,7 @@ var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25557
25510
  workflowDiff,
25558
25511
  workflowDiffPanel,
25559
25512
  emptyWorkflow,
25560
- header: header$3,
25513
+ header: header$4,
25561
25514
  navigationButton,
25562
25515
  backButton,
25563
25516
  headerLeft,
@@ -25687,7 +25640,7 @@ var DynamicModalLoader_default = /* @__PURE__ */ defineComponent({
25687
25640
  };
25688
25641
  }
25689
25642
  });
25690
- var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
25643
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ defineComponent({
25691
25644
  __name: "TemplateCard",
25692
25645
  props: {
25693
25646
  template: {},
@@ -25748,7 +25701,7 @@ var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */
25748
25701
  };
25749
25702
  }
25750
25703
  });
25751
- var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
25704
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$2 = {
25752
25705
  nodes: "_nodes_176ta_123",
25753
25706
  nodeIcon: "_nodeIcon_176ta_128",
25754
25707
  suggestion: "_suggestion_176ta_139",
@@ -25756,7 +25709,7 @@ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
25756
25709
  user: "_user_176ta_152",
25757
25710
  avatar: "_avatar_176ta_158"
25758
25711
  };
25759
- var TemplateCard_default$1 = /* @__PURE__ */ __plugin_vue_export_helper_default(TemplateCard_vue_vue_type_script_setup_true_lang_default$1, [["__cssModules", { "$style": TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 }]]);
25712
+ var TemplateCard_default$2 = /* @__PURE__ */ __plugin_vue_export_helper_default(TemplateCard_vue_vue_type_script_setup_true_lang_default$2, [["__cssModules", { "$style": TemplateCard_vue_vue_type_style_index_0_lang_module_default$2 }]]);
25760
25713
  var _hoisted_1$4 = ["src"];
25761
25714
  var YoutubeCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
25762
25715
  __name: "YoutubeCard",
@@ -25806,7 +25759,7 @@ var YoutubeCard_vue_vue_type_style_index_0_lang_module_default = {
25806
25759
  video: "_video_10cyk_129"
25807
25760
  };
25808
25761
  var YoutubeCard_default = /* @__PURE__ */ __plugin_vue_export_helper_default(YoutubeCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": YoutubeCard_vue_vue_type_style_index_0_lang_module_default }]]);
25809
- var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
25762
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ defineComponent({
25810
25763
  __name: "NodeRecommendationModal",
25811
25764
  props: {
25812
25765
  modalName: {},
@@ -25825,7 +25778,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25825
25778
  const starterTemplates = ref([]);
25826
25779
  const popularTemplates = ref([]);
25827
25780
  const isLoadingTemplates = ref(false);
25828
- const nodes$3 = computed(() => userSelectedNodes.map((nodeName$2) => {
25781
+ const nodes$4 = computed(() => userSelectedNodes.map((nodeName$2) => {
25829
25782
  return {
25830
25783
  value: nodeName$2,
25831
25784
  label: nodeTypesStore.getNodeType(nodeName$2)?.displayName ?? ""
@@ -25853,7 +25806,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25853
25806
  }
25854
25807
  watchEffect(async () => {
25855
25808
  if (!selectedNode.value) return;
25856
- const nodeDisplayName = nodes$3.value.find((n) => n.value === selectedNode.value)?.label;
25809
+ const nodeDisplayName = nodes$4.value.find((n) => n.value === selectedNode.value)?.label;
25857
25810
  if (nodeDisplayName) trackModalTabView(nodeDisplayName);
25858
25811
  isLoadingTemplates.value = true;
25859
25812
  try {
@@ -25880,7 +25833,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25880
25833
  header: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.header) }, [createVNode(unref(N8nRadioButtons_default), {
25881
25834
  modelValue: selectedNode.value,
25882
25835
  "onUpdate:modelValue": [_cache[0] || (_cache[0] = ($event) => selectedNode.value = $event), onSelectedNodeChange],
25883
- options: nodes$3.value,
25836
+ options: nodes$4.value,
25884
25837
  size: "medium"
25885
25838
  }, {
25886
25839
  option: withCtx((option) => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.tab) }, [createVNode(NodeIcon_default, {
@@ -25913,7 +25866,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25913
25866
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templateRecoV2.loadingTemplates")), 1)]),
25914
25867
  _: 1
25915
25868
  })], 2)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(starterTemplates.value, (template) => {
25916
- return openBlock(), createBlock(TemplateCard_default$1, {
25869
+ return openBlock(), createBlock(TemplateCard_default$2, {
25917
25870
  key: template.id,
25918
25871
  template,
25919
25872
  "current-node-name": selectedNode.value
@@ -25940,7 +25893,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25940
25893
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templateRecoV2.loadingTemplates")), 1)]),
25941
25894
  _: 1
25942
25895
  })], 2)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(popularTemplates.value, (template) => {
25943
- return openBlock(), createBlock(TemplateCard_default$1, {
25896
+ return openBlock(), createBlock(TemplateCard_default$2, {
25944
25897
  key: template.id,
25945
25898
  template,
25946
25899
  "current-node-name": selectedNode.value
@@ -25973,7 +25926,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25973
25926
  };
25974
25927
  }
25975
25928
  });
25976
- var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
25929
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$2 = {
25977
25930
  header: "_header_1v7vh_123",
25978
25931
  tab: "_tab_1v7vh_128",
25979
25932
  suggestions: "_suggestions_1v7vh_132",
@@ -25981,8 +25934,8 @@ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
25981
25934
  videos: "_videos_1v7vh_147",
25982
25935
  loading: "_loading_1v7vh_154"
25983
25936
  };
25984
- var NodeRecommendationModal_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1, [["__cssModules", { "$style": NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 }]]);
25985
- var TemplateCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
25937
+ var NodeRecommendationModal_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$2, [["__cssModules", { "$style": NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$2 }]]);
25938
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
25986
25939
  __name: "TemplateCard",
25987
25940
  props: { template: {} },
25988
25941
  setup(__props) {
@@ -26054,7 +26007,7 @@ var TemplateCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
26054
26007
  };
26055
26008
  }
26056
26009
  });
26057
- var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26010
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
26058
26011
  nodes: "_nodes_y9wwt_123",
26059
26012
  nodeIcon: "_nodeIcon_y9wwt_128",
26060
26013
  remainingNodes: "_remainingNodes_y9wwt_137",
@@ -26062,9 +26015,9 @@ var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26062
26015
  suggestion: "_suggestion_y9wwt_152",
26063
26016
  content: "_content_y9wwt_167"
26064
26017
  };
26065
- var TemplateCard_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TemplateCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TemplateCard_vue_vue_type_style_index_0_lang_module_default }]]);
26018
+ var TemplateCard_default$1 = /* @__PURE__ */ __plugin_vue_export_helper_default(TemplateCard_vue_vue_type_script_setup_true_lang_default$1, [["__cssModules", { "$style": TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 }]]);
26066
26019
  var _hoisted_1$3 = { key: 1 };
26067
- var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26020
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
26068
26021
  __name: "NodeRecommendationModal",
26069
26022
  setup(__props) {
26070
26023
  const uiStore = useUIStore();
@@ -26115,7 +26068,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__
26115
26068
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("experiments.personalizedTemplatesV3.loadingTemplates")), 1)]),
26116
26069
  _: 1
26117
26070
  })], 2)) : (openBlock(), createElementBlock("div", _hoisted_1$3, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.templates) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(templates$1.value, (template) => {
26118
- return openBlock(), createBlock(TemplateCard_default, {
26071
+ return openBlock(), createBlock(TemplateCard_default$1, {
26119
26072
  key: template.id,
26120
26073
  template
26121
26074
  }, null, 8, ["template"]);
@@ -26148,7 +26101,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__
26148
26101
  };
26149
26102
  }
26150
26103
  });
26151
- var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26104
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
26152
26105
  modal: "_modal_2tsoq_123",
26153
26106
  header: "_header_2tsoq_127",
26154
26107
  templates: "_templates_2tsoq_132",
@@ -26158,7 +26111,143 @@ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26158
26111
  footerText: "_footerText_2tsoq_165",
26159
26112
  footerIcon: "_footerIcon_2tsoq_170"
26160
26113
  };
26161
- var NodeRecommendationModal_default$1 = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default }]]);
26114
+ var NodeRecommendationModal_default$1 = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1, [["__cssModules", { "$style": NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 }]]);
26115
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26116
+ __name: "TemplateCard",
26117
+ props: { template: {} },
26118
+ setup(__props) {
26119
+ const props = __props;
26120
+ const nodeTypesStore = useNodeTypesStore();
26121
+ const { getTemplateRoute, trackTemplateTileClick } = useTemplatesDataQualityStore();
26122
+ const router = useRouter();
26123
+ const uiStore = useUIStore();
26124
+ const locale = useI18n();
26125
+ const templateNodes = computed(() => {
26126
+ if (!props.template?.nodes) return [];
26127
+ const uniqueNodeTypes = new Set(props.template.nodes.map((node) => node.name));
26128
+ return Array.from(uniqueNodeTypes).slice(0, 2).map((nodeType) => nodeTypesStore.getNodeType(nodeType)).filter(Boolean);
26129
+ });
26130
+ const handleUseTemplate = async () => {
26131
+ trackTemplateTileClick(props.template.id);
26132
+ await router.push(getTemplateRoute(props.template.id));
26133
+ uiStore.closeModal(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY);
26134
+ };
26135
+ return (_ctx, _cache) => {
26136
+ return openBlock(), createBlock(unref(N8nCard_default), {
26137
+ class: normalizeClass(_ctx.$style.suggestion),
26138
+ onClick: handleUseTemplate
26139
+ }, {
26140
+ default: withCtx(() => [createBaseVNode("div", null, [templateNodes.value.length > 0 ? (openBlock(), createElementBlock("div", {
26141
+ key: 0,
26142
+ class: normalizeClass([_ctx.$style.nodes, "mb-s"])
26143
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(templateNodes.value, (nodeType) => {
26144
+ return openBlock(), createElementBlock("div", {
26145
+ key: nodeType.name,
26146
+ class: normalizeClass(_ctx.$style.nodeIcon)
26147
+ }, [createVNode(NodeIcon_default, {
26148
+ size: 18,
26149
+ "stroke-width": 1.5,
26150
+ "node-type": nodeType
26151
+ }, null, 8, ["node-type"])], 2);
26152
+ }), 128))], 2)) : createCommentVNode("", true), createVNode(unref(N8nText_default), {
26153
+ size: "medium",
26154
+ bold: true
26155
+ }, {
26156
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.template.name), 1)]),
26157
+ _: 1
26158
+ })]), createBaseVNode("div", { class: normalizeClass([_ctx.$style.actions, "mt-m"]) }, [createVNode(unref(N8nButton_default), {
26159
+ label: unref(locale).baseText("workflows.templateRecoV2.useTemplate"),
26160
+ type: "secondary",
26161
+ size: "mini",
26162
+ onClick: withModifiers(handleUseTemplate, ["stop"])
26163
+ }, null, 8, ["label"])], 2)]),
26164
+ _: 1
26165
+ }, 8, ["class"]);
26166
+ };
26167
+ }
26168
+ });
26169
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26170
+ nodes: "_nodes_1mch4_123",
26171
+ nodeIcon: "_nodeIcon_1mch4_128",
26172
+ suggestion: "_suggestion_1mch4_139",
26173
+ actions: "_actions_1mch4_147"
26174
+ };
26175
+ var TemplateCard_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TemplateCard_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TemplateCard_vue_vue_type_style_index_0_lang_module_default }]]);
26176
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26177
+ __name: "NodeRecommendationModal",
26178
+ setup(__props) {
26179
+ const uiStore = useUIStore();
26180
+ const locale = useI18n();
26181
+ const templatesStore = useTemplatesDataQualityStore();
26182
+ const closeModal = () => {
26183
+ uiStore.closeModal(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY);
26184
+ };
26185
+ const templates$1 = ref([]);
26186
+ const isLoadingTemplates = ref(false);
26187
+ const nodeTypesStore = useNodeTypesStore();
26188
+ const trackTemplatesShown = (templateIds) => {
26189
+ templateIds.forEach((id, index) => {
26190
+ templatesStore.trackTemplateShown(id, index + 1);
26191
+ });
26192
+ };
26193
+ onMounted(async () => {
26194
+ isLoadingTemplates.value = true;
26195
+ try {
26196
+ await nodeTypesStore.loadNodeTypesIfNotLoaded();
26197
+ const ids = templatesStore.getRandomTemplateIds();
26198
+ const promises = ids.map(async (id) => await templatesStore.getTemplateData(id));
26199
+ templates$1.value = (await Promise.allSettled(promises)).filter((r) => r.status === "fulfilled" && r.value !== null).map((r) => r.value);
26200
+ trackTemplatesShown(ids);
26201
+ } finally {
26202
+ isLoadingTemplates.value = false;
26203
+ }
26204
+ });
26205
+ return (_ctx, _cache) => {
26206
+ return openBlock(), createBlock(Modal_default, {
26207
+ name: unref(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY),
26208
+ "min-width": "min(800px, 90vw)",
26209
+ "max-height": "90vh",
26210
+ onClose: closeModal,
26211
+ onCanceled: closeModal
26212
+ }, {
26213
+ header: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.header) }, [createVNode(unref(N8nText_default), {
26214
+ tag: "h2",
26215
+ size: "large",
26216
+ bold: true
26217
+ }, {
26218
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("experiments.templatesDataQuality.modalTitle")), 1)]),
26219
+ _: 1
26220
+ })], 2)]),
26221
+ content: withCtx(() => [isLoadingTemplates.value ? (openBlock(), createElementBlock("div", {
26222
+ key: 0,
26223
+ class: normalizeClass(_ctx.$style.loading)
26224
+ }, [createVNode(unref(N8nSpinner_default), { size: "small" }), createVNode(unref(N8nText_default), { size: "small" }, {
26225
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templatesDataQuality.loadingTemplates")), 1)]),
26226
+ _: 1
26227
+ })], 2)) : (openBlock(), createElementBlock("div", {
26228
+ key: 1,
26229
+ class: normalizeClass(_ctx.$style.suggestions)
26230
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(templates$1.value, (template) => {
26231
+ return openBlock(), createBlock(TemplateCard_default, {
26232
+ key: template.id,
26233
+ template
26234
+ }, null, 8, ["template"]);
26235
+ }), 128))], 2)), createBaseVNode("div", { class: normalizeClass(_ctx.$style.seeMore) }, [createVNode(unref(N8nLink_default), { href: unref(TEMPLATES_URLS).BASE_WEBSITE_URL }, {
26236
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templatesDataQuality.seeMoreTemplates")), 1)]),
26237
+ _: 1
26238
+ }, 8, ["href"])], 2)]),
26239
+ _: 1
26240
+ }, 8, ["name"]);
26241
+ };
26242
+ }
26243
+ });
26244
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26245
+ header: "_header_64lx3_123",
26246
+ suggestions: "_suggestions_64lx3_128",
26247
+ loading: "_loading_64lx3_135",
26248
+ seeMore: "_seeMore_64lx3_144"
26249
+ };
26250
+ var NodeRecommendationModal_default$2 = /* @__PURE__ */ __plugin_vue_export_helper_default(NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default }]]);
26162
26251
  var _hoisted_1$2 = { key: 2 };
26163
26252
  var VALUE_MAX_LENGTH = 1e3;
26164
26253
  var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -26175,7 +26264,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26175
26264
  const environmentsStore = useEnvironmentsStore();
26176
26265
  const projectsStore = useProjectsStore();
26177
26266
  const modalBus = createEventBus();
26178
- const loading$2 = ref(false);
26267
+ const loading$3 = ref(false);
26179
26268
  const validateOnBlur = ref(false);
26180
26269
  const keyValidationRules = [
26181
26270
  { name: "REQUIRED" },
@@ -26258,7 +26347,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26258
26347
  validateOnBlur.value = true;
26259
26348
  if (!isValid.value) return;
26260
26349
  try {
26261
- loading$2.value = true;
26350
+ loading$3.value = true;
26262
26351
  const variablePayload = {
26263
26352
  key: form$3.key,
26264
26353
  value: form$3.value
@@ -26273,7 +26362,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26273
26362
  } catch (error$2) {
26274
26363
  showError(error$2, i18n$2.baseText("variables.errors.save"));
26275
26364
  } finally {
26276
- loading$2.value = false;
26365
+ loading$3.value = false;
26277
26366
  }
26278
26367
  }
26279
26368
  return (_ctx, _cache) => {
@@ -26402,7 +26491,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26402
26491
  "data-test-id": "variable-modal-cancel-button",
26403
26492
  onClick: closeModal
26404
26493
  }, null, 8, ["label"]), createVNode(unref(N8nButton_default), {
26405
- loading: loading$2.value,
26494
+ loading: loading$3.value,
26406
26495
  disabled: !isValid.value,
26407
26496
  label: unref(i18n$2).baseText("variables.modal.button.save"),
26408
26497
  "data-test-id": "variable-modal-save-button",
@@ -26740,6 +26829,13 @@ var Modals_default = /* @__PURE__ */ defineComponent({
26740
26829
  }, null, 8, ["modal-name", "data"])]),
26741
26830
  _: 1
26742
26831
  }, 8, ["name"]),
26832
+ createVNode(ModalRoot_default, { name: unref(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY) }, {
26833
+ default: withCtx(({ modalName, data }) => [createVNode(NodeRecommendationModal_default$2, {
26834
+ "modal-name": modalName,
26835
+ data
26836
+ }, null, 8, ["modal-name", "data"])]),
26837
+ _: 1
26838
+ }, 8, ["name"]),
26743
26839
  createVNode(ModalRoot_default, { name: unref(PRE_BUILT_AGENTS_MODAL_KEY) }, {
26744
26840
  default: withCtx(({ modalName, data }) => [createVNode(PreBuiltAgentsModal_default, {
26745
26841
  "modal-name": modalName,
@@ -27032,7 +27128,7 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27032
27128
  const { toastBottomOffset, askAiFloatingButtonBottomOffset } = useFloatingUiOffsets();
27033
27129
  useHistoryHelper(route);
27034
27130
  useWorkflowDiffRouting();
27035
- const loading$2 = ref(true);
27131
+ const loading$3 = ref(true);
27036
27132
  const defaultLocale = computed(() => rootStore.defaultLocale);
27037
27133
  const isDemoMode = computed(() => route.name === VIEWS.DEMO);
27038
27134
  const hasContentFooter = ref(false);
@@ -27043,7 +27139,7 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27043
27139
  onMounted(async () => {
27044
27140
  setAppZIndexes();
27045
27141
  logHiringBanner();
27046
- loading$2.value = false;
27142
+ loading$3.value = false;
27047
27143
  window.addEventListener("resize", updateGridWidth);
27048
27144
  await updateGridWidth();
27049
27145
  });
@@ -27077,11 +27173,11 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27077
27173
  axios_default.defaults.headers.common["Accept-Language"] = newLocale;
27078
27174
  use(newLocale);
27079
27175
  }, { immediate: true });
27080
- useExposeCssVar("--toast-bottom-offset", toastBottomOffset);
27081
- useExposeCssVar("--ask-assistant-floating-button-bottom-offset", askAiFloatingButtonBottomOffset);
27176
+ useExposeCssVar("--toast--offset", toastBottomOffset);
27177
+ useExposeCssVar("--ask-assistant--floating-button--margin-bottom", askAiFloatingButtonBottomOffset);
27082
27178
  return (_ctx, _cache) => {
27083
27179
  const _component_RouterView = resolveComponent("RouterView");
27084
- return loading$2.value ? (openBlock(), createBlock(LoadingView_default, { key: 0 })) : (openBlock(), createElementBlock("div", {
27180
+ return loading$3.value ? (openBlock(), createBlock(LoadingView_default, { key: 0 })) : (openBlock(), createElementBlock("div", {
27085
27181
  key: 1,
27086
27182
  id: "n8n-app",
27087
27183
  class: normalizeClass({
@@ -27153,17 +27249,17 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27153
27249
  };
27154
27250
  }
27155
27251
  });
27156
- const container = "_container_1tlmi_123";
27157
- const banners = "_banners_1tlmi_139";
27158
- const content = "_content_1tlmi_144";
27159
- const contentFooter = "_contentFooter_1tlmi_152";
27160
- const contentWrapper = "_contentWrapper_1tlmi_162";
27161
- const header = "_header_1tlmi_176";
27162
- const sidebar = "_sidebar_1tlmi_183";
27163
- const modals = "_modals_1tlmi_188";
27252
+ const container = "_container_jj6dn_123";
27253
+ const banners = "_banners_jj6dn_139";
27254
+ const content = "_content_jj6dn_144";
27255
+ const contentFooter = "_contentFooter_jj6dn_152";
27256
+ const contentWrapper = "_contentWrapper_jj6dn_162";
27257
+ const header = "_header_jj6dn_176";
27258
+ const sidebar = "_sidebar_jj6dn_183";
27259
+ const modals = "_modals_jj6dn_188";
27164
27260
  var App_vue_vue_type_style_index_0_lang_module_default = {
27165
27261
  container,
27166
- "app-grid": "_app-grid_1tlmi_130",
27262
+ "app-grid": "_app-grid_jj6dn_130",
27167
27263
  banners,
27168
27264
  content,
27169
27265
  contentFooter,