n8n-editor-ui 1.118.1 → 1.119.1

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 +1980 -1980
  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-CizL_Xml.js +58 -0
  16. package/dist/assets/{CommunityNodeUpdateInfo-Bk-rYnfU.js → CommunityNodeUpdateInfo-Egv665vx.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-D8E8sLCS.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-DdOZORFr.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-BkEju_IA.css → FixedCollectionParameter-CgkIJeik.css} +19 -19
  44. package/dist/assets/{FixedCollectionParameter-C8Nz7bot.js → FixedCollectionParameter-DjdDaH5s.js} +49 -49
  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-BfXptelN.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-K1M_gOCT.css → LogsPanel-GVBE8bfm.css} +17 -17
  61. package/dist/assets/{LogsPanel-BSFP3TRR.js → LogsPanel-Uc0E6yn-.js} +35 -35
  62. package/dist/assets/LogsPanel-sLas9qHQ.js +58 -0
  63. package/dist/assets/{MainHeader-QMv9Ba5g.css → MainHeader-Dz9UViYg.css} +22 -22
  64. package/dist/assets/{MainHeader-Dwzc_Fak.js → MainHeader-M-D-hY8c.js} +53 -53
  65. package/dist/assets/{MainSidebar-BqoiqeXY.css → MainSidebar-BBUhoceu.css} +15 -15
  66. package/dist/assets/{MainSidebar-fP7bVKd-.js → MainSidebar-Bf52gQzU.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-BRIx8Ei9.js} +44 -44
  73. package/dist/assets/{NodeCreator-CE-6q5bn.js → NodeCreator-DDG2GQ-C.js} +63 -61
  74. package/dist/assets/{NodeCreator-C-oYFkbs.css → NodeCreator-JpUhf2LN.css} +63 -52
  75. package/dist/assets/{NodeDetailsView-CTnk_X5i.js → NodeDetailsView-4jVeGvDi.js} +64 -64
  76. package/dist/assets/{NodeDetailsViewV2-rAVfbsOa.css → NodeDetailsViewV2-Ckt2LIo-.css} +19 -19
  77. package/dist/assets/{NodeDetailsViewV2-REUcA-GA.js → NodeDetailsViewV2-MeaPvImX.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-gAtnSv8q.js} +35 -35
  82. package/dist/assets/{NodeView-KpAB56Z3.css → NodeView-CnbgHMAv.css} +25 -26
  83. package/dist/assets/{NodeView-BjGTiM1O.js → NodeView-jjqmiYDP.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-aGPYvt18.css → ParameterInputList-D18bFGrO.css} +265 -265
  87. package/dist/assets/{ParameterInputList-CtoyrDjR.js → ParameterInputList-kEoD9fc7.js} +175 -171
  88. package/dist/assets/{PrebuiltAgentTemplatesView-C6IbTjn9.js → PrebuiltAgentTemplatesView-Dd6IJD_W.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-ByNVqY0h.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-C7JC1VAK.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-Chjl8-hw.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-BcyB9_cH.js → SettingsUsageAndPlan-DMMd5WcZ.js} +140 -23
  128. package/dist/assets/SettingsUsageAndPlan-DcH3fsn1.css +462 -0
  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-D5WejHyJ.css → TriggerPanel-BQveVt6Q.css} +19 -19
  150. package/dist/assets/{TriggerPanel-DqHc-mXl.js → TriggerPanel-Dx9LpA4p.js} +28 -28
  151. package/dist/assets/VirtualSchema-5T21Yyqx.js +43 -0
  152. package/dist/assets/{VirtualSchema-CSh2c6Ec.css → VirtualSchema-BJ-Q30Fz.css} +51 -49
  153. package/dist/assets/{VirtualSchema-CC3sIZuJ.js → VirtualSchema-CUUzo795.js} +21 -21
  154. package/dist/assets/{VueMarkdown-70GnkI0W.js → VueMarkdown-CiR4a0gO.js} +1 -1
  155. package/dist/assets/{WorkerView-a-85mW7s.js → WorkerView-D7h4pmTk.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-CK-2WqY7.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-BnxQSw3m.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-C4u3WVDF.js → index-C25i7qsE.js} +643 -520
  195. package/dist/assets/{index-D9KM9gTZ.css → index-C8erHZ_Y.css} +492 -321
  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-B-mcFJ04.css → isEmpty-CAtRkxE7.css} +101 -101
  199. package/dist/assets/{isEmpty-CRyMT0C3.js → isEmpty-DrZRN4lR.js} +144 -120
  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-DHz0Nc1Y.js} +1988 -1988
  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-D4zIcC5W.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-CqdsN2GH.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-DWlYBxgN.js} +2385 -2379
  236. package/dist/assets/{useCanvasOperations-BxV5Dc21.js → useCanvasOperations-CFsSFVcO.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-_c6cO-zw.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-DlmwtVDN.js} +4 -4
  250. package/dist/assets/{useLogsTreeExpand-DbXAJb89.js → useLogsTreeExpand-gKLCILZL.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-XZibrqm8.js} +16 -15
  257. package/dist/assets/{useRecentResources-D_WnXWIZ.js → useRecentResources-FhIOba0w.js} +9 -9
  258. package/dist/assets/{useRunWorkflow-D5rKvgfC.js → useRunWorkflow-_-_hUnHE.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-kEoD9fc7.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-BfXptelN.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-_-_hUnHE.js";
41
+ import "./usePinnedData-Csij2qN3.js";
42
+ import { _ as useCalloutHelpers, u as shouldIgnoreCanvasShortcut } from "./nodeCreator.store-DHz0Nc1Y.js";
43
+ import "./nodeIcon-ry_JIpAT.js";
44
+ import { t as useClipboard } from "./useClipboard-fRnZpGbX.js";
45
+ import { a as useLogsStore } from "./useCanvasOperations-CFsSFVcO.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-DWlYBxgN.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-DrZRN4lR.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-Egv665vx.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-CUUzo795.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-gAtnSv8q.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-D4zIcC5W.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-FhIOba0w.js";
101
+ import "./useActions-CqdsN2GH.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-DlmwtVDN.js";
107
+ import { n as usePersonalizedTemplatesV2Store, t as usePersonalizedTemplatesV3Store } from "./personalizedTemplatesV3.store-C0D2WZuq.js";
108
+ import { t as useCommandBar } from "./useCommandBar-_c6cO-zw.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",
@@ -1958,6 +1959,7 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
1958
1959
  const { goToUpgrade } = usePageRedirectionHelper();
1959
1960
  const processedWorkflowUpdates = ref(/* @__PURE__ */ new Set());
1960
1961
  const trackedTools = ref(/* @__PURE__ */ new Set());
1962
+ const trackedCategorizations = ref(/* @__PURE__ */ new Set());
1961
1963
  const workflowUpdated = ref();
1962
1964
  const n8nChatRef = ref();
1963
1965
  const user$1 = computed(() => ({
@@ -1971,8 +1973,10 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
1971
1973
  const currentRoute = computed(() => route.name);
1972
1974
  const showExecuteMessage = computed(() => {
1973
1975
  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;
1976
+ const messagesAfterUpdate = builderStore.chatMessages.slice(builderUpdatedWorkflowMessageIndex + 1);
1977
+ const hasErrorAfterUpdate = messagesAfterUpdate.some((msg) => msg.type === "error");
1978
+ const hasTaskAbortedAfterUpdate = messagesAfterUpdate.some((msg) => isTaskAbortedMessage(msg));
1979
+ return !builderStore.streaming && workflowsStore.workflow.nodes.length > 0 && builderUpdatedWorkflowMessageIndex > -1 && !hasErrorAfterUpdate && !hasTaskAbortedAfterUpdate;
1976
1980
  });
1977
1981
  const creditsQuota = computed(() => builderStore.creditsQuota);
1978
1982
  const creditsRemaining = computed(() => builderStore.creditsRemaining);
@@ -1992,6 +1996,7 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
1992
1996
  builderStore.resetBuilderChat();
1993
1997
  processedWorkflowUpdates.value.clear();
1994
1998
  trackedTools.value.clear();
1999
+ trackedCategorizations.value.clear();
1995
2000
  workflowUpdated.value = void 0;
1996
2001
  }
1997
2002
  function onFeedback(feedback$1) {
@@ -2009,6 +2014,28 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
2009
2014
  function dedupeToolNames(toolNames) {
2010
2015
  return [...new Set(toolNames)];
2011
2016
  }
2017
+ function isCategorizationData(data) {
2018
+ return typeof data === "object" && data !== null && "techniques" in data && Array.isArray(data.techniques) && data.techniques.every((t) => typeof t === "string");
2019
+ }
2020
+ function trackWorkflowCategorization() {
2021
+ builderStore.toolMessages.forEach((toolMsg) => {
2022
+ if (toolMsg.toolName !== "categorize_prompt") return;
2023
+ if (toolMsg.status !== "completed") return;
2024
+ if (!toolMsg.toolCallId) return;
2025
+ if (trackedCategorizations.value.has(toolMsg.toolCallId)) return;
2026
+ const categorizationData = toolMsg.updates.find((u) => u.type === "output")?.data?.categorization;
2027
+ if (!isCategorizationData(categorizationData)) return;
2028
+ trackedCategorizations.value.add(toolMsg.toolCallId);
2029
+ telemetry$1.track("Classifier labels user prompt", {
2030
+ user_id: usersStore.currentUserId ?? void 0,
2031
+ workflow_id: workflowsStore.workflowId,
2032
+ classifier_labels: categorizationData.techniques,
2033
+ confidence: categorizationData.confidence,
2034
+ session_id: builderStore.trackingSessionId,
2035
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
2036
+ });
2037
+ });
2038
+ }
2012
2039
  function trackWorkflowModifications() {
2013
2040
  if (workflowUpdated.value) {
2014
2041
  const newToolMessages = builderStore.toolMessages.filter((toolMsg) => toolMsg.status !== "running" && toolMsg.toolCallId && !trackedTools.value.has(toolMsg.toolCallId));
@@ -2084,10 +2111,13 @@ var AskAssistantBuild_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
2084
2111
  });
2085
2112
  }, { deep: true });
2086
2113
  watch(() => builderStore.streaming, async (isStreaming) => {
2087
- if (!isStreaming) trackWorkflowModifications();
2114
+ if (!isStreaming) {
2115
+ trackWorkflowModifications();
2116
+ trackWorkflowCategorization();
2117
+ }
2088
2118
  if (builderStore.initialGeneration && !isStreaming && workflowsStore.workflow.nodes.length > 0) {
2089
2119
  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"));
2120
+ const successful = lastMessage && lastMessage.type !== "error" && !isTaskAbortedMessage(lastMessage);
2091
2121
  builderStore.initialGeneration = false;
2092
2122
  if (successful) await workflowSaver.saveCurrentWorkflow();
2093
2123
  }
@@ -2231,7 +2261,7 @@ var AskAssistantChat_default = /* @__PURE__ */ __plugin_vue_export_helper_defaul
2231
2261
  ])], 32);
2232
2262
  };
2233
2263
  }
2234
- }), [["__scopeId", "data-v-c5bdf047"]]);
2264
+ }), [["__scopeId", "data-v-ace8d134"]]);
2235
2265
  var HubSwitcher_default = /* @__PURE__ */ defineComponent({
2236
2266
  __name: "HubSwitcher",
2237
2267
  props: { isBuildMode: { type: Boolean } },
@@ -2374,9 +2404,9 @@ var AssistantsHub_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
2374
2404
  }
2375
2405
  });
2376
2406
  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"
2407
+ resizeWrapper: "_resizeWrapper_1ffdf_123",
2408
+ wrapper: "_wrapper_1ffdf_127",
2409
+ assistantContent: "_assistantContent_1ffdf_133"
2380
2410
  };
2381
2411
  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
2412
  var AskAssistantFloatingButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -2429,74 +2459,12 @@ var AskAssistantFloatingButton_vue_vue_type_script_setup_true_lang_default = /*
2429
2459
  }
2430
2460
  });
2431
2461
  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"
2462
+ container: "_container_1tr4s_123",
2463
+ tooltip: "_tooltip_1tr4s_130",
2464
+ assistant: "_assistant_1tr4s_136",
2465
+ text: "_text_1tr4s_146"
2436
2466
  };
2437
2467
  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
2468
  var NonProductionLicenseBanner_default = /* @__PURE__ */ defineComponent({
2501
2469
  __name: "NonProductionLicenseBanner",
2502
2470
  setup(__props) {
@@ -2545,6 +2513,8 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2545
2513
  setup(__props) {
2546
2514
  const cloudPlanStore = useCloudPlanStore();
2547
2515
  const pageRedirectionHelper = usePageRedirectionHelper();
2516
+ const shouldShowTrialBanner = computed(() => cloudPlanStore.shouldShowDynamicTrialBanner);
2517
+ const trialBannerText = computed(() => cloudPlanStore.dynamicTrialBannerText);
2548
2518
  const trialDaysLeft = computed(() => -1 * cloudPlanStore.trialDaysLeft);
2549
2519
  const messageText = computed(() => {
2550
2520
  return i18n$1.baseText("banners.trial.message", {
@@ -2582,6 +2552,7 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2582
2552
  return usedExecutions > executionsQuota ? executionsQuota : usedExecutions;
2583
2553
  });
2584
2554
  function onUpdatePlanClick() {
2555
+ if (shouldShowTrialBanner.value) cloudPlanStore.dismissDynamicTrialBanner();
2585
2556
  pageRedirectionHelper.goToUpgrade("canvas-nav", "upgrade-canvas-nav", "redirect");
2586
2557
  }
2587
2558
  return (_ctx, _cache) => {
@@ -2614,7 +2585,16 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2614
2585
  }, 8, ["color"])
2615
2586
  ], 2)], 2)
2616
2587
  ], 2)]),
2617
- trailingContent: withCtx(() => [createVNode(unref(N8nButton_default), {
2588
+ trailingContent: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.trailingContentWrapper) }, [shouldShowTrialBanner.value ? (openBlock(), createBlock(unref(N8nBadge_default), {
2589
+ key: 0,
2590
+ class: normalizeClass(_ctx.$style.dynamicBanner),
2591
+ size: "small",
2592
+ "show-border": false,
2593
+ bold: true
2594
+ }, {
2595
+ default: withCtx(() => [createTextVNode(toDisplayString(trialBannerText.value), 1)]),
2596
+ _: 1
2597
+ }, 8, ["class"])) : createCommentVNode("", true), createVNode(unref(N8nButton_default), {
2618
2598
  type: "success",
2619
2599
  icon: "gem",
2620
2600
  size: "small",
@@ -2622,31 +2602,33 @@ var TrialBanner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
2622
2602
  }, {
2623
2603
  default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n$1).baseText("generic.upgradeNow")), 1)]),
2624
2604
  _: 1
2625
- })]),
2605
+ })], 2)]),
2626
2606
  _: 1
2627
2607
  });
2628
2608
  };
2629
2609
  }
2630
2610
  });
2631
2611
  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"
2612
+ content: "_content_14odr_123",
2613
+ pipe: "_pipe_14odr_129",
2614
+ progressBarDiv: "_progressBarDiv_14odr_135",
2615
+ progressBar: "_progressBar_14odr_135",
2616
+ progressBarSuccess: "_progressBarSuccess_14odr_164",
2617
+ progressBarDanger: "_progressBarDanger_14odr_174",
2618
+ usageText: "_usageText_14odr_183",
2619
+ usageCounter: "_usageCounter_14odr_190",
2620
+ danger: "_danger_14odr_198",
2621
+ executionsCountSection: "_executionsCountSection_14odr_202",
2622
+ trailingContentWrapper: "_trailingContentWrapper_14odr_206",
2623
+ dynamicBanner: "_dynamicBanner_14odr_212"
2642
2624
  };
2643
2625
  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
2626
  var V1Banner_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
2645
2627
  __name: "V1Banner",
2646
2628
  setup(__props) {
2647
- const uiStore = useUIStore();
2629
+ const bannersStore = useBannersStore();
2648
2630
  async function dismissPermanently() {
2649
- await uiStore.dismissBanner("V1", "permanent");
2631
+ await bannersStore.dismissBanner("V1", "permanent");
2650
2632
  }
2651
2633
  const hasOwnerPermission = computed(() => hasPermission(["instanceOwner"]));
2652
2634
  return (_ctx, _cache) => {
@@ -2794,27 +2776,43 @@ const N8N_BANNERS = {
2794
2776
  var BannerStack_default = /* @__PURE__ */ defineComponent({
2795
2777
  __name: "BannerStack",
2796
2778
  setup(__props) {
2797
- const uiStore = useUIStore();
2779
+ const bannersStore = useBannersStore();
2798
2780
  async function updateCurrentBannerHeight() {
2799
2781
  const bannerHeight = await getBannerRowHeight();
2800
- uiStore.updateBannersHeight(bannerHeight);
2782
+ bannersStore.updateBannersHeight(bannerHeight);
2801
2783
  }
2784
+ const getBannerForName = (bannerName) => {
2785
+ return N8N_BANNERS[bannerName] || bannersStore.dynamicBannersMap[bannerName];
2786
+ };
2802
2787
  const currentlyShownBanner = computed(() => {
2803
2788
  updateCurrentBannerHeight();
2804
- if (uiStore.bannerStack.length === 0) return null;
2805
- let banner$1 = N8N_BANNERS[uiStore.bannerStack[0]];
2806
- uiStore.bannerStack.forEach((bannerName, index) => {
2789
+ if (bannersStore.bannerStack.length === 0) return null;
2790
+ let currentBanner = getBannerForName(bannersStore.bannerStack[0]);
2791
+ let currentBannerName = bannersStore.bannerStack[0];
2792
+ bannersStore.bannerStack.forEach((bannerName, index) => {
2807
2793
  if (index === 0) return;
2808
- const bannerToCompare = N8N_BANNERS[bannerName];
2809
- if (bannerToCompare.priority > banner$1.priority) banner$1 = bannerToCompare;
2794
+ const bannerToCompare = getBannerForName(bannerName);
2795
+ if (bannerToCompare.priority > currentBanner.priority) {
2796
+ currentBanner = bannerToCompare;
2797
+ currentBannerName = bannerName;
2798
+ }
2810
2799
  });
2811
- return banner$1.component;
2800
+ return {
2801
+ component: currentBanner.component,
2802
+ props: {
2803
+ name: currentBannerName,
2804
+ content: currentBanner.content,
2805
+ theme: currentBanner.theme,
2806
+ isDismissible: currentBanner.isDismissible,
2807
+ dismissPermanently: currentBanner.dismissPermanently
2808
+ }
2809
+ };
2812
2810
  });
2813
2811
  onMounted(async () => {
2814
2812
  await updateCurrentBannerHeight();
2815
2813
  });
2816
2814
  return (_ctx, _cache) => {
2817
- return openBlock(), createElementBlock("div", _hoisted_1$37, [(openBlock(), createBlock(resolveDynamicComponent(currentlyShownBanner.value)))]);
2815
+ 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
2816
  };
2819
2817
  }
2820
2818
  });
@@ -3184,13 +3182,13 @@ var ApiKeyScopes_default = /* @__PURE__ */ __plugin_vue_export_helper_default({
3184
3182
  "class",
3185
3183
  "indeterminate"
3186
3184
  ])]),
3187
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(groupedScopes.value, (actions$1, resource) => {
3185
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(groupedScopes.value, (actions$2, resource) => {
3188
3186
  return openBlock(), createBlock(unref(ElOptionGroup), {
3189
3187
  key: resource,
3190
3188
  disabled: !__props.enabled,
3191
3189
  label: unref(capitalCase)(resource).toUpperCase()
3192
3190
  }, {
3193
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(actions$1, (action) => {
3191
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(actions$2, (action) => {
3194
3192
  return openBlock(), createBlock(unref(ElOption), {
3195
3193
  key: `${resource}:${action}`,
3196
3194
  label: `${resource}:${action}`,
@@ -3254,7 +3252,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3254
3252
  const expirationDaysFromNow = ref(EXPIRATION_OPTIONS["30_DAYS"]);
3255
3253
  const modalBus = createEventBus();
3256
3254
  const newApiKey = ref(null);
3257
- const loading$2 = ref(false);
3255
+ const loading$3 = ref(false);
3258
3256
  const rawApiKey = ref("");
3259
3257
  const customExpirationDate = ref("");
3260
3258
  const showExpirationDateSelector = ref(false);
@@ -3304,7 +3302,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3304
3302
  };
3305
3303
  async function onEdit() {
3306
3304
  try {
3307
- loading$2.value = true;
3305
+ loading$3.value = true;
3308
3306
  await updateApiKey(props.activeId, {
3309
3307
  label: label$1.value,
3310
3308
  scopes: selectedScopes.value
@@ -3317,7 +3315,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3317
3315
  } catch (error$2) {
3318
3316
  showError(error$2, i18n$2.baseText("settings.api.edit.error"));
3319
3317
  } finally {
3320
- loading$2.value = false;
3318
+ loading$3.value = false;
3321
3319
  }
3322
3320
  }
3323
3321
  function closeModal() {
@@ -3334,7 +3332,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3334
3332
  scopes: selectedScopes.value
3335
3333
  };
3336
3334
  try {
3337
- loading$2.value = true;
3335
+ loading$3.value = true;
3338
3336
  newApiKey.value = await createApiKey(payload);
3339
3337
  rawApiKey.value = newApiKey.value.rawApiKey;
3340
3338
  showMessage({
@@ -3344,7 +3342,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3344
3342
  } catch (error$2) {
3345
3343
  showError(error$2, i18n$2.baseText("settings.api.create.error"));
3346
3344
  } finally {
3347
- loading$2.value = false;
3345
+ loading$3.value = false;
3348
3346
  }
3349
3347
  };
3350
3348
  const modalTitle = computed(() => {
@@ -3482,7 +3480,7 @@ var ApiKeyCreateOrEditModal_vue_vue_type_script_setup_true_lang_default = /* @__
3482
3480
  footer: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.footer) }, [
3483
3481
  _ctx.mode === "new" && !newApiKey.value ? (openBlock(), createBlock(unref(N8nButton_default), {
3484
3482
  key: 0,
3485
- loading: loading$2.value,
3483
+ loading: loading$3.value,
3486
3484
  disabled: !allFormFieldsAreSet.value,
3487
3485
  label: unref(i18n$2).baseText("settings.api.view.modal.save.button"),
3488
3486
  onClick: onSave
@@ -3603,7 +3601,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3603
3601
  const formBus = createFormEventBus();
3604
3602
  const modalBus = createEventBus();
3605
3603
  const password = ref("");
3606
- const loading$2 = ref(false);
3604
+ const loading$3 = ref(false);
3607
3605
  const i18n$2 = useI18n();
3608
3606
  const { showMessage, showError } = useToast();
3609
3607
  const usersStore = useUsersStore();
@@ -3618,7 +3616,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3618
3616
  const onSubmit = async (data) => {
3619
3617
  const values$2 = data;
3620
3618
  try {
3621
- loading$2.value = true;
3619
+ loading$3.value = true;
3622
3620
  await usersStore.updateCurrentUserPassword({
3623
3621
  currentPassword: values$2.currentPassword,
3624
3622
  newPassword: values$2.password,
@@ -3633,7 +3631,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3633
3631
  } catch (error$2) {
3634
3632
  showError(error$2, i18n$2.baseText("auth.changePassword.error"));
3635
3633
  } finally {
3636
- loading$2.value = false;
3634
+ loading$3.value = false;
3637
3635
  }
3638
3636
  };
3639
3637
  const onSubmitClick = () => {
@@ -3716,7 +3714,7 @@ var ChangePasswordModal_default = /* @__PURE__ */ defineComponent({
3716
3714
  onSubmit
3717
3715
  }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)]),
3718
3716
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
3719
- loading: loading$2.value,
3717
+ loading: loading$3.value,
3720
3718
  label: unref(i18n$2).baseText("auth.changePassword"),
3721
3719
  float: "right",
3722
3720
  "data-test-id": "change-password-button",
@@ -3736,12 +3734,12 @@ var ConfirmPasswordModal_vue_vue_type_script_setup_true_lang_default = /* @__PUR
3736
3734
  setup(__props) {
3737
3735
  const config$1 = ref(null);
3738
3736
  const formBus = createFormEventBus();
3739
- const loading$2 = ref(false);
3737
+ const loading$3 = ref(false);
3740
3738
  const i18n$2 = useI18n();
3741
3739
  const onSubmit = (data) => {
3742
3740
  const currentPassword = data.currentPassword;
3743
3741
  if (!currentPassword) return;
3744
- loading$2.value = true;
3742
+ loading$3.value = true;
3745
3743
  confirmPasswordEventBus.emit("close", { currentPassword });
3746
3744
  };
3747
3745
  const onSubmitClick = () => {
@@ -3783,7 +3781,7 @@ var ConfirmPasswordModal_vue_vue_type_script_setup_true_lang_default = /* @__PUR
3783
3781
  onSubmit
3784
3782
  }, null, 8, ["inputs", "event-bus"])) : createCommentVNode("", true)]),
3785
3783
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
3786
- loading: loading$2.value,
3784
+ loading: loading$3.value,
3787
3785
  label: unref(i18n$2).baseText("generic.confirm"),
3788
3786
  float: "right",
3789
3787
  "data-test-id": "confirm-password-button",
@@ -4071,7 +4069,7 @@ function logSpanStart(span) {
4071
4069
  const sampled = spanIsSampled(span);
4072
4070
  const rootSpan = getRootSpan(span);
4073
4071
  const isRootSpan = rootSpan === span;
4074
- const header$10 = `[Tracing] Starting ${sampled ? "sampled" : "unsampled"} ${isRootSpan ? "root " : ""}span`;
4072
+ const header$11 = `[Tracing] Starting ${sampled ? "sampled" : "unsampled"} ${isRootSpan ? "root " : ""}span`;
4075
4073
  const infoParts = [
4076
4074
  `op: ${op}`,
4077
4075
  `name: ${description$8}`,
@@ -4084,7 +4082,7 @@ function logSpanStart(span) {
4084
4082
  if (op$1) infoParts.push(`root op: ${op$1}`);
4085
4083
  if (description$9) infoParts.push(`root description: ${description$9}`);
4086
4084
  }
4087
- debug.log(`${header$10}
4085
+ debug.log(`${header$11}
4088
4086
  ${infoParts.join("\n ")}`);
4089
4087
  }
4090
4088
  function logSpanEnd(span) {
@@ -5100,10 +5098,10 @@ function makePromiseBuffer(limit) {
5100
5098
  };
5101
5099
  }
5102
5100
  var DEFAULT_RETRY_AFTER = 60 * 1e3;
5103
- function parseRetryAfterHeader(header$10, now = Date.now()) {
5104
- const headerDelay = parseInt(`${header$10}`, 10);
5101
+ function parseRetryAfterHeader(header$11, now = Date.now()) {
5102
+ const headerDelay = parseInt(`${header$11}`, 10);
5105
5103
  if (!isNaN(headerDelay)) return headerDelay * 1e3;
5106
- const headerDate = Date.parse(`${header$10}`);
5104
+ const headerDate = Date.parse(`${header$11}`);
5107
5105
  if (!isNaN(headerDate)) return headerDate - now;
5108
5106
  return DEFAULT_RETRY_AFTER;
5109
5107
  }
@@ -6289,9 +6287,9 @@ function instrumentXHR() {
6289
6287
  } });
6290
6288
  else xhrOpenThisArg.addEventListener("readystatechange", onreadystatechangeHandler);
6291
6289
  xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, { apply(originalSetRequestHeader, setRequestHeaderThisArg, setRequestHeaderArgArray) {
6292
- const [header$10, value] = setRequestHeaderArgArray;
6290
+ const [header$11, value] = setRequestHeaderArgArray;
6293
6291
  const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];
6294
- if (xhrInfo && isString(header$10) && isString(value)) xhrInfo.request_headers[header$10.toLowerCase()] = value;
6292
+ if (xhrInfo && isString(header$11) && isString(value)) xhrInfo.request_headers[header$11.toLowerCase()] = value;
6295
6293
  return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);
6296
6294
  } });
6297
6295
  return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);
@@ -7336,7 +7334,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7336
7334
  setup(__props) {
7337
7335
  const telemetry$1 = useTelemetry();
7338
7336
  const i18n$2 = useI18n();
7339
- const { installNode, loading: loading$2 } = useInstallNode();
7337
+ const { installNode, loading: loading$3 } = useInstallNode();
7340
7338
  const uiStore = useUIStore();
7341
7339
  const modalBus = createEventBus();
7342
7340
  const modalData = computed(() => uiStore.modalsById[COMMUNITY_PACKAGE_INSTALL_MODAL_KEY]?.data);
@@ -7369,7 +7367,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7369
7367
  checkboxWarning.value = false;
7370
7368
  };
7371
7369
  const onModalClose = () => {
7372
- return !loading$2.value;
7370
+ return !loading$3.value;
7373
7371
  };
7374
7372
  const onInputBlur = () => {
7375
7373
  packageName.value = packageName.value.replaceAll("npm i ", "").replaceAll("npm install ", "");
@@ -7388,7 +7386,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7388
7386
  "event-bus": unref(modalBus),
7389
7387
  center: true,
7390
7388
  "before-close": onModalClose,
7391
- "show-close": !unref(loading$2)
7389
+ "show-close": !unref(loading$3)
7392
7390
  }, {
7393
7391
  content: withCtx(() => [!modalData.value?.hideSuggestion ? (openBlock(), createElementBlock("div", {
7394
7392
  key: 0,
@@ -7426,7 +7424,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7426
7424
  maxlength: 214,
7427
7425
  placeholder: unref(i18n$2).baseText("settings.communityNodes.installModal.packageName.placeholder"),
7428
7426
  required: true,
7429
- disabled: unref(loading$2) || modalData.value?.disableInput,
7427
+ disabled: unref(loading$3) || modalData.value?.disableInput,
7430
7428
  onBlur: onInputBlur
7431
7429
  }, null, 8, [
7432
7430
  "modelValue",
@@ -7452,7 +7450,7 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7452
7450
  checkboxWarning.value ? _ctx.$style.error : "",
7453
7451
  "mt-l"
7454
7452
  ]),
7455
- disabled: unref(loading$2),
7453
+ disabled: unref(loading$3),
7456
7454
  "data-test-id": "user-agreement-checkbox"
7457
7455
  }, {
7458
7456
  default: withCtx(() => [
@@ -7477,9 +7475,9 @@ var CommunityPackageInstallModal_vue_vue_type_script_setup_true_lang_default = /
7477
7475
  ])
7478
7476
  ], 2)]),
7479
7477
  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"),
7478
+ loading: unref(loading$3),
7479
+ disabled: !userAgreed.value || packageName.value === "" || unref(loading$3),
7480
+ label: unref(loading$3) ? unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label.loading") : unref(i18n$2).baseText("settings.communityNodes.installModal.installButton.label"),
7483
7481
  size: "large",
7484
7482
  float: "right",
7485
7483
  "data-test-id": "install-community-package-button",
@@ -7606,7 +7604,7 @@ var NodesInWorkflowTable_default = /* @__PURE__ */ __plugin_vue_export_helper_de
7606
7604
  ])) : createCommentVNode("", true)]);
7607
7605
  };
7608
7606
  }
7609
- }), [["__scopeId", "data-v-36eb6310"]]);
7607
+ }), [["__scopeId", "data-v-c38bafc6"]]);
7610
7608
  var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
7611
7609
  __name: "CommunityPackageManageConfirmModal",
7612
7610
  props: {
@@ -7624,7 +7622,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7624
7622
  const toast = useToast();
7625
7623
  const i18n$2 = useI18n();
7626
7624
  const telemetry$1 = useTelemetry();
7627
- const loading$2 = ref(false);
7625
+ const loading$3 = ref(false);
7628
7626
  const workflowsWithPackageNodes = ref([]);
7629
7627
  const isUsingVerifiedAndUnverifiedPackages = settingsStore.isCommunityNodesFeatureEnabled && settingsStore.isUnverifiedPackagesEnabled;
7630
7628
  const isUsingVerifiedPackagesOnly = settingsStore.isCommunityNodesFeatureEnabled && !settingsStore.isUnverifiedPackagesEnabled;
@@ -7656,7 +7654,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7656
7654
  };
7657
7655
  });
7658
7656
  const onModalClose = () => {
7659
- return !loading$2.value;
7657
+ return !loading$3.value;
7660
7658
  };
7661
7659
  const onConfirmButtonClick = async () => {
7662
7660
  if (props.mode === COMMUNITY_PACKAGE_MANAGE_ACTIONS.UNINSTALL) await onUninstall();
@@ -7671,7 +7669,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7671
7669
  package_author: communityStorePackage.value.authorName,
7672
7670
  package_author_email: communityStorePackage.value.authorEmail
7673
7671
  });
7674
- loading$2.value = true;
7672
+ loading$3.value = true;
7675
7673
  await communityNodesStore.uninstallPackage(props.activePackageName);
7676
7674
  await useNodeTypesStore().getNodeTypes();
7677
7675
  toast.showMessage({
@@ -7681,7 +7679,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7681
7679
  } catch (error$2) {
7682
7680
  toast.showError(error$2, i18n$2.baseText("settings.communityNodes.messages.uninstall.error"));
7683
7681
  } finally {
7684
- loading$2.value = false;
7682
+ loading$3.value = false;
7685
7683
  modalBus.emit("close");
7686
7684
  }
7687
7685
  };
@@ -7695,7 +7693,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7695
7693
  package_author: communityStorePackage.value.authorName,
7696
7694
  package_author_email: communityStorePackage.value.authorEmail
7697
7695
  });
7698
- loading$2.value = true;
7696
+ loading$3.value = true;
7699
7697
  if (settingsStore.isUnverifiedPackagesEnabled) await communityNodesStore.updatePackage(props.activePackageName);
7700
7698
  else if (settingsStore.isCommunityNodesFeatureEnabled) await communityNodesStore.updatePackage(props.activePackageName, updateVersion.value, nodeTypeStorePackage.value?.checksum);
7701
7699
  else throw new Error("Community nodes feature is not correctly enabled.");
@@ -7711,7 +7709,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7711
7709
  } catch (error$2) {
7712
7710
  toast.showError(error$2, i18n$2.baseText("settings.communityNodes.messages.update.error.title"));
7713
7711
  } finally {
7714
- loading$2.value = false;
7712
+ loading$3.value = false;
7715
7713
  modalBus.emit("close");
7716
7714
  }
7717
7715
  };
@@ -7745,7 +7743,7 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7745
7743
  title: getModalContent.value.title,
7746
7744
  "event-bus": unref(modalBus),
7747
7745
  center: true,
7748
- "show-close": !loading$2.value,
7746
+ "show-close": !loading$3.value,
7749
7747
  "before-close": onModalClose
7750
7748
  }, {
7751
7749
  content: withCtx(() => [
@@ -7781,9 +7779,9 @@ var CommunityPackageManageConfirmModal_vue_vue_type_script_setup_true_lang_defau
7781
7779
  "data-test-id": "close-button",
7782
7780
  onClick
7783
7781
  }, 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,
7782
+ loading: loading$3.value,
7783
+ disabled: loading$3.value,
7784
+ label: loading$3.value ? getModalContent.value.buttonLoadingLabel : getModalContent.value.buttonLabel,
7787
7785
  size: "large",
7788
7786
  float: "right",
7789
7787
  onClick: onConfirmButtonClick
@@ -8471,10 +8469,10 @@ var GoogleAuthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
8471
8469
  const type = useUIStore().appliedTheme === "dark" ? ".dark.png" : ".png";
8472
8470
  const i18n$2 = useI18n();
8473
8471
  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}`
8472
+ "--google-auth-btn--color--background--normal": `url(${baseUrl}static/google-auth/normal${type}`,
8473
+ "--google-auth-btn--color--background--focus": `url(${baseUrl}static/google-auth/focus${type}`,
8474
+ "--google-auth-btn--color--background--pressed": `url(${baseUrl}static/google-auth/pressed${type}`,
8475
+ "--google-auth-btn--color--background--disabled": `url(${baseUrl}static/google-auth/disabled${type}`
8478
8476
  };
8479
8477
  return (_ctx, _cache) => {
8480
8478
  return openBlock(), createElementBlock("button", {
@@ -8485,7 +8483,7 @@ var GoogleAuthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
8485
8483
  };
8486
8484
  }
8487
8485
  });
8488
- var GoogleAuthButton_vue_vue_type_style_index_0_lang_module_default = { googleAuthBtn: "_googleAuthBtn_1tor9_123" };
8486
+ var GoogleAuthButton_vue_vue_type_style_index_0_lang_module_default = { googleAuthBtn: "_googleAuthBtn_1ja0c_123" };
8489
8487
  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
8488
  var OauthButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8491
8489
  __name: "OauthButton",
@@ -9038,6 +9036,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9038
9036
  const i18n$2 = useI18n();
9039
9037
  const telemetry$1 = useTelemetry();
9040
9038
  const router = useRouter();
9039
+ const rootStore = useRootStore();
9041
9040
  const activeTab = ref("connection");
9042
9041
  const authError = ref("");
9043
9042
  const credentialId = ref("");
@@ -9051,7 +9050,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9051
9050
  const isTesting = ref(false);
9052
9051
  const hasUnsavedChanges = ref(false);
9053
9052
  const isSaved = ref(false);
9054
- const loading$2 = ref(false);
9053
+ const loading$3 = ref(false);
9055
9054
  const showValidationWarning = ref(false);
9056
9055
  const testedSuccessfully = ref(false);
9057
9056
  const isRetesting = ref(false);
@@ -9207,7 +9206,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9207
9206
  if (credentialId.value) if (!requiredPropertiesFilled.value && credentialPermissions.value.update) showValidationWarning.value = true;
9208
9207
  else await retestCredential();
9209
9208
  }, 0);
9210
- loading$2.value = false;
9209
+ loading$3.value = false;
9211
9210
  });
9212
9211
  async function beforeClose() {
9213
9212
  let keepEditing = false;
@@ -9414,11 +9413,34 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9414
9413
  else if (isCredentialTestable.value) trackProperties.is_valid = !!testedSuccessfully.value;
9415
9414
  if (ndvStore.activeNode) trackProperties.node_type = ndvStore.activeNode.type;
9416
9415
  if (authError.value && authError.value !== "") trackProperties.authError = authError.value;
9417
- if (!isOAuthType.value) telemetry$1.track("User saved credentials", trackProperties);
9416
+ if (!isOAuthType.value) {
9417
+ telemetry$1.track("User saved credentials", trackProperties);
9418
+ handleDynamicNotification(!!trackProperties.is_valid);
9419
+ }
9418
9420
  await externalHooks.run("credentialEdit.saveCredential", trackProperties);
9419
9421
  }
9420
9422
  return credential;
9421
9423
  }
9424
+ async function handleDynamicNotification(isValid) {
9425
+ if (!isValid || !settingsStore.isCloudDeployment) return;
9426
+ try {
9427
+ const response = await sendUserEvent(rootStore.restApiContext, {
9428
+ eventType: "credential-saved",
9429
+ metadata: { credential_type: credentialTypeName.value }
9430
+ });
9431
+ if (response.title && response.message) setTimeout(async () => {
9432
+ try {
9433
+ await message$1.confirm(response.message, response.title, {
9434
+ confirmButtonText: i18n$2.baseText("generic.keepBuilding"),
9435
+ cancelButtonText: "",
9436
+ showCancelButton: false,
9437
+ closeOnClickModal: true,
9438
+ closeOnPressEscape: true
9439
+ });
9440
+ } catch (error$2) {}
9441
+ }, 15e3);
9442
+ } catch (error$2) {}
9443
+ }
9422
9444
  const createToastMessagingForNewCredentials = (project) => {
9423
9445
  let toastTitle = i18n$2.baseText("credentials.create.personal.toast.title");
9424
9446
  let toastText = "";
@@ -9549,6 +9571,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9549
9571
  };
9550
9572
  if (ndvStore.activeNode) trackProperties.node_type = ndvStore.activeNode.type;
9551
9573
  telemetry$1.track("User saved credentials", trackProperties);
9574
+ handleDynamicNotification(successfullyConnected);
9552
9575
  if (successfullyConnected) {
9553
9576
  oauthChannel.removeEventListener("message", receiveMessage);
9554
9577
  credentialData.value = {
@@ -9593,7 +9616,7 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9593
9616
  name: _ctx.modalName,
9594
9617
  "custom-class": _ctx.$style.credentialModal,
9595
9618
  "event-bus": modalBus.value,
9596
- loading: loading$2.value,
9619
+ loading: loading$3.value,
9597
9620
  "before-close": beforeClose,
9598
9621
  width: "70%",
9599
9622
  height: "80%"
@@ -9742,15 +9765,15 @@ var CredentialEdit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9742
9765
  }
9743
9766
  });
9744
9767
  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"
9768
+ credentialModal: "_credentialModal_qzlbd_123",
9769
+ mainContent: "_mainContent_qzlbd_137",
9770
+ credName: "_credName_qzlbd_143",
9771
+ sidebar: "_sidebar_qzlbd_150",
9772
+ header: "_header_qzlbd_160",
9773
+ container: "_container_qzlbd_164",
9774
+ credInfo: "_credInfo_qzlbd_169",
9775
+ credActions: "_credActions_qzlbd_177",
9776
+ credIcon: "_credIcon_qzlbd_188"
9754
9777
  };
9755
9778
  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
9779
  var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -9761,7 +9784,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9761
9784
  const i18n$2 = useI18n();
9762
9785
  const modalBus = ref(createEventBus());
9763
9786
  const selected = ref("");
9764
- const loading$2 = ref(true);
9787
+ const loading$3 = ref(true);
9765
9788
  const selectRef = ref();
9766
9789
  const credentialsStore = useCredentialsStore();
9767
9790
  const uiStore = useUIStore();
@@ -9770,7 +9793,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9770
9793
  try {
9771
9794
  await credentialsStore.fetchCredentialTypes(false);
9772
9795
  } catch (e) {}
9773
- loading$2.value = false;
9796
+ loading$3.value = false;
9774
9797
  setTimeout(() => {
9775
9798
  if (selectRef.value) selectRef.value.focus();
9776
9799
  }, 0);
@@ -9796,7 +9819,7 @@ var CredentialsSelectModal_vue_vue_type_script_setup_true_lang_default = /* @__P
9796
9819
  "event-bus": modalBus.value,
9797
9820
  width: "50%",
9798
9821
  center: true,
9799
- loading: loading$2.value,
9822
+ loading: loading$3.value,
9800
9823
  "max-width": "460px",
9801
9824
  "min-height": "250px"
9802
9825
  }, {
@@ -9916,9 +9939,9 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9916
9939
  emit("location:selected", location);
9917
9940
  }
9918
9941
  });
9919
- const loading$2 = ref(false);
9942
+ const loading$3 = ref(false);
9920
9943
  const fetchAvailableLocations = async (query) => {
9921
- loading$2.value = true;
9944
+ loading$3.value = true;
9922
9945
  const folders = await foldersStore.fetchFoldersAvailableForMove(props.selectedProjectId, props.currentFolderId, { name: query ?? void 0 });
9923
9946
  if (!props.parentFolderId) availableLocations.value = folders;
9924
9947
  else availableLocations.value = folders.filter((folder) => folder.id !== props.parentFolderId);
@@ -9935,7 +9958,7 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9935
9958
  subFolderCount: 0,
9936
9959
  path: []
9937
9960
  });
9938
- loading$2.value = false;
9961
+ loading$3.value = false;
9939
9962
  };
9940
9963
  watch(() => [
9941
9964
  props.selectedProjectId,
@@ -9964,7 +9987,7 @@ var MoveToFolderDropdown_vue_vue_type_script_setup_true_lang_default = /* @__PUR
9964
9987
  filterable: true,
9965
9988
  remote: true,
9966
9989
  "remote-method": fetchAvailableLocations,
9967
- loading: loading$2.value,
9990
+ loading: loading$3.value,
9968
9991
  placeholder: unref(i18n$2).baseText("folders.move.modal.folder.placeholder"),
9969
9992
  "no-data-text": unref(i18n$2).baseText("folders.move.modal.folder.noData.label"),
9970
9993
  "option-label": "name",
@@ -10063,7 +10086,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10063
10086
  const route = useRoute();
10064
10087
  const foldersStore = useFoldersStore();
10065
10088
  const projectsStore = useProjectsStore();
10066
- const loading$2 = ref(false);
10089
+ const loading$3 = ref(false);
10067
10090
  const operation = ref("");
10068
10091
  const deleteConfirmText = ref("");
10069
10092
  const selectedFolder = ref(null);
@@ -10105,7 +10128,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10105
10128
  async function onSubmit() {
10106
10129
  if (!enabled.value) return;
10107
10130
  try {
10108
- loading$2.value = true;
10131
+ loading$3.value = true;
10109
10132
  const newParentId = selectedFolder.value?.resource === "project" ? "0" : selectedFolder.value?.id ?? void 0;
10110
10133
  await foldersStore.deleteFolder(route.params.projectId, props.activeId, newParentId);
10111
10134
  let message$1 = "";
@@ -10124,7 +10147,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10124
10147
  } catch (error$2) {
10125
10148
  showError(error$2, i18n$2.baseText("folders.delete.error.message"));
10126
10149
  } finally {
10127
- loading$2.value = false;
10150
+ loading$3.value = false;
10128
10151
  }
10129
10152
  }
10130
10153
  const onFolderSelected = (payload) => {
@@ -10216,7 +10239,7 @@ var DeleteFolderModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
10216
10239
  }, 8, ["label"])], 2)) : createCommentVNode("", true)
10217
10240
  ], 2))])]),
10218
10241
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
10219
- loading: loading$2.value,
10242
+ loading: loading$3.value,
10220
10243
  disabled: !enabled.value,
10221
10244
  label: unref(i18n$2).baseText("generic.delete"),
10222
10245
  float: "right",
@@ -10619,7 +10642,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10619
10642
  setup(__props) {
10620
10643
  const props = __props;
10621
10644
  const modalBus = createEventBus();
10622
- const loading$2 = ref(false);
10645
+ const loading$3 = ref(false);
10623
10646
  const operation = ref("");
10624
10647
  const deleteConfirmText = ref("");
10625
10648
  const selectedProject = ref(null);
@@ -10650,7 +10673,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10650
10673
  async function onSubmit() {
10651
10674
  if (!enabled.value) return;
10652
10675
  try {
10653
- loading$2.value = true;
10676
+ loading$3.value = true;
10654
10677
  const params = { id: props.data.userId };
10655
10678
  if (operation.value === "transfer" && selectedProject.value) params.transferId = selectedProject.value.id;
10656
10679
  await usersStore.deleteUser(params);
@@ -10669,7 +10692,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10669
10692
  } catch (error$2) {
10670
10693
  showError(error$2, i18n$2.baseText("settings.users.userDeletedError"));
10671
10694
  } finally {
10672
- loading$2.value = false;
10695
+ loading$3.value = false;
10673
10696
  }
10674
10697
  }
10675
10698
  return (_ctx, _cache) => {
@@ -10745,7 +10768,7 @@ var DeleteUserModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
10745
10768
  }, 8, ["label"])], 2)) : createCommentVNode("", true)
10746
10769
  ], 2))])]),
10747
10770
  footer: withCtx(() => [createVNode(unref(N8nButton_default), {
10748
- loading: loading$2.value,
10771
+ loading: loading$3.value,
10749
10772
  disabled: !enabled.value,
10750
10773
  label: unref(i18n$2).baseText("settings.users.delete"),
10751
10774
  float: "right",
@@ -11419,7 +11442,7 @@ var ImportCurlModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ *
11419
11442
  }
11420
11443
  async function onImport() {
11421
11444
  const { useImportCurlCommand } = await __vitePreload(async () => {
11422
- const { useImportCurlCommand: useImportCurlCommand$1 } = await import("./useImportCurlCommand-BW8wZKLy.js");
11445
+ const { useImportCurlCommand: useImportCurlCommand$1 } = await import("./useImportCurlCommand-obipPNWg.js");
11423
11446
  return { useImportCurlCommand: useImportCurlCommand$1 };
11424
11447
  }, __vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));
11425
11448
  const { importCurlCommand } = useImportCurlCommand({
@@ -11577,7 +11600,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11577
11600
  const emails = ref("");
11578
11601
  const role = ref(ROLE.Member);
11579
11602
  const showInviteUrls = ref(null);
11580
- const loading$2 = ref(false);
11603
+ const loading$3 = ref(false);
11581
11604
  onMounted(() => {
11582
11605
  config$1.value = [{
11583
11606
  name: "emails",
@@ -11647,7 +11670,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11647
11670
  }
11648
11671
  async function onSubmit() {
11649
11672
  try {
11650
- loading$2.value = true;
11673
+ loading$3.value = true;
11651
11674
  const emailList = emails.value.split(",").map((email) => ({
11652
11675
  email: getEmail(email),
11653
11676
  role: role.value
@@ -11683,7 +11706,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11683
11706
  } catch (error$2) {
11684
11707
  showError(error$2, i18n$2.baseText("settings.users.usersInvitedError"));
11685
11708
  }
11686
- loading$2.value = false;
11709
+ loading$3.value = false;
11687
11710
  }
11688
11711
  function showCopyInviteLinkToast(successfulUrlInvites) {
11689
11712
  showMessage({
@@ -11761,7 +11784,7 @@ var InviteUsersModal_default = /* @__PURE__ */ defineComponent({
11761
11784
  }, [!showInviteUrls.value ? {
11762
11785
  name: "footer",
11763
11786
  fn: withCtx(() => [createVNode(unref(N8nButton_default), {
11764
- loading: loading$2.value,
11787
+ loading: loading$3.value,
11765
11788
  disabled: !enabledButton.value,
11766
11789
  label: buttonLabel.value,
11767
11790
  float: "right",
@@ -15336,11 +15359,11 @@ var EventSelection_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
15336
15359
  }
15337
15360
  });
15338
15361
  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"
15362
+ eventListCard: "_eventListCard_17kwo_123",
15363
+ eventList: "_eventList_17kwo_123",
15364
+ eventListItem: "_eventListItem_17kwo_135",
15365
+ eventListItemDisabled: "_eventListItemDisabled_17kwo_143",
15366
+ listItem: "_listItem_17kwo_150"
15344
15367
  };
15345
15368
  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
15369
  const webhookModalDescription = [
@@ -15766,7 +15789,7 @@ var EventDestinationSettingsModal_vue_vue_type_script_setup_true_lang_default =
15766
15789
  const hasOnceBeenSaved = ref(!isNew);
15767
15790
  const isSaving = ref(false);
15768
15791
  const isDeleting = ref(false);
15769
- const loading$2 = ref(false);
15792
+ const loading$3 = ref(false);
15770
15793
  const typeSelectValue = ref("");
15771
15794
  const typeSelectPlaceholder = ref("Destination Type");
15772
15795
  const nodeParameters = ref(deepCopy(defaultMessageEventBusDestinationOptions));
@@ -15951,7 +15974,7 @@ var EventDestinationSettingsModal_vue_vue_type_script_setup_true_lang_default =
15951
15974
  "before-close": onModalClose,
15952
15975
  scrollable: true,
15953
15976
  center: true,
15954
- loading: loading$2.value,
15977
+ loading: loading$3.value,
15955
15978
  "min-width": isTypeAbstract.value ? "460px" : "70%",
15956
15979
  "max-width": isTypeAbstract.value ? "460px" : "70%",
15957
15980
  "min-height": isTypeAbstract.value ? "160px" : "650px",
@@ -16359,7 +16382,7 @@ var pushStatusPriority = {
16359
16382
  const getPushPriorityByStatus = (status) => pushStatusPriority[status] ?? 0;
16360
16383
  var createVariablesToast = (router) => {
16361
16384
  const route = {
16362
- name: VIEWS.VARIABLES,
16385
+ name: VIEWS.PROJECTS_VARIABLES,
16363
16386
  query: { incomplete: "true" }
16364
16387
  };
16365
16388
  const { href } = router.resolve(route);
@@ -16833,6 +16856,9 @@ var SourceControlPushModal_vue_vue_type_script_setup_true_lang_default = /* @__P
16833
16856
  return;
16834
16857
  }
16835
16858
  status.value = freshStatus;
16859
+ freshStatus.forEach((file) => {
16860
+ if (file.type === "credential") selectedCredentials.add(file.id);
16861
+ });
16836
16862
  } catch (error$2) {
16837
16863
  toast.showError(error$2, i18n$2.baseText("error"));
16838
16864
  close();
@@ -17569,7 +17595,7 @@ var TagsTableHeader_default = /* @__PURE__ */ __plugin_vue_export_helper_default
17569
17595
  });
17570
17596
  };
17571
17597
  }
17572
- }), [["__scopeId", "data-v-210ea652"]]);
17598
+ }), [["__scopeId", "data-v-02364ed2"]]);
17573
17599
  var _hoisted_1$14 = { key: 1 };
17574
17600
  var INPUT_TRANSITION_TIMEOUT = 350;
17575
17601
  var DELETE_TRANSITION_TIMEOUT = 100;
@@ -17797,7 +17823,7 @@ var TagsTable_vue_vue_type_style_index_0_lang_module_default = {
17797
17823
  main,
17798
17824
  hidden
17799
17825
  };
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"]]);
17826
+ 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
17827
  var TagsView_default = /* @__PURE__ */ defineComponent({
17802
17828
  name: "TagsView",
17803
17829
  __name: "TagsView",
@@ -17977,7 +18003,7 @@ var NoTagsView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
17977
18003
  }
17978
18004
  });
17979
18005
  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"]]);
18006
+ 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
18007
  var TagsManager_default = /* @__PURE__ */ defineComponent({
17982
18008
  __name: "TagsManager",
17983
18009
  props: {
@@ -18378,19 +18404,19 @@ var VersionCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
18378
18404
  }
18379
18405
  });
18380
18406
  const card = "_card_p0mal_123";
18381
- const header$5 = "_header_p0mal_135";
18407
+ const header$6 = "_header_p0mal_135";
18382
18408
  const name = "_name_p0mal_150";
18383
18409
  const divider = "_divider_p0mal_157";
18384
18410
  const description$3 = "_description_p0mal_163";
18385
- const nodes$2 = "_nodes_p0mal_177";
18411
+ const nodes$3 = "_nodes_p0mal_177";
18386
18412
  var VersionCard_vue_vue_type_style_index_0_lang_module_default = {
18387
18413
  card,
18388
- header: header$5,
18414
+ header: header$6,
18389
18415
  name,
18390
18416
  divider,
18391
18417
  description: description$3,
18392
18418
  "release-date": "_release-date_p0mal_170",
18393
- nodes: nodes$2
18419
+ nodes: nodes$3
18394
18420
  };
18395
18421
  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
18422
  var _hoisted_1$11 = { key: 0 };
@@ -19806,7 +19832,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19806
19832
  const route = useRoute();
19807
19833
  const workflowSaving = useWorkflowSaving({ router });
19808
19834
  const workflow = ref(data.id === "__EMPTY__" ? workflowsStore.workflow : workflowsStore.workflowsById[data.id]);
19809
- const loading$2 = ref(true);
19835
+ const loading$3 = ref(true);
19810
19836
  const isDirty = ref(false);
19811
19837
  const modalBus = createEventBus();
19812
19838
  const sharedWithProjects = ref([...workflow.value.sharedWithProjects ?? []]);
@@ -19853,8 +19879,8 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19853
19879
  });
19854
19880
  };
19855
19881
  const onSave = async () => {
19856
- if (loading$2.value) return;
19857
- loading$2.value = true;
19882
+ if (loading$3.value) return;
19883
+ loading$3.value = true;
19858
19884
  const saveWorkflowPromise = async () => {
19859
19885
  if (workflow.value.id === "__EMPTY__") {
19860
19886
  const parentFolderId = route.query.folderId;
@@ -19875,7 +19901,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19875
19901
  toast.showError(error$2, i18n$2.baseText("workflows.shareModal.onSave.error.title"));
19876
19902
  } finally {
19877
19903
  modalBus.emit("close");
19878
- loading$2.value = false;
19904
+ loading$3.value = false;
19879
19905
  }
19880
19906
  };
19881
19907
  const onCloseModal = async () => {
@@ -19897,7 +19923,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
19897
19923
  if (workflow.value.id !== "__EMPTY__") await workflowsStore.fetchWorkflow(workflow.value.id);
19898
19924
  if (isHomeTeamProject.value && workflow.value.homeProject) teamProject.value = await projectsStore.fetchProject(workflow.value.homeProject.id);
19899
19925
  }
19900
- loading$2.value = false;
19926
+ loading$3.value = false;
19901
19927
  };
19902
19928
  onMounted(async () => {
19903
19929
  await initialize();
@@ -20013,7 +20039,7 @@ var WorkflowShareModal_ee_vue_vue_type_script_setup_true_lang_default = /* @__PU
20013
20039
  _: 1
20014
20040
  })) : withDirectives((openBlock(), createBlock(unref(N8nButton_default), {
20015
20041
  key: 1,
20016
- loading: loading$2.value,
20042
+ loading: loading$3.value,
20017
20043
  disabled: !isDirty.value,
20018
20044
  "data-test-id": "workflow-sharing-modal-save-button",
20019
20045
  onClick: onSave
@@ -20041,162 +20067,11 @@ var WorkflowShareModal_ee_vue_vue_type_style_index_0_lang_module_default = {
20041
20067
  roleSelectRemoveOption: "_roleSelectRemoveOption_1fvpr_155"
20042
20068
  };
20043
20069
  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
20070
  var DiffBadge_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
20196
20071
  __name: "DiffBadge",
20197
20072
  props: { type: {} },
20198
20073
  setup(__props) {
20199
- useCssVars((_ctx) => ({ "7d406fae": backgroundColor.value }));
20074
+ useCssVars((_ctx) => ({ "2f23a409": backgroundColor.value }));
20200
20075
  const props = __props;
20201
20076
  const label$1 = computed(() => {
20202
20077
  switch (props.type) {
@@ -24706,7 +24581,7 @@ var NodeDiff_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
24706
24581
  };
24707
24582
  }
24708
24583
  });
24709
- var NodeDiff_vue_vue_type_style_index_0_lang_module_default = { codeDiff: "_codeDiff_it86q_124" };
24584
+ var NodeDiff_vue_vue_type_style_index_0_lang_module_default = { codeDiff: "_codeDiff_itzsi_124" };
24710
24585
  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
24586
  var [useProvideViewportSync, useInject] = createInjectionState(() => {
24712
24587
  const onViewportChange = createEventHook();
@@ -24824,6 +24699,111 @@ var SyncedWorkflowCanvas_default = /* @__PURE__ */ defineComponent({
24824
24699
  };
24825
24700
  }
24826
24701
  });
24702
+ function mapConnections(connections) {
24703
+ return connections.reduce((acc, connection) => {
24704
+ acc.set.add(connection.id);
24705
+ acc.map.set(connection.id, connection);
24706
+ return acc;
24707
+ }, {
24708
+ set: /* @__PURE__ */ new Set(),
24709
+ map: /* @__PURE__ */ new Map()
24710
+ });
24711
+ }
24712
+ function createWorkflowRefs(workflow, createWorkflowObject) {
24713
+ const workflowRef = computed(() => toValue(workflow));
24714
+ const workflowNodes = ref([]);
24715
+ const workflowConnections = ref({});
24716
+ const workflowObjectRef = shallowRef(createWorkflowObject([], {}));
24717
+ watchEffect(() => {
24718
+ const workflowValue = workflowRef.value;
24719
+ if (workflowValue) {
24720
+ workflowObjectRef.value = createWorkflowObject(workflowValue.nodes, workflowValue.connections);
24721
+ workflowNodes.value = workflowValue.nodes;
24722
+ workflowConnections.value = workflowValue.connections;
24723
+ }
24724
+ });
24725
+ return {
24726
+ workflowRef,
24727
+ workflowNodes,
24728
+ workflowConnections,
24729
+ workflowObjectRef
24730
+ };
24731
+ }
24732
+ function createWorkflowDiff(workflowRef, workflowNodes, workflowConnections, workflowObjectRef) {
24733
+ return computed(() => {
24734
+ if (!workflowRef.value) return {
24735
+ workflow: void 0,
24736
+ nodes: [],
24737
+ connections: []
24738
+ };
24739
+ const { nodes: nodes$4, connections } = useCanvasMapping({
24740
+ nodes: workflowNodes,
24741
+ connections: workflowConnections,
24742
+ workflowObject: workflowObjectRef
24743
+ });
24744
+ return {
24745
+ workflow: workflowRef,
24746
+ nodes: nodes$4.value.map((node) => {
24747
+ node.draggable = false;
24748
+ node.selectable = false;
24749
+ node.focusable = false;
24750
+ return node;
24751
+ }),
24752
+ connections: connections.value.map((connection) => {
24753
+ connection.selectable = false;
24754
+ connection.focusable = false;
24755
+ connection.label = "";
24756
+ return connection;
24757
+ })
24758
+ };
24759
+ });
24760
+ }
24761
+ const useWorkflowDiff = (sourceWorkflow, targetWorkflow) => {
24762
+ const workflowsStore = useWorkflowsStore();
24763
+ const nodeTypesStore = useNodeTypesStore();
24764
+ const sourceRefs = createWorkflowRefs(sourceWorkflow, workflowsStore.createWorkflowObject);
24765
+ const targetRefs = createWorkflowRefs(targetWorkflow, workflowsStore.createWorkflowObject);
24766
+ const source = createWorkflowDiff(sourceRefs.workflowRef, sourceRefs.workflowNodes, sourceRefs.workflowConnections, sourceRefs.workflowObjectRef);
24767
+ const target = createWorkflowDiff(targetRefs.workflowRef, targetRefs.workflowNodes, targetRefs.workflowConnections, targetRefs.workflowObjectRef);
24768
+ const nodesDiff = computed(() => {
24769
+ const sourceNodes = source.value?.workflow?.value?.nodes ?? [];
24770
+ const targetNodes = target.value?.workflow?.value?.nodes ?? [];
24771
+ if (sourceNodes.length === 0 && targetNodes.length === 0) return /* @__PURE__ */ new Map();
24772
+ return compareWorkflowsNodes(sourceNodes, targetNodes);
24773
+ });
24774
+ function formatConnectionDiff(id, status, collection, accumulator) {
24775
+ const connection = collection.get(id);
24776
+ if (!connection) return;
24777
+ const sourceNode = nodesDiff.value.get(connection.source)?.node;
24778
+ const targetNode = nodesDiff.value.get(connection.target)?.node;
24779
+ accumulator.set(id, {
24780
+ status,
24781
+ connection: {
24782
+ id,
24783
+ source: sourceNode,
24784
+ target: targetNode,
24785
+ sourceType: sourceNode ? nodeTypesStore.getNodeType(sourceNode.type, sourceNode.typeVersion) : null,
24786
+ targetType: targetNode ? nodeTypesStore.getNodeType(targetNode.type, targetNode.typeVersion) : null
24787
+ }
24788
+ });
24789
+ }
24790
+ return {
24791
+ source,
24792
+ target,
24793
+ nodesDiff,
24794
+ connectionsDiff: computed(() => {
24795
+ const sourceConnections = mapConnections(source.value?.connections ?? []);
24796
+ const targetConnections = mapConnections(target.value?.connections ?? []);
24797
+ if (sourceConnections.set.size === 0 && targetConnections.set.size === 0) return /* @__PURE__ */ new Map();
24798
+ const added$1 = targetConnections.set.difference(sourceConnections.set);
24799
+ const removed = sourceConnections.set.difference(targetConnections.set);
24800
+ const acc = /* @__PURE__ */ new Map();
24801
+ for (const id of added$1.values()) formatConnectionDiff(id, NodeDiffStatus.Added, targetConnections.map, acc);
24802
+ for (const id of removed.values()) formatConnectionDiff(id, NodeDiffStatus.Deleted, sourceConnections.map, acc);
24803
+ return acc;
24804
+ })
24805
+ };
24806
+ };
24827
24807
  function removeWorkflowExecutionData(workflow) {
24828
24808
  if (!workflow) return workflow;
24829
24809
  const { pinData,...cleanWorkflow } = workflow;
@@ -24885,7 +24865,7 @@ var HighlightedEdge_default = /* @__PURE__ */ defineComponent({
24885
24865
  key: segment[0],
24886
24866
  style: {
24887
24867
  strokeWidth: 15,
24888
- stroke: "var(--edge-highlight-color)"
24868
+ stroke: "var(--edge--color--highlight)"
24889
24869
  },
24890
24870
  path: segment[0],
24891
24871
  "interaction-width": 0
@@ -24908,7 +24888,7 @@ var WorkflowDiffAside_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
24908
24888
  props: { node: {} },
24909
24889
  emits: ["close"],
24910
24890
  setup(__props, { emit: __emit }) {
24911
- useCssVars((_ctx) => ({ "389f8962": panelWidth.value }));
24891
+ useCssVars((_ctx) => ({ "3eb5ea38": panelWidth.value }));
24912
24892
  const props = __props;
24913
24893
  const nodeTypesStore = useNodeTypesStore();
24914
24894
  const nodeType = computed(() => nodeTypesStore.getNodeType(props.node.type, props.node.typeVersion));
@@ -25505,33 +25485,33 @@ var WorkflowDiffModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
25505
25485
  };
25506
25486
  }
25507
25487
  });
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";
25488
+ const workflowDiffModal = "_workflowDiffModal_1tkg3_124";
25489
+ const sourceBadge = "_sourceBadge_1tkg3_138";
25490
+ const tabs = "_tabs_1tkg3_154";
25491
+ const popper = "_popper_1tkg3_165";
25492
+ const changes = "_changes_1tkg3_172";
25493
+ const clickableChange = "_clickableChange_1tkg3_181";
25494
+ const changesNested = "_changesNested_1tkg3_185";
25495
+ const clickableChangeActive = "_clickableChangeActive_1tkg3_206";
25496
+ const nodeName = "_nodeName_1tkg3_210";
25497
+ const separator = "_separator_1tkg3_218";
25498
+ const deleted = "_deleted_1tkg3_227";
25499
+ const added = "_added_1tkg3_228";
25500
+ const modified = "_modified_1tkg3_229";
25501
+ const equal = "_equal_1tkg3_295";
25502
+ const circleBadge = "_circleBadge_1tkg3_344";
25503
+ const dropdownContent = "_dropdownContent_1tkg3_358";
25504
+ const noNumberDiff = "_noNumberDiff_1tkg3_370";
25505
+ const workflowDiffContent = "_workflowDiffContent_1tkg3_379";
25506
+ const workflowDiff = "_workflowDiff_1tkg3_124";
25507
+ const workflowDiffPanel = "_workflowDiffPanel_1tkg3_391";
25508
+ const emptyWorkflow = "_emptyWorkflow_1tkg3_397";
25509
+ const header$4 = "_header_1tkg3_405";
25510
+ const navigationButton = "_navigationButton_1tkg3_410";
25511
+ const backButton = "_backButton_1tkg3_414";
25512
+ const headerLeft = "_headerLeft_1tkg3_418";
25513
+ const headerRight = "_headerRight_1tkg3_419";
25514
+ const emptyState = "_emptyState_1tkg3_424";
25535
25515
  var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25536
25516
  workflowDiffModal,
25537
25517
  sourceBadge,
@@ -25547,9 +25527,9 @@ var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25547
25527
  added,
25548
25528
  modified,
25549
25529
  equal,
25550
- "edge-deleted": "_edge-deleted_1h4fi_330",
25551
- "edge-added": "_edge-added_1h4fi_335",
25552
- "edge-equal": "_edge-equal_1h4fi_340",
25530
+ "edge-deleted": "_edge-deleted_1tkg3_330",
25531
+ "edge-added": "_edge-added_1tkg3_335",
25532
+ "edge-equal": "_edge-equal_1tkg3_340",
25553
25533
  circleBadge,
25554
25534
  dropdownContent,
25555
25535
  noNumberDiff,
@@ -25557,7 +25537,7 @@ var WorkflowDiffModal_vue_vue_type_style_index_0_lang_module_default = {
25557
25537
  workflowDiff,
25558
25538
  workflowDiffPanel,
25559
25539
  emptyWorkflow,
25560
- header: header$3,
25540
+ header: header$4,
25561
25541
  navigationButton,
25562
25542
  backButton,
25563
25543
  headerLeft,
@@ -25687,7 +25667,7 @@ var DynamicModalLoader_default = /* @__PURE__ */ defineComponent({
25687
25667
  };
25688
25668
  }
25689
25669
  });
25690
- var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
25670
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ defineComponent({
25691
25671
  __name: "TemplateCard",
25692
25672
  props: {
25693
25673
  template: {},
@@ -25748,7 +25728,7 @@ var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */
25748
25728
  };
25749
25729
  }
25750
25730
  });
25751
- var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
25731
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$2 = {
25752
25732
  nodes: "_nodes_176ta_123",
25753
25733
  nodeIcon: "_nodeIcon_176ta_128",
25754
25734
  suggestion: "_suggestion_176ta_139",
@@ -25756,7 +25736,7 @@ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
25756
25736
  user: "_user_176ta_152",
25757
25737
  avatar: "_avatar_176ta_158"
25758
25738
  };
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 }]]);
25739
+ 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
25740
  var _hoisted_1$4 = ["src"];
25761
25741
  var YoutubeCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
25762
25742
  __name: "YoutubeCard",
@@ -25806,7 +25786,7 @@ var YoutubeCard_vue_vue_type_style_index_0_lang_module_default = {
25806
25786
  video: "_video_10cyk_129"
25807
25787
  };
25808
25788
  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({
25789
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$2 = /* @__PURE__ */ defineComponent({
25810
25790
  __name: "NodeRecommendationModal",
25811
25791
  props: {
25812
25792
  modalName: {},
@@ -25825,7 +25805,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25825
25805
  const starterTemplates = ref([]);
25826
25806
  const popularTemplates = ref([]);
25827
25807
  const isLoadingTemplates = ref(false);
25828
- const nodes$3 = computed(() => userSelectedNodes.map((nodeName$2) => {
25808
+ const nodes$4 = computed(() => userSelectedNodes.map((nodeName$2) => {
25829
25809
  return {
25830
25810
  value: nodeName$2,
25831
25811
  label: nodeTypesStore.getNodeType(nodeName$2)?.displayName ?? ""
@@ -25853,7 +25833,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25853
25833
  }
25854
25834
  watchEffect(async () => {
25855
25835
  if (!selectedNode.value) return;
25856
- const nodeDisplayName = nodes$3.value.find((n) => n.value === selectedNode.value)?.label;
25836
+ const nodeDisplayName = nodes$4.value.find((n) => n.value === selectedNode.value)?.label;
25857
25837
  if (nodeDisplayName) trackModalTabView(nodeDisplayName);
25858
25838
  isLoadingTemplates.value = true;
25859
25839
  try {
@@ -25880,7 +25860,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25880
25860
  header: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.header) }, [createVNode(unref(N8nRadioButtons_default), {
25881
25861
  modelValue: selectedNode.value,
25882
25862
  "onUpdate:modelValue": [_cache[0] || (_cache[0] = ($event) => selectedNode.value = $event), onSelectedNodeChange],
25883
- options: nodes$3.value,
25863
+ options: nodes$4.value,
25884
25864
  size: "medium"
25885
25865
  }, {
25886
25866
  option: withCtx((option) => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.tab) }, [createVNode(NodeIcon_default, {
@@ -25913,7 +25893,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25913
25893
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templateRecoV2.loadingTemplates")), 1)]),
25914
25894
  _: 1
25915
25895
  })], 2)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(starterTemplates.value, (template) => {
25916
- return openBlock(), createBlock(TemplateCard_default$1, {
25896
+ return openBlock(), createBlock(TemplateCard_default$2, {
25917
25897
  key: template.id,
25918
25898
  template,
25919
25899
  "current-node-name": selectedNode.value
@@ -25940,7 +25920,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25940
25920
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templateRecoV2.loadingTemplates")), 1)]),
25941
25921
  _: 1
25942
25922
  })], 2)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(popularTemplates.value, (template) => {
25943
- return openBlock(), createBlock(TemplateCard_default$1, {
25923
+ return openBlock(), createBlock(TemplateCard_default$2, {
25944
25924
  key: template.id,
25945
25925
  template,
25946
25926
  "current-node-name": selectedNode.value
@@ -25973,7 +25953,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @
25973
25953
  };
25974
25954
  }
25975
25955
  });
25976
- var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
25956
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$2 = {
25977
25957
  header: "_header_1v7vh_123",
25978
25958
  tab: "_tab_1v7vh_128",
25979
25959
  suggestions: "_suggestions_1v7vh_132",
@@ -25981,8 +25961,8 @@ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
25981
25961
  videos: "_videos_1v7vh_147",
25982
25962
  loading: "_loading_1v7vh_154"
25983
25963
  };
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({
25964
+ 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 }]]);
25965
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
25986
25966
  __name: "TemplateCard",
25987
25967
  props: { template: {} },
25988
25968
  setup(__props) {
@@ -26054,7 +26034,7 @@ var TemplateCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
26054
26034
  };
26055
26035
  }
26056
26036
  });
26057
- var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26037
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default$1 = {
26058
26038
  nodes: "_nodes_y9wwt_123",
26059
26039
  nodeIcon: "_nodeIcon_y9wwt_128",
26060
26040
  remainingNodes: "_remainingNodes_y9wwt_137",
@@ -26062,9 +26042,9 @@ var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26062
26042
  suggestion: "_suggestion_y9wwt_152",
26063
26043
  content: "_content_y9wwt_167"
26064
26044
  };
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 }]]);
26045
+ 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
26046
  var _hoisted_1$3 = { key: 1 };
26067
- var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26047
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default$1 = /* @__PURE__ */ defineComponent({
26068
26048
  __name: "NodeRecommendationModal",
26069
26049
  setup(__props) {
26070
26050
  const uiStore = useUIStore();
@@ -26115,7 +26095,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__
26115
26095
  default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("experiments.personalizedTemplatesV3.loadingTemplates")), 1)]),
26116
26096
  _: 1
26117
26097
  })], 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, {
26098
+ return openBlock(), createBlock(TemplateCard_default$1, {
26119
26099
  key: template.id,
26120
26100
  template
26121
26101
  }, null, 8, ["template"]);
@@ -26148,7 +26128,7 @@ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__
26148
26128
  };
26149
26129
  }
26150
26130
  });
26151
- var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26131
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default$1 = {
26152
26132
  modal: "_modal_2tsoq_123",
26153
26133
  header: "_header_2tsoq_127",
26154
26134
  templates: "_templates_2tsoq_132",
@@ -26158,7 +26138,143 @@ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26158
26138
  footerText: "_footerText_2tsoq_165",
26159
26139
  footerIcon: "_footerIcon_2tsoq_170"
26160
26140
  };
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 }]]);
26141
+ 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 }]]);
26142
+ var TemplateCard_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26143
+ __name: "TemplateCard",
26144
+ props: { template: {} },
26145
+ setup(__props) {
26146
+ const props = __props;
26147
+ const nodeTypesStore = useNodeTypesStore();
26148
+ const { getTemplateRoute, trackTemplateTileClick } = useTemplatesDataQualityStore();
26149
+ const router = useRouter();
26150
+ const uiStore = useUIStore();
26151
+ const locale = useI18n();
26152
+ const templateNodes = computed(() => {
26153
+ if (!props.template?.nodes) return [];
26154
+ const uniqueNodeTypes = new Set(props.template.nodes.map((node) => node.name));
26155
+ return Array.from(uniqueNodeTypes).slice(0, 2).map((nodeType) => nodeTypesStore.getNodeType(nodeType)).filter(Boolean);
26156
+ });
26157
+ const handleUseTemplate = async () => {
26158
+ trackTemplateTileClick(props.template.id);
26159
+ await router.push(getTemplateRoute(props.template.id));
26160
+ uiStore.closeModal(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY);
26161
+ };
26162
+ return (_ctx, _cache) => {
26163
+ return openBlock(), createBlock(unref(N8nCard_default), {
26164
+ class: normalizeClass(_ctx.$style.suggestion),
26165
+ onClick: handleUseTemplate
26166
+ }, {
26167
+ default: withCtx(() => [createBaseVNode("div", null, [templateNodes.value.length > 0 ? (openBlock(), createElementBlock("div", {
26168
+ key: 0,
26169
+ class: normalizeClass([_ctx.$style.nodes, "mb-s"])
26170
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(templateNodes.value, (nodeType) => {
26171
+ return openBlock(), createElementBlock("div", {
26172
+ key: nodeType.name,
26173
+ class: normalizeClass(_ctx.$style.nodeIcon)
26174
+ }, [createVNode(NodeIcon_default, {
26175
+ size: 18,
26176
+ "stroke-width": 1.5,
26177
+ "node-type": nodeType
26178
+ }, null, 8, ["node-type"])], 2);
26179
+ }), 128))], 2)) : createCommentVNode("", true), createVNode(unref(N8nText_default), {
26180
+ size: "medium",
26181
+ bold: true
26182
+ }, {
26183
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.template.name), 1)]),
26184
+ _: 1
26185
+ })]), createBaseVNode("div", { class: normalizeClass([_ctx.$style.actions, "mt-m"]) }, [createVNode(unref(N8nButton_default), {
26186
+ label: unref(locale).baseText("workflows.templateRecoV2.useTemplate"),
26187
+ type: "secondary",
26188
+ size: "mini",
26189
+ onClick: withModifiers(handleUseTemplate, ["stop"])
26190
+ }, null, 8, ["label"])], 2)]),
26191
+ _: 1
26192
+ }, 8, ["class"]);
26193
+ };
26194
+ }
26195
+ });
26196
+ var TemplateCard_vue_vue_type_style_index_0_lang_module_default = {
26197
+ nodes: "_nodes_1mch4_123",
26198
+ nodeIcon: "_nodeIcon_1mch4_128",
26199
+ suggestion: "_suggestion_1mch4_139",
26200
+ actions: "_actions_1mch4_147"
26201
+ };
26202
+ 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 }]]);
26203
+ var NodeRecommendationModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
26204
+ __name: "NodeRecommendationModal",
26205
+ setup(__props) {
26206
+ const uiStore = useUIStore();
26207
+ const locale = useI18n();
26208
+ const templatesStore = useTemplatesDataQualityStore();
26209
+ const closeModal = () => {
26210
+ uiStore.closeModal(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY);
26211
+ };
26212
+ const templates$1 = ref([]);
26213
+ const isLoadingTemplates = ref(false);
26214
+ const nodeTypesStore = useNodeTypesStore();
26215
+ const trackTemplatesShown = (templateIds) => {
26216
+ templateIds.forEach((id, index) => {
26217
+ templatesStore.trackTemplateShown(id, index + 1);
26218
+ });
26219
+ };
26220
+ onMounted(async () => {
26221
+ isLoadingTemplates.value = true;
26222
+ try {
26223
+ await nodeTypesStore.loadNodeTypesIfNotLoaded();
26224
+ const ids = templatesStore.getRandomTemplateIds();
26225
+ const promises = ids.map(async (id) => await templatesStore.getTemplateData(id));
26226
+ templates$1.value = (await Promise.allSettled(promises)).filter((r) => r.status === "fulfilled" && r.value !== null).map((r) => r.value);
26227
+ trackTemplatesShown(ids);
26228
+ } finally {
26229
+ isLoadingTemplates.value = false;
26230
+ }
26231
+ });
26232
+ return (_ctx, _cache) => {
26233
+ return openBlock(), createBlock(Modal_default, {
26234
+ name: unref(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY),
26235
+ "min-width": "min(800px, 90vw)",
26236
+ "max-height": "90vh",
26237
+ onClose: closeModal,
26238
+ onCanceled: closeModal
26239
+ }, {
26240
+ header: withCtx(() => [createBaseVNode("div", { class: normalizeClass(_ctx.$style.header) }, [createVNode(unref(N8nText_default), {
26241
+ tag: "h2",
26242
+ size: "large",
26243
+ bold: true
26244
+ }, {
26245
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("experiments.templatesDataQuality.modalTitle")), 1)]),
26246
+ _: 1
26247
+ })], 2)]),
26248
+ content: withCtx(() => [isLoadingTemplates.value ? (openBlock(), createElementBlock("div", {
26249
+ key: 0,
26250
+ class: normalizeClass(_ctx.$style.loading)
26251
+ }, [createVNode(unref(N8nSpinner_default), { size: "small" }), createVNode(unref(N8nText_default), { size: "small" }, {
26252
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templatesDataQuality.loadingTemplates")), 1)]),
26253
+ _: 1
26254
+ })], 2)) : (openBlock(), createElementBlock("div", {
26255
+ key: 1,
26256
+ class: normalizeClass(_ctx.$style.suggestions)
26257
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(templates$1.value, (template) => {
26258
+ return openBlock(), createBlock(TemplateCard_default, {
26259
+ key: template.id,
26260
+ template
26261
+ }, null, 8, ["template"]);
26262
+ }), 128))], 2)), createBaseVNode("div", { class: normalizeClass(_ctx.$style.seeMore) }, [createVNode(unref(N8nLink_default), { href: unref(TEMPLATES_URLS).BASE_WEBSITE_URL }, {
26263
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("workflows.templatesDataQuality.seeMoreTemplates")), 1)]),
26264
+ _: 1
26265
+ }, 8, ["href"])], 2)]),
26266
+ _: 1
26267
+ }, 8, ["name"]);
26268
+ };
26269
+ }
26270
+ });
26271
+ var NodeRecommendationModal_vue_vue_type_style_index_0_lang_module_default = {
26272
+ header: "_header_64lx3_123",
26273
+ suggestions: "_suggestions_64lx3_128",
26274
+ loading: "_loading_64lx3_135",
26275
+ seeMore: "_seeMore_64lx3_144"
26276
+ };
26277
+ 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
26278
  var _hoisted_1$2 = { key: 2 };
26163
26279
  var VALUE_MAX_LENGTH = 1e3;
26164
26280
  var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
@@ -26175,7 +26291,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26175
26291
  const environmentsStore = useEnvironmentsStore();
26176
26292
  const projectsStore = useProjectsStore();
26177
26293
  const modalBus = createEventBus();
26178
- const loading$2 = ref(false);
26294
+ const loading$3 = ref(false);
26179
26295
  const validateOnBlur = ref(false);
26180
26296
  const keyValidationRules = [
26181
26297
  { name: "REQUIRED" },
@@ -26258,7 +26374,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26258
26374
  validateOnBlur.value = true;
26259
26375
  if (!isValid.value) return;
26260
26376
  try {
26261
- loading$2.value = true;
26377
+ loading$3.value = true;
26262
26378
  const variablePayload = {
26263
26379
  key: form$3.key,
26264
26380
  value: form$3.value
@@ -26273,7 +26389,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26273
26389
  } catch (error$2) {
26274
26390
  showError(error$2, i18n$2.baseText("variables.errors.save"));
26275
26391
  } finally {
26276
- loading$2.value = false;
26392
+ loading$3.value = false;
26277
26393
  }
26278
26394
  }
26279
26395
  return (_ctx, _cache) => {
@@ -26402,7 +26518,7 @@ var VariableModal_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
26402
26518
  "data-test-id": "variable-modal-cancel-button",
26403
26519
  onClick: closeModal
26404
26520
  }, null, 8, ["label"]), createVNode(unref(N8nButton_default), {
26405
- loading: loading$2.value,
26521
+ loading: loading$3.value,
26406
26522
  disabled: !isValid.value,
26407
26523
  label: unref(i18n$2).baseText("variables.modal.button.save"),
26408
26524
  "data-test-id": "variable-modal-save-button",
@@ -26740,6 +26856,13 @@ var Modals_default = /* @__PURE__ */ defineComponent({
26740
26856
  }, null, 8, ["modal-name", "data"])]),
26741
26857
  _: 1
26742
26858
  }, 8, ["name"]),
26859
+ createVNode(ModalRoot_default, { name: unref(EXPERIMENT_TEMPLATES_DATA_QUALITY_KEY) }, {
26860
+ default: withCtx(({ modalName, data }) => [createVNode(NodeRecommendationModal_default$2, {
26861
+ "modal-name": modalName,
26862
+ data
26863
+ }, null, 8, ["modal-name", "data"])]),
26864
+ _: 1
26865
+ }, 8, ["name"]),
26743
26866
  createVNode(ModalRoot_default, { name: unref(PRE_BUILT_AGENTS_MODAL_KEY) }, {
26744
26867
  default: withCtx(({ modalName, data }) => [createVNode(PreBuiltAgentsModal_default, {
26745
26868
  "modal-name": modalName,
@@ -27032,7 +27155,7 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27032
27155
  const { toastBottomOffset, askAiFloatingButtonBottomOffset } = useFloatingUiOffsets();
27033
27156
  useHistoryHelper(route);
27034
27157
  useWorkflowDiffRouting();
27035
- const loading$2 = ref(true);
27158
+ const loading$3 = ref(true);
27036
27159
  const defaultLocale = computed(() => rootStore.defaultLocale);
27037
27160
  const isDemoMode = computed(() => route.name === VIEWS.DEMO);
27038
27161
  const hasContentFooter = ref(false);
@@ -27043,7 +27166,7 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27043
27166
  onMounted(async () => {
27044
27167
  setAppZIndexes();
27045
27168
  logHiringBanner();
27046
- loading$2.value = false;
27169
+ loading$3.value = false;
27047
27170
  window.addEventListener("resize", updateGridWidth);
27048
27171
  await updateGridWidth();
27049
27172
  });
@@ -27077,11 +27200,11 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27077
27200
  axios_default.defaults.headers.common["Accept-Language"] = newLocale;
27078
27201
  use(newLocale);
27079
27202
  }, { immediate: true });
27080
- useExposeCssVar("--toast-bottom-offset", toastBottomOffset);
27081
- useExposeCssVar("--ask-assistant-floating-button-bottom-offset", askAiFloatingButtonBottomOffset);
27203
+ useExposeCssVar("--toast--offset", toastBottomOffset);
27204
+ useExposeCssVar("--ask-assistant--floating-button--margin-bottom", askAiFloatingButtonBottomOffset);
27082
27205
  return (_ctx, _cache) => {
27083
27206
  const _component_RouterView = resolveComponent("RouterView");
27084
- return loading$2.value ? (openBlock(), createBlock(LoadingView_default, { key: 0 })) : (openBlock(), createElementBlock("div", {
27207
+ return loading$3.value ? (openBlock(), createBlock(LoadingView_default, { key: 0 })) : (openBlock(), createElementBlock("div", {
27085
27208
  key: 1,
27086
27209
  id: "n8n-app",
27087
27210
  class: normalizeClass({
@@ -27153,17 +27276,17 @@ var App_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComp
27153
27276
  };
27154
27277
  }
27155
27278
  });
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";
27279
+ const container = "_container_jj6dn_123";
27280
+ const banners = "_banners_jj6dn_139";
27281
+ const content = "_content_jj6dn_144";
27282
+ const contentFooter = "_contentFooter_jj6dn_152";
27283
+ const contentWrapper = "_contentWrapper_jj6dn_162";
27284
+ const header = "_header_jj6dn_176";
27285
+ const sidebar = "_sidebar_jj6dn_183";
27286
+ const modals = "_modals_jj6dn_188";
27164
27287
  var App_vue_vue_type_style_index_0_lang_module_default = {
27165
27288
  container,
27166
- "app-grid": "_app-grid_1tlmi_130",
27289
+ "app-grid": "_app-grid_jj6dn_130",
27167
27290
  banners,
27168
27291
  content,
27169
27292
  contentFooter,