n8n-editor-ui 1.104.2 → 1.105.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 (126) hide show
  1. package/dist/assets/{AnimatedSpinner-GulG2K0j.js → AnimatedSpinner-KrBSvZAV.js} +1 -1
  2. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-dlSydCdY.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYZZXJH6.js} +1 -1
  3. package/dist/assets/{AuthView-K77orkco.js → AuthView-D6eo8WqA.js} +2 -2
  4. package/dist/assets/{ChangePasswordView-Ps0M1YCZ.js → ChangePasswordView-DGYeaAiT.js} +3 -3
  5. package/dist/assets/CollectionParameter-BOrouU0U.js +4 -0
  6. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DJZbQ3zM.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-f1op8mly.js} +1 -1
  7. package/dist/assets/{CredentialsView-V5bvb24F.js → CredentialsView-BcfCphWB.js} +8 -8
  8. package/dist/assets/{DemoFooter-BcXdes2-.js → DemoFooter-BjC82ypS.js} +6 -9
  9. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-67zqyEke.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Bbzwpi3B.js} +1 -1
  10. package/dist/assets/{EntityNotFound-BKMlLFtf.js → EntityNotFound-BgD3YeZN.js} +1 -1
  11. package/dist/assets/{EntityUnAuthorised-CN42iNdk.js → EntityUnAuthorised-CMhBQl6g.js} +1 -1
  12. package/dist/assets/{ErrorView-DUbN9hBM.js → ErrorView-CuhR0zuH.js} +1 -1
  13. package/dist/assets/{EvaluationsRootView-BLhz1u8R.js → EvaluationsRootView-BrCKiHN_.js} +1 -1
  14. package/dist/assets/{EvaluationsView-DuVi45xL.js → EvaluationsView-BxxTAji5.js} +3 -3
  15. package/dist/assets/{ExecutionsTime-Bo7IOE5K.css → ExecutionsTime-etWexlXm.css} +6 -6
  16. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-BMSYYCpL.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-ClW7UXP9.js} +23 -30
  17. package/dist/assets/{ExecutionsView-Ca41O1Nf.js → ExecutionsView-ByWqY6xs.js} +8 -9
  18. package/dist/assets/{FixedCollectionParameter-Cfm6gcPO.js → FixedCollectionParameter-BR3l_nXY.js} +1 -1
  19. package/dist/assets/{ForgotMyPasswordView-bsFRLru8.js → ForgotMyPasswordView-s00njJSu.js} +3 -3
  20. package/dist/assets/{InfoAccordion-CQxmodgt.js → InfoAccordion-Co43liPo.js} +1 -1
  21. package/dist/assets/{InsightsChartAverageRuntime-By2eMwwf.js → InsightsChartAverageRuntime-HxSVGWaN.js} +4 -4
  22. package/dist/assets/{InsightsChartFailed-CKunAaEe.js → InsightsChartFailed-yHd0Gpbr.js} +4 -4
  23. package/dist/assets/{InsightsChartFailureRate-DMp875IT.js → InsightsChartFailureRate-CCwG6i9u.js} +4 -4
  24. package/dist/assets/{InsightsChartTimeSaved-BVDmM3Jq.js → InsightsChartTimeSaved-3PTTlSuF.js} +4 -4
  25. package/dist/assets/{InsightsChartTotal-DudWdJDx.js → InsightsChartTotal-B2WA_9qw.js} +4 -4
  26. package/dist/assets/{InsightsDashboard-CZ2l2Pku.js → InsightsDashboard-DO-jr92t.js} +10 -10
  27. package/dist/assets/{InsightsPaywall-BdmIslpa.js → InsightsPaywall-BbZcrEbM.js} +1 -1
  28. package/dist/assets/{InsightsSummary-w3WEmFKv.js → InsightsSummary--aEmQRI4.js} +1 -1
  29. package/dist/assets/{InsightsTableWorkflows-qGUEcwas.js → InsightsTableWorkflows-lc8G_-qM.js} +5 -5
  30. package/dist/assets/{Logo-BC2rsqUH.js → Logo-D9KxmIRr.js} +1 -1
  31. package/dist/assets/{LogsPanel-D0xdq4fV.css → LogsPanel-B-Tmod-K.css} +25 -22
  32. package/dist/assets/{LogsPanel--mFob2p-.js → LogsPanel-CDdiZKfp.js} +209 -51
  33. package/dist/assets/{MainHeader-CRpvf9kT.js → MainHeader-DNxqTeqI.js} +8 -10
  34. package/dist/assets/{MainSidebar-DLB0Mtz-.js → MainSidebar-C7zFn_hK.js} +2 -3
  35. package/dist/assets/{N8nDataTableServer-IY1qu_eh.js → N8nDataTableServer-Cl57_Vof.js} +1 -1
  36. package/dist/assets/{NodeCreation-D5cN4NVn.js → NodeCreation-CTxrb6V-.js} +16 -13
  37. package/dist/assets/{NodeCreator-vN_S_t4h.js → NodeCreator-DPHEOyqE.js} +11 -20
  38. package/dist/assets/{NodeDetailsView-CvaJNbAN.js → NodeDetailsView-DcgfJrz7.js} +13 -17
  39. package/dist/assets/{NodeDetailsViewV2-BmtPtJ9m.js → NodeDetailsViewV2-BWG5P3xM.js} +27 -31
  40. package/dist/assets/{NodeDetailsViewV2-BxNx4ZUM.css → NodeDetailsViewV2-LLVofUjw.css} +21 -19
  41. package/dist/assets/NodeView-B2097MY0.css +852 -0
  42. package/dist/assets/NodeView-D9WvrTgu.js +2684 -0
  43. package/dist/assets/{ProjectHeader-Je865fMv.js → ProjectHeader-ChNm-STe.js} +2 -2
  44. package/dist/assets/{ProjectSettings-CQVJwtw-.js → ProjectSettings-DpKj5RSh.js} +3 -3
  45. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CBK8ZjPV.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CTVAscYA.js} +1 -1
  46. package/dist/assets/{ResourcesListLayout-CJbm9xyB.js → ResourcesListLayout-B0S1iC0v.js} +3 -3
  47. package/dist/assets/{RunDataJson-BCoH-unC.js → RunDataJson-Bqhe-7k7.js} +3 -6
  48. package/dist/assets/{RunDataJsonActions-BR4qdcyX.js → RunDataJsonActions-D3vGWy5j.js} +13 -13
  49. package/dist/assets/{RunDataParsedAiContent-eXrGoOcO.js → RunDataParsedAiContent-ym1RI0G4.js} +25 -11
  50. package/dist/assets/{RunDataSearch-DqYJtJpv.js → RunDataSearch-DboYj8S4.js} +1 -1
  51. package/dist/assets/{RunDataTable-Dg4A2SH7.js → RunDataTable-lsgpkPXP.js} +1 -2
  52. package/dist/assets/{SamlOnboarding-BG8xlyqL.js → SamlOnboarding-52a51gmP.js} +3 -3
  53. package/dist/assets/{SettingsApiView-KTmBKnrm.js → SettingsApiView-BOYoapSn.js} +1 -1
  54. package/dist/assets/{SettingsCommunityNodesView-4xHpwfXO.js → SettingsCommunityNodesView-B-LLJS2J.js} +4 -4
  55. package/dist/assets/{SettingsExternalSecrets-BzMO_Lt4.js → SettingsExternalSecrets-DiBSEFcn.js} +1 -1
  56. package/dist/assets/{SettingsLdapView-DP6YBq_8.js → SettingsLdapView-C7pQfRRf.js} +1 -1
  57. package/dist/assets/{SettingsLogStreamingView-DGNMrLI3.js → SettingsLogStreamingView-3ELI8Uv1.js} +1 -1
  58. package/dist/assets/{SettingsPersonalView-DhjxYJwQ.js → SettingsPersonalView-BFc-Xlm_.js} +1 -1
  59. package/dist/assets/{SettingsSourceControl-7frv4mbH.js → SettingsSourceControl-Dq_n-nXw.js} +1 -1
  60. package/dist/assets/{SettingsSso-Cxd6o8QN.js → SettingsSso-DSpEzAGp.js} +7 -12
  61. package/dist/assets/{SettingsUsageAndPlan-DvF4_Lc1.js → SettingsUsageAndPlan-CBpzbRIU.js} +1 -1
  62. package/dist/assets/{SettingsUsersView-Bu36S1Te.js → SettingsUsersView-Bm1y_T8a.js} +2 -3
  63. package/dist/assets/{SettingsView-DOsTwYUK.js → SettingsView-Bng6WlsP.js} +1 -1
  64. package/dist/assets/{SetupView-D-VMCZMh.js → SetupView-BRIQwUPt.js} +3 -3
  65. package/dist/assets/{SetupWorkflowCredentialsButton-BODPly2Z.js → SetupWorkflowCredentialsButton-dDtjtfSu.js} +1 -1
  66. package/dist/assets/{SetupWorkflowFromTemplateView-CqdpfFVj.js → SetupWorkflowFromTemplateView-CI0JVV1L.js} +3 -3
  67. package/dist/assets/{SigninView-cVRu5j-8.js → SigninView-DK8rkoWB.js} +3 -3
  68. package/dist/assets/{SignoutView-CW8VFirq.js → SignoutView-e_0o4jxx.js} +1 -1
  69. package/dist/assets/{SignupView-gsWZYNGC.js → SignupView-FVOhOpw-.js} +3 -3
  70. package/dist/assets/{TableBase-BRKRBucr.js → TableBase-Cj1y9F5k.js} +1 -1
  71. package/dist/assets/{Tags-BNRB45Pz.js → Tags-CBGfCmmC.js} +1 -1
  72. package/dist/assets/{TemplateDetails-mQuG63CP.js → TemplateDetails-CnMQ4SNd.js} +4 -4
  73. package/dist/assets/{TemplateList-CtgUPqJm.js → TemplateList-BFz7xEI7.js} +3 -3
  74. package/dist/assets/{TemplatesCollectionView-CQI5crTW.js → TemplatesCollectionView-DeJN7WL0.js} +6 -6
  75. package/dist/assets/{TemplatesSearchView-BZa3AOcp.js → TemplatesSearchView-C67NJac8.js} +3 -3
  76. package/dist/assets/{TemplatesView-DF6SagPm.js → TemplatesView-CGWDhQPo.js} +2 -2
  77. package/dist/assets/{TemplatesWorkflowView-CvX5HsNU.js → TemplatesWorkflowView-Db4Lrng-.js} +6 -6
  78. package/dist/assets/{TriggerPanel-HBJGvERx.js → TriggerPanel-BsLz-pRs.js} +39 -29
  79. package/dist/assets/{TriggerPanel-DJv04feX.css → TriggerPanel-gMtmEr6n.css} +16 -13
  80. package/dist/assets/{VariablesView-CPoLb2Oc.js → VariablesView-CD1FIyRL.js} +5 -5
  81. package/dist/assets/{VueMarkdown-qUi2j4nV.js → VueMarkdown-CngbcsCr.js} +1 -1
  82. package/dist/assets/{WorkerView-B8s5K3iW.js → WorkerView-BotnJ0ku.js} +6 -6
  83. package/dist/assets/{WorkflowActivator-BF3aeJvD.js → WorkflowActivator-1K8wsbSd.js} +2 -2
  84. package/dist/assets/{WorkflowExecutionsInfoAccordion-DYgGSHmP.js → WorkflowExecutionsInfoAccordion-CU6hx_3L.js} +2 -2
  85. package/dist/assets/{WorkflowExecutionsLandingPage-Cwv9wW3D.js → WorkflowExecutionsLandingPage-UWo4e9W8.js} +3 -3
  86. package/dist/assets/{WorkflowExecutionsPreview-CebFW0jc.js → WorkflowExecutionsPreview-B8eXqHzh.js} +7 -6
  87. package/dist/assets/{WorkflowExecutionsView-ByVJI4Pz.js → WorkflowExecutionsView-C22ducS7.js} +6 -8
  88. package/dist/assets/{WorkflowHistory-cmBsnuhU.js → WorkflowHistory-DvlcqHXV.js} +2 -3
  89. package/dist/assets/{WorkflowOnboardingView-FKU0An7V.js → WorkflowOnboardingView-DNQY73v-.js} +1 -1
  90. package/dist/assets/{WorkflowPreview-C6ltvMrC.js → WorkflowPreview-MJeKlvoA.js} +1 -1
  91. package/dist/assets/{WorkflowsView-CyJbJBc8.css → WorkflowsView-DsJIOJ7h.css} +263 -0
  92. package/dist/assets/{WorkflowsView-DVdUTMhK.js → WorkflowsView-RZ-pHlPm.js} +275 -30
  93. package/dist/assets/{aiTemplatesStarterCollection.store-Cb27Gjth.js → aiTemplatesStarterCollection.store-DH0nmNfV.js} +1 -1
  94. package/dist/assets/canvas-BljPOFnp.js +5 -0
  95. package/dist/assets/{chartjs.utils-CWQJCNeW.js → chartjs.utils-CLTmtaex.js} +2 -2
  96. package/dist/assets/{en-BX7CKkqE.js → en-D7cJPQEa.js} +22 -2
  97. package/dist/assets/{global-link-actions-ZZSsCCb8.js → global-link-actions-Db7BnGRk.js} +1 -1
  98. package/dist/assets/{index-iDzwlMUB.js → index-18N9Wtz-.js} +1 -1
  99. package/dist/assets/{index-BWpYwmXd.css → index-BwGKZdwg.css} +15180 -4281
  100. package/dist/assets/{index-CH1Gwq1G.js → index-RWrva8Ef.js} +62284 -30320
  101. package/dist/assets/{pickBy-Q2g87NXo.js → pickBy-DhHOxGbL.js} +1 -1
  102. package/dist/assets/{templateActions-BgBIjbvH.js → templateActions-Djh-A3VE.js} +1 -1
  103. package/dist/assets/{useBeforeUnload-BS005Q-E.js → useBeforeUnload-BMRHkn8C.js} +1 -1
  104. package/dist/assets/{useExecutionDebugging-8PY07RzQ.js → useExecutionDebugging-DbRWzPdv.js} +1 -1
  105. package/dist/assets/{useImportCurlCommand-GQi7001F.js → useImportCurlCommand-CvDE98VZ.js} +1 -2
  106. package/dist/assets/{useProjectPages-DaQM9nKL.js → useProjectPages-B_-trG9U.js} +1 -1
  107. package/dist/assets/{usePushConnection-DyTClShF.js → usePushConnection-BkQdWizJ.js} +3 -3
  108. package/dist/assets/{useWorkflowActivate-C_VG0iz6.js → useWorkflowActivate-IzOtBGNC.js} +1 -1
  109. package/dist/index.html +6 -5
  110. package/dist/static/base-path.js +1 -0
  111. package/dist/static/posthog.init.js +41 -0
  112. package/dist/static/prefers-color-scheme.css +5 -0
  113. package/index.html +3 -2
  114. package/package.json +1 -1
  115. package/tsconfig.json +1 -0
  116. package/vite.config.mts +1 -1
  117. package/dist/assets/ActionDropdown-BmC0wfMx.css +0 -172
  118. package/dist/assets/ActionDropdown-ruV_IoDb.js +0 -172
  119. package/dist/assets/CollectionParameter-DAgR8qc7.js +0 -4
  120. package/dist/assets/FileSaver.min-5FQPbO92.js +0 -81
  121. package/dist/assets/NodeView-CI8gUxrb.js +0 -18815
  122. package/dist/assets/NodeView-G2qfXaOy.css +0 -7402
  123. package/dist/assets/import-curl-DaYg25pW.js +0 -5
  124. package/dist/assets/useExecutionHelpers-9NlZryk2.js +0 -94
  125. package/dist/assets/useKeybindings-2A271Jke.css +0 -2007
  126. package/dist/assets/useKeybindings-qOhJshmS.js +0 -3627
@@ -1916,7 +1916,7 @@
1916
1916
  -------------------------- */
1917
1917
  /* BEM
1918
1918
  -------------------------- */
1919
- .chat-input[data-v-0908f167] {
1919
+ .chat-input[data-v-b2a5be81] {
1920
1920
  display: flex;
1921
1921
  justify-content: center;
1922
1922
  align-items: center;
@@ -1924,16 +1924,16 @@
1924
1924
  flex-direction: column;
1925
1925
  position: relative;
1926
1926
  }
1927
- .chat-input[data-v-0908f167] * {
1927
+ .chat-input[data-v-b2a5be81] * {
1928
1928
  box-sizing: border-box;
1929
1929
  }
1930
- .chat-inputs[data-v-0908f167] {
1930
+ .chat-inputs[data-v-b2a5be81] {
1931
1931
  width: 100%;
1932
1932
  display: flex;
1933
1933
  justify-content: center;
1934
1934
  align-items: flex-end;
1935
1935
  }
1936
- .chat-inputs textarea[data-v-0908f167] {
1936
+ .chat-inputs textarea[data-v-b2a5be81] {
1937
1937
  font-family: inherit;
1938
1938
  font-size: var(--chat--input--font-size);
1939
1939
  width: 100%;
@@ -1950,20 +1950,20 @@
1950
1950
  outline: none;
1951
1951
  line-height: var(--chat--input--line-height, 1.5);
1952
1952
  }
1953
- .chat-inputs textarea[data-v-0908f167]::-moz-placeholder {
1953
+ .chat-inputs textarea[data-v-b2a5be81]::-moz-placeholder {
1954
1954
  font-size: var(--chat--input--placeholder--font-size, var(--chat--input--font-size));
1955
1955
  }
1956
- .chat-inputs textarea[data-v-0908f167]::placeholder {
1956
+ .chat-inputs textarea[data-v-b2a5be81]::placeholder {
1957
1957
  font-size: var(--chat--input--placeholder--font-size, var(--chat--input--font-size));
1958
1958
  }
1959
- .chat-inputs textarea[data-v-0908f167]:focus, .chat-inputs textarea[data-v-0908f167]:hover {
1959
+ .chat-inputs textarea[data-v-b2a5be81]:focus, .chat-inputs textarea[data-v-b2a5be81]:hover {
1960
1960
  border-color: var(--chat--input--border-active, 0);
1961
1961
  }
1962
- .chat-inputs-controls[data-v-0908f167] {
1962
+ .chat-inputs-controls[data-v-b2a5be81] {
1963
1963
  display: flex;
1964
1964
  }
1965
- .chat-input-send-button[data-v-0908f167],
1966
- .chat-input-file-button[data-v-0908f167] {
1965
+ .chat-input-send-button[data-v-b2a5be81],
1966
+ .chat-input-file-button[data-v-b2a5be81] {
1967
1967
  height: var(--chat--textarea--height);
1968
1968
  width: var(--chat--textarea--height);
1969
1969
  background: var(--chat--input--send--button--background, white);
@@ -1976,31 +1976,31 @@
1976
1976
  justify-content: center;
1977
1977
  transition: color var(--chat--transition-duration) ease;
1978
1978
  }
1979
- .chat-input-send-button svg[data-v-0908f167],
1980
- .chat-input-file-button svg[data-v-0908f167] {
1979
+ .chat-input-send-button svg[data-v-b2a5be81],
1980
+ .chat-input-file-button svg[data-v-b2a5be81] {
1981
1981
  min-width: -moz-fit-content;
1982
1982
  min-width: fit-content;
1983
1983
  }
1984
- .chat-input-send-button[disabled][data-v-0908f167],
1985
- .chat-input-file-button[disabled][data-v-0908f167] {
1984
+ .chat-input-send-button[disabled][data-v-b2a5be81],
1985
+ .chat-input-file-button[disabled][data-v-b2a5be81] {
1986
1986
  cursor: no-drop;
1987
1987
  color: var(--chat--color-disabled);
1988
1988
  }
1989
- .chat-input-send-button .chat-input-send-button[data-v-0908f167]:hover, .chat-input-send-button .chat-input-send-button[data-v-0908f167]:focus,
1990
- .chat-input-file-button .chat-input-send-button[data-v-0908f167]:hover,
1991
- .chat-input-file-button .chat-input-send-button[data-v-0908f167]:focus {
1989
+ .chat-input-send-button .chat-input-send-button[data-v-b2a5be81]:hover, .chat-input-send-button .chat-input-send-button[data-v-b2a5be81]:focus,
1990
+ .chat-input-file-button .chat-input-send-button[data-v-b2a5be81]:hover,
1991
+ .chat-input-file-button .chat-input-send-button[data-v-b2a5be81]:focus {
1992
1992
  background: var(--chat--input--send--button--background-hover, var(--chat--input--send--button--background));
1993
1993
  color: var(--chat--input--send--button--color-hover);
1994
1994
  }
1995
- .chat-input-file-button[data-v-0908f167] {
1995
+ .chat-input-file-button[data-v-b2a5be81] {
1996
1996
  background: var(--chat--input--file--button--background, white);
1997
1997
  color: var(--chat--input--file--button--color);
1998
1998
  }
1999
- .chat-input-file-button[data-v-0908f167]:hover {
1999
+ .chat-input-file-button[data-v-b2a5be81]:hover {
2000
2000
  background: var(--chat--input--file--button--background-hover);
2001
2001
  color: var(--chat--input--file--button--color-hover);
2002
2002
  }
2003
- .chat-files[data-v-0908f167] {
2003
+ .chat-files[data-v-b2a5be81] {
2004
2004
  display: flex;
2005
2005
  overflow-x: hidden;
2006
2006
  overflow-y: auto;
@@ -2010,7 +2010,7 @@
2010
2010
  gap: 0.5rem;
2011
2011
  padding: var(--chat--files-spacing);
2012
2012
  }
2013
- .chat-input-left-panel[data-v-0908f167] {
2013
+ .chat-input-left-panel[data-v-b2a5be81] {
2014
2014
  width: var(--chat--input--left--panel--width);
2015
2015
  margin-left: 0.4rem;
2016
2016
  }/* BEM support Func
@@ -3472,7 +3472,10 @@
3472
3472
  -------------------------- */
3473
3473
  /* BEM
3474
3474
  -------------------------- */
3475
- ._title_1ur7r_123 {
3475
+ ._component_qlocg_123 {
3476
+ --color-run-data-background: var(--color-background-light);
3477
+ }
3478
+ ._title_qlocg_127 {
3476
3479
  text-transform: uppercase;
3477
3480
  letter-spacing: 3px;
3478
3481
  }/* BEM support Func
@@ -1,12 +1,15 @@
1
- import { bm as addTokenUsageData, bn as emptyTokenUsageData, bo as isChatNode, bp as NodeConnectionTypes, bq as v4, br as get, bs as isRef, bt as isReactive, bu as isProxy, bv as toRaw, bw as AGENT_LANGCHAIN_NODE_TYPE, bx as MANUAL_CHAT_TRIGGER_NODE_TYPE, by as CHAT_TRIGGER_NODE_TYPE, bz as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bA as usePinnedData, aB as useMessage, aC as MODAL_CONFIRM, a5 as useWorkflowsStore, bB as useLogsStore, b as useRouter, bC as useNodeHelpers, bD as useRunWorkflow, V as VIEWS, bE as chatEventBus, ab as watch, bF as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, J as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, a6 as useRoute, af as useSourceControlStore, bG as useCanvasOperations, bH as useNodeTypesStore, bI as START_NODE_TYPE, e as createBlock, f as createCommentVNode, $ as N8nTooltip, bJ as formatTokenUsageCount, bK as getDefaultExportFromCjs, bL as requireUpperFirst, F as Fragment, as as useTemplateRef, bM as useTimestamp, bN as toTime, bO as toDayMonth, bP as withModifiers, y as renderList, P as normalizeStyle, bQ as _sfc_main$k, a1 as I18nT, N as N8nIcon, a0 as _sfc_main$l, q as N8nButton, K as nextTick, bR as getScrollbarWidth, bS as useVirtualList, bT as toRef, D as mergeProps, H as N8nRadioButtons, bU as inject, bV as toRefs, o as onMounted, bW as normalizeProps, bX as guardReactiveProps, bY as resolveDynamicComponent, bZ as markdownLink, b_ as useFileDialog, b$ as onUnmounted, aT as withDirectives, c0 as vModelText, aZ as withKeys, c1 as useAttrs, c2 as useClipboard, bg as createSlots, aN as useNDVStore, c3 as PiPWindowSymbol, c4 as resolveDirective, a2 as N8nLink, c5 as waitingNodeTooltip, aP as useLocalStorage, c6 as LOG_DETAILS_PANEL_STATE, c7 as KeyboardShortcutTooltip, c8 as N8nResizeWrapper, c9 as useStyles, ca as Workflow, cb as useThrottleFn, cc as parse, cd as shallowRef, T as useUIStore, ae as useCanvasStore, az as useTelemetry, ce as onScopeDispose, I as onBeforeUnmount, cf as applyThemeToBody, cg as useProvideTooltipAppendTo, ch as LOGS_PANEL_STATE, ci as LOCAL_STORAGE_PANEL_HEIGHT, cj as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, ck as LOCAL_STORAGE_PANEL_WIDTH, cl as useActiveElement, cm as ndvEventBus } from "./index-CH1Gwq1G.js";
2
- import { p as parseErrorMetadata, R as RunData, u as useExperimentalNdvStore, c as canvasEventBus, a as useKeybindings } from "./useKeybindings-qOhJshmS.js";
3
- import { _ as __unplugin_components_1 } from "./AnimatedSpinner-GulG2K0j.js";
4
- import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DJZbQ3zM.js";
5
- import { H as HighlightJS, V as VueMarkdown } from "./VueMarkdown-qUi2j4nV.js";
6
- import { N as N8nActionDropdown } from "./ActionDropdown-ruV_IoDb.js";
7
- import "./FileSaver.min-5FQPbO92.js";
8
- import "./useExecutionHelpers-9NlZryk2.js";
1
+ import { bo as addTokenUsageData, bp as emptyTokenUsageData, bq as parseErrorMetadata, br as isChatNode, bs as NodeConnectionTypes, bt as v4, bu as get, bv as isRef, bw as isReactive, bx as isProxy, by as toRaw, bz as AGENT_LANGCHAIN_NODE_TYPE, bA as MANUAL_CHAT_TRIGGER_NODE_TYPE, bB as CHAT_TRIGGER_NODE_TYPE, bC as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bD as usePinnedData, aC as useMessage, aD as MODAL_CONFIRM, a5 as useWorkflowsStore, ad as useRootStore, bE as useLogsStore, b as useRouter, bF as useNodeHelpers, bG as useRunWorkflow, V as VIEWS, bH as chatEventBus, ab as watch, bI as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, J as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, a6 as useRoute, af as useSourceControlStore, bJ as useCanvasOperations, bK as useNodeTypesStore, bL as START_NODE_TYPE, e as createBlock, f as createCommentVNode, $ as N8nTooltip, bM as formatTokenUsageCount, bN as getDefaultExportFromCjs, bO as requireUpperFirst, F as Fragment, as as useTemplateRef, bP as useTimestamp, bQ as toTime, bR as toDayMonth, bS as withModifiers, y as renderList, P as normalizeStyle, bT as NodeIcon, a1 as I18nT, N as N8nIcon, a0 as _sfc_main$k, q as N8nButton, K as nextTick, bU as getScrollbarWidth, bV as useVirtualList, bW as toRef, D as mergeProps, H as N8nRadioButtons, bX as inject, bY as toRefs, o as onMounted, bZ as normalizeProps, b_ as guardReactiveProps, b$ as resolveDynamicComponent, c0 as markdownLink, c1 as useFileDialog, c2 as onUnmounted, aV as withDirectives, c3 as vModelText, a$ as withKeys, c4 as useAttrs, c5 as useClipboard, bi as createSlots, aP as useNDVStore, c6 as PiPWindowSymbol, c7 as resolveDirective, c8 as RunData, a2 as N8nLink, c9 as waitingNodeTooltip, aR as useLocalStorage, ca as LOG_DETAILS_PANEL_STATE, cb as KeyboardShortcutTooltip, cc as N8nResizeWrapper, cd as useStyles, ay as N8nActionDropdown, ce as Workflow, cf as useThrottleFn, cg as parse, ch as shallowRef, T as useUIStore, ae as useCanvasStore, aA as useTelemetry, ci as onScopeDispose, I as onBeforeUnmount, cj as applyThemeToBody, ck as useProvideTooltipAppendTo, cl as LOGS_PANEL_STATE, cm as LOCAL_STORAGE_PANEL_HEIGHT, cn as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, co as LOCAL_STORAGE_PANEL_WIDTH, cp as useActiveElement, cq as useKeybindings, cr as ndvEventBus } from "./index-RWrva8Ef.js";
2
+ import { _ as __unplugin_components_1 } from "./AnimatedSpinner-KrBSvZAV.js";
3
+ import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-f1op8mly.js";
4
+ import { H as HighlightJS, V as VueMarkdown } from "./VueMarkdown-CngbcsCr.js";
5
+ import { c as canvasEventBus } from "./canvas-BljPOFnp.js";
9
6
  const TOOL_EXECUTOR_NODE_NAME = "PartialExecutionToolExecutor";
7
+ function constructChatWebsocketUrl(url, executionId, sessionId2, isPublic) {
8
+ const baseUrl = new URL(url).origin;
9
+ const wsProtocol = baseUrl.startsWith("https") ? "wss" : "ws";
10
+ const wsUrl = baseUrl.replace(/^https?/, wsProtocol);
11
+ return `${wsUrl}/chat?sessionId=${sessionId2}&executionId=${executionId}${isPublic ? "&isPublic=true" : ""}`;
12
+ }
10
13
  function getConsumedTokens(task) {
11
14
  if (!task.data) {
12
15
  return emptyTokenUsageData;
@@ -349,7 +352,7 @@ function extractResponseText(responseData) {
349
352
  if (!responseData || isEmpty(responseData)) {
350
353
  return void 0;
351
354
  }
352
- const paths = ["output", "text", "response.text"];
355
+ const paths = ["output", "text", "response.text", "message"];
353
356
  const matchedPath = paths.find((path) => get(responseData, path));
354
357
  if (!matchedPath) return JSON.stringify(responseData, null, 2);
355
358
  const matchedOutput = get(responseData, matchedPath);
@@ -373,6 +376,22 @@ function restoreChatHistory(workflowExecutionData, emptyText2) {
373
376
  );
374
377
  return [...userMessage ? [userMessage] : [], ...botMessage ? [botMessage] : []];
375
378
  }
379
+ async function processFiles(data) {
380
+ if (!data || data.length === 0) return [];
381
+ const filePromises = data.map(async (file) => {
382
+ return new Promise((resolve, reject) => {
383
+ const reader = new FileReader();
384
+ reader.onload = () => resolve({
385
+ name: file.name,
386
+ type: file.type,
387
+ data: reader.result
388
+ });
389
+ reader.onerror = () => reject(new Error(`Error reading file: ${reader.error?.message ?? "Unknown error"}`));
390
+ reader.readAsDataURL(file);
391
+ });
392
+ });
393
+ return await Promise.all(filePromises);
394
+ }
376
395
  function isSubNodeLog(logEntry) {
377
396
  return logEntry.parent !== void 0 && logEntry.parent.executionId === logEntry.executionId;
378
397
  }
@@ -384,12 +403,16 @@ function useChatMessaging({
384
403
  messages: messages2,
385
404
  sessionId: sessionId2,
386
405
  executionResultData,
387
- onRunChatWorkflow
406
+ onRunChatWorkflow,
407
+ ws
388
408
  }) {
389
409
  const locale = useI18n$1();
390
410
  const { showError } = useToast();
391
411
  const previousMessageIndex = ref(0);
392
412
  const isLoading = ref(false);
413
+ const setLoadingState = (loading) => {
414
+ isLoading.value = loading;
415
+ };
393
416
  async function convertFileToBinaryData(file) {
394
417
  const reader = new FileReader();
395
418
  return await new Promise((resolve, reject) => {
@@ -468,9 +491,12 @@ function useChatMessaging({
468
491
  message
469
492
  });
470
493
  isLoading.value = false;
494
+ ws.value = null;
471
495
  if (!response?.executionId) {
472
496
  return;
473
497
  }
498
+ const responseMode = triggerNode.parameters.options?.responseMode;
499
+ if (responseMode === "responseNodes") return;
474
500
  const chatMessage = executionResultData.value ? extractBotResponse(
475
501
  executionResultData.value,
476
502
  response.executionId,
@@ -510,23 +536,39 @@ function useChatMessaging({
510
536
  files
511
537
  };
512
538
  messages2.value.push(newMessage);
513
- await startWorkflowWithMessage(newMessage.text, files);
539
+ if (ws.value?.readyState === WebSocket.OPEN && !isLoading.value) {
540
+ ws.value.send(
541
+ JSON.stringify({
542
+ sessionId: sessionId2.value,
543
+ action: "sendMessage",
544
+ chatInput: message,
545
+ files: await processFiles(files)
546
+ })
547
+ );
548
+ isLoading.value = true;
549
+ } else {
550
+ await startWorkflowWithMessage(newMessage.text, files);
551
+ }
514
552
  }
515
553
  return {
516
554
  previousMessageIndex,
517
555
  isLoading: computed(() => isLoading.value),
556
+ setLoadingState,
518
557
  sendMessage
519
558
  };
520
559
  }
521
- const ChatSymbol = "Chat";
560
+ const ChatSymbol$1 = "Chat";
522
561
  const ChatOptionsSymbol = "ChatOptions";
562
+ const ChatSymbol = "Chat";
523
563
  function useChatState(isReadOnly) {
524
564
  const locale = useI18n$1();
525
565
  const workflowsStore = useWorkflowsStore();
566
+ const rootStore = useRootStore();
526
567
  const logsStore = useLogsStore();
527
568
  const router = useRouter();
528
569
  const nodeHelpers = useNodeHelpers();
529
570
  const { runWorkflow } = useRunWorkflow({ router });
571
+ const ws = ref(null);
530
572
  const messages2 = ref([]);
531
573
  const currentSessionId = ref(v4().replace(/-/g, ""));
532
574
  const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
@@ -539,12 +581,16 @@ function useChatState(isReadOnly) {
539
581
  const allowedFilesMimeTypes = computed(
540
582
  () => chatTriggerNode.value?.parameters?.options?.allowedFilesMimeTypes?.toString() ?? ""
541
583
  );
542
- const { sendMessage, isLoading } = useChatMessaging({
584
+ const respondNodesResponseMode = computed(
585
+ () => chatTriggerNode.value?.parameters?.options?.responseMode === "responseNodes"
586
+ );
587
+ const { sendMessage, isLoading, setLoadingState } = useChatMessaging({
543
588
  chatTrigger: chatTriggerNode,
544
589
  messages: messages2,
545
590
  sessionId: currentSessionId,
546
591
  executionResultData: computed(() => workflowsStore.getWorkflowExecution?.data?.resultData),
547
- onRunChatWorkflow
592
+ onRunChatWorkflow,
593
+ ws
548
594
  });
549
595
  function createChatConfig(params) {
550
596
  const chatConfig2 = {
@@ -615,6 +661,40 @@ function useChatState(isReadOnly) {
615
661
  }
616
662
  const response = await runWorkflow(runWorkflowOptions);
617
663
  if (response) {
664
+ if (respondNodesResponseMode.value) {
665
+ const wsUrl = constructChatWebsocketUrl(
666
+ rootStore.urlBaseEditor,
667
+ response.executionId,
668
+ currentSessionId.value,
669
+ false
670
+ );
671
+ ws.value = new WebSocket(wsUrl);
672
+ ws.value.onmessage = (event) => {
673
+ if (event.data === "n8n|heartbeat") {
674
+ ws.value?.send("n8n|heartbeat-ack");
675
+ return;
676
+ }
677
+ if (event.data === "n8n|continue") {
678
+ setLoadingState(true);
679
+ return;
680
+ }
681
+ setLoadingState(false);
682
+ const newMessage = {
683
+ text: event.data,
684
+ sender: "bot",
685
+ sessionId: currentSessionId.value,
686
+ id: v4()
687
+ };
688
+ messages2.value.push(newMessage);
689
+ if (logsStore.isOpen) {
690
+ chatEventBus.emit("focusInput");
691
+ }
692
+ };
693
+ ws.value.onclose = () => {
694
+ setLoadingState(false);
695
+ ws.value = null;
696
+ };
697
+ }
618
698
  await createExecutionPromise();
619
699
  workflowsStore.appendChatMessage(payload.message);
620
700
  return response;
@@ -848,7 +928,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
848
928
  { immediate: true }
849
929
  );
850
930
  return (_ctx, _cache) => {
851
- const _component_NodeIcon = _sfc_main$k;
931
+ const _component_NodeIcon = NodeIcon;
852
932
  const _component_AnimatedSpinner = __unplugin_components_1;
853
933
  return openBlock(), createElementBlock("div", {
854
934
  ref: "containerRef",
@@ -970,7 +1050,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
970
1050
  icon: "triangle-alert",
971
1051
  class: normalizeClass(_ctx.$style.compactErrorIcon)
972
1052
  }, null, 8, ["class"])) : createCommentVNode("", true),
973
- !_ctx.isCompact || !props.latestInfo?.deleted ? (openBlock(), createBlock(unref(_sfc_main$l), {
1053
+ !_ctx.isCompact || !props.latestInfo?.deleted ? (openBlock(), createBlock(unref(_sfc_main$k), {
974
1054
  key: 4,
975
1055
  type: "secondary",
976
1056
  size: "small",
@@ -984,7 +1064,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
984
1064
  "aria-label": unref(locale).baseText("logs.overview.body.open"),
985
1065
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("openNdv"), ["stop"]))
986
1066
  }, null, 8, ["style", "disabled", "class", "aria-label"])) : createCommentVNode("", true),
987
- !_ctx.isCompact || !props.isReadOnly && !props.latestInfo?.deleted && !props.latestInfo?.disabled ? (openBlock(), createBlock(unref(_sfc_main$l), {
1067
+ !_ctx.isCompact || !props.isReadOnly && !props.latestInfo?.deleted && !props.latestInfo?.disabled ? (openBlock(), createBlock(unref(_sfc_main$k), {
988
1068
  key: 5,
989
1069
  type: "secondary",
990
1070
  size: "small",
@@ -3818,7 +3898,7 @@ function xml(hljs) {
3818
3898
  };
3819
3899
  }
3820
3900
  function useChat() {
3821
- return inject(ChatSymbol);
3901
+ return inject(ChatSymbol$1);
3822
3902
  }
3823
3903
  function useOptions() {
3824
3904
  const options = inject(ChatOptionsSymbol);
@@ -4152,7 +4232,9 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4152
4232
  const input = ref("");
4153
4233
  const isSubmitting = ref(false);
4154
4234
  const resizeObserver = ref(null);
4235
+ const waitingForChatResponse = ref(false);
4155
4236
  const isSubmitDisabled = computed(() => {
4237
+ if (waitingForChatResponse.value) return false;
4156
4238
  return input.value === "" || unref(waitingForResponse) || options.disabled?.value === true;
4157
4239
  });
4158
4240
  const isInputDisabled = computed(() => options.disabled?.value === true);
@@ -4226,6 +4308,89 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4226
4308
  input.value = value;
4227
4309
  focusChatInput();
4228
4310
  }
4311
+ function attachFiles() {
4312
+ if (files.value) {
4313
+ const filesToAttach = Array.from(files.value);
4314
+ resetFileDialog();
4315
+ files.value = null;
4316
+ return filesToAttach;
4317
+ }
4318
+ return [];
4319
+ }
4320
+ function setupWebsocketConnection(executionId) {
4321
+ if (options.webhookUrl && chatStore.currentSessionId.value) {
4322
+ try {
4323
+ const wsUrl = constructChatWebsocketUrl(
4324
+ options.webhookUrl,
4325
+ executionId,
4326
+ chatStore.currentSessionId.value,
4327
+ true
4328
+ );
4329
+ chatStore.ws = new WebSocket(wsUrl);
4330
+ chatStore.ws.onmessage = (e) => {
4331
+ if (e.data === "n8n|heartbeat") {
4332
+ chatStore.ws?.send("n8n|heartbeat-ack");
4333
+ return;
4334
+ }
4335
+ if (e.data === "n8n|continue") {
4336
+ waitingForChatResponse.value = false;
4337
+ chatStore.waitingForResponse.value = true;
4338
+ return;
4339
+ }
4340
+ const newMessage = {
4341
+ id: v4(),
4342
+ text: e.data,
4343
+ sender: "bot"
4344
+ };
4345
+ chatStore.messages.value.push(newMessage);
4346
+ waitingForChatResponse.value = true;
4347
+ chatStore.waitingForResponse.value = false;
4348
+ };
4349
+ chatStore.ws.onclose = () => {
4350
+ chatStore.ws = null;
4351
+ waitingForChatResponse.value = false;
4352
+ chatStore.waitingForResponse.value = false;
4353
+ };
4354
+ } catch (error2) {
4355
+ console.error("Error setting up websocket connection", error2);
4356
+ }
4357
+ }
4358
+ }
4359
+ async function processFiles2(data) {
4360
+ if (!data || data.length === 0) return [];
4361
+ const filePromises = data.map(async (file) => {
4362
+ return new Promise((resolve, reject) => {
4363
+ const reader = new FileReader();
4364
+ reader.onload = () => resolve({
4365
+ name: file.name,
4366
+ type: file.type,
4367
+ data: reader.result
4368
+ });
4369
+ reader.onerror = () => reject(new Error(`Error reading file: ${reader.error?.message ?? "Unknown error"}`));
4370
+ reader.readAsDataURL(file);
4371
+ });
4372
+ });
4373
+ return await Promise.all(filePromises);
4374
+ }
4375
+ async function respondToChatNode(ws, messageText) {
4376
+ const sentMessage = {
4377
+ id: v4(),
4378
+ text: messageText,
4379
+ sender: "user",
4380
+ files: files.value ? attachFiles() : void 0
4381
+ };
4382
+ chatStore.messages.value.push(sentMessage);
4383
+ ws.send(
4384
+ JSON.stringify({
4385
+ sessionId: chatStore.currentSessionId.value,
4386
+ action: "sendMessage",
4387
+ chatInput: messageText,
4388
+ files: await processFiles2(sentMessage.files)
4389
+ })
4390
+ );
4391
+ chatStore.waitingForResponse.value = true;
4392
+ waitingForChatResponse.value = false;
4393
+ }
4229
4394
  async function onSubmit(event) {
4230
4395
  event.preventDefault();
4231
4396
  if (isSubmitDisabled.value) {
@@ -4234,10 +4399,15 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4234
4399
  const messageText = input.value;
4235
4400
  input.value = "";
4236
4401
  isSubmitting.value = true;
4237
- await chatStore.sendMessage(messageText, Array.from(files.value ?? []));
4402
+ if (chatStore.ws && waitingForChatResponse.value) {
4403
+ await respondToChatNode(chatStore.ws, messageText);
4404
+ return;
4405
+ }
4406
+ const response = await chatStore.sendMessage(messageText, attachFiles());
4407
+ if (response?.executionId) {
4408
+ setupWebsocketConnection(response.executionId);
4409
+ }
4238
4410
  isSubmitting.value = false;
4239
- resetFileDialog();
4240
- files.value = null;
4241
4411
  }
4242
4412
  async function onSubmitKeydown(event) {
4243
4413
  if (event.shiftKey || event.isComposing) {
@@ -4325,7 +4495,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4325
4495
  ], 8, _hoisted_6)
4326
4496
  ])
4327
4497
  ]),
4328
- files.value?.length && !isSubmitting.value ? (openBlock(), createElementBlock("div", _hoisted_7, [
4498
+ files.value?.length && (!isSubmitting.value || waitingForChatResponse.value) ? (openBlock(), createElementBlock("div", _hoisted_7, [
4329
4499
  (openBlock(true), createElementBlock(Fragment, null, renderList(files.value, (file) => {
4330
4500
  return openBlock(), createBlock(ChatFile, {
4331
4501
  key: file.name,
@@ -4340,7 +4510,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4340
4510
  };
4341
4511
  }
4342
4512
  });
4343
- const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-0908f167"]]);
4513
+ const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-b2a5be81"]]);
4344
4514
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
4345
4515
  __name: "MessageTyping",
4346
4516
  props: {
@@ -4508,18 +4678,9 @@ const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssMo
4508
4678
  const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4509
4679
  __name: "MessageOptionAction",
4510
4680
  props: {
4511
- label: {
4512
- type: String,
4513
- required: true
4514
- },
4515
- icon: {
4516
- type: Object,
4517
- required: true
4518
- },
4519
- placement: {
4520
- type: String,
4521
- default: "top"
4522
- }
4681
+ label: {},
4682
+ icon: {},
4683
+ placement: {}
4523
4684
  },
4524
4685
  setup(__props) {
4525
4686
  const attrs = useAttrs();
@@ -4532,14 +4693,14 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4532
4693
  return openBlock(), createElementBlock("div", {
4533
4694
  class: normalizeClass(_ctx.$style.container)
4534
4695
  }, [
4535
- createVNode(_component_n8n_tooltip, { placement: __props.placement }, {
4696
+ createVNode(_component_n8n_tooltip, { placement: _ctx.placement }, {
4536
4697
  content: withCtx(() => [
4537
- createTextVNode(toDisplayString(__props.label), 1)
4698
+ createTextVNode(toDisplayString(_ctx.label), 1)
4538
4699
  ]),
4539
4700
  default: withCtx(() => [
4540
4701
  createVNode(_component_n8n_icon, {
4541
4702
  class: normalizeClass(_ctx.$style.icon),
4542
- icon: __props.icon,
4703
+ icon: _ctx.icon,
4543
4704
  size: "xsmall",
4544
4705
  onClick
4545
4706
  }, null, 8, ["class", "icon"])
@@ -4680,7 +4841,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4680
4841
  content: unref(locale).baseText("chat.window.session.resetSession")
4681
4842
  }, {
4682
4843
  default: withCtx(() => [
4683
- createVNode(unref(_sfc_main$l), {
4844
+ createVNode(unref(_sfc_main$k), {
4684
4845
  class: normalizeClass(_ctx.$style.newHeaderButton),
4685
4846
  "data-test-id": "refresh-session-button",
4686
4847
  outline: "",
@@ -4863,6 +5024,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4863
5024
  const _directive_n8n_html = resolveDirective("n8n-html");
4864
5025
  return runDataProps.value ? (openBlock(), createBlock(RunData, mergeProps({ key: 0 }, runDataProps.value, {
4865
5026
  key: `run-data${unref(pipWindow) ? "-pip" : ""}`,
5027
+ class: _ctx.$style.component,
4866
5028
  workflow: _ctx.logEntry.workflow,
4867
5029
  "workflow-execution": _ctx.logEntry.execution,
4868
5030
  "too-much-data-title": unref(locale).baseText("ndv.output.tooMuchData.title"),
@@ -4952,12 +5114,14 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
4952
5114
  ]),
4953
5115
  key: "1"
4954
5116
  } : void 0
4955
- ]), 1040, ["workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content", "is-executing", "collapsing-table-column-name"])) : createCommentVNode("", true);
5117
+ ]), 1040, ["class", "workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content", "is-executing", "collapsing-table-column-name"])) : createCommentVNode("", true);
4956
5118
  };
4957
5119
  }
4958
5120
  });
4959
- const title$1 = "_title_1ur7r_123";
5121
+ const component = "_component_qlocg_123";
5122
+ const title$1 = "_title_qlocg_127";
4960
5123
  const style0$3 = {
5124
+ component,
4961
5125
  title: title$1
4962
5126
  };
4963
5127
  const cssModules$3 = {
@@ -5110,7 +5274,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5110
5274
  createBaseVNode("div", {
5111
5275
  class: normalizeClass(_ctx.$style.title)
5112
5276
  }, [
5113
- createVNode(_sfc_main$k, {
5277
+ createVNode(NodeIcon, {
5114
5278
  "node-type": type.value,
5115
5279
  size: 16,
5116
5280
  class: normalizeClass(_ctx.$style.icon)
@@ -5315,7 +5479,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5315
5479
  content: popOutButtonText.value
5316
5480
  }, {
5317
5481
  default: withCtx(() => [
5318
- createVNode(unref(_sfc_main$l), {
5482
+ createVNode(unref(_sfc_main$k), {
5319
5483
  icon: "pop-out",
5320
5484
  type: "tertiary",
5321
5485
  text: "",
@@ -5343,7 +5507,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5343
5507
  "z-index": tooltipZIndex.value
5344
5508
  }, {
5345
5509
  default: withCtx(() => [
5346
- createVNode(unref(_sfc_main$l), {
5510
+ createVNode(unref(_sfc_main$k), {
5347
5511
  type: "tertiary",
5348
5512
  text: "",
5349
5513
  size: "small",
@@ -5485,17 +5649,11 @@ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5485
5649
  const uiStore = useUIStore();
5486
5650
  const canvasStore = useCanvasStore();
5487
5651
  const workflowsStore = useWorkflowsStore();
5488
- const experimentalNdvStore = useExperimentalNdvStore();
5489
5652
  function syncSelectionToCanvasIfEnabled(value) {
5490
5653
  if (!logsStore.isLogSelectionSyncedWithCanvas) {
5491
5654
  return;
5492
5655
  }
5493
- if (experimentalNdvStore.isEnabled) {
5494
- canvasEventBus.emit("nodes:select", { ids: [value.node.id], panIntoView: false });
5495
- experimentalNdvStore.focusNode(value.node.id);
5496
- } else {
5497
- canvasEventBus.emit("nodes:select", { ids: [value.node.id], panIntoView: true });
5498
- }
5656
+ canvasEventBus.emit("nodes:select", { ids: [value.node.id], panIntoView: true });
5499
5657
  }
5500
5658
  function select(value) {
5501
5659
  manualLogEntrySelection.value = value === void 0 ? { type: "none" } : { type: "selected", entry: value };
@@ -1,13 +1,11 @@
1
- import { d as defineComponent, x as computed, h as createElementBlock, g as openBlock, i as createVNode, l as unref, E as ElDropdown, w as withCtx, j as createBaseVNode, n as normalizeClass, f as createCommentVNode, F as Fragment, y as renderList, e as createBlock, z as N8nAvatar, t as toDisplayString, A as ElDropdownMenu, B as ElDropdownItem, C as N8nUserInfo, D as mergeProps, _ as _export_sfc, G as MAIN_HEADER_TABS, H as N8nRadioButtons, r as ref, I as onBeforeUnmount, o as onMounted, J as renderSlot, K as nextTick, L as debounce, O as resolveComponent, P as normalizeStyle, Q as createEventBus, k as createTextVNode, R as useTagsStore, S as useDebounce, T as useUIStore, U as BREAKPOINT_SM, W as BREAKPOINT_XL, X as BREAKPOINT_LG, Y as BREAKPOINT_MD, Z as getBannerRowHeight, V as VIEWS, $ as N8nTooltip, a0 as _sfc_main$b, c as useI18n, a1 as I18nT, a2 as N8nLink, a3 as defineStore, a4 as usePushConnectionStore, a5 as useWorkflowsStore, u as useUsersStore, a6 as useRoute, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, a8 as STORES, a9 as TIME, aa as useDocumentVisibility, ab as watch, ac as useCssModule, ad as useRootStore, ae as useCanvasStore, v as useSettingsStore, af as useSourceControlStore, ag as useProjectsStore, ah as useFoldersStore, ai as useNpsSurveyStore, b as useRouter, a as useToast, aj as useDocumentTitle, ak as useWorkflowSaving, al as useWorkflowHelpers, am as usePageRedirectionHelper, an as getResourcePermissions, ao as WORKFLOW_MENU_ACTIONS, ap as hasPermission, aq as EnterpriseEditionFeature, ar as ProjectTypes, as as useTemplateRef, at as InlineRename, au as MAX_WORKFLOW_NAME_LENGTH, av as _sfc_main$c, aw as N8nBadge, q as N8nButton, ax as SaveButton, ay as WORKFLOW_SHARE_MODAL_KEY, az as useTelemetry, aA as nodeViewEventBus, aB as useMessage, aC as MODAL_CONFIRM, aD as WORKFLOW_SETTINGS_MODAL_KEY, aE as SOURCE_CONTROL_PUSH_MODAL_KEY, aF as IMPORT_WORKFLOW_URL_MODAL_KEY, aG as DUPLICATE_MODAL_KEY, aH as ResourceType, aI as PROJECT_MOVE_RESOURCE_MODAL, aJ as __vitePreload, aK as hyphenate, aL as h, aM as hasOwn, aN as useNDVStore, aO as useExecutionsStore, aP as useLocalStorage, aQ as LOCAL_STORAGE_HIDE_GITHUB_STAR_BUTTON, aR as STICKY_NODE_TYPE, aS as onBeforeMount, aT as withDirectives, aU as vShow, aV as N8N_MAIN_GITHUB_REPO_URL, N as N8nIcon } from "./index-CH1Gwq1G.js";
2
- import { N as N8nActionDropdown } from "./ActionDropdown-ruV_IoDb.js";
3
- import { _ as __unplugin_components_0, W as WorkflowActivator } from "./WorkflowActivator-BF3aeJvD.js";
4
- import { _ as _sfc_main$d } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-CBK8ZjPV.js";
5
- import { u as useBeforeUnload } from "./useBeforeUnload-BS005Q-E.js";
6
- import { F as FileSaver_minExports } from "./FileSaver.min-5FQPbO92.js";
7
- import { u as usePushConnection } from "./usePushConnection-DyTClShF.js";
8
- import "./useWorkflowActivate-C_VG0iz6.js";
9
- import "./global-link-actions-ZZSsCCb8.js";
10
- import "./aiTemplatesStarterCollection.store-Cb27Gjth.js";
1
+ import { d as defineComponent, x as computed, h as createElementBlock, g as openBlock, i as createVNode, l as unref, E as ElDropdown, w as withCtx, j as createBaseVNode, n as normalizeClass, f as createCommentVNode, F as Fragment, y as renderList, e as createBlock, z as N8nAvatar, t as toDisplayString, A as ElDropdownMenu, B as ElDropdownItem, C as N8nUserInfo, D as mergeProps, _ as _export_sfc, G as MAIN_HEADER_TABS, H as N8nRadioButtons, r as ref, I as onBeforeUnmount, o as onMounted, J as renderSlot, K as nextTick, L as debounce, O as resolveComponent, P as normalizeStyle, Q as createEventBus, k as createTextVNode, R as useTagsStore, S as useDebounce, T as useUIStore, U as BREAKPOINT_SM, W as BREAKPOINT_XL, X as BREAKPOINT_LG, Y as BREAKPOINT_MD, Z as getBannerRowHeight, V as VIEWS, $ as N8nTooltip, a0 as _sfc_main$b, c as useI18n, a1 as I18nT, a2 as N8nLink, a3 as defineStore, a4 as usePushConnectionStore, a5 as useWorkflowsStore, u as useUsersStore, a6 as useRoute, a7 as PLACEHOLDER_EMPTY_WORKFLOW_ID, a8 as STORES, a9 as TIME, aa as useDocumentVisibility, ab as watch, ac as useCssModule, ad as useRootStore, ae as useCanvasStore, v as useSettingsStore, af as useSourceControlStore, ag as useProjectsStore, ah as useFoldersStore, ai as useNpsSurveyStore, b as useRouter, a as useToast, aj as useDocumentTitle, ak as useWorkflowSaving, al as useWorkflowHelpers, am as usePageRedirectionHelper, an as getResourcePermissions, ao as WORKFLOW_MENU_ACTIONS, ap as hasPermission, aq as EnterpriseEditionFeature, ar as ProjectTypes, as as useTemplateRef, at as InlineRename, au as MAX_WORKFLOW_NAME_LENGTH, av as _sfc_main$c, aw as N8nBadge, q as N8nButton, ax as SaveButton, ay as N8nActionDropdown, az as WORKFLOW_SHARE_MODAL_KEY, aA as useTelemetry, aB as nodeViewEventBus, aC as useMessage, aD as MODAL_CONFIRM, aE as WORKFLOW_SETTINGS_MODAL_KEY, aF as SOURCE_CONTROL_PUSH_MODAL_KEY, aG as IMPORT_WORKFLOW_URL_MODAL_KEY, aH as FileSaver_minExports, aI as DUPLICATE_MODAL_KEY, aJ as ResourceType, aK as PROJECT_MOVE_RESOURCE_MODAL, aL as __vitePreload, aM as hyphenate, aN as h, aO as hasOwn, aP as useNDVStore, aQ as useExecutionsStore, aR as useLocalStorage, aS as LOCAL_STORAGE_HIDE_GITHUB_STAR_BUTTON, aT as STICKY_NODE_TYPE, aU as onBeforeMount, aV as withDirectives, aW as vShow, aX as N8N_MAIN_GITHUB_REPO_URL, N as N8nIcon } from "./index-RWrva8Ef.js";
2
+ import { _ as __unplugin_components_0, W as WorkflowActivator } from "./WorkflowActivator-1K8wsbSd.js";
3
+ import { _ as _sfc_main$d } from "./PushConnectionTracker.vue_vue_type_script_setup_true_lang-CTVAscYA.js";
4
+ import { u as useBeforeUnload } from "./useBeforeUnload-BMRHkn8C.js";
5
+ import { u as usePushConnection } from "./usePushConnection-BkQdWizJ.js";
6
+ import "./useWorkflowActivate-IzOtBGNC.js";
7
+ import "./global-link-actions-Db7BnGRk.js";
8
+ import "./aiTemplatesStarterCollection.store-DH0nmNfV.js";
11
9
  const _hoisted_1$3 = {
12
10
  class: "user-stack",
13
11
  "data-test-id": "user-stack-container"
@@ -1,6 +1,5 @@
1
- import { d as defineComponent, r as ref, e as createBlock, g as openBlock, w as withCtx, i as createVNode, l as unref, aW as ElSubMenu, n as normalizeClass, h as createElementBlock, F as Fragment, y as renderList, aX as _sfc_main$6, aY as ElMenuItem, f as createCommentVNode, k as createTextVNode, J as renderSlot, N as N8nIcon, t as toDisplayString, D as mergeProps, aZ as withKeys, a_ as ElMenu, _ as _export_sfc, a$ as get, b0 as useLoadingService, T as useUIStore, af as useSourceControlStore, ag as useProjectsStore, a as useToast, x as computed, ap as hasPermission, an as getResourcePermissions, P as normalizeStyle, j as createBaseVNode, $ as N8nTooltip, q as N8nButton, c as useI18n, Q as createEventBus, aE as SOURCE_CONTROL_PUSH_MODAL_KEY, b1 as notifyUserAboutPullWorkFolderOutcome, b2 as sourceControlEventBus, b3 as SOURCE_CONTROL_PULL_MODAL_KEY, a3 as defineStore, b4 as useCloudPlanStore, ad as useRootStore, b5 as useStorage, b6 as DateTime, a8 as STORES, az as useTelemetry, v as useSettingsStore, b as useRouter, b7 as sortByProperty, V as VIEWS, am as usePageRedirectionHelper, u as useUsersStore, aS as onBeforeMount, b8 as N8nMenuItem, p as N8nText, b9 as useDebugInfo, ba as useVersionsStore, a2 as N8nLink, bb as VERSIONS_MODAL_KEY, bc as useTemplatesStore, a5 as useWorkflowsStore, S as useDebounce, a6 as useRoute, bd as RELEASE_NOTES_URL, o as onMounted, be as useExternalHooks, K as nextTick, I as onBeforeUnmount, bf as onClickOutside, O as resolveComponent, a1 as I18nT, a0 as _sfc_main$7, bg as createSlots, z as N8nAvatar, bh as N8nMenu, bi as WHATS_NEW_MODAL_KEY, bj as ABOUT_MODAL_KEY, bk as trackTemplatesClick, bl as TemplateClickSource } from "./index-CH1Gwq1G.js";
2
- import { N as N8nActionDropdown } from "./ActionDropdown-ruV_IoDb.js";
3
- import { L as Logo } from "./Logo-BC2rsqUH.js";
1
+ import { d as defineComponent, r as ref, e as createBlock, g as openBlock, w as withCtx, i as createVNode, l as unref, aY as ElSubMenu, n as normalizeClass, h as createElementBlock, F as Fragment, y as renderList, aZ as _sfc_main$6, a_ as ElMenuItem, f as createCommentVNode, k as createTextVNode, J as renderSlot, N as N8nIcon, t as toDisplayString, D as mergeProps, a$ as withKeys, b0 as ElMenu, _ as _export_sfc, b1 as get, b2 as useLoadingService, T as useUIStore, af as useSourceControlStore, ag as useProjectsStore, a as useToast, x as computed, ap as hasPermission, an as getResourcePermissions, P as normalizeStyle, j as createBaseVNode, $ as N8nTooltip, q as N8nButton, c as useI18n, Q as createEventBus, aF as SOURCE_CONTROL_PUSH_MODAL_KEY, b3 as notifyUserAboutPullWorkFolderOutcome, b4 as sourceControlEventBus, b5 as SOURCE_CONTROL_PULL_MODAL_KEY, a3 as defineStore, b6 as useCloudPlanStore, ad as useRootStore, b7 as useStorage, b8 as DateTime, a8 as STORES, aA as useTelemetry, v as useSettingsStore, b as useRouter, b9 as sortByProperty, V as VIEWS, am as usePageRedirectionHelper, u as useUsersStore, aU as onBeforeMount, ba as N8nMenuItem, p as N8nText, bb as useDebugInfo, bc as useVersionsStore, a2 as N8nLink, bd as VERSIONS_MODAL_KEY, be as useTemplatesStore, a5 as useWorkflowsStore, S as useDebounce, a6 as useRoute, bf as RELEASE_NOTES_URL, o as onMounted, bg as useExternalHooks, K as nextTick, I as onBeforeUnmount, bh as onClickOutside, O as resolveComponent, a1 as I18nT, a0 as _sfc_main$7, bi as createSlots, z as N8nAvatar, ay as N8nActionDropdown, bj as N8nMenu, bk as WHATS_NEW_MODAL_KEY, bl as ABOUT_MODAL_KEY, bm as trackTemplatesClick, bn as TemplateClickSource } from "./index-RWrva8Ef.js";
2
+ import { L as Logo } from "./Logo-D9KxmIRr.js";
4
3
  const ROOT_MENU_INDEX = "-1";
5
4
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
6
5
  ...{
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, bs as isRef, cd as shallowRef, ab as watch, r as ref, cL as watchEffect, aL as h, l as unref, cR as mergeModels, cJ as useSlots, x as computed, cS as useModel, h8 as ElCheckbox, cb as useThrottleFn, h as createElementBlock, g as openBlock, j as createBaseVNode, f as createCommentVNode, P as normalizeStyle, n as normalizeClass, F as Fragment, y as renderList, e as createBlock, k as createTextVNode, t as toDisplayString, bP as withModifiers, J as renderSlot, i as createVNode, h9 as ElSkeletonItem, D as mergeProps, ha as _sfc_main$1, hb as ElSelect, w as withCtx, hc as ElOption, br as get, _ as _export_sfc } from "./index-CH1Gwq1G.js";
1
+ import { d as defineComponent, bv as isRef, ch as shallowRef, ab as watch, r as ref, fl as watchEffect, aN as h, l as unref, e5 as mergeModels, fm as useSlots, x as computed, e6 as useModel, fn as ElCheckbox, cf as useThrottleFn, h as createElementBlock, g as openBlock, j as createBaseVNode, f as createCommentVNode, P as normalizeStyle, n as normalizeClass, F as Fragment, y as renderList, e as createBlock, k as createTextVNode, t as toDisplayString, bS as withModifiers, J as renderSlot, i as createVNode, fo as ElSkeletonItem, D as mergeProps, fp as _sfc_main$1, fq as ElSelect, w as withCtx, fr as ElOption, bu as get, _ as _export_sfc } from "./index-RWrva8Ef.js";
2
2
  /**
3
3
  * table-core
4
4
  *