n8n-editor-ui 1.115.1 → 1.116.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 (210) hide show
  1. package/.build/cache-marker +1 -1
  2. package/.build/node-popularity.json +1844 -1844
  3. package/dist/assets/{AddDataStoreModal-DxLlmnRh.js → AddDataTableModal-BWWNocvE.js} +32 -32
  4. package/dist/assets/{AddDataStoreModal-B7jBhCjt.css → AddDataTableModal-BzS5Yqag.css} +6 -6
  5. package/dist/assets/{AnimatedSpinner-DR4QrGrL.js → AnimatedSpinner-DFjfUB--.js} +1 -1
  6. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BfGhW9R4.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-AwTdMVsi.js} +1 -1
  7. package/dist/assets/{AuthView-CWVio_MZ.css → AuthView-BvfgleDU.css} +30 -30
  8. package/dist/assets/{AuthView-BUfRQlip.js → AuthView-CPPX5tYt.js} +14 -14
  9. package/dist/assets/{ChangePasswordView-hnVcBOdZ.js → ChangePasswordView-D_VXG-a6.js} +3 -3
  10. package/dist/assets/ChatSidebar-C0s-SoxK.js +117 -0
  11. package/dist/assets/ChatSidebar-wKAC9nrh.css +165 -0
  12. package/dist/assets/ChatView-ClX1FsZV.css +657 -0
  13. package/dist/assets/ChatView-DLlPfas8.js +805 -0
  14. package/dist/assets/CollectionParameter-CYHkGO0F.js +4 -0
  15. package/dist/assets/{CredentialsView-DYbozDMz.js → CredentialsView-BipY16I_.js} +15 -15
  16. package/dist/assets/{CredentialsView-BAqjGrNq.css → CredentialsView-C9uo2Njh.css} +14 -14
  17. package/dist/assets/{DataStoreActions.vue_vue_type_script_setup_true_lang-_Q8OXvzI.js → DataTableActions.vue_vue_type_script_setup_true_lang-B_Q2_4UV.js} +21 -21
  18. package/dist/assets/{DataStoreDetailsView-Bc-J9ZrW.css → DataTableDetailsView-BOmb3x4S.css} +138 -138
  19. package/dist/assets/{DataStoreDetailsView-DN1DvV53.js → DataTableDetailsView-Fi-LWBLm.js} +538 -525
  20. package/dist/assets/{DataStoreView-BqQv7QeU.css → DataTableView-ByKnlVtU.css} +14 -14
  21. package/dist/assets/{DataStoreView-BNU_I-gX.js → DataTableView-CFOQzQI7.js} +68 -68
  22. package/dist/assets/{DemoFooter-rHoOk6iK.js → DemoFooter-J9LQ705n.js} +5 -5
  23. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-DWIEvR1-.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-BiphSIS4.js} +1 -1
  24. package/dist/assets/{EntityNotFound-DAi6p29d.js → EntityNotFound-CYQqRNOB.js} +2 -2
  25. package/dist/assets/EntityNotFound-CargndZm.css +10 -0
  26. package/dist/assets/EntityUnAuthorised-Deb2bHNC.css +10 -0
  27. package/dist/assets/{EntityUnAuthorised-8E-9FBHe.js → EntityUnAuthorised-DetfwCtv.js} +2 -2
  28. package/dist/assets/{ErrorView-DPS9icAS.css → ErrorView-D2OMvGTk.css} +8 -8
  29. package/dist/assets/{ErrorView-y79cILv4.js → ErrorView-qxP6uTVl.js} +4 -4
  30. package/dist/assets/{EvaluationsRootView-B5AhHo41.css → EvaluationsRootView-7FGhfEKm.css} +48 -48
  31. package/dist/assets/{EvaluationsRootView-CWelItmD.js → EvaluationsRootView-BueMulsE.js} +22 -22
  32. package/dist/assets/{EvaluationsView-BTyYfInB.css → EvaluationsView-DsfXDJ-U.css} +35 -35
  33. package/dist/assets/{EvaluationsView-C0X9064k.js → EvaluationsView-gk_juymK.js} +27 -27
  34. package/dist/assets/{ExecutionsTime-B5dXCTxD.css → ExecutionsTime-BGpurJsp.css} +41 -41
  35. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-CmtPBoIQ.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-8mG-89V4.js} +16 -16
  36. package/dist/assets/{ExecutionsView-DRsBgt5L.js → ExecutionsView-0KpKg6S4.js} +18 -18
  37. package/dist/assets/{ExecutionsView-BxsSXnlU.css → ExecutionsView-BbH7fInw.css} +14 -14
  38. package/dist/assets/{FixedCollectionParameter-Bhdk1XcN.js → FixedCollectionParameter-B9qkRreb.js} +2 -2
  39. package/dist/assets/{FixedCollectionParameter-D3u3aCCk.css → FixedCollectionParameter-D82suS6W.css} +43 -43
  40. package/dist/assets/{ForgotMyPasswordView-C-GNSvtY.js → ForgotMyPasswordView-C1kfYO_S.js} +3 -3
  41. package/dist/assets/{InfoAccordion-BpibqNsS.js → InfoAccordion-B_T19Esx.js} +7 -7
  42. package/dist/assets/{InfoAccordion-dxudNqVC.css → InfoAccordion-BuKidEQb.css} +13 -13
  43. package/dist/assets/{InsightsChartAverageRuntime-CwkkxEk1.js → InsightsChartAverageRuntime-IISuKphn.js} +4 -4
  44. package/dist/assets/{InsightsChartFailed-Di6uVDGI.js → InsightsChartFailed-DRHEEzJU.js} +5 -5
  45. package/dist/assets/{InsightsChartFailureRate-Bl5Av3Eu.js → InsightsChartFailureRate-D1L6WYZP.js} +5 -5
  46. package/dist/assets/{InsightsChartTimeSaved-Bcup49B9.js → InsightsChartTimeSaved-zCEK3kuY.js} +4 -4
  47. package/dist/assets/{InsightsChartTotal-DnEUMCMt.js → InsightsChartTotal-DW-EkNtK.js} +5 -5
  48. package/dist/assets/{InsightsDashboard-luJ134I5.js → InsightsDashboard-DfpOZ30S.js} +21 -21
  49. package/dist/assets/{InsightsDashboard-CYAx_0X9.css → InsightsDashboard-DyOwzHmP.css} +25 -25
  50. package/dist/assets/{InsightsPaywall-BEXUk0T6.js → InsightsPaywall-CKH7O7yd.js} +1 -1
  51. package/dist/assets/{InsightsSummary-DTFIhBF3.css → InsightsSummary-BazqPYQ0.css} +52 -52
  52. package/dist/assets/{InsightsSummary-XxOp2tas.js → InsightsSummary-ChZNMeJI.js} +11 -11
  53. package/dist/assets/{InsightsTableWorkflows-BTHSCwX8.css → InsightsTableWorkflows-D20Yb7ZW.css} +8 -8
  54. package/dist/assets/{InsightsTableWorkflows-B4re5fkw.js → InsightsTableWorkflows-DwLRkvVL.js} +7 -7
  55. package/dist/assets/{Logo-CSmRCqF2.css → Logo-BU1oDo5-.css} +16 -16
  56. package/dist/assets/{Logo-91TLwfCH.js → Logo-Bgcx_T7R.js} +7 -7
  57. package/dist/assets/{LogsPanel-BWP7EQ84.js → LogsPanel-BCUqUR29.js} +141 -1091
  58. package/dist/assets/{LogsPanel-BE9Gl1z0.css → LogsPanel-DVmpE0zV.css} +160 -592
  59. package/dist/assets/{MainHeader-DIiyDT8d.css → MainHeader-BqJwA1aC.css} +117 -117
  60. package/dist/assets/{MainHeader-BaSUt6eJ.js → MainHeader-BzhBs3En.js} +45 -45
  61. package/dist/assets/{MainSidebar-C4cyDjUV.js → MainSidebar-Bf48nTMR.js} +69 -1133
  62. package/dist/assets/{MainSidebar-BT8sXxNa.css → MainSidebar-tTEyXOKH.css} +107 -279
  63. package/dist/assets/NavigationDropdown-Wb7mPGhl.css +187 -0
  64. package/dist/assets/NavigationDropdown-kfg0blbZ.js +1116 -0
  65. package/dist/assets/{NodeCreation-C4gQlPqI.css → NodeCreation-B1fOtARK.css} +6 -6
  66. package/dist/assets/{NodeCreation-BkqOy8gF.js → NodeCreation-CsCoqAnU.js} +12 -10
  67. package/dist/assets/{NodeCreator-COTYfPaK.css → NodeCreator-CamUhvMk.css} +175 -174
  68. package/dist/assets/{NodeCreator-BppRTVIa.js → NodeCreator-D45qQQ4H.js} +60 -64
  69. package/dist/assets/{NodeDetailsView-BuhpInfo.js → NodeDetailsView-6bLQaVHT.js} +33 -32
  70. package/dist/assets/{NodeDetailsView-CBYV4Rrz.css → NodeDetailsView-D3QAo3SF.css} +61 -61
  71. package/dist/assets/{NodeDetailsViewV2-C0bp_zCD.js → NodeDetailsViewV2-DRCY6EX6.js} +58 -69
  72. package/dist/assets/{NodeDetailsViewV2-J_3cfdea.css → NodeDetailsViewV2-bvXejqU_.css} +67 -60
  73. package/dist/assets/{NodeView-Bsq1Fh0D.css → NodeView-BhF0ieQM.css} +85 -85
  74. package/dist/assets/{NodeView-B9LYqx2z.js → NodeView-C9PvNIUz.js} +106 -95
  75. package/dist/assets/{PageViewLayout-CJlzbuVj.css → PageViewLayout-BIiboMgG.css} +5 -5
  76. package/dist/assets/{PageViewLayout-B8D8Tkxn.js → PageViewLayout-DNBKIQ4N.js} +3 -3
  77. package/dist/assets/{PrebuiltAgentTemplatesView-DZAkWI4E.js → PrebuiltAgentTemplatesView-C0Uqhzma.js} +9 -9
  78. package/dist/assets/{PrebuiltAgentTemplatesView-COxu7Iih.css → PrebuiltAgentTemplatesView-jF7HvWnL.css} +14 -14
  79. package/dist/assets/{ProjectBreadcrumb-B1Hnf5da.css → ProjectBreadcrumb-BNbnf7Ir.css} +96 -96
  80. package/dist/assets/{ProjectBreadcrumb-HI65z9tX.js → ProjectBreadcrumb-w-ZQjuc2.js} +22 -22
  81. package/dist/assets/{ProjectHeader-BzekhnTR.js → ProjectHeader-DG_Z0cm0.js} +36 -18
  82. package/dist/assets/{ProjectHeader-BNMKpvzV.css → ProjectHeader-TKKq6OrY.css} +15 -15
  83. package/dist/assets/{ProjectSettings-BTP0xrzD.js → ProjectSettings-ClU4oaU3.js} +26 -26
  84. package/dist/assets/{ProjectSettings-Cj1kC16G.css → ProjectSettings-c2BBLEzY.css} +60 -60
  85. package/dist/assets/ProjectVariables-B76TEE5o.js +532 -0
  86. package/dist/assets/ProjectVariables-DtGcMnSf.css +293 -0
  87. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DflOVayR.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-C7mROgKI.js} +1 -1
  88. package/dist/assets/{ResourcesListLayout-Dm7w49bu.css → ResourcesListLayout-CY-G3BmN.css} +42 -42
  89. package/dist/assets/{ResourcesListLayout-CnidC9EV.js → ResourcesListLayout-Db6ys3gY.js} +25 -21
  90. package/dist/assets/{RunDataJson-DEs4Ql5T.js → RunDataJson-CXyTvX4C.js} +8 -8
  91. package/dist/assets/{RunDataJson-BH9HLoGC.css → RunDataJson-PAkTmkZf.css} +19 -19
  92. package/dist/assets/{RunDataJsonActions-Ct02vlvz.js → RunDataJsonActions-C5Cvqjc_.js} +2 -2
  93. package/dist/assets/{RunDataJsonActions-B2jW3_UG.css → RunDataJsonActions-CZx7rSSE.css} +2 -2
  94. package/dist/assets/{RunDataParsedAiContent-Bl49tvwG.js → RunDataParsedAiContent-BkNc-yBy.js} +13 -112
  95. package/dist/assets/{RunDataParsedAiContent-wfIiKsq7.css → RunDataParsedAiContent-CvjNCtpG.css} +37 -37
  96. package/dist/assets/{RunDataSearch-D8DXH4rw.js → RunDataSearch-CBsWlIj1.js} +4 -4
  97. package/dist/assets/{RunDataSearch-2eEalFoi.css → RunDataSearch-CPo36NE_.css} +10 -10
  98. package/dist/assets/{RunDataTable-BZzteeuj.css → RunDataTable-C4QnrVVF.css} +104 -104
  99. package/dist/assets/{RunDataTable-CdxTnMd4.js → RunDataTable-FKsWIgfg.js} +33 -33
  100. package/dist/assets/{SamlOnboarding-CLFzc3D4.js → SamlOnboarding--cNSub8q.js} +3 -3
  101. package/dist/assets/{SelectedItemsInfo-Dl4uynXs.css → SelectedItemsInfo-B6Rq6uIe.css} +7 -7
  102. package/dist/assets/{SelectedItemsInfo-Dd3HKZ6z.js → SelectedItemsInfo-BOQrOU8d.js} +3 -3
  103. package/dist/assets/{SettingsApiView-CmU8R9-c.js → SettingsApiView-DkPpP_Xa.js} +14 -14
  104. package/dist/assets/{SettingsApiView-k1hALKCX.css → SettingsApiView-Dtl_N9mK.css} +31 -31
  105. package/dist/assets/{SettingsCommunityNodesView-CAggjsaT.css → SettingsCommunityNodesView-CVQjV37D.css} +31 -31
  106. package/dist/assets/{SettingsCommunityNodesView-CjgVPZAy.js → SettingsCommunityNodesView-CypE1wWW.js} +21 -21
  107. package/dist/assets/{SettingsExternalSecrets-BAX9ENm9.css → SettingsExternalSecrets-CaiOf7cD.css} +12 -12
  108. package/dist/assets/{SettingsExternalSecrets-Baxom4lP.js → SettingsExternalSecrets-Dw8qeVlx.js} +8 -8
  109. package/dist/assets/{SettingsLdapView-BQUfzAsN.js → SettingsLdapView-CQXdsBfZ.js} +8 -8
  110. package/dist/assets/{SettingsLdapView-D0SUO3ai.css → SettingsLdapView-KgMO_1GA.css} +17 -17
  111. package/dist/assets/{SettingsLogStreamingView-Bq2IwWDt.js → SettingsLogStreamingView-B-0r_ZsJ.js} +7 -7
  112. package/dist/assets/{SettingsLogStreamingView-CflEMmu9.css → SettingsLogStreamingView-xo-rTSA0.css} +12 -12
  113. package/dist/assets/SettingsMCPView-BBO_ZyBU.css +552 -0
  114. package/dist/assets/{SettingsMCPView-D3BOHCtS.js → SettingsMCPView-Bbdsa8lu.js} +200 -126
  115. package/dist/assets/{SettingsPersonalView-Bt8bL5tJ.css → SettingsPersonalView-D6LtKnaF.css} +23 -23
  116. package/dist/assets/{SettingsPersonalView-Bbn0olns.js → SettingsPersonalView-VU8Kh83i.js} +10 -10
  117. package/dist/assets/{SettingsSourceControl-BBxJXbFC.css → SettingsSourceControl-C6pfOcuv.css} +40 -40
  118. package/dist/assets/{SettingsSourceControl-CC_Pak2B.js → SettingsSourceControl-CJvfstK0.js} +15 -15
  119. package/dist/assets/{SettingsSso-vViqB8oe.js → SettingsSso-v2r9nirX.js} +7 -7
  120. package/dist/assets/{SettingsSso-D4HKPLvV.css → SettingsSso-w7Iz4Luy.css} +25 -25
  121. package/dist/assets/{SettingsUsageAndPlan-BtE-s9Vb.js → SettingsUsageAndPlan-BhgN2Hcc.js} +13 -13
  122. package/dist/assets/{SettingsUsageAndPlan-82J0IcdW.css → SettingsUsageAndPlan-Cct79Zta.css} +34 -34
  123. package/dist/assets/{SettingsUsersView-DVdCq-SX.js → SettingsUsersView-CApxIHLx.js} +16 -16
  124. package/dist/assets/{SettingsUsersView-BG7JdfYz.css → SettingsUsersView-CfJcVjkl.css} +28 -28
  125. package/dist/assets/{SettingsView-BHLJBEJF.css → SettingsView-C4aA4kVV.css} +18 -18
  126. package/dist/assets/{SettingsView-ByNIw76r.js → SettingsView-Dru_1OUG.js} +8 -8
  127. package/dist/assets/{SetupView-XbSIMu9B.js → SetupView-Bh4XpOq8.js} +3 -3
  128. package/dist/assets/{SetupWorkflowCredentialsButton-CUzPtmot.js → SetupWorkflowCredentialsButton-6T0EX3L6.js} +1 -1
  129. package/dist/assets/{SetupWorkflowFromTemplateView-ZPJL_m2F.css → SetupWorkflowFromTemplateView-CU2iGJTa.css} +11 -11
  130. package/dist/assets/{SetupWorkflowFromTemplateView-CQcMUEt1.js → SetupWorkflowFromTemplateView-EJjV79MY.js} +8 -8
  131. package/dist/assets/{SigninView-D57wRRHz.css → SigninView-BQgsTN8o.css} +13 -13
  132. package/dist/assets/{SigninView-C8qujIEW.js → SigninView-DKLEwC5i.js} +9 -9
  133. package/dist/assets/{SignoutView-BCsXtAKk.js → SignoutView-xza1c_rm.js} +1 -1
  134. package/dist/assets/{SignupView-By-KjS2P.js → SignupView-DnZEsYnl.js} +3 -3
  135. package/dist/assets/{TableBase-CX4nZLla.js → TableBase-B1eTsHT8.js} +3 -3
  136. package/dist/assets/{TableBase-Bf42_9Yp.css → TableBase-CUZbI5pm.css} +24 -24
  137. package/dist/assets/{Tags-CCemj7t9.css → Tags-6vh_jPIG.css} +4 -4
  138. package/dist/assets/{Tags-D03vT_rK.js → Tags-DpegReyF.js} +2 -2
  139. package/dist/assets/{TemplateDetails-DyUqVhf2.css → TemplateDetails-DfyKyMyy.css} +13 -13
  140. package/dist/assets/{TemplateDetails-CDaB-6oH.js → TemplateDetails-lJNnuxdO.js} +8 -8
  141. package/dist/assets/{TemplateList-DNBeV62H.js → TemplateList-BHbHvx-_.js} +24 -24
  142. package/dist/assets/{TemplateList-XNW-2Ugr.css → TemplateList-CNUtq0N7.css} +49 -49
  143. package/dist/assets/{TemplatesCollectionView-BTk7wBlq.js → TemplatesCollectionView-BijeS4Al.js} +13 -13
  144. package/dist/assets/{TemplatesCollectionView-2q1rzsOG.css → TemplatesCollectionView-klb8FT9y.css} +13 -13
  145. package/dist/assets/{TemplatesSearchView-DtyBPi6V.js → TemplatesSearchView-Db14LD0F.js} +18 -18
  146. package/dist/assets/{TemplatesSearchView-DETaMpDt.css → TemplatesSearchView-gPmmtwoU.css} +50 -50
  147. package/dist/assets/{TemplatesView-BTid6_ga.js → TemplatesView-BTxutjLU.js} +8 -8
  148. package/dist/assets/{TemplatesView-Cyu28Dlo.css → TemplatesView-BgdyYmrL.css} +21 -21
  149. package/dist/assets/{TemplatesWorkflowView-DpIiJjJp.css → TemplatesWorkflowView-CBjRBbmw.css} +17 -17
  150. package/dist/assets/{TemplatesWorkflowView-CLr9pY-p.js → TemplatesWorkflowView-xFif3ij7.js} +14 -14
  151. package/dist/assets/{TestRunDetailView-BDPhxOvY.js → TestRunDetailView-BRfLAqZW.js} +36 -36
  152. package/dist/assets/{TestRunDetailView--lZbJq4u.css → TestRunDetailView-D_a9QpSQ.css} +93 -93
  153. package/dist/assets/{TriggerPanel-CQgUdcjv.css → TriggerPanel-BbB_P9ZT.css} +158 -236
  154. package/dist/assets/TriggerPanel-nPxZrihp.js +1633 -0
  155. package/dist/assets/VariablesUsageBadge-BaTs74dX.js +39 -0
  156. package/dist/assets/VariablesUsageBadge-C_yi7Lw5.css +129 -0
  157. package/dist/assets/{VariablesView-DsA8Mqxt.js → VariablesView-BeHRHeb1.js} +11 -52
  158. package/dist/assets/VariablesView-zN910qd9.css +272 -0
  159. package/dist/assets/{WorkerView-BrSoYcbf.css → WorkerView-4m_NaoAx.css} +47 -47
  160. package/dist/assets/{WorkerView-CDijwoCe.js → WorkerView-LAFQqBrx.js} +39 -39
  161. package/dist/assets/{WorkflowActivator-DKpc2Acz.js → WorkflowActivator-BdIK7K-g.js} +7 -7
  162. package/dist/assets/{WorkflowActivator-DPDRDtQG.css → WorkflowActivator-DBJbtrBD.css} +9 -9
  163. package/dist/assets/{WorkflowExecutionsInfoAccordion-53bC-IXN.css → WorkflowExecutionsInfoAccordion-CEOvJ-SX.css} +11 -11
  164. package/dist/assets/{WorkflowExecutionsInfoAccordion-Fedus-Da.js → WorkflowExecutionsInfoAccordion-kaRsv7EW.js} +4 -4
  165. package/dist/assets/{WorkflowExecutionsLandingPage-BpO-BoFq.js → WorkflowExecutionsLandingPage-BdMQTvlG.js} +6 -6
  166. package/dist/assets/{WorkflowExecutionsLandingPage-Bm_hJMl4.css → WorkflowExecutionsLandingPage-DMldlKod.css} +8 -8
  167. package/dist/assets/{WorkflowExecutionsPreview-Cd4BrS-0.css → WorkflowExecutionsPreview-CkEakQp2.css} +90 -90
  168. package/dist/assets/{WorkflowExecutionsPreview-DzvPOJOY.js → WorkflowExecutionsPreview-DoAsEchV.js} +46 -46
  169. package/dist/assets/{WorkflowExecutionsView-DDoqUcYQ.js → WorkflowExecutionsView-Cl1624bM.js} +34 -34
  170. package/dist/assets/{WorkflowExecutionsView-Bjkudb8L.css → WorkflowExecutionsView-CqRMwPwF.css} +82 -82
  171. package/dist/assets/{WorkflowHistory-7Ad0Va7M.css → WorkflowHistory-BmerBiKz.css} +71 -71
  172. package/dist/assets/{WorkflowHistory-BhU1Rfch.js → WorkflowHistory-DcGYJnXH.js} +21 -21
  173. package/dist/assets/{WorkflowOnboardingView-BqWP7FwD.js → WorkflowOnboardingView-Ci32PYxq.js} +1 -1
  174. package/dist/assets/{WorkflowPreview-B1W62QhC.js → WorkflowPreview-B8KvmFRP.js} +8 -8
  175. package/dist/assets/{WorkflowPreview-CIOAVgxK.css → WorkflowPreview-Bt03akXc.css} +8 -8
  176. package/dist/assets/{WorkflowsView-B-pO60w1.js → WorkflowsView-BFZrfitq.js} +79 -83
  177. package/dist/assets/{WorkflowsView-B8UKso1P.css → WorkflowsView-GJhG9SFw.css} +144 -144
  178. package/dist/assets/{chartjs.utils-DpK-YRAM.js → chartjs.utils-nj8CCZPZ.js} +10 -10
  179. package/dist/assets/chat.utils-irsHFh8G.js +224 -0
  180. package/dist/assets/{core-HZaYo_tU.js → core-DsTi4w-I.js} +1 -1
  181. package/dist/assets/{evaluation-ZbMdquW3.css → evaluation-BpIei8SG.css} +26 -26
  182. package/dist/assets/{evaluation.constants-DfiJmRyk.js → evaluation.constants-DjPrCMEi.js} +9 -9
  183. package/dist/assets/{global-link-actions-DdzlWwjw.js → global-link-actions-DSKsOCqo.js} +1 -1
  184. package/dist/assets/{index-CFiA0qjr.css → index-BvbpnRSm.css} +6384 -6442
  185. package/dist/assets/{index-MTM6BbvW.js → index-C2iJCVYf.js} +13722 -15461
  186. package/dist/assets/{index-P3-xVlwI.js → index-DkYsG7tJ.js} +1 -1
  187. package/dist/assets/mcp.store-LrK5gI5Y.js +85 -0
  188. package/dist/assets/{pickBy-DUKPNRlc.js → pickBy-DSRQa7Nf.js} +1 -1
  189. package/dist/assets/{readyToRunWorkflows.store-nzu6XNAP.js → readyToRunWorkflows.store-ia-2Nluj.js} +2 -2
  190. package/dist/assets/{readyToRunWorkflowsV2.store-1dRkG6XV.js → readyToRunWorkflowsV2.store-CyBbWYeG.js} +41 -3
  191. package/dist/assets/{templateActions-BePunFaZ.js → templateActions-CqLHZUrv.js} +1 -1
  192. package/dist/assets/{useBeforeUnload-DsbgbymL.js → useBeforeUnload-D788NzAs.js} +1 -1
  193. package/dist/assets/{useExecutionDebugging-yUnwhnYk.js → useExecutionDebugging-DWOhAQo4.js} +1 -1
  194. package/dist/assets/{useImportCurlCommand-DcFIVp7Y.js → useImportCurlCommand-BQs5GVHJ.js} +1 -1
  195. package/dist/assets/useLogsTreeExpand-2auAOTOK.js +1080 -0
  196. package/dist/assets/useLogsTreeExpand-BZb1m-U7.css +554 -0
  197. package/dist/assets/{useProjectPages-JCNZbA2u.js → useProjectPages-BRhbuYJH.js} +1 -1
  198. package/dist/assets/{usePushConnection-_VL-61pH.js → usePushConnection-DgYz_QNH.js} +17 -19
  199. package/dist/assets/{useWorkflowsCache-DwIv_I-Z.js → useWorkflowsCache-C2_YYjSX.js} +1 -1
  200. package/dist/index.html +2 -2
  201. package/package.json +1 -1
  202. package/scripts/fetch-node-popularity.mjs +13 -1
  203. package/turbo.json +2 -1
  204. package/dist/assets/CollectionParameter-BbxTTmMu.js +0 -4
  205. package/dist/assets/ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-Bv40HGJu.js +0 -44
  206. package/dist/assets/EntityNotFound-pTnVFOv-.css +0 -10
  207. package/dist/assets/EntityUnAuthorised-CHl9g0Ry.css +0 -10
  208. package/dist/assets/SettingsMCPView-B7NzLvT3.css +0 -378
  209. package/dist/assets/TriggerPanel-BS69Ky8P.js +0 -3343
  210. package/dist/assets/VariablesView-BMHdLce7.css +0 -400
@@ -1,403 +1,13 @@
1
- import { c8 as addTokenUsageData, c9 as emptyTokenUsageData, ca as parseErrorMetadata, cb as isChatNode, cc as NodeConnectionTypes, cd as v4, ce as get, cf as AGENT_LANGCHAIN_NODE_TYPE, cg as MANUAL_CHAT_TRIGGER_NODE_TYPE, ch as CHAT_TRIGGER_NODE_TYPE, ci as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, cj as usePinnedData, am as useMessage, an as MODAL_CONFIRM, a2 as useWorkflowsStore, ck as injectWorkflowState, au as useRootStore, cl as useLogsStore, b as useRouter, cm as useNodeHelpers, cn as useRunWorkflow, a8 as watch, V as VIEWS, co as chatEventBus, a4 as PLACEHOLDER_EMPTY_WORKFLOW_ID, bn as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, k as unref, p as N8nText, w as withCtx, Y as renderSlot, l as createTextVNode, t as toDisplayString, _ as _export_sfc, a3 as useRoute, af as useSourceControlStore, cp as useCanvasOperations, ae as useNodeTypesStore, cq as START_NODE_TYPE, e as createBlock, f as createCommentVNode, aa as N8nTooltip, cr as formatTokenUsageCount, cs as getDefaultExportFromCjs, ct as requireUpperFirst, F as Fragment, aH as useTemplateRef, cu as useTimestamp, cv as toTime, cw as toDayMonth, B as withModifiers, A as renderList, ap as normalizeStyle, cx as NodeIcon, ac as I18nT, N as N8nIcon, ab as _sfc_main$k, q as N8nButton, Z as nextTick, cy as getScrollbarWidth, cz as useVirtualList, bD as toRef, K as mergeProps, O as N8nRadioButtons, bi as inject, cA as isRef, cB as toRefs, o as onMounted, cC as normalizeProps, cD as guardReactiveProps, c0 as resolveDynamicComponent, cE as markdownLink, cF as useFileDialog, bS as onUnmounted, b4 as withDirectives, cG as vModelText, bH as withKeys, cH as useAttrs, cI as useClipboard, cJ as createSlots, a_ as useNDVStore, cK as PopOutWindowKey, cL as resolveDirective, cM as RunData, C as N8nLink, cN as NDVEmptyState, cO as waitingNodeTooltip, cP as RunDataItemCount, b0 as useLocalStorage, cQ as useExperimentalNdvStore, cR as LOG_DETAILS_PANEL_STATE, cS as KeyboardShortcutTooltip, cT as N8nResizeWrapper, cU as useStyles, aO as N8nActionDropdown, cV as LOGS_EXECUTION_DATA_THROTTLE_DURATION, cW as Workflow, cX as useThrottleFn, cY as shallowRef, cZ as parse, Q as useUIStore, c_ as useCanvasStore, al as useTelemetry, c$ as canvasEventBus, ay as useDocumentTitle, d0 as onScopeDispose, X as onBeforeUnmount, d1 as useProvideTooltipAppendTo, d2 as LOGS_PANEL_STATE, d3 as LOCAL_STORAGE_PANEL_HEIGHT, d4 as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, d5 as LOCAL_STORAGE_PANEL_WIDTH, d6 as useActiveElement, bY as useKeybindings, d7 as ndvEventBus } from "./index-MTM6BbvW.js";
2
- import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-Bv40HGJu.js";
3
- import { A as AnimatedSpinner } from "./AnimatedSpinner-DR4QrGrL.js";
4
- import { H as HighlightJS, V as VueMarkdown } from "./core-HZaYo_tU.js";
5
- const TOOL_EXECUTOR_NODE_NAME = "PartialExecutionToolExecutor";
1
+ import { a as useToast, r as ref, x as computed, c as useI18n$1, bC as usePinnedData, am as useMessage, an as MODAL_CONFIRM, bD as v4, a2 as useWorkflowsStore, bE as injectWorkflowState, au as useRootStore, bF as useLogsStore, b as useRouter, bG as useNodeHelpers, bH as useRunWorkflow, bI as isChatNode, a8 as watch, V as VIEWS, bJ as chatEventBus, a4 as PLACEHOLDER_EMPTY_WORKFLOW_ID, bK as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, k as unref, p as N8nText, w as withCtx, Y as renderSlot, l as createTextVNode, t as toDisplayString, _ as _export_sfc, bL as useTimestamp, e as createBlock, f as createCommentVNode, a3 as useRoute, af as useSourceControlStore, bM as useCanvasOperations, ae as useNodeTypesStore, bN as START_NODE_TYPE, bO as getScrollbarWidth, q as N8nButton, B as withModifiers, aa as N8nTooltip, F as Fragment, O as N8nRadioButtons, bP as inject, bQ as isRef, bR as toRefs, o as onMounted, bS as normalizeProps, bT as guardReactiveProps, bu as resolveDynamicComponent, K as mergeProps, A as renderList, bU as markdownLink, bV as useFileDialog, bh as onUnmounted, ap as normalizeStyle, b4 as withDirectives, bW as vModelText, bX as withKeys, N as N8nIcon, bY as useAttrs, bZ as useClipboard, ab as _sfc_main$h, b_ as createSlots, a_ as useNDVStore, b$ as PopOutWindowKey, c0 as resolveDirective, c1 as RunData, ac as I18nT, C as N8nLink, c2 as NDVEmptyState, c3 as waitingNodeTooltip, c4 as RunDataItemCount, b0 as useLocalStorage, c5 as useExperimentalNdvStore, aH as useTemplateRef, c6 as LOG_DETAILS_PANEL_STATE, c7 as KeyboardShortcutTooltip, c8 as NodeIcon, c9 as N8nResizeWrapper, ca as useStyles, aO as N8nActionDropdown, cb as shallowRef, Q as useUIStore, cc as useCanvasStore, al as useTelemetry, cd as canvasEventBus, ay as useDocumentTitle, ce as onScopeDispose, X as onBeforeUnmount, cf as useProvideTooltipAppendTo, cg as LOGS_PANEL_STATE, ch as LOCAL_STORAGE_PANEL_HEIGHT, ci as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, cj as LOCAL_STORAGE_PANEL_WIDTH, ck as useActiveElement, bo as useKeybindings, cl as toRef, Z as nextTick, cm as ndvEventBus } from "./index-C2iJCVYf.js";
2
+ import { p as processFiles, g as getInputKey, e as extractBotResponse, r as restoreChatHistory, u as upperFirst, _ as _sfc_main$g, a as getTotalConsumedTokens, b as getSubtreeTotalConsumedTokens, L as LogsOverviewRows, i as isSubNodeLog, c as isPlaceholderLog, d as LogsViewNodeName, f as findSelectedLogEntry, h as getEntryAtRelativeIndex, j as getDepth, k as findLogEntryRec, l as useLogsExecutionData, m as useLogsTreeExpand } from "./useLogsTreeExpand-2auAOTOK.js";
3
+ import { H as HighlightJS, V as VueMarkdown } from "./core-DsTi4w-I.js";
4
+ import "./AnimatedSpinner-DFjfUB--.js";
6
5
  function constructChatWebsocketUrl(url, executionId, sessionId2, isPublic) {
7
6
  const baseUrl = new URL(url).origin;
8
7
  const wsProtocol = baseUrl.startsWith("https") ? "wss" : "ws";
9
8
  const wsUrl = baseUrl.replace(/^https?/, wsProtocol);
10
9
  return `${wsUrl}/chat?sessionId=${sessionId2}&executionId=${executionId}${isPublic ? "&isPublic=true" : ""}`;
11
10
  }
12
- function getConsumedTokens(task) {
13
- if (!task.data) {
14
- return emptyTokenUsageData;
15
- }
16
- const tokenUsage = Object.values(task.data).flat().flat().reduce((acc, curr) => {
17
- const tokenUsageData = curr?.json?.tokenUsage ?? curr?.json?.tokenUsageEstimate;
18
- if (!tokenUsageData) return acc;
19
- return addTokenUsageData(acc, {
20
- ...tokenUsageData,
21
- isEstimate: !!curr?.json.tokenUsageEstimate
22
- });
23
- }, emptyTokenUsageData);
24
- return tokenUsage;
25
- }
26
- function createNode(node, context, runIndex, runData, children = []) {
27
- return {
28
- parent: context.parent,
29
- node,
30
- // The ID consists of workflow ID, node ID and run index (including ancestor's), which
31
- // makes it possible to identify the same log across different executions
32
- id: `${context.workflow.id}:${node.id}:${[...context.ancestorRunIndexes, runIndex].join(":")}`,
33
- runIndex,
34
- runData,
35
- children,
36
- consumedTokens: runData ? getConsumedTokens(runData) : emptyTokenUsageData,
37
- workflow: context.workflow,
38
- executionId: context.executionId,
39
- execution: context.data
40
- };
41
- }
42
- function getChildNodes(treeNode, node, runIndex, context) {
43
- const subExecutionLocator = findSubExecutionLocator(treeNode);
44
- if (subExecutionLocator !== void 0) {
45
- const workflow = context.workflows[subExecutionLocator.workflowId];
46
- const subWorkflowRunData = context.subWorkflowData[subExecutionLocator.executionId];
47
- if (!workflow || !subWorkflowRunData) {
48
- return [];
49
- }
50
- return createLogTreeRec({
51
- ...context,
52
- parent: treeNode,
53
- ancestorRunIndexes: [...context.ancestorRunIndexes, runIndex ?? 0],
54
- workflow,
55
- executionId: subExecutionLocator.executionId,
56
- data: subWorkflowRunData
57
- });
58
- }
59
- const connectedSubNodes = context.workflow.getParentNodes(node.name, "ALL_NON_MAIN", 1);
60
- function isMatchedSource(source) {
61
- return (source?.previousNode === node.name || isPlaceholderLog(treeNode) && source?.previousNode === TOOL_EXECUTOR_NODE_NAME) && (runIndex === void 0 || source.previousNodeRun === runIndex);
62
- }
63
- return connectedSubNodes.flatMap(
64
- (subNodeName) => (context.data.resultData.runData[subNodeName] ?? []).flatMap((t, index) => {
65
- const isMatched = t.source.some((source) => source !== null) ? t.source.some(isMatchedSource) : runIndex === void 0 || index === runIndex;
66
- if (!isMatched) {
67
- return [];
68
- }
69
- const subNode = context.workflow.getNode(subNodeName);
70
- return subNode ? getTreeNodeData(subNode, t, index, {
71
- ...context,
72
- ancestorRunIndexes: [...context.ancestorRunIndexes, runIndex ?? 0],
73
- parent: treeNode
74
- }) : [];
75
- })
76
- );
77
- }
78
- function getTreeNodeData(node, runData, runIndex, context) {
79
- const treeNode = createNode(node, context, runIndex ?? 0, runData);
80
- const children = getChildNodes(treeNode, node, runIndex, context).sort(sortLogEntries);
81
- if ((runData === void 0 || node.disabled) && children.length === 0) {
82
- return [];
83
- }
84
- treeNode.children = children;
85
- return [treeNode];
86
- }
87
- function getTotalConsumedTokens(...usage) {
88
- return usage.reduce(addTokenUsageData, emptyTokenUsageData);
89
- }
90
- function getSubtreeTotalConsumedTokens(treeNode, includeSubWorkflow) {
91
- const executionId = treeNode.executionId;
92
- function calculate(currentNode) {
93
- if (!includeSubWorkflow && currentNode.executionId !== executionId) {
94
- return emptyTokenUsageData;
95
- }
96
- return getTotalConsumedTokens(
97
- currentNode.consumedTokens,
98
- ...currentNode.children.map(calculate)
99
- );
100
- }
101
- return calculate(treeNode);
102
- }
103
- function findLogEntryToAutoSelect(subTree) {
104
- const entryWithError = findLogEntryRec((e) => !!e.runData?.error, subTree);
105
- if (entryWithError) {
106
- return entryWithError;
107
- }
108
- const entryForAiAgent = findLogEntryRec(
109
- (entry) => entry.node.type === AGENT_LANGCHAIN_NODE_TYPE || entry.parent?.node.type === AGENT_LANGCHAIN_NODE_TYPE && isPlaceholderLog(entry.parent),
110
- subTree
111
- );
112
- if (entryForAiAgent) {
113
- return entryForAiAgent;
114
- }
115
- return subTree[subTree.length - 1];
116
- }
117
- function createLogTreeRec(context) {
118
- const runData = context.data.resultData.runData;
119
- return Object.entries(runData).flatMap(([nodeName, taskData]) => {
120
- const node = context.workflow.getNode(nodeName);
121
- if (node === null) {
122
- return [];
123
- }
124
- const childNodes = context.workflow.getChildNodes(nodeName, "ALL_NON_MAIN");
125
- if (childNodes.length === 0) {
126
- return taskData.map((task, runIndex) => ({
127
- node,
128
- task,
129
- runIndex,
130
- nodeHasMultipleRuns: taskData.length > 1
131
- }));
132
- }
133
- if (childNodes.some((child) => (runData[child] ?? []).length > 0)) {
134
- return [];
135
- }
136
- const firstChild = context.workflow.getNode(childNodes[0]);
137
- if (firstChild === null) {
138
- return [];
139
- }
140
- return [{ node: firstChild, nodeHasMultipleRuns: false }];
141
- }).flatMap(
142
- ({ node, runIndex, task, nodeHasMultipleRuns }) => getTreeNodeData(node, task, nodeHasMultipleRuns ? runIndex : void 0, context)
143
- ).sort(sortLogEntries);
144
- }
145
- function createLogTree(workflow, response, workflows = {}, subWorkflowData = {}) {
146
- return createLogTreeRec({
147
- parent: void 0,
148
- ancestorRunIndexes: [],
149
- executionId: response.id,
150
- workflow,
151
- workflows,
152
- data: response.data ?? { resultData: { runData: {} } },
153
- subWorkflowData
154
- });
155
- }
156
- function findLogEntryRec(isMatched, entries) {
157
- for (const entry of entries) {
158
- if (isMatched(entry)) {
159
- return entry;
160
- }
161
- const child = findLogEntryRec(isMatched, entry.children);
162
- if (child) {
163
- return child;
164
- }
165
- }
166
- return void 0;
167
- }
168
- function findSelectedLogEntry(selection, entries, isExecuting) {
169
- switch (selection.type) {
170
- case "initial":
171
- return isExecuting ? void 0 : findLogEntryToAutoSelect(entries);
172
- case "none":
173
- return void 0;
174
- case "selected": {
175
- const found = findLogEntryRec((e) => e.id === selection.entry.id, entries);
176
- if (found === void 0 && !isExecuting) {
177
- for (let runIndex = selection.entry.runIndex - 1; runIndex >= 0; runIndex--) {
178
- const fallback = findLogEntryRec(
179
- (e) => e.workflow.id === selection.entry.workflow.id && e.node.id === selection.entry.node.id && e.runIndex === runIndex,
180
- entries
181
- );
182
- if (fallback !== void 0) {
183
- return fallback;
184
- }
185
- }
186
- }
187
- return found;
188
- }
189
- }
190
- }
191
- function flattenLogEntries(entries, collapsedEntryIds, ret = []) {
192
- for (const entry of entries) {
193
- ret.push(entry);
194
- if (!collapsedEntryIds[entry.id]) {
195
- flattenLogEntries(entry.children, collapsedEntryIds, ret);
196
- }
197
- }
198
- return ret;
199
- }
200
- function getEntryAtRelativeIndex(entries, id, relativeIndex) {
201
- const offset = entries.findIndex((e) => e.id === id);
202
- return offset === -1 ? void 0 : entries[offset + relativeIndex];
203
- }
204
- function sortLogEntries(a, b) {
205
- if (a.runData === void 0) {
206
- return a.children.length > 0 ? sortLogEntries(a.children[0], b) : 0;
207
- }
208
- if (b.runData === void 0) {
209
- return b.children.length > 0 ? sortLogEntries(a, b.children[0]) : 0;
210
- }
211
- if (a.runData.startTime === b.runData.startTime) {
212
- return a.runData.executionIndex - b.runData.executionIndex;
213
- }
214
- return a.runData.startTime - b.runData.startTime;
215
- }
216
- function mergeStartData(startData, response) {
217
- if (!response.data) {
218
- return response;
219
- }
220
- const nodeNames = [
221
- ...new Set(
222
- Object.keys(startData).concat(Object.keys(response.data.resultData.runData))
223
- ).values()
224
- ];
225
- const runData = Object.fromEntries(
226
- nodeNames.map((nodeName) => {
227
- const tasks = response.data?.resultData.runData[nodeName] ?? [];
228
- const mergedTasks = tasks.concat(
229
- (startData[nodeName] ?? []).filter(
230
- (task) => (
231
- // To remove duplicate runs, we check start time in addition to execution index
232
- // because nodes such as Wait and Form emits multiple websocket events with
233
- // different execution index for a single run
234
- tasks.every(
235
- (t) => t.startTime < task.startTime && t.executionIndex !== task.executionIndex
236
- )
237
- )
238
- ).map((task) => ({
239
- ...task,
240
- executionTime: 0,
241
- executionStatus: "running"
242
- }))
243
- );
244
- return [nodeName, mergedTasks];
245
- })
246
- );
247
- return {
248
- ...response,
249
- data: {
250
- ...response.data,
251
- resultData: {
252
- ...response.data.resultData,
253
- runData
254
- }
255
- }
256
- };
257
- }
258
- function hasSubExecution(entry) {
259
- return findSubExecutionLocator(entry) !== void 0;
260
- }
261
- function findSubExecutionLocator(entry) {
262
- const metadata = entry.runData?.metadata?.subExecution;
263
- if (metadata) {
264
- return { workflowId: metadata.workflowId, executionId: metadata.executionId };
265
- }
266
- return parseErrorMetadata(entry.runData?.error)?.subExecution;
267
- }
268
- function getDepth(entry) {
269
- let depth = 0;
270
- let currentEntry = entry;
271
- while (currentEntry.parent !== void 0) {
272
- currentEntry = currentEntry.parent;
273
- depth++;
274
- }
275
- return depth;
276
- }
277
- function getInputKey(node) {
278
- if (node.type === MANUAL_CHAT_TRIGGER_NODE_TYPE && node.typeVersion < 1.1) {
279
- return "input";
280
- }
281
- if (node.type === CHAT_TRIGGER_NODE_TYPE) {
282
- return "chatInput";
283
- }
284
- return "chatInput";
285
- }
286
- function extractChatInput(workflow, resultData) {
287
- const chatTrigger = workflow.nodes.find(isChatNode);
288
- if (chatTrigger === void 0) {
289
- return void 0;
290
- }
291
- const inputKey = getInputKey(chatTrigger);
292
- const runData = (resultData.runData[chatTrigger.name] ?? [])[0];
293
- const message = runData?.data?.[NodeConnectionTypes.Main]?.[0]?.[0]?.json?.[inputKey];
294
- if (runData === void 0 || typeof message !== "string") {
295
- return void 0;
296
- }
297
- return {
298
- text: message,
299
- sender: "user",
300
- id: v4()
301
- };
302
- }
303
- function extractBotResponse(resultData, executionId, emptyText2) {
304
- const lastNodeExecuted = resultData.lastNodeExecuted;
305
- if (!lastNodeExecuted) return void 0;
306
- const nodeResponseDataArray = get(resultData.runData, lastNodeExecuted) ?? [];
307
- const nodeResponseData = nodeResponseDataArray[nodeResponseDataArray.length - 1];
308
- let responseMessage;
309
- if (get(nodeResponseData, "error")) {
310
- responseMessage = "[ERROR: " + get(nodeResponseData, "error.message") + "]";
311
- } else {
312
- const mainOutputs = get(nodeResponseData, "data.main");
313
- let text;
314
- if (mainOutputs && Array.isArray(mainOutputs)) {
315
- for (const branch of mainOutputs) {
316
- if (branch?.[0]?.json) {
317
- const responseData = branch[0].json;
318
- text = extractResponseText(responseData);
319
- if (text) {
320
- break;
321
- }
322
- }
323
- }
324
- }
325
- text = text ?? emptyText2;
326
- if (!text) {
327
- return void 0;
328
- }
329
- responseMessage = text;
330
- }
331
- return {
332
- text: responseMessage,
333
- sender: "bot",
334
- id: executionId ?? v4()
335
- };
336
- }
337
- function extractResponseText(responseData) {
338
- if (!responseData || isEmpty(responseData)) {
339
- return void 0;
340
- }
341
- const paths = ["output", "text", "response.text", "message"];
342
- const matchedPath = paths.find((path) => get(responseData, path));
343
- if (!matchedPath) return JSON.stringify(responseData, null, 2);
344
- const matchedOutput = get(responseData, matchedPath);
345
- if (typeof matchedOutput === "object") {
346
- return "```json\n" + JSON.stringify(matchedOutput, null, 2) + "\n```";
347
- }
348
- return matchedOutput?.toString() ?? "";
349
- }
350
- function restoreChatHistory(workflowExecutionData, emptyText2) {
351
- if (!workflowExecutionData?.data) {
352
- return [];
353
- }
354
- const userMessage = extractChatInput(
355
- workflowExecutionData.workflowData,
356
- workflowExecutionData.data.resultData
357
- );
358
- const botMessage = extractBotResponse(
359
- workflowExecutionData.data.resultData,
360
- workflowExecutionData.id,
361
- emptyText2
362
- );
363
- return [...userMessage ? [userMessage] : [], ...botMessage ? [botMessage] : []];
364
- }
365
- async function processFiles(data) {
366
- if (!data || data.length === 0) return [];
367
- const filePromises = data.map(async (file) => {
368
- return new Promise((resolve, reject) => {
369
- const reader = new FileReader();
370
- reader.onload = () => resolve({
371
- name: file.name,
372
- type: file.type,
373
- data: reader.result
374
- });
375
- reader.onerror = () => reject(new Error(`Error reading file: ${reader.error?.message ?? "Unknown error"}`));
376
- reader.readAsDataURL(file);
377
- });
378
- });
379
- return await Promise.all(filePromises);
380
- }
381
- function isSubNodeLog(logEntry) {
382
- return logEntry.parent !== void 0 && logEntry.parent.executionId === logEntry.executionId;
383
- }
384
- function isPlaceholderLog(treeNode) {
385
- return treeNode.runData === void 0;
386
- }
387
- function copyExecutionData(executionData) {
388
- return {
389
- ...executionData,
390
- data: {
391
- ...executionData.data,
392
- resultData: {
393
- ...executionData.data?.resultData,
394
- runData: Object.fromEntries(
395
- Object.entries(executionData.data?.resultData.runData ?? {}).map(([k, v]) => [k, [...v]])
396
- )
397
- }
398
- }
399
- };
400
- }
401
11
  function useChatMessaging({
402
12
  chatTrigger,
403
13
  sessionId: sessionId2,
@@ -736,7 +346,7 @@ function useChatState(isReadOnly) {
736
346
  displayExecution
737
347
  };
738
348
  }
739
- const _sfc_main$i = /* @__PURE__ */ defineComponent({
349
+ const _sfc_main$f = /* @__PURE__ */ defineComponent({
740
350
  __name: "LogsPanelHeader",
741
351
  props: {
742
352
  title: {},
@@ -776,395 +386,20 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
776
386
  };
777
387
  }
778
388
  });
779
- const container$8 = "_container_mhycn_123";
780
- const clickable = "_clickable_mhycn_135";
781
- const title$2 = "_title_mhycn_143";
782
- const actions$1 = "_actions_mhycn_151";
783
- const style0$b = {
784
- container: container$8,
389
+ const container$7 = "_container_1y331_123";
390
+ const clickable = "_clickable_1y331_135";
391
+ const title$2 = "_title_1y331_143";
392
+ const actions$1 = "_actions_1y331_151";
393
+ const style0$9 = {
394
+ container: container$7,
785
395
  clickable,
786
396
  title: title$2,
787
397
  actions: actions$1
788
398
  };
789
- const cssModules$b = {
790
- "$style": style0$b
791
- };
792
- const LogsPanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__cssModules", cssModules$b]]);
793
- function useClearExecutionButtonVisible() {
794
- const route = useRoute();
795
- const sourceControlStore = useSourceControlStore();
796
- const workflowsStore = useWorkflowsStore();
797
- const workflowExecutionData = computed(() => workflowsStore.workflowExecutionData);
798
- const isWorkflowRunning = computed(() => workflowsStore.isWorkflowRunning);
799
- const isReadOnlyRoute = computed(() => !!route?.meta?.readOnlyCanvas);
800
- const { editableWorkflow } = useCanvasOperations();
801
- const nodeTypesStore = useNodeTypesStore();
802
- const isReadOnlyEnvironment = computed(() => sourceControlStore.preferences.branchReadOnly);
803
- const allTriggerNodesDisabled = computed(
804
- () => editableWorkflow.value.nodes.filter((node) => node.type === START_NODE_TYPE || nodeTypesStore.isTriggerNode(node.type)).every((node) => node.disabled)
805
- );
806
- return computed(
807
- () => !isReadOnlyRoute.value && !isReadOnlyEnvironment.value && !isWorkflowRunning.value && !allTriggerNodesDisabled.value && !!workflowExecutionData.value
808
- );
809
- }
810
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
811
- __name: "LogsViewConsumedTokenCountText",
812
- props: {
813
- consumedTokens: {}
814
- },
815
- setup(__props) {
816
- const locale = useI18n$1();
817
- return (_ctx, _cache) => {
818
- return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
819
- key: 0,
820
- enterable: false
821
- }, {
822
- content: withCtx(() => [
823
- createVNode(_sfc_main$j, { "consumed-tokens": _ctx.consumedTokens }, null, 8, ["consumed-tokens"])
824
- ]),
825
- default: withCtx(() => [
826
- createBaseVNode("span", null, toDisplayString(unref(locale).baseText("runData.aiContentBlock.tokens", {
827
- interpolate: {
828
- count: unref(formatTokenUsageCount)(_ctx.consumedTokens, "total")
829
- }
830
- })), 1)
831
- ]),
832
- _: 1
833
- })) : createCommentVNode("", true);
834
- };
835
- }
836
- });
837
- var upperFirstExports = requireUpperFirst();
838
- const upperFirst = /* @__PURE__ */ getDefaultExportFromCjs(upperFirstExports);
839
- const _hoisted_1$e = { key: 0 };
840
- const _sfc_main$g = /* @__PURE__ */ defineComponent({
841
- __name: "LogsViewNodeName",
842
- props: {
843
- name: {},
844
- isError: { type: Boolean },
845
- isDeleted: { type: Boolean }
846
- },
847
- setup(__props) {
848
- return (_ctx, _cache) => {
849
- return openBlock(), createBlock(unref(N8nText), {
850
- tag: "div",
851
- bold: true,
852
- size: "small",
853
- class: normalizeClass(_ctx.$style.name),
854
- color: _ctx.isError ? "danger" : void 0
855
- }, {
856
- default: withCtx(() => [
857
- _ctx.isDeleted ? (openBlock(), createElementBlock("del", _hoisted_1$e, toDisplayString(_ctx.name), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
858
- createTextVNode(toDisplayString(_ctx.name), 1)
859
- ], 64))
860
- ]),
861
- _: 1
862
- }, 8, ["class", "color"]);
863
- };
864
- }
865
- });
866
- const name$1 = "_name_1t0q3_123";
867
- const style0$a = {
868
- name: name$1
869
- };
870
- const cssModules$a = {
871
- "$style": style0$a
872
- };
873
- const LogsViewNodeName = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__cssModules", cssModules$a]]);
874
- const _hoisted_1$d = ["aria-expanded", "aria-selected"];
875
- const _sfc_main$f = /* @__PURE__ */ defineComponent({
876
- __name: "LogsOverviewRow",
877
- props: {
878
- data: {},
879
- isSelected: { type: Boolean },
880
- isReadOnly: { type: Boolean },
881
- shouldShowTokenCountColumn: { type: Boolean },
882
- isCompact: { type: Boolean },
883
- latestInfo: {},
884
- expanded: { type: Boolean },
885
- canOpenNdv: { type: Boolean }
886
- },
887
- emits: ["toggleExpanded", "toggleSelected", "triggerPartialExecution", "openNdv"],
888
- setup(__props, { emit: __emit }) {
889
- const props = __props;
890
- const emit = __emit;
891
- const container2 = useTemplateRef("containerRef");
892
- const locale = useI18n$1();
893
- const now = useTimestamp({ interval: 1e3 });
894
- const nodeTypeStore = useNodeTypesStore();
895
- const type = computed(() => nodeTypeStore.getNodeType(props.data.node.type));
896
- const isRunning = computed(() => props.data.runData?.executionStatus === "running");
897
- const isWaiting = computed(() => props.data.runData?.executionStatus === "waiting");
898
- const isSettled = computed(() => !isRunning.value && !isWaiting.value);
899
- const isError = computed(() => !!props.data.runData?.error);
900
- const statusTextKeyPath = computed(
901
- () => isSettled.value ? "logs.overview.body.summaryText.in" : "logs.overview.body.summaryText.for"
902
- );
903
- const startedAtText = computed(() => {
904
- if (props.data.runData === void 0) {
905
- return "—";
906
- }
907
- const time = new Date(props.data.runData.startTime);
908
- return locale.baseText("logs.overview.body.started", {
909
- interpolate: {
910
- time: `${toTime(time, true)}, ${toDayMonth(time)}`
911
- }
912
- });
913
- });
914
- const statusText = computed(() => upperFirst(props.data.runData?.executionStatus ?? ""));
915
- const timeText = computed(
916
- () => props.data.runData ? locale.displayTimer(
917
- isSettled.value ? props.data.runData.executionTime : Math.floor((now.value - props.data.runData.startTime) / 1e3) * 1e3,
918
- true
919
- ) : void 0
920
- );
921
- const subtreeConsumedTokens = computed(
922
- () => props.shouldShowTokenCountColumn ? getSubtreeTotalConsumedTokens(props.data, false) : void 0
923
- );
924
- const hasChildren = computed(() => props.data.children.length > 0 || hasSubExecution(props.data));
925
- const indents = computed(() => {
926
- const ret = [];
927
- let data = props.data;
928
- while (data.parent !== void 0) {
929
- const siblings = data.parent?.children ?? [];
930
- const lastSibling = siblings[siblings.length - 1];
931
- ret.unshift({ straight: lastSibling?.id !== data.id, curved: data === props.data });
932
- data = data.parent;
933
- }
934
- return ret;
935
- });
936
- watch(
937
- () => props.isSelected,
938
- (isSelected) => {
939
- void nextTick(() => {
940
- if (isSelected) {
941
- container2.value?.focus();
942
- }
943
- });
944
- },
945
- { immediate: true }
946
- );
947
- return (_ctx, _cache) => {
948
- return openBlock(), createElementBlock("div", {
949
- ref: "containerRef",
950
- role: "treeitem",
951
- tabindex: "-1",
952
- "aria-expanded": props.data.children.length > 0 && props.expanded,
953
- "aria-selected": props.isSelected,
954
- class: normalizeClass({
955
- [_ctx.$style.container]: true,
956
- [_ctx.$style.compact]: props.isCompact,
957
- [_ctx.$style.error]: isError.value,
958
- [_ctx.$style.selected]: props.isSelected
959
- }),
960
- onClick: _cache[3] || (_cache[3] = withModifiers(($event) => emit("toggleSelected"), ["stop"]))
961
- }, [
962
- (openBlock(true), createElementBlock(Fragment, null, renderList(indents.value, (indent2, level) => {
963
- return openBlock(), createElementBlock("div", {
964
- key: level,
965
- class: normalizeClass({
966
- [_ctx.$style.indent]: true,
967
- [_ctx.$style.connectorCurved]: indent2.curved,
968
- [_ctx.$style.connectorStraight]: indent2.straight
969
- })
970
- }, null, 2);
971
- }), 128)),
972
- createBaseVNode("div", {
973
- class: normalizeClass(_ctx.$style.background),
974
- style: normalizeStyle({ "--indent-depth": indents.value.length })
975
- }, null, 6),
976
- createVNode(NodeIcon, {
977
- "node-type": type.value,
978
- size: 16,
979
- class: normalizeClass(_ctx.$style.icon)
980
- }, null, 8, ["node-type", "class"]),
981
- createVNode(LogsViewNodeName, {
982
- class: normalizeClass(_ctx.$style.name),
983
- name: _ctx.latestInfo?.name ?? props.data.node.name,
984
- "is-error": isError.value,
985
- "is-deleted": _ctx.latestInfo?.deleted ?? false
986
- }, null, 8, ["class", "name", "is-error", "is-deleted"]),
987
- !_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
988
- key: 0,
989
- tag: "div",
990
- color: "text-light",
991
- size: "small",
992
- class: normalizeClass(_ctx.$style.timeTook)
993
- }, {
994
- default: withCtx(() => [
995
- timeText.value !== void 0 ? (openBlock(), createBlock(unref(I18nT), {
996
- key: 0,
997
- keypath: statusTextKeyPath.value,
998
- scope: "global"
999
- }, {
1000
- status: withCtx(() => [
1001
- createVNode(unref(N8nText), {
1002
- color: isError.value ? "danger" : void 0,
1003
- bold: isError.value,
1004
- size: "small"
1005
- }, {
1006
- default: withCtx(() => [
1007
- isRunning.value ? (openBlock(), createBlock(AnimatedSpinner, {
1008
- key: 0,
1009
- class: normalizeClass(_ctx.$style.statusTextIcon)
1010
- }, null, 8, ["class"])) : isWaiting.value ? (openBlock(), createBlock(unref(N8nIcon), {
1011
- key: 1,
1012
- icon: "status-waiting",
1013
- class: normalizeClass(_ctx.$style.statusTextIcon)
1014
- }, null, 8, ["class"])) : isError.value ? (openBlock(), createBlock(unref(N8nIcon), {
1015
- key: 2,
1016
- icon: "triangle-alert",
1017
- class: normalizeClass(_ctx.$style.statusTextIcon)
1018
- }, null, 8, ["class"])) : createCommentVNode("", true),
1019
- createTextVNode(" " + toDisplayString(statusText.value), 1)
1020
- ]),
1021
- _: 1
1022
- }, 8, ["color", "bold"])
1023
- ]),
1024
- time: withCtx(() => [
1025
- createTextVNode(toDisplayString(timeText.value), 1)
1026
- ]),
1027
- _: 1
1028
- }, 8, ["keypath"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1029
- createTextVNode("—")
1030
- ], 64))
1031
- ]),
1032
- _: 1
1033
- }, 8, ["class"])) : createCommentVNode("", true),
1034
- !_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
1035
- key: 1,
1036
- tag: "div",
1037
- color: "text-light",
1038
- size: "small",
1039
- class: normalizeClass(_ctx.$style.startedAt)
1040
- }, {
1041
- default: withCtx(() => [
1042
- createTextVNode(toDisplayString(startedAtText.value), 1)
1043
- ]),
1044
- _: 1
1045
- }, 8, ["class"])) : createCommentVNode("", true),
1046
- !_ctx.isCompact && subtreeConsumedTokens.value !== void 0 ? (openBlock(), createBlock(unref(N8nText), {
1047
- key: 2,
1048
- tag: "div",
1049
- color: "text-light",
1050
- size: "small",
1051
- class: normalizeClass(_ctx.$style.consumedTokens)
1052
- }, {
1053
- default: withCtx(() => [
1054
- subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.expanded) ? (openBlock(), createBlock(_sfc_main$h, {
1055
- key: 0,
1056
- "consumed-tokens": subtreeConsumedTokens.value
1057
- }, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
1058
- ]),
1059
- _: 1
1060
- }, 8, ["class"])) : createCommentVNode("", true),
1061
- isError.value && _ctx.isCompact ? (openBlock(), createBlock(unref(N8nIcon), {
1062
- key: 3,
1063
- size: "medium",
1064
- color: "danger",
1065
- icon: "triangle-alert",
1066
- class: normalizeClass(_ctx.$style.compactErrorIcon)
1067
- }, null, 8, ["class"])) : createCommentVNode("", true),
1068
- !_ctx.isCompact || !props.latestInfo?.deleted ? (openBlock(), createBlock(unref(_sfc_main$k), {
1069
- key: 4,
1070
- type: "secondary",
1071
- size: "small",
1072
- icon: "square-pen",
1073
- "icon-size": "medium",
1074
- style: normalizeStyle({
1075
- visibility: props.canOpenNdv ? "" : "hidden"
1076
- }),
1077
- disabled: props.latestInfo?.deleted,
1078
- class: normalizeClass(_ctx.$style.openNdvButton),
1079
- "aria-label": unref(locale).baseText("logs.overview.body.open"),
1080
- onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("openNdv"), ["stop"]))
1081
- }, null, 8, ["style", "disabled", "class", "aria-label"])) : createCommentVNode("", true),
1082
- !_ctx.isCompact || !props.isReadOnly && !props.latestInfo?.deleted && !props.latestInfo?.disabled ? (openBlock(), createBlock(unref(_sfc_main$k), {
1083
- key: 5,
1084
- type: "secondary",
1085
- size: "small",
1086
- icon: "play",
1087
- "aria-label": unref(locale).baseText("logs.overview.body.run"),
1088
- class: normalizeClass([_ctx.$style.partialExecutionButton, indents.value.length > 0 ? _ctx.$style.unavailable : ""]),
1089
- disabled: props.latestInfo?.deleted || props.latestInfo?.disabled,
1090
- onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("triggerPartialExecution"), ["stop"]))
1091
- }, null, 8, ["aria-label", "class", "disabled"])) : createCommentVNode("", true),
1092
- _ctx.isCompact && !hasChildren.value ? (openBlock(), createElementBlock(Fragment, { key: 6 }, [
1093
- isRunning.value ? (openBlock(), createBlock(AnimatedSpinner, {
1094
- key: 0,
1095
- class: normalizeClass(_ctx.$style.statusIcon)
1096
- }, null, 8, ["class"])) : isWaiting.value ? (openBlock(), createBlock(unref(N8nIcon), {
1097
- key: 1,
1098
- icon: "status-waiting",
1099
- class: normalizeClass(_ctx.$style.statusIcon)
1100
- }, null, 8, ["class"])) : createCommentVNode("", true)
1101
- ], 64)) : createCommentVNode("", true),
1102
- !_ctx.isCompact || hasChildren.value ? (openBlock(), createBlock(unref(N8nButton), {
1103
- key: 7,
1104
- type: "secondary",
1105
- size: "small",
1106
- icon: props.expanded ? "chevron-down" : "chevron-up",
1107
- "icon-size": "medium",
1108
- square: true,
1109
- style: normalizeStyle({
1110
- visibility: hasChildren.value ? "" : "hidden"
1111
- }),
1112
- class: normalizeClass(_ctx.$style.toggleButton),
1113
- "aria-label": unref(locale).baseText("logs.overview.body.toggleRow"),
1114
- onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleExpanded"), ["stop"]))
1115
- }, null, 8, ["icon", "style", "class", "aria-label"])) : createCommentVNode("", true)
1116
- ], 10, _hoisted_1$d);
1117
- };
1118
- }
1119
- });
1120
- const container$7 = "_container_6ygvb_123";
1121
- const background = "_background_6ygvb_140";
1122
- const selected = "_selected_6ygvb_149";
1123
- const error = "_error_6ygvb_155";
1124
- const indent = "_indent_6ygvb_159";
1125
- const connectorCurved = "_connectorCurved_6ygvb_168";
1126
- const connectorStraight = "_connectorStraight_6ygvb_178";
1127
- const icon$3 = "_icon_6ygvb_187";
1128
- const name = "_name_6ygvb_193";
1129
- const timeTook = "_timeTook_6ygvb_199";
1130
- const statusTextIcon = "_statusTextIcon_6ygvb_204";
1131
- const startedAt = "_startedAt_6ygvb_209";
1132
- const consumedTokens = "_consumedTokens_6ygvb_215";
1133
- const compactErrorIcon = "_compactErrorIcon_6ygvb_222";
1134
- const partialExecutionButton = "_partialExecutionButton_6ygvb_234";
1135
- const openNdvButton = "_openNdvButton_6ygvb_235";
1136
- const compact = "_compact_6ygvb_222";
1137
- const unavailable = "_unavailable_6ygvb_245";
1138
- const toggleButton = "_toggleButton_6ygvb_253";
1139
- const statusIcon = "_statusIcon_6ygvb_277";
1140
- const placeholder$1 = "_placeholder_6ygvb_285";
1141
- const style0$9 = {
1142
- container: container$7,
1143
- background,
1144
- selected,
1145
- error,
1146
- indent,
1147
- connectorCurved,
1148
- connectorStraight,
1149
- icon: icon$3,
1150
- name,
1151
- timeTook,
1152
- statusTextIcon,
1153
- startedAt,
1154
- consumedTokens,
1155
- compactErrorIcon,
1156
- partialExecutionButton,
1157
- openNdvButton,
1158
- compact,
1159
- unavailable,
1160
- toggleButton,
1161
- statusIcon,
1162
- placeholder: placeholder$1
1163
- };
1164
399
  const cssModules$9 = {
1165
400
  "$style": style0$9
1166
401
  };
1167
- const LogsOverviewRow = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__cssModules", cssModules$9]]);
402
+ const LogsPanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__cssModules", cssModules$9]]);
1168
403
  const _sfc_main$e = /* @__PURE__ */ defineComponent({
1169
404
  __name: "LogsViewExecutionSummary",
1170
405
  props: {
@@ -1198,7 +433,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1198
433
  }, {
1199
434
  default: withCtx(() => [
1200
435
  createBaseVNode("span", null, toDisplayString(executionStatusText.value), 1),
1201
- _ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$h, {
436
+ _ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$g, {
1202
437
  key: 0,
1203
438
  "consumed-tokens": _ctx.consumedTokens
1204
439
  }, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
@@ -1208,7 +443,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
1208
443
  };
1209
444
  }
1210
445
  });
1211
- const container$6 = "_container_pt5hk_123";
446
+ const container$6 = "_container_1sayb_123";
1212
447
  const style0$8 = {
1213
448
  container: container$6
1214
449
  };
@@ -1216,6 +451,23 @@ const cssModules$8 = {
1216
451
  "$style": style0$8
1217
452
  };
1218
453
  const LogsViewExecutionSummary = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__cssModules", cssModules$8]]);
454
+ function useClearExecutionButtonVisible() {
455
+ const route = useRoute();
456
+ const sourceControlStore = useSourceControlStore();
457
+ const workflowsStore = useWorkflowsStore();
458
+ const workflowExecutionData = computed(() => workflowsStore.workflowExecutionData);
459
+ const isWorkflowRunning = computed(() => workflowsStore.isWorkflowRunning);
460
+ const isReadOnlyRoute = computed(() => !!route?.meta?.readOnlyCanvas);
461
+ const { editableWorkflow } = useCanvasOperations();
462
+ const nodeTypesStore = useNodeTypesStore();
463
+ const isReadOnlyEnvironment = computed(() => sourceControlStore.preferences.branchReadOnly);
464
+ const allTriggerNodesDisabled = computed(
465
+ () => editableWorkflow.value.nodes.filter((node) => node.type === START_NODE_TYPE || nodeTypesStore.isTriggerNode(node.type)).every((node) => node.disabled)
466
+ );
467
+ return computed(
468
+ () => !isReadOnlyRoute.value && !isReadOnlyEnvironment.value && !isWorkflowRunning.value && !allTriggerNodesDisabled.value && !!workflowExecutionData.value
469
+ );
470
+ }
1219
471
  const _sfc_main$d = /* @__PURE__ */ defineComponent({
1220
472
  __name: "LogsOverviewPanel",
1221
473
  props: {
@@ -1233,16 +485,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1233
485
  setup(__props, { emit: __emit }) {
1234
486
  const emit = __emit;
1235
487
  const locale = useI18n$1();
1236
- const router = useRouter();
1237
- const runWorkflow = useRunWorkflow({ router });
1238
488
  const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
1239
- const isEmpty2 = computed(() => __props.flatLogEntries.length === 0 || __props.execution === void 0);
489
+ const isEmpty = computed(() => __props.flatLogEntries.length === 0 || __props.execution === void 0);
1240
490
  const switchViewOptions = computed(() => [
1241
491
  { label: locale.baseText("logs.overview.header.switch.overview"), value: "overview" },
1242
492
  { label: locale.baseText("logs.overview.header.switch.details"), value: "details" }
1243
493
  ]);
1244
494
  const hasStaticScrollbar = getScrollbarWidth() > 0;
1245
- const consumedTokens2 = computed(
495
+ const consumedTokens = computed(
1246
496
  () => getTotalConsumedTokens(
1247
497
  ...__props.entries.map(
1248
498
  (entry) => getSubtreeTotalConsumedTokens(
@@ -1253,54 +503,15 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1253
503
  )
1254
504
  )
1255
505
  );
1256
- const shouldShowTokenCountColumn = computed(
1257
- () => consumedTokens2.value.totalTokens > 0 || __props.entries.some((entry) => getSubtreeTotalConsumedTokens(entry, true).totalTokens > 0)
1258
- );
1259
- const isExpanded = computed(
1260
- () => __props.flatLogEntries.reduce((acc, entry, index, arr) => {
1261
- acc[entry.id] = arr[index + 1]?.parent?.id === entry.id;
1262
- return acc;
1263
- }, {})
506
+ const timeTook = computed(
507
+ () => __props.execution?.startedAt && __props.execution.stoppedAt ? +new Date(__props.execution.stoppedAt) - +new Date(__props.execution.startedAt) : void 0
1264
508
  );
1265
- const virtualList = useVirtualList(
1266
- toRef(() => __props.flatLogEntries),
1267
- { itemHeight: 32 }
509
+ const shouldShowTokenCountColumn = computed(
510
+ () => consumedTokens.value.totalTokens > 0 || __props.entries.some((entry) => getSubtreeTotalConsumedTokens(entry, true).totalTokens > 0)
1268
511
  );
1269
512
  function handleSwitchView(value) {
1270
513
  emit("select", value === "overview" ? void 0 : __props.flatLogEntries[0]);
1271
514
  }
1272
- async function handleTriggerPartialExecution(treeNode) {
1273
- const latestName = __props.latestNodeInfo[treeNode.node.id]?.name ?? treeNode.node.name;
1274
- if (latestName) {
1275
- await runWorkflow.runWorkflow({ destinationNode: latestName });
1276
- }
1277
- }
1278
- watch(
1279
- [() => __props.execution?.status === "running", () => __props.flatLogEntries.length],
1280
- async ([isRunning, flatEntryCount], [wasRunning]) => {
1281
- await nextTick(() => {
1282
- if (__props.selected === void 0 && (isRunning || wasRunning)) {
1283
- virtualList.scrollTo(flatEntryCount - 1);
1284
- }
1285
- });
1286
- },
1287
- { immediate: true }
1288
- );
1289
- watch(
1290
- () => __props.selected?.id,
1291
- async (selectedId) => {
1292
- await nextTick(() => {
1293
- if (selectedId === void 0) {
1294
- return;
1295
- }
1296
- const index = virtualList.list.value.some((e) => e.data.id === selectedId) ? -1 : __props.flatLogEntries.findIndex((e) => e.id === selectedId);
1297
- if (index >= 0) {
1298
- virtualList.scrollTo(index);
1299
- }
1300
- });
1301
- },
1302
- { immediate: true }
1303
- );
1304
515
  return (_ctx, _cache) => {
1305
516
  return openBlock(), createElementBlock("div", {
1306
517
  class: normalizeClass([_ctx.$style.container, hasStaticScrollbar ? _ctx.$style.staticScrollBar : ""]),
@@ -1341,10 +552,10 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1341
552
  }, 8, ["title", "is-clickable"]),
1342
553
  _ctx.isOpen ? (openBlock(), createElementBlock("div", {
1343
554
  key: 0,
1344
- class: normalizeClass([_ctx.$style.content, isEmpty2.value ? _ctx.$style.empty : ""]),
555
+ class: normalizeClass([_ctx.$style.content, isEmpty.value ? _ctx.$style.empty : ""]),
1345
556
  "data-test-id": "logs-overview-body"
1346
557
  }, [
1347
- isEmpty2.value || _ctx.execution === void 0 ? (openBlock(), createBlock(unref(N8nText), {
558
+ isEmpty.value || _ctx.execution === void 0 ? (openBlock(), createBlock(unref(N8nText), {
1348
559
  key: 0,
1349
560
  tag: "p",
1350
561
  size: "medium",
@@ -1361,33 +572,22 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1361
572
  "data-test-id": "logs-overview-status",
1362
573
  class: normalizeClass(_ctx.$style.summary),
1363
574
  status: _ctx.execution.status,
1364
- "consumed-tokens": consumedTokens2.value,
575
+ "consumed-tokens": consumedTokens.value,
1365
576
  "start-time": +new Date(_ctx.execution.startedAt),
1366
- "time-took": _ctx.execution.startedAt && _ctx.execution.stoppedAt ? +new Date(_ctx.execution.stoppedAt) - +new Date(_ctx.execution.startedAt) : void 0
577
+ "time-took": timeTook.value
1367
578
  }, null, 8, ["class", "status", "consumed-tokens", "start-time", "time-took"]),
1368
- createBaseVNode("div", mergeProps({
1369
- class: _ctx.$style.tree
1370
- }, unref(virtualList).containerProps), [
1371
- createBaseVNode("div", mergeProps(unref(virtualList).wrapperProps.value, { role: "tree" }), [
1372
- (openBlock(true), createElementBlock(Fragment, null, renderList(unref(virtualList).list.value, ({ data, index }) => {
1373
- return openBlock(), createBlock(LogsOverviewRow, {
1374
- key: index,
1375
- data,
1376
- "is-read-only": _ctx.isReadOnly,
1377
- "is-selected": data.id === _ctx.selected?.id,
1378
- "is-compact": _ctx.isCompact,
1379
- "should-show-token-count-column": shouldShowTokenCountColumn.value,
1380
- "latest-info": _ctx.latestNodeInfo[data.node.id],
1381
- expanded: isExpanded.value[data.id],
1382
- "can-open-ndv": data.executionId === _ctx.execution?.id,
1383
- onToggleExpanded: ($event) => emit("toggleExpanded", data),
1384
- onOpenNdv: ($event) => emit("openNdv", data),
1385
- onTriggerPartialExecution: ($event) => handleTriggerPartialExecution(data),
1386
- onToggleSelected: ($event) => emit("select", _ctx.selected?.id === data.id ? void 0 : data)
1387
- }, null, 8, ["data", "is-read-only", "is-selected", "is-compact", "should-show-token-count-column", "latest-info", "expanded", "can-open-ndv", "onToggleExpanded", "onOpenNdv", "onTriggerPartialExecution", "onToggleSelected"]);
1388
- }), 128))
1389
- ], 16)
1390
- ], 16),
579
+ createVNode(LogsOverviewRows, {
580
+ "is-read-only": _ctx.isReadOnly,
581
+ selected: _ctx.selected,
582
+ "is-compact": _ctx.isCompact,
583
+ "should-show-token-count-column": shouldShowTokenCountColumn.value,
584
+ "latest-node-info": _ctx.latestNodeInfo,
585
+ "flat-log-entries": _ctx.flatLogEntries,
586
+ "can-open-ndv": true,
587
+ onToggleExpanded: _cache[2] || (_cache[2] = ($event) => emit("toggleExpanded", $event)),
588
+ onOpenNdv: _cache[3] || (_cache[3] = ($event) => emit("openNdv", $event)),
589
+ onSelect: _cache[4] || (_cache[4] = ($event) => emit("select", $event))
590
+ }, null, 8, ["is-read-only", "selected", "is-compact", "should-show-token-count-column", "latest-node-info", "flat-log-entries"]),
1391
591
  createVNode(unref(N8nRadioButtons), {
1392
592
  size: "small-medium",
1393
593
  class: normalizeClass(_ctx.$style.switchViewButtons),
@@ -1401,15 +601,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1401
601
  };
1402
602
  }
1403
603
  });
1404
- const container$5 = "_container_pydb1_123";
1405
- const clearButton = "_clearButton_pydb1_133";
1406
- const content$1 = "_content_pydb1_139";
1407
- const empty = "_empty_pydb1_149";
1408
- const emptyText = "_emptyText_pydb1_154";
1409
- const summary = "_summary_pydb1_159";
1410
- const tree = "_tree_pydb1_163";
1411
- const staticScrollBar = "_staticScrollBar_pydb1_168";
1412
- const switchViewButtons = "_switchViewButtons_pydb1_193";
604
+ const container$5 = "_container_svlfi_123";
605
+ const clearButton = "_clearButton_svlfi_133";
606
+ const content$1 = "_content_svlfi_139";
607
+ const empty = "_empty_svlfi_149";
608
+ const emptyText = "_emptyText_svlfi_154";
609
+ const summary = "_summary_svlfi_159";
610
+ const switchViewButtons = "_switchViewButtons_svlfi_163";
1413
611
  const style0$7 = {
1414
612
  container: container$5,
1415
613
  clearButton,
@@ -1417,8 +615,6 @@ const style0$7 = {
1417
615
  empty,
1418
616
  emptyText,
1419
617
  summary,
1420
- tree,
1421
- staticScrollBar,
1422
618
  switchViewButtons
1423
619
  };
1424
620
  const cssModules$7 = {
@@ -4199,8 +3395,8 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
4199
3395
  try {
4200
3396
  const dataURL = await readFileAsDataURL(file);
4201
3397
  fileSources.value[file.name] = dataURL;
4202
- } catch (error2) {
4203
- console.error("Error reading file:", error2);
3398
+ } catch (error) {
3399
+ console.error("Error reading file:", error);
4204
3400
  }
4205
3401
  }
4206
3402
  }
@@ -4419,8 +3615,8 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4419
3615
  waitingForChatResponse.value = false;
4420
3616
  chatStore.waitingForResponse.value = false;
4421
3617
  };
4422
- } catch (error2) {
4423
- console.error("Error setting up websocket connection", error2);
3618
+ } catch (error) {
3619
+ console.error("Error setting up websocket connection", error);
4424
3620
  }
4425
3621
  }
4426
3622
  }
@@ -4583,7 +3779,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4583
3779
  };
4584
3780
  }
4585
3781
  });
4586
- const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-0216470d"]]);
3782
+ const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-71b23fec"]]);
4587
3783
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
4588
3784
  __name: "MessageTyping",
4589
3785
  props: {
@@ -4736,8 +3932,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
4736
3932
  };
4737
3933
  }
4738
3934
  });
4739
- const container$4 = "_container_pqtqf_123";
4740
- const icon$2 = "_icon_pqtqf_129";
3935
+ const container$4 = "_container_1v2rk_123";
3936
+ const icon$2 = "_icon_1v2rk_129";
4741
3937
  const style0$6 = {
4742
3938
  container: container$4,
4743
3939
  icon: icon$2
@@ -4780,8 +3976,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4780
3976
  };
4781
3977
  }
4782
3978
  });
4783
- const container$3 = "_container_u1r1u_123";
4784
- const icon$1 = "_icon_u1r1u_129";
3979
+ const container$3 = "_container_14jp1_123";
3980
+ const icon$1 = "_icon_14jp1_129";
4785
3981
  const style0$5 = {
4786
3982
  container: container$3,
4787
3983
  icon: icon$1
@@ -4928,7 +4124,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4928
4124
  content: unref(locale).baseText("chat.window.session.resetSession")
4929
4125
  }, {
4930
4126
  default: withCtx(() => [
4931
- createVNode(unref(_sfc_main$k), {
4127
+ createVNode(unref(_sfc_main$h), {
4932
4128
  class: normalizeClass(_ctx.$style.newHeaderButton),
4933
4129
  "data-test-id": "refresh-session-button",
4934
4130
  outline: "",
@@ -5034,18 +4230,18 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
5034
4230
  };
5035
4231
  }
5036
4232
  });
5037
- const chat$1 = "_chat_h9jq1_123";
5038
- const chatHeader = "_chatHeader_h9jq1_151";
5039
- const chatTitle = "_chatTitle_h9jq1_164";
5040
- const session = "_session_h9jq1_168";
5041
- const sessionId = "_sessionId_h9jq1_176";
5042
- const copyable = "_copyable_h9jq1_182";
5043
- const headerButton = "_headerButton_h9jq1_186";
5044
- const newHeaderButton = "_newHeaderButton_h9jq1_191";
5045
- const chatBody = "_chatBody_h9jq1_196";
5046
- const messages = "_messages_h9jq1_205";
5047
- const messagesInput = "_messagesInput_h9jq1_216";
5048
- const messagesHistory = "_messagesHistory_h9jq1_250";
4233
+ const chat$1 = "_chat_uw011_123";
4234
+ const chatHeader = "_chatHeader_uw011_151";
4235
+ const chatTitle = "_chatTitle_uw011_164";
4236
+ const session = "_session_uw011_168";
4237
+ const sessionId = "_sessionId_uw011_176";
4238
+ const copyable = "_copyable_uw011_182";
4239
+ const headerButton = "_headerButton_uw011_186";
4240
+ const newHeaderButton = "_newHeaderButton_uw011_191";
4241
+ const chatBody = "_chatBody_uw011_196";
4242
+ const messages = "_messages_uw011_205";
4243
+ const messagesInput = "_messagesInput_uw011_216";
4244
+ const messagesHistory = "_messagesHistory_uw011_250";
5049
4245
  const style0$4 = {
5050
4246
  chat: chat$1,
5051
4247
  chatHeader,
@@ -5152,7 +4348,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5152
4348
  }, 8, ["class"])
5153
4349
  ]),
5154
4350
  "header-end": withCtx((itemCountProps) => [
5155
- createVNode(RunDataItemCount, normalizeProps(guardReactiveProps(itemCountProps)), null, 16)
4351
+ createVNode(RunDataItemCount, mergeProps(itemCountProps, {
4352
+ search: displayMode.value === "schema" ? "" : itemCountProps.search
4353
+ }), null, 16, ["search"])
5156
4354
  ]),
5157
4355
  "no-output-data": withCtx(() => [
5158
4356
  createVNode(NDVEmptyState, {
@@ -5166,7 +4364,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5166
4364
  }, {
5167
4365
  default: withCtx(() => [
5168
4366
  withDirectives(createBaseVNode("span", null, null, 512), [
5169
- [_directive_n8n_html, unref(waitingNodeTooltip)(_ctx.logEntry.node)]
4367
+ [_directive_n8n_html, unref(waitingNodeTooltip)(_ctx.logEntry.node, _ctx.logEntry.workflow)]
5170
4368
  ])
5171
4369
  ]),
5172
4370
  _: 1
@@ -5206,8 +4404,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5206
4404
  };
5207
4405
  }
5208
4406
  });
5209
- const component = "_component_qlocg_123";
5210
- const title$1 = "_title_qlocg_127";
4407
+ const component = "_component_1v5g3_123";
4408
+ const title$1 = "_title_1v5g3_127";
5211
4409
  const style0$3 = {
5212
4410
  component,
5213
4411
  title: title$1
@@ -5328,7 +4526,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5328
4526
  const ndvStore = useNDVStore();
5329
4527
  const experimentalNdvStore = useExperimentalNdvStore();
5330
4528
  const type = computed(() => nodeTypeStore.getNodeType(__props.logEntry.node.type));
5331
- const consumedTokens2 = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry, false));
4529
+ const consumedTokens = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry, false));
5332
4530
  const isTriggerNode = computed(() => type.value?.group.includes("trigger"));
5333
4531
  const container2 = useTemplateRef("container");
5334
4532
  const resizer = useResizablePanel("N8N_LOGS_INPUT_PANEL_WIDTH", {
@@ -5382,7 +4580,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5382
4580
  key: 0,
5383
4581
  class: normalizeClass(_ctx.$style.executionSummary),
5384
4582
  status: _ctx.logEntry.runData.executionStatus ?? "unknown",
5385
- "consumed-tokens": consumedTokens2.value,
4583
+ "consumed-tokens": consumedTokens.value,
5386
4584
  "start-time": _ctx.logEntry.runData.startTime,
5387
4585
  "time-took": _ctx.logEntry.runData.executionTime
5388
4586
  }, null, 8, ["class", "status", "consumed-tokens", "start-time", "time-took"])) : createCommentVNode("", true)
@@ -5497,19 +4695,19 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5497
4695
  };
5498
4696
  }
5499
4697
  });
5500
- const container$2 = "_container_tdw6t_123";
5501
- const header = "_header_tdw6t_132";
5502
- const actions = "_actions_tdw6t_136";
5503
- const pressed = "_pressed_tdw6t_142";
5504
- const title = "_title_tdw6t_146";
5505
- const icon = "_icon_tdw6t_152";
5506
- const executionSummary = "_executionSummary_tdw6t_156";
5507
- const content = "_content_tdw6t_160";
5508
- const outputPanel = "_outputPanel_tdw6t_168";
5509
- const inputResizer = "_inputResizer_tdw6t_173";
5510
- const collapsed = "_collapsed_tdw6t_177";
5511
- const full = "_full_tdw6t_177";
5512
- const placeholder = "_placeholder_tdw6t_181";
4698
+ const container$2 = "_container_13967_123";
4699
+ const header = "_header_13967_132";
4700
+ const actions = "_actions_13967_136";
4701
+ const pressed = "_pressed_13967_142";
4702
+ const title = "_title_13967_146";
4703
+ const icon = "_icon_13967_152";
4704
+ const executionSummary = "_executionSummary_13967_156";
4705
+ const content = "_content_13967_160";
4706
+ const outputPanel = "_outputPanel_13967_168";
4707
+ const inputResizer = "_inputResizer_13967_173";
4708
+ const collapsed = "_collapsed_13967_177";
4709
+ const full = "_full_13967_177";
4710
+ const placeholder = "_placeholder_13967_181";
5513
4711
  const style0$2 = {
5514
4712
  container: container$2,
5515
4713
  header,
@@ -5555,13 +4753,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5555
4753
  },
5556
4754
  ...__props.showPopOutButton ? [{ id: "popOut", label: popOutButtonText.value }] : []
5557
4755
  ]);
5558
- function handleSelectMenuItem(selected2) {
5559
- switch (selected2) {
4756
+ function handleSelectMenuItem(selected) {
4757
+ switch (selected) {
5560
4758
  case "popOut":
5561
- emit(selected2);
4759
+ emit(selected);
5562
4760
  return;
5563
4761
  case "toggleSyncSelection":
5564
- emit(selected2);
4762
+ emit(selected);
5565
4763
  return;
5566
4764
  }
5567
4765
  }
@@ -5575,7 +4773,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5575
4773
  content: popOutButtonText.value
5576
4774
  }, {
5577
4775
  default: withCtx(() => [
5578
- createVNode(unref(_sfc_main$k), {
4776
+ createVNode(unref(_sfc_main$h), {
5579
4777
  icon: "pop-out",
5580
4778
  type: "tertiary",
5581
4779
  text: "",
@@ -5605,7 +4803,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5605
4803
  "z-index": tooltipZIndex.value
5606
4804
  }, {
5607
4805
  default: withCtx(() => [
5608
- createVNode(unref(_sfc_main$k), {
4806
+ createVNode(unref(_sfc_main$h), {
5609
4807
  type: "tertiary",
5610
4808
  text: "",
5611
4809
  size: "small",
@@ -5621,7 +4819,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5621
4819
  };
5622
4820
  }
5623
4821
  });
5624
- const container$1 = "_container_xdwf0_123";
4822
+ const container$1 = "_container_yw9ej_123";
5625
4823
  const style0$1 = {
5626
4824
  container: container$1
5627
4825
  };
@@ -5629,141 +4827,13 @@ const cssModules$1 = {
5629
4827
  "$style": style0$1
5630
4828
  };
5631
4829
  const LogsPanelActions = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1]]);
5632
- function useThrottle(state, timeout) {
5633
- const throttled = shallowRef(state.value);
5634
- watch(
5635
- state,
5636
- useThrottleFn(() => throttled.value = state.value, timeout, true, true)
5637
- );
5638
- return throttled;
5639
- }
5640
- function useLogsExecutionData(isEnabled) {
5641
- const nodeHelpers = useNodeHelpers();
5642
- const workflowsStore = useWorkflowsStore();
5643
- const workflowState = injectWorkflowState();
5644
- const toast = useToast();
5645
- const state = ref();
5646
- const updateInterval = computed(
5647
- () => Object.keys(state.value?.startData ?? {}).length > 1 ? LOGS_EXECUTION_DATA_THROTTLE_DURATION : 0
5648
- );
5649
- const throttledState = useThrottle(state, updateInterval);
5650
- const subWorkflowExecData = ref({});
5651
- const subWorkflows = ref({});
5652
- const workflow = computed(
5653
- () => throttledState.value ? new Workflow({
5654
- ...throttledState.value.response.workflowData,
5655
- nodeTypes: workflowsStore.getNodeTypes()
5656
- }) : void 0
5657
- );
5658
- const latestNodeNameById = computed(
5659
- () => Object.values(workflow.value?.nodes ?? {}).reduce(
5660
- (acc, node) => {
5661
- const nodeInStore = workflowsStore.getNodeById(node.id);
5662
- acc[node.id] = {
5663
- deleted: !nodeInStore,
5664
- disabled: nodeInStore?.disabled ?? false,
5665
- name: nodeInStore?.name ?? node.name
5666
- };
5667
- return acc;
5668
- },
5669
- {}
5670
- )
5671
- );
5672
- const hasChat = computed(
5673
- () => [Object.values(workflow.value?.nodes ?? {}), workflowsStore.workflow.nodes].some(
5674
- (nodes) => nodes.some(isChatNode)
5675
- )
5676
- );
5677
- const entries = computed(() => {
5678
- if (!isEnabled.value || !throttledState.value || !workflow.value) {
5679
- return [];
5680
- }
5681
- const mergedExecutionData = mergeStartData(
5682
- throttledState.value.startData,
5683
- throttledState.value.response
5684
- );
5685
- return createLogTree(
5686
- workflow.value,
5687
- mergedExecutionData,
5688
- subWorkflows.value,
5689
- subWorkflowExecData.value
5690
- );
5691
- });
5692
- function resetExecutionData() {
5693
- state.value = void 0;
5694
- workflowState.setWorkflowExecutionData(null);
5695
- nodeHelpers.updateNodesExecutionIssues();
5696
- }
5697
- async function loadSubExecution(logEntry) {
5698
- const locator = findSubExecutionLocator(logEntry);
5699
- if (!state.value || locator === void 0) {
5700
- return;
5701
- }
5702
- try {
5703
- const subExecution = await workflowsStore.fetchExecutionDataById(locator.executionId);
5704
- const data = subExecution?.data ? parse(subExecution.data) : void 0;
5705
- if (!data || !subExecution) {
5706
- throw Error("Data is missing");
5707
- }
5708
- subWorkflowExecData.value[locator.executionId] = data;
5709
- subWorkflows.value[locator.workflowId] = new Workflow({
5710
- ...subExecution.workflowData,
5711
- nodeTypes: workflowsStore.getNodeTypes()
5712
- });
5713
- } catch (e) {
5714
- toast.showError(e, "Unable to load sub execution");
5715
- }
5716
- }
5717
- watch(
5718
- // Fields that should trigger update
5719
- [
5720
- () => workflowsStore.workflowExecutionData?.id,
5721
- () => workflowsStore.workflowExecutionData?.workflowData.id,
5722
- () => workflowsStore.workflowExecutionData?.status,
5723
- () => workflowsStore.workflowExecutionResultDataLastUpdate,
5724
- () => workflowsStore.workflowExecutionStartedData
5725
- ],
5726
- useThrottleFn(
5727
- ([executionId], [previousExecutionId]) => {
5728
- state.value = workflowsStore.workflowExecutionData === null ? void 0 : {
5729
- response: copyExecutionData(workflowsStore.workflowExecutionData),
5730
- startData: workflowsStore.workflowExecutionStartedData?.[1] ?? {}
5731
- };
5732
- if (executionId !== previousExecutionId) {
5733
- subWorkflowExecData.value = {};
5734
- subWorkflows.value = {};
5735
- }
5736
- },
5737
- updateInterval,
5738
- true,
5739
- true
5740
- ),
5741
- { immediate: true }
5742
- );
5743
- watch(
5744
- () => workflowsStore.workflowId,
5745
- (newId) => {
5746
- if (newId === PLACEHOLDER_EMPTY_WORKFLOW_ID) {
5747
- resetExecutionData();
5748
- }
5749
- }
5750
- );
5751
- return {
5752
- execution: computed(() => throttledState.value?.response),
5753
- entries,
5754
- hasChat,
5755
- latestNodeNameById,
5756
- resetExecutionData,
5757
- loadSubExecution
5758
- };
5759
- }
5760
- function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
4830
+ function useLogsSelection(execution, tree, flatLogEntries, toggleExpand) {
5761
4831
  const telemetry = useTelemetry();
5762
4832
  const manualLogEntrySelection = shallowRef({ type: "initial" });
5763
4833
  const nodeIdToSelect = shallowRef();
5764
4834
  const isExecutionStopped = computed(() => execution.value?.stoppedAt !== void 0);
5765
- const selected2 = computed(
5766
- () => findSelectedLogEntry(manualLogEntrySelection.value, tree2.value, !isExecutionStopped.value)
4835
+ const selected = computed(
4836
+ () => findSelectedLogEntry(manualLogEntrySelection.value, tree.value, !isExecutionStopped.value)
5767
4837
  );
5768
4838
  const logsStore = useLogsStore();
5769
4839
  const uiStore = useUIStore();
@@ -5793,7 +4863,7 @@ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5793
4863
  if (entries.length === 0) {
5794
4864
  return;
5795
4865
  }
5796
- const prevEntry = selected2.value ? getEntryAtRelativeIndex(entries, selected2.value.id, -1) ?? entries[0] : entries[entries.length - 1];
4866
+ const prevEntry = selected.value ? getEntryAtRelativeIndex(entries, selected.value.id, -1) ?? entries[0] : entries[entries.length - 1];
5797
4867
  manualLogEntrySelection.value = { type: "selected", entry: prevEntry };
5798
4868
  syncSelectionToCanvasIfEnabled(prevEntry);
5799
4869
  }
@@ -5802,12 +4872,12 @@ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5802
4872
  if (entries.length === 0) {
5803
4873
  return;
5804
4874
  }
5805
- const nextEntry = selected2.value ? getEntryAtRelativeIndex(entries, selected2.value.id, 1) ?? entries[entries.length - 1] : entries[0];
4875
+ const nextEntry = selected.value ? getEntryAtRelativeIndex(entries, selected.value.id, 1) ?? entries[entries.length - 1] : entries[0];
5806
4876
  manualLogEntrySelection.value = { type: "selected", entry: nextEntry };
5807
4877
  syncSelectionToCanvasIfEnabled(nextEntry);
5808
4878
  }
5809
4879
  watch(
5810
- selected2,
4880
+ selected,
5811
4881
  (sel) => {
5812
4882
  if (sel) {
5813
4883
  logsStore.setSubNodeSelected(isSubNodeLog(sel));
@@ -5819,12 +4889,12 @@ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5819
4889
  [() => uiStore.lastSelectedNode, () => logsStore.isLogSelectionSyncedWithCanvas],
5820
4890
  ([selectedOnCanvas, shouldSync]) => {
5821
4891
  const selectedNodeId = selectedOnCanvas ? workflowsStore.nodesByName[selectedOnCanvas]?.id : void 0;
5822
- nodeIdToSelect.value = shouldSync && !canvasStore.hasRangeSelection && selected2.value?.node.id !== selectedNodeId ? selectedNodeId : void 0;
4892
+ nodeIdToSelect.value = shouldSync && !canvasStore.hasRangeSelection && selected.value?.node.id !== selectedNodeId ? selectedNodeId : void 0;
5823
4893
  },
5824
4894
  { immediate: true }
5825
4895
  );
5826
4896
  watch(
5827
- [tree2, nodeIdToSelect],
4897
+ [tree, nodeIdToSelect],
5828
4898
  ([latestTree, id]) => {
5829
4899
  if (id === void 0) {
5830
4900
  return;
@@ -5843,27 +4913,7 @@ function useLogsSelection(execution, tree2, flatLogEntries, toggleExpand) {
5843
4913
  },
5844
4914
  { immediate: true }
5845
4915
  );
5846
- return { selected: selected2, select, selectPrev, selectNext };
5847
- }
5848
- function useLogsTreeExpand(entries, loadSubExecution) {
5849
- const collapsedEntries = shallowRef({});
5850
- const flatLogEntries = computed(
5851
- () => flattenLogEntries(entries.value, collapsedEntries.value)
5852
- );
5853
- function toggleExpanded(treeNode, expand) {
5854
- if (hasSubExecution(treeNode) && treeNode.children.length === 0) {
5855
- void loadSubExecution(treeNode);
5856
- return;
5857
- }
5858
- collapsedEntries.value = {
5859
- ...collapsedEntries.value,
5860
- [treeNode.id]: expand === void 0 ? !collapsedEntries.value[treeNode.id] : !expand
5861
- };
5862
- }
5863
- return {
5864
- flatLogEntries,
5865
- toggleExpanded
5866
- };
4916
+ return { selected, select, selectPrev, selectNext };
5867
4917
  }
5868
4918
  function isStyle(node) {
5869
4919
  return node instanceof HTMLStyleElement || node instanceof HTMLLinkElement && node.rel === "stylesheet";
@@ -6160,9 +5210,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6160
5210
  refreshSession,
6161
5211
  displayExecution
6162
5212
  } = useChatState(props.isReadOnly);
6163
- const { entries, execution, hasChat, latestNodeNameById, resetExecutionData, loadSubExecution } = useLogsExecutionData(isOpen);
5213
+ const { entries, execution, hasChat, latestNodeNameById, resetExecutionData, loadSubExecution } = useLogsExecutionData({ isEnabled: isOpen });
6164
5214
  const { flatLogEntries, toggleExpanded } = useLogsTreeExpand(entries, loadSubExecution);
6165
- const { selected: selected2, select, selectNext, selectPrev } = useLogsSelection(
5215
+ const { selected, select, selectNext, selectPrev } = useLogsSelection(
6166
5216
  execution,
6167
5217
  entries,
6168
5218
  flatLogEntries,
@@ -6170,7 +5220,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6170
5220
  );
6171
5221
  const inputTableColumnCollapsing = ref();
6172
5222
  const outputTableColumnCollapsing = ref();
6173
- const isLogDetailsOpen = computed(() => isOpen.value && selected2.value !== void 0);
5223
+ const isLogDetailsOpen = computed(() => isOpen.value && selected.value !== void 0);
6174
5224
  const isLogDetailsVisuallyOpen = computed(
6175
5225
  () => isLogDetailsOpen.value && !isCollapsingDetailsPanel.value
6176
5226
  );
@@ -6184,10 +5234,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6184
5234
  onToggleSyncSelection: logsStore.toggleLogSelectionSync
6185
5235
  }));
6186
5236
  const inputCollapsingColumnName = computed(
6187
- () => inputTableColumnCollapsing.value?.nodeName === selected2.value?.node.name ? inputTableColumnCollapsing.value?.columnName ?? null : null
5237
+ () => inputTableColumnCollapsing.value?.nodeName === selected.value?.node.name ? inputTableColumnCollapsing.value?.columnName ?? null : null
6188
5238
  );
6189
5239
  const outputCollapsingColumnName = computed(
6190
- () => outputTableColumnCollapsing.value?.nodeName === selected2.value?.node.name ? outputTableColumnCollapsing.value?.columnName ?? null : null
5240
+ () => outputTableColumnCollapsing.value?.nodeName === selected.value?.node.name ? outputTableColumnCollapsing.value?.columnName ?? null : null
6191
5241
  );
6192
5242
  const keyMap = computed(() => ({
6193
5243
  j: selectNext,
@@ -6195,8 +5245,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6195
5245
  Escape: () => select(void 0),
6196
5246
  ArrowDown: selectNext,
6197
5247
  ArrowUp: selectPrev,
6198
- Space: () => selected2.value && toggleExpanded(selected2.value),
6199
- Enter: () => selected2.value && handleOpenNdv(selected2.value),
5248
+ Space: () => selected.value && toggleExpanded(selected.value),
5249
+ Enter: () => selected.value && handleOpenNdv(selected.value),
6200
5250
  ...isPoppedOut.value ? {
6201
5251
  // We need shortcuts for toggling input/output panel in the pop-out window only
6202
5252
  // because these are also implemented in the canvas
@@ -6221,10 +5271,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6221
5271
  });
6222
5272
  }
6223
5273
  function handleChangeInputTableColumnCollapsing(columnName) {
6224
- inputTableColumnCollapsing.value = columnName && selected2.value ? { nodeName: selected2.value.node.name, columnName } : void 0;
5274
+ inputTableColumnCollapsing.value = columnName && selected.value ? { nodeName: selected.value.node.name, columnName } : void 0;
6225
5275
  }
6226
5276
  function handleChangeOutputTableColumnCollapsing(columnName) {
6227
- outputTableColumnCollapsing.value = columnName && selected2.value ? { nodeName: selected2.value.node.name, columnName } : void 0;
5277
+ outputTableColumnCollapsing.value = columnName && selected.value ? { nodeName: selected.value.node.name, columnName } : void 0;
6228
5278
  }
6229
5279
  return (_ctx, _cache) => {
6230
5280
  return openBlock(), createElementBlock("div", {
@@ -6311,7 +5361,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6311
5361
  "is-open": unref(isOpen),
6312
5362
  "is-read-only": _ctx.isReadOnly,
6313
5363
  "is-compact": isLogDetailsVisuallyOpen.value,
6314
- selected: unref(selected2),
5364
+ selected: unref(selected),
6315
5365
  execution: unref(execution),
6316
5366
  entries: unref(entries),
6317
5367
  "latest-node-info": unref(latestNodeNameById),
@@ -6331,13 +5381,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6331
5381
  ]),
6332
5382
  _: 1
6333
5383
  }, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"]),
6334
- isLogDetailsVisuallyOpen.value && unref(selected2) ? (openBlock(), createBlock(LogsDetailsPanel, {
5384
+ isLogDetailsVisuallyOpen.value && unref(selected) ? (openBlock(), createBlock(LogsDetailsPanel, {
6335
5385
  key: 0,
6336
5386
  class: normalizeClass(_ctx.$style.logDetails),
6337
5387
  "is-open": unref(isOpen),
6338
- "log-entry": unref(selected2),
5388
+ "log-entry": unref(selected),
6339
5389
  window: unref(popOutWindow),
6340
- "latest-info": unref(latestNodeNameById)[unref(selected2).node.id],
5390
+ "latest-info": unref(latestNodeNameById)[unref(selected).node.id],
6341
5391
  panels: unref(logsStore).detailsState,
6342
5392
  "collapsing-input-table-column-name": inputCollapsingColumnName.value,
6343
5393
  "collapsing-output-table-column-name": outputCollapsingColumnName.value,
@@ -6363,15 +5413,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6363
5413
  };
6364
5414
  }
6365
5415
  });
6366
- const popOutContent = "_popOutContent_1xguj_123";
6367
- const resizeWrapper = "_resizeWrapper_1xguj_129";
6368
- const poppedOut = "_poppedOut_1xguj_136";
6369
- const container = "_container_1xguj_140";
6370
- const chat = "_chat_1xguj_149";
6371
- const logsContainer = "_logsContainer_1xguj_153";
6372
- const overviewResizer = "_overviewResizer_1xguj_163";
6373
- const logsOverview = "_logsOverview_1xguj_171";
6374
- const logsDetails = "_logsDetails_1xguj_175";
5416
+ const popOutContent = "_popOutContent_17exv_123";
5417
+ const resizeWrapper = "_resizeWrapper_17exv_129";
5418
+ const poppedOut = "_poppedOut_17exv_136";
5419
+ const container = "_container_17exv_140";
5420
+ const chat = "_chat_17exv_149";
5421
+ const logsContainer = "_logsContainer_17exv_153";
5422
+ const overviewResizer = "_overviewResizer_17exv_163";
5423
+ const logsOverview = "_logsOverview_17exv_171";
5424
+ const logsDetails = "_logsDetails_17exv_175";
6375
5425
  const style0 = {
6376
5426
  popOutContent,
6377
5427
  resizeWrapper,