n8n-editor-ui 1.113.0 → 1.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/.build/cache-marker +1 -1
  2. package/.build/node-popularity.json +1823 -1823
  3. package/dist/assets/{AddDataStoreModal-BpBgou0E.js → AddDataStoreModal-gdYynAXK.js} +8 -8
  4. package/dist/assets/{AnimatedSpinner-BVVzuhy8.js → AnimatedSpinner-BmfqnkMh.js} +1 -1
  5. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-D9y_kml7.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CVFW66bR.js} +1 -1
  6. package/dist/assets/{AuthView-DLJKQ74o.js → AuthView-CYJ7bCsV.js} +2 -2
  7. package/dist/assets/{ChangePasswordView-BMWrkaiq.js → ChangePasswordView-zducTJEL.js} +3 -3
  8. package/dist/assets/CollectionParameter-CxZhodaL.js +4 -0
  9. package/dist/assets/{ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CgS2Cb5Q.js → ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DFcvVtT3.js} +1 -1
  10. package/dist/assets/{CredentialsView-DHSg9xJ1.js → CredentialsView-CZU7hcHm.js} +19 -19
  11. package/dist/assets/{DataStoreActions.vue_vue_type_script_setup_true_lang-C2Dn9B2o.js → DataStoreActions.vue_vue_type_script_setup_true_lang-D2PEOSYF.js} +1 -1
  12. package/dist/assets/{DataStoreDetailsView-yJ7Ifouw.js → DataStoreDetailsView-cCwLSizn.js} +38 -26
  13. package/dist/assets/{DataStoreView-jb9J_g-Y.js → DataStoreView-DVBz_mE7.js} +13 -14
  14. package/dist/assets/{DemoFooter-BYvzzkpQ.js → DemoFooter-Cyz5315_.js} +6 -6
  15. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-BfHfE-dU.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-Ber_ThA-.js} +3 -3
  16. package/dist/assets/{EntityNotFound-lPracI2m.js → EntityNotFound-E440DAgo.js} +1 -1
  17. package/dist/assets/{EntityUnAuthorised-zuygLqjz.js → EntityUnAuthorised-CGA8Pnag.js} +1 -1
  18. package/dist/assets/{ErrorView-C_k5_sJ0.js → ErrorView-DRsAZvNh.js} +9 -9
  19. package/dist/assets/{EvaluationsRootView-DP2_MhvN.js → EvaluationsRootView-CBh2oepG.js} +5 -5
  20. package/dist/assets/{EvaluationsView-BHRPpTsS.js → EvaluationsView-Bk0AxB7_.js} +3 -3
  21. package/dist/assets/{ExecutionsTime-etWexlXm.css → ExecutionsTime-CWHk7ZwI.css} +6 -6
  22. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DTpILxvC.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-CNY2bHYv.js} +39 -39
  23. package/dist/assets/{ExecutionsView-Bv3YVM-6.js → ExecutionsView-ByBXIAlI.js} +10 -10
  24. package/dist/assets/{FixedCollectionParameter-CZc3TqBt.js → FixedCollectionParameter-B2zzgypc.js} +4 -4
  25. package/dist/assets/{FixedCollectionParameter-Dg7ZadcB.css → FixedCollectionParameter-TY1-sHgZ.css} +18 -18
  26. package/dist/assets/{ForgotMyPasswordView-CaiqDg42.js → ForgotMyPasswordView-BgKsPtpt.js} +3 -3
  27. package/dist/assets/{InfoAccordion-TbgnFURd.js → InfoAccordion-CsiczXnv.js} +1 -1
  28. package/dist/assets/{InsightsChartAverageRuntime-BqCmV_C3.js → InsightsChartAverageRuntime-Gy5dvV3h.js} +4 -4
  29. package/dist/assets/{InsightsChartFailed-nhNAvWJ-.js → InsightsChartFailed-Oe0oEJCc.js} +4 -4
  30. package/dist/assets/{InsightsChartFailureRate-Ca8Ar9nD.js → InsightsChartFailureRate-DU1kHSZv.js} +4 -4
  31. package/dist/assets/{InsightsChartTimeSaved-CuO9b6Em.js → InsightsChartTimeSaved-CTUmcK5A.js} +4 -4
  32. package/dist/assets/{InsightsChartTotal-Dk2_nvoT.js → InsightsChartTotal-BtVfKdlz.js} +4 -4
  33. package/dist/assets/{InsightsDashboard-zCjTFLpM.js → InsightsDashboard-D65QIYuB.js} +11 -11
  34. package/dist/assets/{InsightsPaywall-CBtrv5fk.js → InsightsPaywall-Bm7hpUXq.js} +1 -1
  35. package/dist/assets/{InsightsSummary-BWRporX0.js → InsightsSummary-B_lIzS7D.js} +2 -3
  36. package/dist/assets/{InsightsTableWorkflows-DlGA2gWN.js → InsightsTableWorkflows-HAoS3XKw.js} +6 -7
  37. package/dist/assets/{Logo-ayCSvzHf.js → Logo-oWcxWkkZ.js} +1 -1
  38. package/dist/assets/{LogsPanel-DwPSXTSp.js → LogsPanel-BCGl1Nn3.js} +189 -101
  39. package/dist/assets/{LogsPanel-CUsQIBpC.css → LogsPanel-BE9Gl1z0.css} +26 -27
  40. package/dist/assets/{MainHeader-6lIHYgJG.css → MainHeader-BM1jYnSL.css} +6 -6
  41. package/dist/assets/{MainHeader-BGOzl1ir.js → MainHeader-BTi38P2q.js} +17 -17
  42. package/dist/assets/{MainSidebar-a73tcV9E.css → MainSidebar-BWPXOik1.css} +156 -0
  43. package/dist/assets/{MainSidebar-CGhxTuih.js → MainSidebar-f5ouPYUb.js} +204 -48
  44. package/dist/assets/{NodeCreation-C2TX7WTu.js → NodeCreation-BeqOH71X.js} +11 -11
  45. package/dist/assets/{NodeCreator-tQVCw9Uh.js → NodeCreator-Ck3oKOFP.js} +47 -34
  46. package/dist/assets/{NodeDetailsView-C-BCfvgR.js → NodeDetailsView-BOC4Hg0s.js} +27 -27
  47. package/dist/assets/{NodeDetailsViewV2-CHkxHxvz.js → NodeDetailsViewV2-M9x7-EpG.js} +16 -16
  48. package/dist/assets/{NodeView-B6Bv6TYS.js → NodeView-C9_Bsqwa.js} +88 -258
  49. package/dist/assets/{NodeView-Chs2u0U9.css → NodeView-DoRx_8YL.css} +0 -165
  50. package/dist/assets/{PageViewLayout-_SQAsKsq.js → PageViewLayout-BIOAQYgC.js} +1 -1
  51. package/dist/assets/{PrebuiltAgentTemplatesView-DOI6Oras.js → PrebuiltAgentTemplatesView-Bl6VzvHf.js} +2 -2
  52. package/dist/assets/{ProjectBreadcrumb-DdovGxoT.js → ProjectBreadcrumb-BO4fGsZ-.js} +28 -12
  53. package/dist/assets/{ProjectHeader-B5uv4DKo.css → ProjectHeader-BNMKpvzV.css} +9 -9
  54. package/dist/assets/{ProjectHeader-CmNr3RiV.js → ProjectHeader-DeQSPU2Z.js} +10 -10
  55. package/dist/assets/{ProjectSettings-BLw1-aa2.js → ProjectSettings-Bie7IE72.js} +169 -161
  56. package/dist/assets/{ProjectSettings-B5z1mrGW.css → ProjectSettings-Cj1kC16G.css} +30 -15
  57. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-BvsEzRu6.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-R3ag1qU9.js} +5 -5
  58. package/dist/assets/{ResourcesListLayout-vTwRIDRz.css → ResourcesListLayout-BseE8-rt.css} +8 -8
  59. package/dist/assets/{ResourcesListLayout-CFoOOQpo.js → ResourcesListLayout-Dpz7rW4E.js} +42 -42
  60. package/dist/assets/{RunDataJson-KBqmqbfA.js → RunDataJson-D9c7DSu3.js} +3 -3
  61. package/dist/assets/{RunDataJsonActions-CKFc7ymK.js → RunDataJsonActions-DSwvkK8R.js} +1 -1
  62. package/dist/assets/{RunDataParsedAiContent-Ce_ctsro.js → RunDataParsedAiContent-Dw4DMcCc.js} +2 -2
  63. package/dist/assets/{RunDataSearch-gM--YmOH.js → RunDataSearch-CHn_C4l1.js} +59 -16
  64. package/dist/assets/{RunDataTable-CV1IQEC1.js → RunDataTable-BVcP67HC.js} +4 -4
  65. package/dist/assets/{SamlOnboarding-sD7YkjXE.js → SamlOnboarding-evZs5JmT.js} +3 -3
  66. package/dist/assets/{SelectedItemsInfo-CWRoXt5N.js → SelectedItemsInfo-BD8U-j2_.js} +1 -1
  67. package/dist/assets/{SettingsApiView-CjxSweZ2.js → SettingsApiView-C9ICg95A.js} +23 -24
  68. package/dist/assets/{SettingsCommunityNodesView-BZS-1Pu8.js → SettingsCommunityNodesView-BKv6oPzd.js} +31 -31
  69. package/dist/assets/{SettingsExternalSecrets-CUP7WmUX.js → SettingsExternalSecrets-B1fXLwpl.js} +18 -18
  70. package/dist/assets/{SettingsLdapView-CAcFtpvb.js → SettingsLdapView-1uB_1Kjt.js} +17 -17
  71. package/dist/assets/{SettingsLogStreamingView-Db06ainF.js → SettingsLogStreamingView-Cg5xgDBl.js} +29 -29
  72. package/dist/assets/SettingsMCPView-8ZO6fO7I.js +626 -0
  73. package/dist/assets/SettingsMCPView-INU33iV4.css +370 -0
  74. package/dist/assets/{SettingsPersonalView-CFAcW525.js → SettingsPersonalView-hcRTSivt.js} +31 -31
  75. package/dist/assets/{SettingsSourceControl-Cl0Z45op.js → SettingsSourceControl-CmWbELjI.js} +208 -65
  76. package/dist/assets/{SettingsSso-hvpitcmh.js → SettingsSso-DaF1HUCT.js} +61 -23
  77. package/dist/assets/{SettingsUsageAndPlan-CfFJy6fo.css → SettingsUsageAndPlan-CfunueCX.css} +3 -3
  78. package/dist/assets/{SettingsUsageAndPlan-pIa02R8X.js → SettingsUsageAndPlan-D35oEsJZ.js} +16 -17
  79. package/dist/assets/{SettingsUsersView-Bc_d_j_C.js → SettingsUsersView-ZRALZYsy.js} +4 -4
  80. package/dist/assets/{SettingsView-k1Qk6b9u.js → SettingsView-CgvnNTk-.js} +13 -12
  81. package/dist/assets/{SetupView-CgueTipX.js → SetupView-ChAnZVE2.js} +3 -3
  82. package/dist/assets/{SetupWorkflowCredentialsButton-9ZdgoxH6.js → SetupWorkflowCredentialsButton-BszdxOvj.js} +3 -3
  83. package/dist/assets/{SetupWorkflowFromTemplateView-DImn3MLc.js → SetupWorkflowFromTemplateView-DNXIp_P5.js} +13 -13
  84. package/dist/assets/{SigninView-Dy2njlT9.js → SigninView-wo3QJ5sB.js} +17 -17
  85. package/dist/assets/{SignoutView-BW4OLG4T.js → SignoutView-CQhFqBlf.js} +1 -1
  86. package/dist/assets/{SignupView-DqiOjgU_.js → SignupView-DchGNZfW.js} +3 -3
  87. package/dist/assets/{TableBase-J7qyS7Oi.js → TableBase-CtxQxn5Y.js} +1 -1
  88. package/dist/assets/{Tags-DHmekS5b.js → Tags-BXpnsQt9.js} +1 -1
  89. package/dist/assets/{TemplateDetails-lA7coCfr.js → TemplateDetails-BJTTpXQu.js} +11 -11
  90. package/dist/assets/{TemplateList-C_enJUC-.js → TemplateList-Ci2Gabt3.js} +15 -15
  91. package/dist/assets/{TemplatesCollectionView-Bvr4Jl4e.js → TemplatesCollectionView-CUX1Go6k.js} +15 -15
  92. package/dist/assets/{TemplatesSearchView-DNEWIXcA.js → TemplatesSearchView-DPFeZwku.js} +30 -30
  93. package/dist/assets/{TemplatesView-D6kBDKHq.js → TemplatesView-B2kjPDKq.js} +3 -3
  94. package/dist/assets/{TemplatesWorkflowView-CxpvFC33.js → TemplatesWorkflowView-DITL6wCM.js} +18 -18
  95. package/dist/assets/{TriggerPanel-DiD8pi0I.css → TriggerPanel-CZRJpcTa.css} +26 -24
  96. package/dist/assets/{TriggerPanel-aOMoGQPb.js → TriggerPanel-CrYeGN3J.js} +100 -124
  97. package/dist/assets/{VariablesView-CF7zW6sO.js → VariablesView-Bwp171eQ.js} +9 -9
  98. package/dist/assets/{VariablesView-BHcrNXsw.css → VariablesView-CO67wOhz.css} +6 -6
  99. package/dist/assets/{WorkerView-CPSFDQ3M.js → WorkerView-CTITbNMD.js} +27 -27
  100. package/dist/assets/{WorkflowActivator-jI4sUqXL.css → WorkflowActivator-BqnfTqdT.css} +2 -2
  101. package/dist/assets/{WorkflowActivator-2k4uBcXx.js → WorkflowActivator-ULjjOqRW.js} +35 -27
  102. package/dist/assets/{WorkflowExecutionsInfoAccordion-DLSyy7P3.js → WorkflowExecutionsInfoAccordion-Du8aYVAp.js} +2 -2
  103. package/dist/assets/{WorkflowExecutionsLandingPage-B0lwEkzs.js → WorkflowExecutionsLandingPage--NydRWjB.js} +3 -3
  104. package/dist/assets/{WorkflowExecutionsPreview-fdG8WvjQ.js → WorkflowExecutionsPreview-SapcKnCv.js} +17 -17
  105. package/dist/assets/{WorkflowExecutionsView-DqWqyiNg.css → WorkflowExecutionsView-BI8VcrjR.css} +2 -2
  106. package/dist/assets/{WorkflowExecutionsView-DoOsdRNS.js → WorkflowExecutionsView-DzM_rNXF.js} +20 -20
  107. package/dist/assets/{WorkflowHistory-BmCEHmbX.js → WorkflowHistory-Db-y1oNT.js} +23 -23
  108. package/dist/assets/{WorkflowOnboardingView-DoANwef9.js → WorkflowOnboardingView-WrpmE_wt.js} +1 -1
  109. package/dist/assets/{WorkflowPreview-BcVSQJ1r.js → WorkflowPreview-7kOr6cGA.js} +10 -7
  110. package/dist/assets/{WorkflowsView-MF9XcT0u.css → WorkflowsView-Cn8b7sC6.css} +295 -18
  111. package/dist/assets/{WorkflowsView-DfkdEDYd.js → WorkflowsView-DyYy_N8O.js} +314 -136
  112. package/dist/assets/{canvas-DjkOwLgJ.js → canvas-DTKhYM6C.js} +1 -1
  113. package/dist/assets/{chartjs.utils-P0M5ijsc.js → chartjs.utils-CJ62oVGG.js} +2 -2
  114. package/dist/assets/{core-WbBbE4BE.js → core-VF74aV13.js} +1 -1
  115. package/dist/assets/{global-link-actions-Cq9wmyMP.js → global-link-actions-Ddo-afkv.js} +1 -1
  116. package/dist/assets/{index-DGLJxfnn.js → index-BOW55EQc.js} +16959 -15085
  117. package/dist/assets/{index-vcIMPEwS.js → index-BUUYM12e.js} +1 -1
  118. package/dist/assets/{index-CpPc1kM8.css → index-CTgzCbB9.css} +10049 -10911
  119. package/dist/assets/{pickBy-ClKklBll.js → pickBy-CwZEa5Ur.js} +1 -1
  120. package/dist/assets/{readyToRunWorkflows.store-By37rv7G.js → readyToRunWorkflows.store-C7dZP8KI.js} +1 -1
  121. package/dist/assets/{readyToRunWorkflowsV2.store-Dl9lSVnl.js → readyToRunWorkflowsV2.store-BJY-F_Le.js} +2 -2
  122. package/dist/assets/{templateActions-DIHXnHcb.js → templateActions-BfUcgZvZ.js} +1 -1
  123. package/dist/assets/{useBeforeUnload-DixKQhw1.js → useBeforeUnload-CEwAxZFs.js} +1 -1
  124. package/dist/assets/{useExecutionDebugging-CONIO3Vz.js → useExecutionDebugging-Moxdvo-v.js} +1 -1
  125. package/dist/assets/{useImportCurlCommand-CcLwFKyp.js → useImportCurlCommand-C5Ra8auY.js} +1 -1
  126. package/dist/assets/{useProjectPages-eaNvpOz-.js → useProjectPages-D2nu5pZ9.js} +1 -1
  127. package/dist/assets/{usePushConnection-C9lQfiNc.js → usePushConnection-Dnr2PF2n.js} +12 -6
  128. package/dist/assets/{useWorkflowActivate-ByzVgA6z.js → useWorkflowActivate-Ch6gRZjX.js} +1 -1
  129. package/dist/index.html +2 -2
  130. package/package.json +1 -1
  131. package/scripts/cache-marker.mjs +11 -0
  132. package/turbo.json +2 -1
  133. package/dist/assets/CollectionParameter-Cb7K8toD.js +0 -4
@@ -1,8 +1,8 @@
1
- import { bz as addTokenUsageData, bA as emptyTokenUsageData, bB as parseErrorMetadata, bC as isChatNode, bD as NodeConnectionTypes, bE as v4, bF as get, bG as AGENT_LANGCHAIN_NODE_TYPE, bH as MANUAL_CHAT_TRIGGER_NODE_TYPE, bI as CHAT_TRIGGER_NODE_TYPE, bJ as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bK as usePinnedData, an as useMessage, ao as MODAL_CONFIRM, a2 as useWorkflowsStore, au as useRootStore, bL as useLogsStore, b as useRouter, bM as useNodeHelpers, bN as useRunWorkflow, a8 as watch, V as VIEWS, bO as chatEventBus, a4 as PLACEHOLDER_EMPTY_WORKFLOW_ID, bP as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, Y as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, a3 as useRoute, ag as useSourceControlStore, bQ as useCanvasOperations, ae as useNodeTypesStore, bR as START_NODE_TYPE, e as createBlock, f as createCommentVNode, aa as Tooltip, bS as formatTokenUsageCount, bT as getDefaultExportFromCjs, bU as requireUpperFirst, F as Fragment, aH as useTemplateRef, bV as useTimestamp, bW as toTime, bX as toDayMonth, B as withModifiers, A as renderList, aq as normalizeStyle, bY as NodeIcon, ac as I18nT, N as N8nIcon, ab as _sfc_main$k, q as N8nButton, Z as nextTick, bZ as getScrollbarWidth, b_ as useVirtualList, b$ as toRef, K as mergeProps, O as N8nRadioButtons, c0 as inject, c1 as isRef, c2 as toRefs, o as onMounted, c3 as normalizeProps, c4 as guardReactiveProps, c5 as resolveDynamicComponent, c6 as markdownLink, c7 as useFileDialog, c8 as onUnmounted, b3 as withDirectives, c9 as vModelText, b9 as withKeys, ca as useAttrs, cb as useClipboard, bs as createSlots, aZ as useNDVStore, cc as PopOutWindowKey, cd as resolveDirective, ce as RunData, C as N8nLink, cf as waitingNodeTooltip, cg as RunDataItemCount, a$ as useLocalStorage, ch as LOG_DETAILS_PANEL_STATE, ci as KeyboardShortcutTooltip, cj as N8nResizeWrapper, ck as useStyles, aN as N8nActionDropdown, cl as Workflow, cm as LOGS_EXECUTION_DATA_THROTTLE_DURATION, cn as useThrottleFn, co as parse, cp as shallowRef, Q as useUIStore, cq as useCanvasStore, am as useTelemetry, ay as useDocumentTitle, cr as onScopeDispose, X as onBeforeUnmount, cs as useProvideTooltipAppendTo, ct as LOGS_PANEL_STATE, cu as LOCAL_STORAGE_PANEL_HEIGHT, cv as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, cw as LOCAL_STORAGE_PANEL_WIDTH, cx as useActiveElement, bo as useKeybindings, cy as ndvEventBus } from "./index-DGLJxfnn.js";
2
- import { _ as __unplugin_components_1 } from "./AnimatedSpinner-BVVzuhy8.js";
3
- import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-CgS2Cb5Q.js";
4
- import { H as HighlightJS, V as VueMarkdown } from "./core-WbBbE4BE.js";
5
- import { c as canvasEventBus } from "./canvas-DjkOwLgJ.js";
1
+ import { bD as addTokenUsageData, bE as emptyTokenUsageData, bF as parseErrorMetadata, bG as isChatNode, bH as NodeConnectionTypes, bI as v4, bJ as get, bK as AGENT_LANGCHAIN_NODE_TYPE, bL as MANUAL_CHAT_TRIGGER_NODE_TYPE, bM as CHAT_TRIGGER_NODE_TYPE, bN as isEmpty, a as useToast, r as ref, x as computed, c as useI18n$1, bO as usePinnedData, an as useMessage, ao as MODAL_CONFIRM, a2 as useWorkflowsStore, au as useRootStore, bP as useLogsStore, b as useRouter, bQ as useNodeHelpers, bR as useRunWorkflow, a8 as watch, V as VIEWS, bS as chatEventBus, a4 as PLACEHOLDER_EMPTY_WORKFLOW_ID, bT as provide, d as defineComponent, h as createElementBlock, g as openBlock, n as normalizeClass, i as createVNode, j as createBaseVNode, l as unref, p as N8nText, w as withCtx, Y as renderSlot, k as createTextVNode, t as toDisplayString, _ as _export_sfc, a3 as useRoute, ag as useSourceControlStore, bU as useCanvasOperations, ae as useNodeTypesStore, bV as START_NODE_TYPE, e as createBlock, f as createCommentVNode, aa as Tooltip, bW as formatTokenUsageCount, bX as getDefaultExportFromCjs, bY as requireUpperFirst, F as Fragment, aH as useTemplateRef, bZ as useTimestamp, b_ as toTime, b$ as toDayMonth, B as withModifiers, A as renderList, aq as normalizeStyle, c0 as NodeIcon, ac as I18nT, N as N8nIcon, ab as _sfc_main$k, q as N8nButton, Z as nextTick, c1 as getScrollbarWidth, c2 as useVirtualList, c3 as toRef, K as mergeProps, O as N8nRadioButtons, c4 as inject, c5 as isRef, c6 as toRefs, o as onMounted, c7 as normalizeProps, c8 as guardReactiveProps, c9 as resolveDynamicComponent, ca as markdownLink, cb as useFileDialog, bm as onUnmounted, b3 as withDirectives, cc as vModelText, b9 as withKeys, cd as useAttrs, ce as useClipboard, bv as createSlots, aZ as useNDVStore, cf as PopOutWindowKey, cg as resolveDirective, ch as RunData, C as N8nLink, ci as NDVEmptyState, cj as waitingNodeTooltip, ck as RunDataItemCount, a$ as useLocalStorage, cl as useExperimentalNdvStore, cm as LOG_DETAILS_PANEL_STATE, cn as KeyboardShortcutTooltip, co as N8nResizeWrapper, cp as useStyles, aN as N8nActionDropdown, cq as LOGS_EXECUTION_DATA_THROTTLE_DURATION, cr as Workflow, cs as useThrottleFn, ct as shallowRef, cu as parse, Q as useUIStore, cv as useCanvasStore, am as useTelemetry, ay as useDocumentTitle, cw as onScopeDispose, X as onBeforeUnmount, cx as useProvideTooltipAppendTo, cy as LOGS_PANEL_STATE, cz as LOCAL_STORAGE_PANEL_HEIGHT, cA as LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, cB as LOCAL_STORAGE_PANEL_WIDTH, cC as useActiveElement, br as useKeybindings, cD as ndvEventBus } from "./index-BOW55EQc.js";
2
+ import { _ as __unplugin_components_1 } from "./AnimatedSpinner-BmfqnkMh.js";
3
+ import { _ as _sfc_main$j } from "./ConsumedTokensDetails.vue_vue_type_script_setup_true_lang-DFcvVtT3.js";
4
+ import { H as HighlightJS, V as VueMarkdown } from "./core-VF74aV13.js";
5
+ import { c as canvasEventBus } from "./canvas-DTKhYM6C.js";
6
6
  const TOOL_EXECUTOR_NODE_NAME = "PartialExecutionToolExecutor";
7
7
  function constructChatWebsocketUrl(url, executionId, sessionId2, isPublic) {
8
8
  const baseUrl = new URL(url).origin;
@@ -310,8 +310,20 @@ function extractBotResponse(resultData, executionId, emptyText2) {
310
310
  if (get(nodeResponseData, "error")) {
311
311
  responseMessage = "[ERROR: " + get(nodeResponseData, "error.message") + "]";
312
312
  } else {
313
- const responseData = get(nodeResponseData, "data.main[0][0].json");
314
- const text = extractResponseText(responseData) ?? emptyText2;
313
+ const mainOutputs = get(nodeResponseData, "data.main");
314
+ let text;
315
+ if (mainOutputs && Array.isArray(mainOutputs)) {
316
+ for (const branch of mainOutputs) {
317
+ if (branch?.[0]?.json) {
318
+ const responseData = branch[0].json;
319
+ text = extractResponseText(responseData);
320
+ if (text) {
321
+ break;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ text = text ?? emptyText2;
315
327
  if (!text) {
316
328
  return void 0;
317
329
  }
@@ -373,6 +385,20 @@ function isSubNodeLog(logEntry) {
373
385
  function isPlaceholderLog(treeNode) {
374
386
  return treeNode.runData === void 0;
375
387
  }
388
+ function copyExecutionData(executionData) {
389
+ return {
390
+ ...executionData,
391
+ data: {
392
+ ...executionData.data,
393
+ resultData: {
394
+ ...executionData.data?.resultData,
395
+ runData: Object.fromEntries(
396
+ Object.entries(executionData.data?.resultData.runData ?? {}).map(([k, v]) => [k, [...v]])
397
+ )
398
+ }
399
+ }
400
+ };
401
+ }
376
402
  function useChatMessaging({
377
403
  chatTrigger,
378
404
  sessionId: sessionId2,
@@ -713,15 +739,21 @@ function useChatState(isReadOnly) {
713
739
  const _sfc_main$i = /* @__PURE__ */ defineComponent({
714
740
  __name: "LogsPanelHeader",
715
741
  props: {
716
- title: {}
742
+ title: {},
743
+ isClickable: { type: Boolean }
717
744
  },
718
745
  emits: ["click"],
719
746
  setup(__props, { emit: __emit }) {
720
747
  const emit = __emit;
748
+ function handleClick() {
749
+ if (__props.isClickable) {
750
+ emit("click");
751
+ }
752
+ }
721
753
  return (_ctx, _cache) => {
722
754
  return openBlock(), createElementBlock("header", {
723
- class: normalizeClass(_ctx.$style.container),
724
- onClick: _cache[0] || (_cache[0] = ($event) => emit("click"))
755
+ class: normalizeClass([_ctx.$style.container, { [_ctx.$style.clickable]: _ctx.isClickable }]),
756
+ onClick: handleClick
725
757
  }, [
726
758
  createVNode(unref(N8nText), {
727
759
  class: normalizeClass(_ctx.$style.title),
@@ -744,11 +776,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
744
776
  };
745
777
  }
746
778
  });
747
- const container$8 = "_container_1uwbw_123";
748
- const title$2 = "_title_1uwbw_144";
749
- const actions$1 = "_actions_1uwbw_152";
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";
750
783
  const style0$b = {
751
784
  container: container$8,
785
+ clickable,
752
786
  title: title$2,
753
787
  actions: actions$1
754
788
  };
@@ -1195,7 +1229,8 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1195
1229
  execution: {},
1196
1230
  entries: {},
1197
1231
  flatLogEntries: {},
1198
- latestNodeInfo: {}
1232
+ latestNodeInfo: {},
1233
+ isHeaderClickable: { type: Boolean }
1199
1234
  },
1200
1235
  emits: ["clickHeader", "select", "clearExecutionData", "openNdv", "toggleExpanded"],
1201
1236
  setup(__props, { emit: __emit }) {
@@ -1277,6 +1312,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1277
1312
  createVNode(LogsPanelHeader, {
1278
1313
  title: unref(locale).baseText("logs.overview.header.title"),
1279
1314
  "data-test-id": "logs-overview-header",
1315
+ "is-clickable": _ctx.isHeaderClickable,
1280
1316
  onClick: _cache[1] || (_cache[1] = ($event) => emit("clickHeader"))
1281
1317
  }, {
1282
1318
  actions: withCtx(() => [
@@ -1305,7 +1341,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
1305
1341
  renderSlot(_ctx.$slots, "actions")
1306
1342
  ]),
1307
1343
  _: 3
1308
- }, 8, ["title"]),
1344
+ }, 8, ["title", "is-clickable"]),
1309
1345
  _ctx.isOpen ? (openBlock(), createElementBlock("div", {
1310
1346
  key: 0,
1311
1347
  class: normalizeClass([_ctx.$style.content, isEmpty2.value ? _ctx.$style.empty : ""]),
@@ -4254,7 +4290,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4254
4290
  props: {
4255
4291
  placeholder: { default: "inputPlaceholder" }
4256
4292
  },
4257
- emits: ["arrowKeyDown"],
4293
+ emits: ["arrowKeyDown", "escapeKeyDown"],
4258
4294
  setup(__props, { emit: __emit }) {
4259
4295
  const props = __props;
4260
4296
  const { t } = useI18n();
@@ -4468,6 +4504,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4468
4504
  key: event.key,
4469
4505
  currentInputValue: input.value
4470
4506
  });
4507
+ } else if (event.key === "Escape") {
4508
+ event.preventDefault();
4509
+ emit("escapeKeyDown", {
4510
+ currentInputValue: input.value
4511
+ });
4471
4512
  }
4472
4513
  }
4473
4514
  function onOpenFileDialog() {
@@ -4545,7 +4586,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
4545
4586
  };
4546
4587
  }
4547
4588
  });
4548
- const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-b2a5be81"]]);
4589
+ const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-0216470d"]]);
4549
4590
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
4550
4591
  __name: "MessageTyping",
4551
4592
  props: {
@@ -4675,12 +4716,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
4675
4716
  },
4676
4717
  setup(__props) {
4677
4718
  return (_ctx, _cache) => {
4678
- const _component_n8n_icon = N8nIcon;
4679
- const _component_n8n_tooltip = Tooltip;
4719
+ const _component_N8nIcon = N8nIcon;
4720
+ const _component_N8nTooltip = Tooltip;
4680
4721
  return openBlock(), createElementBlock("div", {
4681
4722
  class: normalizeClass(_ctx.$style.container)
4682
4723
  }, [
4683
- createVNode(_component_n8n_tooltip, { placement: __props.placement }, {
4724
+ createVNode(_component_N8nTooltip, { placement: __props.placement }, {
4684
4725
  content: withCtx(() => [
4685
4726
  renderSlot(_ctx.$slots, "default")
4686
4727
  ]),
@@ -4688,7 +4729,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
4688
4729
  createBaseVNode("span", {
4689
4730
  class: normalizeClass(_ctx.$style.icon)
4690
4731
  }, [
4691
- createVNode(_component_n8n_icon, {
4732
+ createVNode(_component_N8nIcon, {
4692
4733
  icon: "info",
4693
4734
  size: "xsmall"
4694
4735
  })
@@ -4723,17 +4764,17 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
4723
4764
  attrs.onClick?.();
4724
4765
  };
4725
4766
  return (_ctx, _cache) => {
4726
- const _component_n8n_icon = N8nIcon;
4727
- const _component_n8n_tooltip = Tooltip;
4767
+ const _component_N8nIcon = N8nIcon;
4768
+ const _component_N8nTooltip = Tooltip;
4728
4769
  return openBlock(), createElementBlock("div", {
4729
4770
  class: normalizeClass(_ctx.$style.container)
4730
4771
  }, [
4731
- createVNode(_component_n8n_tooltip, { placement: _ctx.placement }, {
4772
+ createVNode(_component_N8nTooltip, { placement: _ctx.placement }, {
4732
4773
  content: withCtx(() => [
4733
4774
  createTextVNode(toDisplayString(_ctx.label), 1)
4734
4775
  ]),
4735
4776
  default: withCtx(() => [
4736
- createVNode(_component_n8n_icon, {
4777
+ createVNode(_component_N8nIcon, {
4737
4778
  class: normalizeClass(_ctx.$style.icon),
4738
4779
  icon: _ctx.icon,
4739
4780
  size: "xsmall",
@@ -4765,7 +4806,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4765
4806
  sessionId: {},
4766
4807
  showCloseButton: { type: Boolean },
4767
4808
  isOpen: { type: Boolean, default: true },
4768
- isReadOnly: { type: Boolean, default: false }
4809
+ isReadOnly: { type: Boolean, default: false },
4810
+ isHeaderClickable: { type: Boolean }
4769
4811
  },
4770
4812
  emits: ["displayExecution", "sendMessage", "refreshSession", "close", "clickHeader"],
4771
4813
  setup(__props, { emit: __emit }) {
@@ -4774,7 +4816,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4774
4816
  const clipboard = useClipboard();
4775
4817
  const locale = useI18n$1();
4776
4818
  const toast = useToast();
4777
- const previousMessageIndex = ref(0);
4819
+ const previousMessageIndex = ref(-1);
4820
+ const currentInputBuffer = ref("");
4778
4821
  const sessionIdText = computed(
4779
4822
  () => locale.baseText("chat.window.session.id", {
4780
4823
  interpolate: { id: `${props.sessionId.slice(0, 5)}...` }
@@ -4796,7 +4839,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4796
4839
  chatEventBus.emit("setInputValue", message.text);
4797
4840
  }
4798
4841
  function sendMessage(message) {
4799
- previousMessageIndex.value = 0;
4842
+ previousMessageIndex.value = -1;
4843
+ currentInputBuffer.value = "";
4800
4844
  emit("sendMessage", message);
4801
4845
  }
4802
4846
  function onRefreshSession() {
@@ -4804,30 +4848,44 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4804
4848
  }
4805
4849
  function onArrowKeyDown({ currentInputValue, key }) {
4806
4850
  const pastMessages = props.pastChatMessages;
4807
- const isCurrentInputEmptyOrMatch = currentInputValue.length === 0 || pastMessages.includes(currentInputValue);
4808
- if (isCurrentInputEmptyOrMatch && (key === "ArrowUp" || key === "ArrowDown")) {
4809
- if (pastMessages.length === 0) return;
4851
+ if (pastMessages.length === 0) return;
4852
+ if (currentInputValue.length === 0 && previousMessageIndex.value !== -1) {
4853
+ previousMessageIndex.value = -1;
4854
+ currentInputBuffer.value = "";
4855
+ }
4856
+ if (previousMessageIndex.value === -1 && currentInputValue.length > 0) {
4857
+ currentInputBuffer.value = currentInputValue;
4858
+ }
4859
+ if (key === "ArrowUp") {
4810
4860
  chatEventBus.emit("blurInput");
4811
- if (pastMessages.length === 1) {
4812
- previousMessageIndex.value = 0;
4813
- } else {
4814
- if (key === "ArrowUp") {
4815
- if (currentInputValue.length === 0 && previousMessageIndex.value === 0) {
4816
- previousMessageIndex.value = pastMessages.length - 1;
4817
- } else {
4818
- previousMessageIndex.value = previousMessageIndex.value === 0 ? pastMessages.length - 1 : previousMessageIndex.value - 1;
4819
- }
4820
- } else if (key === "ArrowDown") {
4821
- previousMessageIndex.value = previousMessageIndex.value === pastMessages.length - 1 ? 0 : previousMessageIndex.value + 1;
4822
- }
4861
+ if (previousMessageIndex.value === -1) {
4862
+ previousMessageIndex.value = pastMessages.length - 1;
4863
+ } else if (previousMessageIndex.value > 0) {
4864
+ previousMessageIndex.value--;
4823
4865
  }
4824
4866
  const selectedMessage = pastMessages[previousMessageIndex.value];
4825
4867
  chatEventBus.emit("setInputValue", selectedMessage);
4826
4868
  chatEventBus.emit("focusInput");
4869
+ } else if (key === "ArrowDown") {
4870
+ if (previousMessageIndex.value === -1) return;
4871
+ chatEventBus.emit("blurInput");
4872
+ if (previousMessageIndex.value < pastMessages.length - 1) {
4873
+ previousMessageIndex.value++;
4874
+ const selectedMessage = pastMessages[previousMessageIndex.value];
4875
+ chatEventBus.emit("setInputValue", selectedMessage);
4876
+ } else {
4877
+ previousMessageIndex.value = -1;
4878
+ chatEventBus.emit("setInputValue", currentInputBuffer.value);
4879
+ currentInputBuffer.value = "";
4880
+ }
4881
+ chatEventBus.emit("focusInput");
4827
4882
  }
4828
- if (!isCurrentInputEmptyOrMatch) {
4829
- previousMessageIndex.value = 0;
4830
- }
4883
+ }
4884
+ function onEscapeKey() {
4885
+ if (previousMessageIndex.value === -1) return;
4886
+ previousMessageIndex.value = -1;
4887
+ chatEventBus.emit("setInputValue", currentInputBuffer.value);
4888
+ currentInputBuffer.value = "";
4831
4889
  }
4832
4890
  async function copySessionId() {
4833
4891
  await clipboard.copy(props.sessionId);
@@ -4846,6 +4904,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4846
4904
  createVNode(LogsPanelHeader, {
4847
4905
  "data-test-id": "chat-header",
4848
4906
  title: unref(locale).baseText("chat.window.title"),
4907
+ "is-clickable": _ctx.isHeaderClickable,
4849
4908
  onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
4850
4909
  }, {
4851
4910
  actions: withCtx(() => [
@@ -4892,7 +4951,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4892
4951
  }, 8, ["content"])) : createCommentVNode("", true)
4893
4952
  ]),
4894
4953
  _: 1
4895
- }, 8, ["title"]),
4954
+ }, 8, ["title", "is-clickable"]),
4896
4955
  _ctx.isOpen ? (openBlock(), createElementBlock("main", {
4897
4956
  key: 0,
4898
4957
  class: normalizeClass(_ctx.$style.chatBody),
@@ -4945,7 +5004,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4945
5004
  createVNode(ChatInput, {
4946
5005
  "data-test-id": "lm-chat-inputs",
4947
5006
  placeholder: inputPlaceholder.value,
4948
- onArrowKeyDown
5007
+ onArrowKeyDown,
5008
+ onEscapeKeyDown: onEscapeKey
4949
5009
  }, createSlots({ _: 2 }, [
4950
5010
  _ctx.pastChatMessages.length > 0 ? {
4951
5011
  name: "leftPanel",
@@ -4959,16 +5019,18 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
4959
5019
  type: "tertiary",
4960
5020
  text: "",
4961
5021
  size: "mini",
5022
+ disabled: previousMessageIndex.value === 0,
4962
5023
  onClick: _cache[1] || (_cache[1] = ($event) => onArrowKeyDown({ currentInputValue: "", key: "ArrowUp" }))
4963
- }),
5024
+ }, null, 8, ["disabled"]),
4964
5025
  createVNode(unref(N8nButton), {
4965
5026
  title: "Navigate to next message",
4966
5027
  icon: "chevron-down",
4967
5028
  type: "tertiary",
4968
5029
  text: "",
4969
5030
  size: "mini",
5031
+ disabled: previousMessageIndex.value === -1,
4970
5032
  onClick: _cache[2] || (_cache[2] = ($event) => onArrowKeyDown({ currentInputValue: "", key: "ArrowDown" }))
4971
- })
5033
+ }, null, 8, ["disabled"])
4972
5034
  ], 2)
4973
5035
  ]),
4974
5036
  key: "0"
@@ -5015,7 +5077,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5015
5077
  title: {},
5016
5078
  paneType: {},
5017
5079
  logEntry: {},
5018
- collapsingTableColumnName: {}
5080
+ collapsingTableColumnName: {},
5081
+ searchShortcut: {}
5019
5082
  },
5020
5083
  emits: ["collapsingTableColumnChanged"],
5021
5084
  setup(__props, { emit: __emit }) {
@@ -5078,6 +5141,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5078
5141
  "is-executing": isExecuting.value,
5079
5142
  "table-header-bg-color": "light",
5080
5143
  "collapsing-table-column-name": _ctx.collapsingTableColumnName,
5144
+ "search-shortcut": _ctx.searchShortcut,
5081
5145
  onDisplayModeChange: handleChangeDisplayMode,
5082
5146
  onCollapsingTableColumnChanged: _cache[0] || (_cache[0] = ($event) => emit("collapsingTableColumnChanged", $event))
5083
5147
  }), createSlots({
@@ -5098,31 +5162,22 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5098
5162
  createVNode(RunDataItemCount, normalizeProps(guardReactiveProps(itemCountProps)), null, 16)
5099
5163
  ]),
5100
5164
  "no-output-data": withCtx(() => [
5101
- createVNode(unref(N8nText), {
5102
- bold: true,
5103
- color: "text-dark",
5104
- size: "large"
5105
- }, {
5106
- default: withCtx(() => [
5107
- createTextVNode(toDisplayString(unref(locale).baseText("ndv.output.noOutputData.title")), 1)
5108
- ]),
5109
- _: 1
5110
- })
5165
+ createVNode(NDVEmptyState, {
5166
+ title: unref(locale).baseText("ndv.output.noOutputData.title")
5167
+ }, null, 8, ["title"])
5111
5168
  ]),
5112
5169
  "node-waiting": withCtx(() => [
5113
- createVNode(unref(N8nText), {
5114
- bold: true,
5115
- color: "text-dark",
5116
- size: "large"
5170
+ createVNode(NDVEmptyState, {
5171
+ title: unref(locale).baseText("ndv.output.waitNodeWaiting.title"),
5172
+ wide: ""
5117
5173
  }, {
5118
5174
  default: withCtx(() => [
5119
- createTextVNode(toDisplayString(unref(locale).baseText("ndv.output.waitNodeWaiting.title")), 1)
5175
+ withDirectives(createBaseVNode("span", null, null, 512), [
5176
+ [_directive_n8n_html, unref(waitingNodeTooltip)(_ctx.logEntry.node)]
5177
+ ])
5120
5178
  ]),
5121
5179
  _: 1
5122
- }),
5123
- withDirectives(createVNode(unref(N8nText), null, null, 512), [
5124
- [_directive_n8n_html, unref(waitingNodeTooltip)(_ctx.logEntry.node)]
5125
- ])
5180
+ }, 8, ["title"])
5126
5181
  ]),
5127
5182
  _: 2
5128
5183
  }, [
@@ -5154,7 +5209,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
5154
5209
  ]),
5155
5210
  key: "1"
5156
5211
  } : void 0
5157
- ]), 1040, ["class", "workflow-object", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content", "is-executing", "collapsing-table-column-name"])) : createCommentVNode("", true);
5212
+ ]), 1040, ["class", "workflow-object", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content", "is-executing", "collapsing-table-column-name", "search-shortcut"])) : createCommentVNode("", true);
5158
5213
  };
5159
5214
  }
5160
5215
  });
@@ -5269,13 +5324,16 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5269
5324
  latestInfo: {},
5270
5325
  panels: {},
5271
5326
  collapsingInputTableColumnName: {},
5272
- collapsingOutputTableColumnName: {}
5327
+ collapsingOutputTableColumnName: {},
5328
+ isHeaderClickable: { type: Boolean }
5273
5329
  },
5274
5330
  emits: ["clickHeader", "toggleInputOpen", "toggleOutputOpen", "collapsingInputTableColumnChanged", "collapsingOutputTableColumnChanged"],
5275
5331
  setup(__props, { emit: __emit }) {
5276
5332
  const emit = __emit;
5277
5333
  const locale = useI18n$1();
5278
5334
  const nodeTypeStore = useNodeTypesStore();
5335
+ const ndvStore = useNDVStore();
5336
+ const experimentalNdvStore = useExperimentalNdvStore();
5279
5337
  const type = computed(() => nodeTypeStore.getNodeType(__props.logEntry.node.type));
5280
5338
  const consumedTokens2 = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry, false));
5281
5339
  const isTriggerNode = computed(() => type.value?.group.includes("trigger"));
@@ -5289,6 +5347,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5289
5347
  allowFullSize: true
5290
5348
  });
5291
5349
  const shouldResize = computed(() => __props.panels === LOG_DETAILS_PANEL_STATE.BOTH);
5350
+ const searchShortcutPriorityPanel = computed(
5351
+ () => ndvStore.isNDVOpen || experimentalNdvStore.isMapperOpen ? void 0 : __props.panels === LOG_DETAILS_PANEL_STATE.INPUT ? "input" : "output"
5352
+ );
5292
5353
  function handleResizeEnd() {
5293
5354
  if (resizer.isCollapsed.value) {
5294
5355
  emit("toggleInputOpen", false);
@@ -5308,6 +5369,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5308
5369
  createVNode(LogsPanelHeader, {
5309
5370
  "data-test-id": "log-details-header",
5310
5371
  class: normalizeClass(_ctx.$style.header),
5372
+ "is-clickable": _ctx.isHeaderClickable,
5311
5373
  onClick: _cache[2] || (_cache[2] = ($event) => emit("clickHeader"))
5312
5374
  }, {
5313
5375
  title: withCtx(() => [
@@ -5380,7 +5442,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5380
5442
  renderSlot(_ctx.$slots, "actions")
5381
5443
  ]),
5382
5444
  _: 3
5383
- }, 8, ["class"]),
5445
+ }, 8, ["class", "is-clickable"]),
5384
5446
  _ctx.isOpen ? (openBlock(), createElementBlock("div", {
5385
5447
  key: 0,
5386
5448
  class: normalizeClass(_ctx.$style.content),
@@ -5419,8 +5481,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5419
5481
  title: unref(locale).baseText("logs.details.header.actions.input"),
5420
5482
  "log-entry": _ctx.logEntry,
5421
5483
  "collapsing-table-column-name": _ctx.collapsingInputTableColumnName,
5484
+ "search-shortcut": searchShortcutPriorityPanel.value === "input" ? "ctrl+f" : void 0,
5422
5485
  onCollapsingTableColumnChanged: _cache[3] || (_cache[3] = ($event) => emit("collapsingInputTableColumnChanged", $event))
5423
- }, null, 8, ["title", "log-entry", "collapsing-table-column-name"])
5486
+ }, null, 8, ["title", "log-entry", "collapsing-table-column-name", "search-shortcut"])
5424
5487
  ]),
5425
5488
  _: 1
5426
5489
  }, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"])) : createCommentVNode("", true),
@@ -5432,8 +5495,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
5432
5495
  title: unref(locale).baseText("logs.details.header.actions.output"),
5433
5496
  "log-entry": _ctx.logEntry,
5434
5497
  "collapsing-table-column-name": _ctx.collapsingOutputTableColumnName,
5498
+ "search-shortcut": searchShortcutPriorityPanel.value === "output" ? "ctrl+f" : void 0,
5435
5499
  onCollapsingTableColumnChanged: _cache[4] || (_cache[4] = ($event) => emit("collapsingOutputTableColumnChanged", $event))
5436
- }, null, 8, ["class", "title", "log-entry", "collapsing-table-column-name"])) : createCommentVNode("", true)
5500
+ }, null, 8, ["class", "title", "log-entry", "collapsing-table-column-name", "search-shortcut"])) : createCommentVNode("", true)
5437
5501
  ], 64))
5438
5502
  ], 2)) : createCommentVNode("", true)
5439
5503
  ], 2);
@@ -5538,7 +5602,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5538
5602
  "activator-size": "small",
5539
5603
  items: menuItems.value,
5540
5604
  teleported: false,
5541
- onSelect: handleSelectMenuItem
5605
+ onSelect: handleSelectMenuItem,
5606
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {
5607
+ }, ["stop"]))
5542
5608
  }, null, 8, ["items"])) : createCommentVNode("", true),
5543
5609
  _ctx.showToggleButton ? (openBlock(), createBlock(KeyboardShortcutTooltip, {
5544
5610
  key: 2,
@@ -5554,7 +5620,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
5554
5620
  "icon-size": "medium",
5555
5621
  icon: _ctx.isOpen ? "chevron-down" : "chevron-up",
5556
5622
  "aria-label": toggleButtonText.value,
5557
- onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("toggleOpen"), ["stop"]))
5623
+ onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleOpen"), ["stop"]))
5558
5624
  }, null, 8, ["icon", "aria-label"])
5559
5625
  ]),
5560
5626
  _: 1
@@ -5571,16 +5637,28 @@ const cssModules$1 = {
5571
5637
  "$style": style0$1
5572
5638
  };
5573
5639
  const LogsPanelActions = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1]]);
5574
- function useLogsExecutionData() {
5640
+ function useThrottle(state, timeout) {
5641
+ const throttled = shallowRef(state.value);
5642
+ watch(
5643
+ state,
5644
+ useThrottleFn(() => throttled.value = state.value, timeout, true, true)
5645
+ );
5646
+ return throttled;
5647
+ }
5648
+ function useLogsExecutionData(isEnabled) {
5575
5649
  const nodeHelpers = useNodeHelpers();
5576
5650
  const workflowsStore = useWorkflowsStore();
5577
5651
  const toast = useToast();
5578
- const execData = ref();
5652
+ const state = ref();
5653
+ const updateInterval = computed(
5654
+ () => Object.keys(state.value?.startData ?? {}).length > 1 ? LOGS_EXECUTION_DATA_THROTTLE_DURATION : 0
5655
+ );
5656
+ const throttledState = useThrottle(state, updateInterval);
5579
5657
  const subWorkflowExecData = ref({});
5580
5658
  const subWorkflows = ref({});
5581
5659
  const workflow = computed(
5582
- () => execData.value ? new Workflow({
5583
- ...execData.value?.workflowData,
5660
+ () => throttledState.value ? new Workflow({
5661
+ ...throttledState.value.response.workflowData,
5584
5662
  nodeTypes: workflowsStore.getNodeTypes()
5585
5663
  }) : void 0
5586
5664
  );
@@ -5604,27 +5682,28 @@ function useLogsExecutionData() {
5604
5682
  )
5605
5683
  );
5606
5684
  const entries = computed(() => {
5607
- if (!execData.value?.data || !workflow.value) {
5685
+ if (!isEnabled.value || !throttledState.value || !workflow.value) {
5608
5686
  return [];
5609
5687
  }
5688
+ const mergedExecutionData = mergeStartData(
5689
+ throttledState.value.startData,
5690
+ throttledState.value.response
5691
+ );
5610
5692
  return createLogTree(
5611
5693
  workflow.value,
5612
- execData.value,
5694
+ mergedExecutionData,
5613
5695
  subWorkflows.value,
5614
5696
  subWorkflowExecData.value
5615
5697
  );
5616
5698
  });
5617
- const updateInterval = computed(
5618
- () => (entries.value?.length ?? 0) > 1 ? LOGS_EXECUTION_DATA_THROTTLE_DURATION : 0
5619
- );
5620
5699
  function resetExecutionData() {
5621
- execData.value = void 0;
5700
+ state.value = void 0;
5622
5701
  workflowsStore.setWorkflowExecutionData(null);
5623
5702
  nodeHelpers.updateNodesExecutionIssues();
5624
5703
  }
5625
5704
  async function loadSubExecution(logEntry) {
5626
5705
  const locator = findSubExecutionLocator(logEntry);
5627
- if (!execData.value?.data || locator === void 0) {
5706
+ if (!state.value || locator === void 0) {
5628
5707
  return;
5629
5708
  }
5630
5709
  try {
@@ -5653,10 +5732,10 @@ function useLogsExecutionData() {
5653
5732
  ],
5654
5733
  useThrottleFn(
5655
5734
  ([executionId], [previousExecutionId]) => {
5656
- execData.value = workflowsStore.workflowExecutionData === null ? void 0 : mergeStartData(
5657
- workflowsStore.workflowExecutionStartedData?.[1] ?? {},
5658
- workflowsStore.workflowExecutionData
5659
- );
5735
+ state.value = workflowsStore.workflowExecutionData === null ? void 0 : {
5736
+ response: copyExecutionData(workflowsStore.workflowExecutionData),
5737
+ startData: workflowsStore.workflowExecutionStartedData?.[1] ?? {}
5738
+ };
5660
5739
  if (executionId !== previousExecutionId) {
5661
5740
  subWorkflowExecData.value = {};
5662
5741
  subWorkflows.value = {};
@@ -5677,7 +5756,7 @@ function useLogsExecutionData() {
5677
5756
  }
5678
5757
  );
5679
5758
  return {
5680
- execution: computed(() => execData.value),
5759
+ execution: computed(() => throttledState.value?.response),
5681
5760
  entries,
5682
5761
  hasChat,
5683
5762
  latestNodeNameById,
@@ -6088,7 +6167,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6088
6167
  refreshSession,
6089
6168
  displayExecution
6090
6169
  } = useChatState(props.isReadOnly);
6091
- const { entries, execution, hasChat, latestNodeNameById, resetExecutionData, loadSubExecution } = useLogsExecutionData();
6170
+ const { entries, execution, hasChat, latestNodeNameById, resetExecutionData, loadSubExecution } = useLogsExecutionData(isOpen);
6092
6171
  const { flatLogEntries, toggleExpanded } = useLogsTreeExpand(entries, loadSubExecution);
6093
6172
  const { selected: selected2, select, selectNext, selectPrev } = useLogsSelection(
6094
6173
  execution,
@@ -6124,7 +6203,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6124
6203
  ArrowDown: selectNext,
6125
6204
  ArrowUp: selectPrev,
6126
6205
  Space: () => selected2.value && toggleExpanded(selected2.value),
6127
- Enter: () => selected2.value && handleOpenNdv(selected2.value)
6206
+ Enter: () => selected2.value && handleOpenNdv(selected2.value),
6207
+ ...isPoppedOut.value ? {
6208
+ // We need shortcuts for toggling input/output panel in the pop-out window only
6209
+ // because these are also implemented in the canvas
6210
+ i: () => logsStore.toggleInputOpen(),
6211
+ o: () => logsStore.toggleOutputOpen()
6212
+ } : {}
6128
6213
  }));
6129
6214
  function handleResizeOverviewPanelEnd() {
6130
6215
  if (isOverviewPanelFullWidth.value) {
@@ -6202,12 +6287,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6202
6287
  "past-chat-messages": unref(previousChatMessages),
6203
6288
  "show-close-button": false,
6204
6289
  "is-new-logs-enabled": true,
6290
+ "is-header-clickable": !unref(isPoppedOut),
6205
6291
  onClose: unref(onToggleOpen),
6206
6292
  onRefreshSession: unref(refreshSession),
6207
6293
  onDisplayExecution: unref(displayExecution),
6208
6294
  onSendMessage: unref(sendMessage),
6209
- onClickHeader: _cache[0] || (_cache[0] = ($event) => unref(onToggleOpen)(true))
6210
- }, null, 8, ["is-open", "is-read-only", "messages", "session-id", "past-chat-messages", "onClose", "onRefreshSession", "onDisplayExecution", "onSendMessage"]))
6295
+ onClickHeader: unref(onToggleOpen)
6296
+ }, null, 8, ["is-open", "is-read-only", "messages", "session-id", "past-chat-messages", "is-header-clickable", "onClose", "onRefreshSession", "onDisplayExecution", "onSendMessage", "onClickHeader"]))
6211
6297
  ]),
6212
6298
  _: 1
6213
6299
  }, 8, ["is-resizing-enabled", "width", "style", "class", "window", "onResize", "onResizeend"])) : createCommentVNode("", true),
@@ -6237,7 +6323,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6237
6323
  entries: unref(entries),
6238
6324
  "latest-node-info": unref(latestNodeNameById),
6239
6325
  "flat-log-entries": unref(flatLogEntries),
6240
- onClickHeader: _cache[1] || (_cache[1] = ($event) => unref(onToggleOpen)(true)),
6326
+ "is-header-clickable": !unref(isPoppedOut),
6327
+ onClickHeader: unref(onToggleOpen),
6241
6328
  onSelect: unref(select),
6242
6329
  onClearExecutionData: unref(resetExecutionData),
6243
6330
  onToggleExpanded: unref(toggleExpanded),
@@ -6247,7 +6334,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6247
6334
  !isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
6248
6335
  ]),
6249
6336
  _: 1
6250
- }, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution", "entries", "latest-node-info", "flat-log-entries", "onSelect", "onClearExecutionData", "onToggleExpanded"])
6337
+ }, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution", "entries", "latest-node-info", "flat-log-entries", "is-header-clickable", "onClickHeader", "onSelect", "onClearExecutionData", "onToggleExpanded"])
6251
6338
  ]),
6252
6339
  _: 1
6253
6340
  }, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"]),
@@ -6261,7 +6348,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6261
6348
  panels: unref(logsStore).detailsState,
6262
6349
  "collapsing-input-table-column-name": inputCollapsingColumnName.value,
6263
6350
  "collapsing-output-table-column-name": outputCollapsingColumnName.value,
6264
- onClickHeader: _cache[2] || (_cache[2] = ($event) => unref(onToggleOpen)(true)),
6351
+ "is-header-clickable": !unref(isPoppedOut),
6352
+ onClickHeader: unref(onToggleOpen),
6265
6353
  onToggleInputOpen: unref(logsStore).toggleInputOpen,
6266
6354
  onToggleOutputOpen: unref(logsStore).toggleOutputOpen,
6267
6355
  onCollapsingInputTableColumnChanged: handleChangeInputTableColumnCollapsing,
@@ -6271,7 +6359,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
6271
6359
  isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
6272
6360
  ]),
6273
6361
  _: 1
6274
- }, 8, ["class", "is-open", "log-entry", "window", "latest-info", "panels", "collapsing-input-table-column-name", "collapsing-output-table-column-name", "onToggleInputOpen", "onToggleOutputOpen"])) : createCommentVNode("", true)
6362
+ }, 8, ["class", "is-open", "log-entry", "window", "latest-info", "panels", "collapsing-input-table-column-name", "collapsing-output-table-column-name", "is-header-clickable", "onClickHeader", "onToggleInputOpen", "onToggleOutputOpen"])) : createCommentVNode("", true)
6275
6363
  ], 2)
6276
6364
  ], 2)
6277
6365
  ]),