n8n-editor-ui 1.90.1 → 1.92.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.
- package/dist/assets/{AnimatedSpinner-ChThynSJ.js → AnimatedSpinner-CtKKeDrz.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-WGp2Kuen.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DR6h_xsK.js} +1 -1
- package/dist/assets/{AuthView-Dlhn_SQ-.js → AuthView-mKkzBRxh.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-BuBg7TJP.js → CanvasChatSwitch-Bu2VD2kp.js} +24 -12
- package/dist/assets/{ChangePasswordView-BKYXOoDf.js → ChangePasswordView-D5UI1v-J.js} +3 -3
- package/dist/assets/CollectionParameter-BeCTpZ-q.js +4 -0
- package/dist/assets/{CredentialsView-BNWIgrLb.js → CredentialsView-B78eNJO5.js} +10 -9
- package/dist/assets/{DemoFooter-DR6r_2qR.js → DemoFooter-DP26HpCu.js} +8 -8
- package/dist/assets/{ErrorView-Bu8Mt5FH.js → ErrorView-C3fvEdCg.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DvtOOOhh.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BBpwYdHY.js} +2 -2
- package/dist/assets/{ExecutionsView-C0WZAIi0.js → ExecutionsView-BvlDZwIs.js} +11 -10
- package/dist/assets/{FileSaver.min-Cm0u4qyc.js → FileSaver.min-BzAtcQXX.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-KmRZtBiP.js → FixedCollectionParameter-CS5zXMAh.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-GH7SqEFu.js → ForgotMyPasswordView-CVQ7pcIG.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-SeBUN06R.js → InsightsChartAverageRuntime-Boh0SMb3.js} +7 -6
- package/dist/assets/{InsightsChartFailed-TYjH8LwV.js → InsightsChartFailed-IZ-KYOU9.js} +7 -6
- package/dist/assets/{InsightsChartFailureRate-D41Jv-6v.js → InsightsChartFailureRate-2fWw3p0L.js} +7 -6
- package/dist/assets/{InsightsChartTimeSaved-TLPDAmPx.js → InsightsChartTimeSaved-B2pLVys1.js} +7 -6
- package/dist/assets/{InsightsChartTotal-CaKTe2mv.js → InsightsChartTotal-2QD4wPLR.js} +7 -6
- package/dist/assets/{InsightsDashboard-DPVczYm3.css → InsightsDashboard-Bx4vx9gz.css} +16 -0
- package/dist/assets/InsightsDashboard-CbiFbJ8w.js +372 -0
- package/dist/assets/{InsightsPaywall-Z4Y0nO-i.js → InsightsPaywall-5d-cSdiS.js} +1 -1
- package/dist/assets/{InsightsSummary-FixbpmPJ.css → InsightsSummary-CdlaUpAt.css} +25 -25
- package/dist/assets/{InsightsSummary-DzYli0Pu.js → InsightsSummary-gldDQ9rg.js} +16 -17
- package/dist/assets/{InsightsTableWorkflows-CUHAG57c.js → InsightsTableWorkflows-_eTCUNCX.js} +2 -2
- package/dist/assets/{Logo-Dxp4M9dy.js → Logo-Dl2xVRIu.js} +1 -1
- package/dist/assets/{LogsPanel-zIrTNE6j.js → LogsPanel-JnYirDqa.js} +520 -436
- package/dist/assets/{LogsPanel-DmPMCt9w.css → LogsPanel-mTaFEGk_.css} +208 -98
- package/dist/assets/{MainHeader-D4cIIoUA.js → MainHeader-Bk29pgmL.js} +122 -295
- package/dist/assets/MainHeader-CEPLiR-5.css +1044 -0
- package/dist/assets/{MainSidebar-BtW-9UPT.js → MainSidebar-BM5ku_wM.js} +11 -11
- package/dist/assets/{MainSidebar-CKMiDGvH.css → MainSidebar-zZpP3qQ0.css} +13 -12
- package/dist/assets/{NodeCreation-thD32mA1.js → NodeCreation-BEjdAYc_.js} +4 -4
- package/dist/assets/{NodeCreator-B4mHaU45.js → NodeCreator-cEUgbAI9.js} +14 -4
- package/dist/assets/{NodeDetailsView-cO3Ci9jH.js → NodeDetailsView-D4O9dKTA.js} +93 -68
- package/dist/assets/{NodeDetailsView-CGgV4Pn_.css → NodeDetailsView-DsFLtbxi.css} +20 -20
- package/dist/assets/{NodeView-E5b1ClVD.js → NodeView-DDSOUm8E.js} +152 -34
- package/dist/assets/{ProjectCardBadge-LnLKqSK-.js → ProjectCardBadge-BNn2hiMe.js} +1 -1
- package/dist/assets/{ProjectHeader-DC02ZuZ0.js → ProjectHeader-CaEZ2OPj.js} +1 -1
- package/dist/assets/{ProjectSettings-Zr1UOp7s.js → ProjectSettings-otA8E-yW.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CM7WIpD3.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-C3JbZMCk.js} +1 -1
- package/dist/assets/{ResourcesListLayout-DTsuHdYx.js → ResourcesListLayout-1d9Ic6VX.js} +2 -2
- package/dist/assets/{ResourcesListLayout-CglK2dXR.css → ResourcesListLayout-CtGME7aU.css} +8 -8
- package/dist/assets/{RunData-DepHcD2K.css → RunData-BjlZgIyx.css} +102 -73
- package/dist/assets/{RunData-Ds-U68nr.js → RunData-Bx47sNQp.js} +690 -398
- package/dist/assets/{RunDataAi-BF2gZZGr.css → RunDataAi-D9VLFXIf.css} +10 -51
- package/dist/assets/{RunDataAi-DdK11EHU.js → RunDataAi-DOac7nwD.js} +27 -310
- package/dist/assets/{RunDataJson-Txw0lqay.css → RunDataJson-BH9HLoGC.css} +12 -8
- package/dist/assets/{RunDataJson-B2WU5od1.js → RunDataJson-Pev6yNEV.js} +20 -14
- package/dist/assets/{RunDataJsonActions-DqZ2X1yJ.js → RunDataJsonActions-Co4xgmVq.js} +1 -1
- package/dist/assets/RunDataParsedAiContent-9EEUzCKp.css +176 -0
- package/dist/assets/RunDataParsedAiContent-D6MNLmT3.js +148 -0
- package/dist/assets/{RunDataSearch-CQsyZvGK.js → RunDataSearch-C8orcAlP.js} +1 -1
- package/dist/assets/{RunDataTable-DyUvXWfl.css → RunDataTable-CUxj7dHx.css} +47 -39
- package/dist/assets/{RunDataTable-BO0R4JT_.js → RunDataTable-oi_l8dhA.js} +41 -30
- package/dist/assets/{SamlOnboarding-CmwMX5y2.js → SamlOnboarding-CT5J6dx0.js} +3 -3
- package/dist/assets/{SettingsApiView-D6uBbi9-.js → SettingsApiView-CupjcI9v.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-CJODtx_K.js → SettingsCommunityNodesView-B5K2VLyJ.js} +4 -4
- package/dist/assets/{SettingsExternalSecrets-CVk14P_P.js → SettingsExternalSecrets-BidJCf_t.js} +1 -1
- package/dist/assets/{SettingsLdapView-pg71FErj.js → SettingsLdapView-Cva6akhW.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-DUOI3Xb9.js → SettingsLogStreamingView-Cy-rAKUO.js} +1 -1
- package/dist/assets/{SettingsPersonalView-BFnOmBPC.js → SettingsPersonalView-ZJ1Syok2.js} +14 -13
- package/dist/assets/{SettingsSourceControl-BUNmxcvB.js → SettingsSourceControl-CMtqqlkO.js} +1 -1
- package/dist/assets/{SettingsSso-Dx8Qw_2Z.js → SettingsSso-Bi3OpykL.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-DTk86tXU.js → SettingsUsageAndPlan-C5TbwZhP.js} +1 -1
- package/dist/assets/{SettingsUsersView-BviXcl30.js → SettingsUsersView-BHuP5k0A.js} +1 -1
- package/dist/assets/{SettingsView-fzPdUijx.js → SettingsView-DPIIqaKN.js} +1 -1
- package/dist/assets/{SetupView-DUTx1JXK.js → SetupView-C4V9j6sh.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-fApxCGHh.js → SetupWorkflowCredentialsButton-BZ9ILQUp.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-C5t9fEKF.js → SetupWorkflowFromTemplateView-3uV3zSU2.js} +3 -3
- package/dist/assets/{SigninView-BRVoXQRW.js → SigninView-DWZHdCjG.js} +3 -3
- package/dist/assets/{SignoutView-Duh6wb4Y.js → SignoutView-DbduXAir.js} +1 -1
- package/dist/assets/{SignupView-DMkpTtjs.js → SignupView-DWq6VACk.js} +3 -3
- package/dist/assets/{TemplateDetails-Df9_jph6.js → TemplateDetails-BckqE6GK.js} +1 -1
- package/dist/assets/{TemplateList-qSnJvw0K.js → TemplateList-Bw0JeBMP.js} +1 -1
- package/dist/assets/{TemplatesCollectionView--ccYXaCo.js → TemplatesCollectionView-CAKT-mpV.js} +5 -5
- package/dist/assets/{TemplatesSearchView-D1YgHKld.js → TemplatesSearchView-I2a5us58.js} +3 -3
- package/dist/assets/{TemplatesView-B9CwObHN.js → TemplatesView-6EwGFFJK.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-DtLpUF59.js → TemplatesWorkflowView-C8xYMhwu.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-DFcBlKnN.js → TestDefinitionEditView-CNd3Cuzq.js} +8 -8
- package/dist/assets/{TestDefinitionListView-C_mbolTO.js → TestDefinitionListView-BwTWIaAM.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-CvyM6TLE.js → TestDefinitionNewView-BQas0_G1.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-BXzJY0cY.js → TestDefinitionRootView-D971MFye.js} +1 -1
- package/dist/assets/{VariablesView-BHFJj5IU.js → VariablesView-DcBBuFxh.js} +3 -3
- package/dist/assets/{WorkerView-CgIksFjP.js → WorkerView-DSgBNIeb.js} +6 -6
- package/dist/assets/WorkflowActivator-CPCbgb_n.js +776 -0
- package/dist/assets/{MainHeader-CWA2JfVJ.css → WorkflowActivator-DAyH7N29.css} +74 -434
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BcBLZ_Ul.js → WorkflowExecutionsInfoAccordion-Bc6vzAZu.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-B9ByHnbR.js → WorkflowExecutionsLandingPage-BPPS4V9i.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-DCE7TYLh.js → WorkflowExecutionsPreview-Bbb5MB8Z.js} +6 -6
- package/dist/assets/{WorkflowExecutionsView-DFoBpdS7.js → WorkflowExecutionsView-Pz-7iHJY.js} +11 -9
- package/dist/assets/{WorkflowHistory-DolmPUM2.js → WorkflowHistory-Czo9IuI6.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-DQW48M8_.js → WorkflowOnboardingView-B8DdkfJ5.js} +1 -1
- package/dist/assets/{WorkflowPreview-BFR6V9SO.js → WorkflowPreview-eVlO1itk.js} +1 -1
- package/dist/assets/{WorkflowsView-CsM69PSv.css → WorkflowsView-B2_HJCJ5.css} +28 -162
- package/dist/assets/{WorkflowsView-B-feKuLZ.js → WorkflowsView-Cr2D0vym.js} +124 -217
- package/dist/assets/{chartjs.utils-BcXTJ2Te.js → chartjs.utils-Dk1WO3Mr.js} +2 -2
- package/dist/assets/{dateFormatter-CZI1kGYK.js → dateFormatter-C8N5khiG.js} +5 -5
- package/dist/assets/{easyAiWorkflowUtils-ChToD_Yl.js → easyAiWorkflowUtils-CLqHnasO.js} +1 -1
- package/dist/assets/{global-link-actions-OGaZVwsw.js → global-link-actions-BvoZh8u9.js} +1 -1
- package/dist/assets/{import-curl-CAszzwx1.js → import-curl-BpxkGYMX.js} +1 -1
- package/dist/assets/{index-BpdkKRP4.js → index-B6eunbxp.js} +14227 -11881
- package/dist/assets/{index-7WdERzqm.js → index-Br8T1Gn6.js} +1 -1
- package/dist/assets/{index-C5OXOcIJ.css → index-DCpy4nCU.css} +6147 -4061
- package/dist/assets/{pickBy-mYqFOFbh.js → pickBy-8Urz9lDY.js} +1 -1
- package/dist/assets/{templateActions-BX9arLbc.js → templateActions-DzjysjbQ.js} +1 -1
- package/dist/assets/{useBeforeUnload-K7nQ15Rk.js → useBeforeUnload-DxrN8vOO.js} +1 -1
- package/dist/assets/{useCanvasMapping-D_UPCxYX.js → useCanvasMapping-C2BQB9QB.js} +270 -112
- package/dist/assets/{useCanvasMapping-C--wac6H.css → useCanvasMapping-cuXLM-h-.css} +185 -4
- package/dist/assets/{useCanvasOperations-D6VFiC3b.js → useCanvasOperations-DaP5jKbH.js} +4 -3
- package/dist/assets/{useClearExecutionButtonVisible-D_0O6f0X.js → useClearExecutionButtonVisible-BV-jMf2m.js} +2 -2
- package/dist/assets/{useExecutionDebugging-BNMaKOh7.js → useExecutionDebugging-0pPCimcw.js} +1 -1
- package/dist/assets/{useExecutionHelpers-DN5HqPqY.js → useExecutionHelpers-DIvhViMz.js} +2 -2
- package/dist/assets/{useImportCurlCommand-BSL596XF.js → useImportCurlCommand-BWf4R83s.js} +19 -10
- package/dist/assets/usePushConnection-Pobjq0U9.js +632 -0
- package/dist/assets/{useTestDefinitionForm-CIhrxyve.js → useTestDefinitionForm-BA3IS_2B.js} +1 -1
- package/dist/assets/{useWorkflowActivate-pZ62ib_C.js → useWorkflowActivate-DFqvrpj6.js} +1 -1
- package/dist/assets/useWorkflowSaving-BACesUoL.js +66 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/vite.config.mts +15 -1
- package/dist/assets/CollectionParameter-CQXiWluX.js +0 -4
- package/dist/assets/InsightsDashboard-o3JS9fjz.js +0 -178
- package/dist/assets/WorkflowActivator-BX59FxTZ.css +0 -260
- package/dist/assets/WorkflowActivator-O6i5XAk2.js +0 -231
- package/dist/assets/usePushConnection-BdV7ILvK.js +0 -535
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-
|
|
3
|
-
import { H as HighlightJS, f as formatTokenUsageCount, _ as _sfc_main$
|
|
4
|
-
import { t as toTime, a as toDayMonth } from "./dateFormatter-
|
|
5
|
-
import { u as upperFirst } from "./useCanvasOperations-
|
|
1
|
+
import { b0 as inject, b1 as isRef, i as createElementBlock, g as openBlock, k as createBaseVNode, d as defineComponent, q as computed, j as createVNode, e as createBlock, f as createCommentVNode, m as unref, t as toDisplayString, b2 as withModifiers, _ as _export_sfc, b3 as toRefs, r as ref, o as onMounted, n as normalizeClass, x as renderSlot, b4 as normalizeProps, b5 as guardReactiveProps, b6 as resolveDynamicComponent, b7 as mergeProps, b8 as VueMarkdown, F as Fragment, D as renderList, b9 as markdownLink, ba as useFileDialog, bb as onUnmounted, B as normalizeStyle, aA as withDirectives, bc as vModelText, bd as withKeys, w as withCtx, X as watch, h as resolveComponent, l as createTextVNode, be as N8nText, bf as useClipboard, a as useToast, c as useI18n$1, aR as N8nTooltip, bg as N8nButton, aT as _sfc_main$i, aV as createSlots, aJ as useStorage, a_ as watchEffect, y as onBeforeUnmount, G as useDebounce, bh as provide, bi as useProvideTooltipAppendTo, bj as IsInPiPWindowSymbol, bk as CHAT_TRIGGER_NODE_TYPE, bl as MANUAL_CHAT_TRIGGER_NODE_TYPE, bm as NodeConnectionTypes, bn as v4, bo as get, bp as isEmpty, bq as usePinnedData, ai as useMessage, aj as MODAL_CONFIRM, br as CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE, bs as AI_SUBCATEGORY, bt as AI_CATEGORY_AGENTS, bu as AI_CATEGORY_CHAINS, bv as AI_CODE_NODE_TYPE, bw as getNodeInputs, bx as getConnectionTypes, by as getNodeOutputs, Q as useWorkflowsStore, bz as useNodeTypesStore, b as useRouter, bA as useNodeHelpers, bB as useRunWorkflow, V as VIEWS, aZ as LOGS_PANEL_STATE, bC as _sfc_main$k, bD as I18nT, bE as N8nIcon, as as useNDVStore, bF as useVirtualList, bG as N8nRadioButtons, ag as useTelemetry, z as nextTick, bH as ndvEventBus, aS as N8nLink, av as useLocalStorage, bI as LOG_DETAILS_CONTENT, aY as useTemplateRef, a$ as N8nResizeWrapper, bJ as useStyles, $ as useCanvasStore, bK as Workflow, bL as IN_PROGRESS_EXECUTION_ID, bM as useThrottleFn } from "./index-B6eunbxp.js";
|
|
2
|
+
import { u as useClearExecutionButtonVisible } from "./useClearExecutionButtonVisible-BV-jMf2m.js";
|
|
3
|
+
import { H as HighlightJS, f as formatTokenUsageCount, _ as _sfc_main$j, g as getSubtreeTotalConsumedTokens, a as getTotalConsumedTokens, b as flattenLogEntries, R as RunData, c as createLogEntries, d as deepToRaw, e as findSelectedLogEntry } from "./RunData-Bx47sNQp.js";
|
|
4
|
+
import { t as toTime, a as toDayMonth } from "./dateFormatter-C8N5khiG.js";
|
|
5
|
+
import { u as upperFirst } from "./useCanvasOperations-DaP5jKbH.js";
|
|
6
6
|
function bash(hljs) {
|
|
7
7
|
const regex = hljs.regex;
|
|
8
8
|
const VAR = {};
|
|
@@ -2518,13 +2518,13 @@ function useI18n() {
|
|
|
2518
2518
|
}
|
|
2519
2519
|
return { t, te };
|
|
2520
2520
|
}
|
|
2521
|
-
const _hoisted_1$
|
|
2521
|
+
const _hoisted_1$e = {
|
|
2522
2522
|
viewBox: "0 0 24 24",
|
|
2523
2523
|
width: "1.2em",
|
|
2524
2524
|
height: "1.2em"
|
|
2525
2525
|
};
|
|
2526
2526
|
function render$7(_ctx, _cache) {
|
|
2527
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2527
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$e, _cache[0] || (_cache[0] = [
|
|
2528
2528
|
createBaseVNode("path", {
|
|
2529
2529
|
fill: "currentColor",
|
|
2530
2530
|
d: "M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12z"
|
|
@@ -2532,13 +2532,13 @@ function render$7(_ctx, _cache) {
|
|
|
2532
2532
|
]));
|
|
2533
2533
|
}
|
|
2534
2534
|
const IconDelete = { name: "mdi-closeThick", render: render$7 };
|
|
2535
|
-
const _hoisted_1$
|
|
2535
|
+
const _hoisted_1$d = {
|
|
2536
2536
|
viewBox: "0 0 24 24",
|
|
2537
2537
|
width: "1.2em",
|
|
2538
2538
|
height: "1.2em"
|
|
2539
2539
|
};
|
|
2540
2540
|
function render$6(_ctx, _cache) {
|
|
2541
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2541
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$d, _cache[0] || (_cache[0] = [
|
|
2542
2542
|
createBaseVNode("path", {
|
|
2543
2543
|
fill: "currentColor",
|
|
2544
2544
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m0 18h12v-8l-4 4l-2-2zM8 9a2 2 0 0 0-2 2a2 2 0 0 0 2 2a2 2 0 0 0 2-2a2 2 0 0 0-2-2"
|
|
@@ -2546,13 +2546,13 @@ function render$6(_ctx, _cache) {
|
|
|
2546
2546
|
]));
|
|
2547
2547
|
}
|
|
2548
2548
|
const IconFileImage = { name: "mdi-fileImage", render: render$6 };
|
|
2549
|
-
const _hoisted_1$
|
|
2549
|
+
const _hoisted_1$c = {
|
|
2550
2550
|
viewBox: "0 0 24 24",
|
|
2551
2551
|
width: "1.2em",
|
|
2552
2552
|
height: "1.2em"
|
|
2553
2553
|
};
|
|
2554
2554
|
function render$5(_ctx, _cache) {
|
|
2555
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2555
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$c, _cache[0] || (_cache[0] = [
|
|
2556
2556
|
createBaseVNode("path", {
|
|
2557
2557
|
fill: "currentColor",
|
|
2558
2558
|
d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm-1 11h-2v5a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2c.4 0 .7.1 1 .3V11h3zm0-4V3.5L18.5 9z"
|
|
@@ -2560,13 +2560,13 @@ function render$5(_ctx, _cache) {
|
|
|
2560
2560
|
]));
|
|
2561
2561
|
}
|
|
2562
2562
|
const IconFileMusic = { name: "mdi-fileMusic", render: render$5 };
|
|
2563
|
-
const _hoisted_1$
|
|
2563
|
+
const _hoisted_1$b = {
|
|
2564
2564
|
viewBox: "0 0 24 24",
|
|
2565
2565
|
width: "1.2em",
|
|
2566
2566
|
height: "1.2em"
|
|
2567
2567
|
};
|
|
2568
2568
|
function render$4(_ctx, _cache) {
|
|
2569
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2569
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$b, _cache[0] || (_cache[0] = [
|
|
2570
2570
|
createBaseVNode("path", {
|
|
2571
2571
|
fill: "currentColor",
|
|
2572
2572
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2zm3-4v-2H6v2z"
|
|
@@ -2574,13 +2574,13 @@ function render$4(_ctx, _cache) {
|
|
|
2574
2574
|
]));
|
|
2575
2575
|
}
|
|
2576
2576
|
const IconFileText = { name: "mdi-fileText", render: render$4 };
|
|
2577
|
-
const _hoisted_1$
|
|
2577
|
+
const _hoisted_1$a = {
|
|
2578
2578
|
viewBox: "0 0 24 24",
|
|
2579
2579
|
width: "1.2em",
|
|
2580
2580
|
height: "1.2em"
|
|
2581
2581
|
};
|
|
2582
2582
|
function render$3(_ctx, _cache) {
|
|
2583
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2583
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
|
|
2584
2584
|
createBaseVNode("path", {
|
|
2585
2585
|
fill: "currentColor",
|
|
2586
2586
|
d: "M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m11 17v-6l-3 2.2V13H7v6h7v-2.2z"
|
|
@@ -2588,13 +2588,13 @@ function render$3(_ctx, _cache) {
|
|
|
2588
2588
|
]));
|
|
2589
2589
|
}
|
|
2590
2590
|
const IconFileVideo = { name: "mdi-fileVideo", render: render$3 };
|
|
2591
|
-
const _hoisted_1$
|
|
2591
|
+
const _hoisted_1$9 = {
|
|
2592
2592
|
viewBox: "0 0 24 24",
|
|
2593
2593
|
width: "1.2em",
|
|
2594
2594
|
height: "1.2em"
|
|
2595
2595
|
};
|
|
2596
2596
|
function render$2(_ctx, _cache) {
|
|
2597
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2597
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$9, _cache[0] || (_cache[0] = [
|
|
2598
2598
|
createBaseVNode("path", {
|
|
2599
2599
|
fill: "currentColor",
|
|
2600
2600
|
d: "M14 3v2h3.59l-9.83 9.83l1.41 1.41L19 6.41V10h2V3m-2 16H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2z"
|
|
@@ -2602,8 +2602,8 @@ function render$2(_ctx, _cache) {
|
|
|
2602
2602
|
]));
|
|
2603
2603
|
}
|
|
2604
2604
|
const IconPreview = { name: "mdi-openInNew", render: render$2 };
|
|
2605
|
-
const _hoisted_1$
|
|
2606
|
-
const _sfc_main$
|
|
2605
|
+
const _hoisted_1$8 = { class: "chat-file-name" };
|
|
2606
|
+
const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
2607
2607
|
__name: "ChatFile",
|
|
2608
2608
|
props: {
|
|
2609
2609
|
file: {},
|
|
@@ -2638,7 +2638,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2638
2638
|
onClick
|
|
2639
2639
|
}, [
|
|
2640
2640
|
createVNode(unref(TypeIcon)),
|
|
2641
|
-
createBaseVNode("p", _hoisted_1$
|
|
2641
|
+
createBaseVNode("p", _hoisted_1$8, toDisplayString(_ctx.file.name), 1),
|
|
2642
2642
|
_ctx.isRemovable ? (openBlock(), createElementBlock("span", {
|
|
2643
2643
|
key: 0,
|
|
2644
2644
|
class: "chat-file-delete",
|
|
@@ -2653,16 +2653,16 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2653
2653
|
};
|
|
2654
2654
|
}
|
|
2655
2655
|
});
|
|
2656
|
-
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
2657
|
-
const _hoisted_1$
|
|
2656
|
+
const ChatFile = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-70b9370d"]]);
|
|
2657
|
+
const _hoisted_1$7 = {
|
|
2658
2658
|
key: 0,
|
|
2659
2659
|
class: "chat-message-actions"
|
|
2660
2660
|
};
|
|
2661
|
-
const _hoisted_2$
|
|
2661
|
+
const _hoisted_2$3 = {
|
|
2662
2662
|
key: 2,
|
|
2663
2663
|
class: "chat-message-files"
|
|
2664
2664
|
};
|
|
2665
|
-
const _sfc_main$
|
|
2665
|
+
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
2666
2666
|
__name: "Message",
|
|
2667
2667
|
props: {
|
|
2668
2668
|
message: {}
|
|
@@ -2740,7 +2740,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2740
2740
|
ref: messageContainer,
|
|
2741
2741
|
class: normalizeClass(["chat-message", classes.value])
|
|
2742
2742
|
}, [
|
|
2743
|
-
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
2743
|
+
_ctx.$slots.beforeMessage ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
2744
2744
|
renderSlot(_ctx.$slots, "beforeMessage", normalizeProps(guardReactiveProps({ message: unref(message) })))
|
|
2745
2745
|
])) : createCommentVNode("", true),
|
|
2746
2746
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
@@ -2751,7 +2751,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2751
2751
|
options: markdownOptions,
|
|
2752
2752
|
plugins: [linksNewTabPlugin]
|
|
2753
2753
|
}, null, 8, ["source", "plugins"])),
|
|
2754
|
-
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2754
|
+
(unref(message).files ?? []).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
|
|
2755
2755
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(message).files ?? [], (file) => {
|
|
2756
2756
|
return openBlock(), createElementBlock("div", {
|
|
2757
2757
|
key: file.name,
|
|
@@ -2770,13 +2770,13 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2770
2770
|
};
|
|
2771
2771
|
}
|
|
2772
2772
|
});
|
|
2773
|
-
const _hoisted_1$
|
|
2773
|
+
const _hoisted_1$6 = {
|
|
2774
2774
|
viewBox: "0 0 24 24",
|
|
2775
2775
|
width: "1.2em",
|
|
2776
2776
|
height: "1.2em"
|
|
2777
2777
|
};
|
|
2778
2778
|
function render$1(_ctx, _cache) {
|
|
2779
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2779
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$6, _cache[0] || (_cache[0] = [
|
|
2780
2780
|
createBaseVNode("path", {
|
|
2781
2781
|
fill: "currentColor",
|
|
2782
2782
|
d: "M16.5 6v11.5a4 4 0 0 1-4 4a4 4 0 0 1-4-4V5A2.5 2.5 0 0 1 11 2.5A2.5 2.5 0 0 1 13.5 5v10.5a1 1 0 0 1-1 1a1 1 0 0 1-1-1V6H10v9.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5V5a4 4 0 0 0-4-4a4 4 0 0 0-4 4v12.5a5.5 5.5 0 0 0 5.5 5.5a5.5 5.5 0 0 0 5.5-5.5V6z"
|
|
@@ -2784,13 +2784,13 @@ function render$1(_ctx, _cache) {
|
|
|
2784
2784
|
]));
|
|
2785
2785
|
}
|
|
2786
2786
|
const IconPaperclip = { name: "mdi-paperclip", render: render$1 };
|
|
2787
|
-
const _hoisted_1$
|
|
2787
|
+
const _hoisted_1$5 = {
|
|
2788
2788
|
viewBox: "0 0 24 24",
|
|
2789
2789
|
width: "1.2em",
|
|
2790
2790
|
height: "1.2em"
|
|
2791
2791
|
};
|
|
2792
2792
|
function render(_ctx, _cache) {
|
|
2793
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$
|
|
2793
|
+
return openBlock(), createElementBlock("svg", _hoisted_1$5, _cache[0] || (_cache[0] = [
|
|
2794
2794
|
createBaseVNode("path", {
|
|
2795
2795
|
fill: "currentColor",
|
|
2796
2796
|
d: "m2 21l21-9L2 3v7l15 2l-15 2z"
|
|
@@ -2831,8 +2831,8 @@ function createEventBus() {
|
|
|
2831
2831
|
};
|
|
2832
2832
|
}
|
|
2833
2833
|
const chatEventBus = createEventBus();
|
|
2834
|
-
const _hoisted_1$
|
|
2835
|
-
const _hoisted_2$
|
|
2834
|
+
const _hoisted_1$4 = { class: "chat-inputs" };
|
|
2835
|
+
const _hoisted_2$2 = {
|
|
2836
2836
|
key: 0,
|
|
2837
2837
|
class: "chat-input-left-panel"
|
|
2838
2838
|
};
|
|
@@ -2844,7 +2844,7 @@ const _hoisted_7 = {
|
|
|
2844
2844
|
key: 0,
|
|
2845
2845
|
class: "chat-files"
|
|
2846
2846
|
};
|
|
2847
|
-
const _sfc_main$
|
|
2847
|
+
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
2848
2848
|
__name: "Input",
|
|
2849
2849
|
props: {
|
|
2850
2850
|
placeholder: { default: "inputPlaceholder" }
|
|
@@ -2992,8 +2992,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
2992
2992
|
style: normalizeStyle(styleVars.value),
|
|
2993
2993
|
onKeydown: withModifiers(onKeyDown, ["stop"])
|
|
2994
2994
|
}, [
|
|
2995
|
-
createBaseVNode("div", _hoisted_1$
|
|
2996
|
-
_ctx.$slots.leftPanel ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
2995
|
+
createBaseVNode("div", _hoisted_1$4, [
|
|
2996
|
+
_ctx.$slots.leftPanel ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
2997
2997
|
renderSlot(_ctx.$slots, "leftPanel", {}, void 0, true)
|
|
2998
2998
|
])) : createCommentVNode("", true),
|
|
2999
2999
|
withDirectives(createBaseVNode("textarea", {
|
|
@@ -3050,8 +3050,8 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
3050
3050
|
};
|
|
3051
3051
|
}
|
|
3052
3052
|
});
|
|
3053
|
-
const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3054
|
-
const _sfc_main$
|
|
3053
|
+
const ChatInput = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-f0e5731e"]]);
|
|
3054
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
3055
3055
|
__name: "MessageTyping",
|
|
3056
3056
|
props: {
|
|
3057
3057
|
animation: { default: "bouncing" }
|
|
@@ -3075,7 +3075,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3075
3075
|
messageContainer.value?.scrollToView();
|
|
3076
3076
|
});
|
|
3077
3077
|
return (_ctx, _cache) => {
|
|
3078
|
-
return openBlock(), createBlock(unref(_sfc_main$
|
|
3078
|
+
return openBlock(), createBlock(unref(_sfc_main$g), {
|
|
3079
3079
|
ref_key: "messageContainer",
|
|
3080
3080
|
ref: messageContainer,
|
|
3081
3081
|
class: normalizeClass(classes.value),
|
|
@@ -3094,11 +3094,11 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
3094
3094
|
};
|
|
3095
3095
|
}
|
|
3096
3096
|
});
|
|
3097
|
-
const _hoisted_1$
|
|
3097
|
+
const _hoisted_1$3 = {
|
|
3098
3098
|
key: 0,
|
|
3099
3099
|
class: "empty-container"
|
|
3100
3100
|
};
|
|
3101
|
-
const _hoisted_2 = {
|
|
3101
|
+
const _hoisted_2$1 = {
|
|
3102
3102
|
class: "empty",
|
|
3103
3103
|
"data-test-id": "chat-messages-empty"
|
|
3104
3104
|
};
|
|
@@ -3106,7 +3106,7 @@ const _hoisted_3 = {
|
|
|
3106
3106
|
key: 1,
|
|
3107
3107
|
class: "chat-messages-list"
|
|
3108
3108
|
};
|
|
3109
|
-
const _sfc_main$
|
|
3109
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
3110
3110
|
__name: "MessagesList",
|
|
3111
3111
|
props: {
|
|
3112
3112
|
messages: {},
|
|
@@ -3128,8 +3128,8 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3128
3128
|
return (_ctx, _cache) => {
|
|
3129
3129
|
const _component_N8nIcon = resolveComponent("N8nIcon");
|
|
3130
3130
|
const _component_N8nText = resolveComponent("N8nText");
|
|
3131
|
-
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$
|
|
3132
|
-
createBaseVNode("div", _hoisted_2, [
|
|
3131
|
+
return _ctx.emptyText && unref(initialMessages).length === 0 && _ctx.messages.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
3132
|
+
createBaseVNode("div", _hoisted_2$1, [
|
|
3133
3133
|
createVNode(_component_N8nIcon, {
|
|
3134
3134
|
icon: "comment",
|
|
3135
3135
|
size: "large",
|
|
@@ -3148,13 +3148,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3148
3148
|
])
|
|
3149
3149
|
])) : (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
3150
3150
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(initialMessages), (initialMessage) => {
|
|
3151
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3151
|
+
return openBlock(), createBlock(_sfc_main$g, {
|
|
3152
3152
|
key: initialMessage.id,
|
|
3153
3153
|
message: initialMessage
|
|
3154
3154
|
}, null, 8, ["message"]);
|
|
3155
3155
|
}), 128)),
|
|
3156
3156
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.messages, (message) => {
|
|
3157
|
-
return openBlock(), createBlock(_sfc_main$
|
|
3157
|
+
return openBlock(), createBlock(_sfc_main$g, {
|
|
3158
3158
|
key: message.id,
|
|
3159
3159
|
ref_for: true,
|
|
3160
3160
|
ref_key: "messageComponents",
|
|
@@ -3167,12 +3167,12 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
|
3167
3167
|
_: 2
|
|
3168
3168
|
}, 1032, ["message"]);
|
|
3169
3169
|
}), 128)),
|
|
3170
|
-
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$
|
|
3170
|
+
unref(waitingForResponse) ? (openBlock(), createBlock(_sfc_main$e, { key: 0 })) : createCommentVNode("", true)
|
|
3171
3171
|
]));
|
|
3172
3172
|
};
|
|
3173
3173
|
}
|
|
3174
3174
|
});
|
|
3175
|
-
const _sfc_main$
|
|
3175
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
3176
3176
|
__name: "MessageOptionTooltip",
|
|
3177
3177
|
props: {
|
|
3178
3178
|
placement: {
|
|
@@ -3209,15 +3209,15 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
3209
3209
|
});
|
|
3210
3210
|
const container$8 = "_container_pqtqf_123";
|
|
3211
3211
|
const icon$3 = "_icon_pqtqf_129";
|
|
3212
|
-
const style0$
|
|
3212
|
+
const style0$b = {
|
|
3213
3213
|
container: container$8,
|
|
3214
3214
|
icon: icon$3
|
|
3215
3215
|
};
|
|
3216
|
-
const cssModules$
|
|
3217
|
-
"$style": style0$
|
|
3216
|
+
const cssModules$b = {
|
|
3217
|
+
"$style": style0$b
|
|
3218
3218
|
};
|
|
3219
|
-
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3220
|
-
const _sfc_main$
|
|
3219
|
+
const MessageOptionTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__cssModules", cssModules$b]]);
|
|
3220
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
3221
3221
|
__name: "MessageOptionAction",
|
|
3222
3222
|
props: {
|
|
3223
3223
|
label: {
|
|
@@ -3260,15 +3260,15 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
3260
3260
|
});
|
|
3261
3261
|
const container$7 = "_container_u1r1u_123";
|
|
3262
3262
|
const icon$2 = "_icon_u1r1u_129";
|
|
3263
|
-
const style0$
|
|
3263
|
+
const style0$a = {
|
|
3264
3264
|
container: container$7,
|
|
3265
3265
|
icon: icon$2
|
|
3266
3266
|
};
|
|
3267
|
-
const cssModules$
|
|
3268
|
-
"$style": style0$
|
|
3267
|
+
const cssModules$a = {
|
|
3268
|
+
"$style": style0$a
|
|
3269
3269
|
};
|
|
3270
|
-
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3271
|
-
const _sfc_main$
|
|
3270
|
+
const MessageOptionAction = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__cssModules", cssModules$a]]);
|
|
3271
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
3272
3272
|
__name: "PanelHeader",
|
|
3273
3273
|
props: {
|
|
3274
3274
|
title: {}
|
|
@@ -3302,20 +3302,20 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
3302
3302
|
};
|
|
3303
3303
|
}
|
|
3304
3304
|
});
|
|
3305
|
-
const container$6 = "
|
|
3306
|
-
const title$2 = "
|
|
3307
|
-
const actions$1 = "
|
|
3308
|
-
const style0$
|
|
3305
|
+
const container$6 = "_container_1uwbw_123";
|
|
3306
|
+
const title$2 = "_title_1uwbw_144";
|
|
3307
|
+
const actions$1 = "_actions_1uwbw_152";
|
|
3308
|
+
const style0$9 = {
|
|
3309
3309
|
container: container$6,
|
|
3310
3310
|
title: title$2,
|
|
3311
3311
|
actions: actions$1
|
|
3312
3312
|
};
|
|
3313
|
-
const cssModules$
|
|
3314
|
-
"$style": style0$
|
|
3313
|
+
const cssModules$9 = {
|
|
3314
|
+
"$style": style0$9
|
|
3315
3315
|
};
|
|
3316
|
-
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3317
|
-
const _hoisted_1 = ["onClick"];
|
|
3318
|
-
const _sfc_main$
|
|
3316
|
+
const PanelHeader = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__cssModules", cssModules$9]]);
|
|
3317
|
+
const _hoisted_1$2 = ["onClick"];
|
|
3318
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
3319
3319
|
__name: "ChatMessagesPanel",
|
|
3320
3320
|
props: {
|
|
3321
3321
|
pastChatMessages: {},
|
|
@@ -3396,6 +3396,17 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3396
3396
|
type: "success"
|
|
3397
3397
|
});
|
|
3398
3398
|
}
|
|
3399
|
+
watch(
|
|
3400
|
+
() => props.isOpen,
|
|
3401
|
+
(isOpen) => {
|
|
3402
|
+
if (isOpen) {
|
|
3403
|
+
setTimeout(() => {
|
|
3404
|
+
chatEventBus.emit("focusInput");
|
|
3405
|
+
}, 0);
|
|
3406
|
+
}
|
|
3407
|
+
},
|
|
3408
|
+
{ immediate: true }
|
|
3409
|
+
);
|
|
3399
3410
|
return (_ctx, _cache) => {
|
|
3400
3411
|
return openBlock(), createElementBlock("div", {
|
|
3401
3412
|
class: normalizeClass(_ctx.$style.chat),
|
|
@@ -3435,7 +3446,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3435
3446
|
content: unref(locale).baseText("chat.window.session.resetSession")
|
|
3436
3447
|
}, {
|
|
3437
3448
|
default: withCtx(() => [
|
|
3438
|
-
createVNode(unref(_sfc_main$
|
|
3449
|
+
createVNode(unref(_sfc_main$i), {
|
|
3439
3450
|
class: normalizeClass(_ctx.$style.newHeaderButton),
|
|
3440
3451
|
"data-test-id": "refresh-session-button",
|
|
3441
3452
|
outline: "",
|
|
@@ -3475,7 +3486,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3475
3486
|
]),
|
|
3476
3487
|
_: 1
|
|
3477
3488
|
}),
|
|
3478
|
-
createVNode(unref(_sfc_main$
|
|
3489
|
+
createVNode(unref(_sfc_main$i), {
|
|
3479
3490
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3480
3491
|
"data-test-id": "refresh-session-button",
|
|
3481
3492
|
outline: "",
|
|
@@ -3485,7 +3496,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3485
3496
|
title: unref(locale).baseText("chat.window.session.reset"),
|
|
3486
3497
|
onClick: onRefreshSession
|
|
3487
3498
|
}, null, 8, ["class", "title"]),
|
|
3488
|
-
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$
|
|
3499
|
+
_ctx.showCloseButton ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
3489
3500
|
key: 0,
|
|
3490
3501
|
class: normalizeClass(_ctx.$style.headerButton),
|
|
3491
3502
|
outline: "",
|
|
@@ -3500,7 +3511,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3500
3511
|
key: 2,
|
|
3501
3512
|
class: normalizeClass(_ctx.$style.chatBody)
|
|
3502
3513
|
}, [
|
|
3503
|
-
createVNode(_sfc_main$
|
|
3514
|
+
createVNode(_sfc_main$d, {
|
|
3504
3515
|
messages: _ctx.messages,
|
|
3505
3516
|
class: normalizeClass(_ctx.$style.messages),
|
|
3506
3517
|
"empty-text": _ctx.isNewLogsEnabled ? unref(locale).baseText("chat.window.chat.emptyChatMessage.v2") : void 0
|
|
@@ -3516,7 +3527,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
3516
3527
|
createBaseVNode("a", {
|
|
3517
3528
|
href: "#",
|
|
3518
3529
|
onClick: ($event) => emit("displayExecution", message.id)
|
|
3519
|
-
}, toDisplayString(message.id), 9, _hoisted_1)
|
|
3530
|
+
}, toDisplayString(message.id), 9, _hoisted_1$2)
|
|
3520
3531
|
]),
|
|
3521
3532
|
_: 2
|
|
3522
3533
|
}, 1024)) : createCommentVNode("", true),
|
|
@@ -3592,7 +3603,7 @@ const newHeaderButton = "_newHeaderButton_1r0jy_188";
|
|
|
3592
3603
|
const chatBody = "_chatBody_1r0jy_193";
|
|
3593
3604
|
const messages = "_messages_1r0jy_202";
|
|
3594
3605
|
const messagesInput = "_messagesInput_1r0jy_213";
|
|
3595
|
-
const style0$
|
|
3606
|
+
const style0$8 = {
|
|
3596
3607
|
chat: chat$1,
|
|
3597
3608
|
chatHeader,
|
|
3598
3609
|
chatTitle,
|
|
@@ -3605,10 +3616,10 @@ const style0$7 = {
|
|
|
3605
3616
|
messages,
|
|
3606
3617
|
messagesInput
|
|
3607
3618
|
};
|
|
3608
|
-
const cssModules$
|
|
3609
|
-
"$style": style0$
|
|
3619
|
+
const cssModules$8 = {
|
|
3620
|
+
"$style": style0$8
|
|
3610
3621
|
};
|
|
3611
|
-
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
3622
|
+
const ChatMessagesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__cssModules", cssModules$8]]);
|
|
3612
3623
|
const LOCAL_STORAGE_PANEL_HEIGHT = "N8N_CANVAS_CHAT_HEIGHT";
|
|
3613
3624
|
const LOCAL_STORAGE_PANEL_WIDTH = "N8N_CANVAS_CHAT_WIDTH";
|
|
3614
3625
|
const LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH = "N8N_LOGS_OVERVIEW_PANEL_WIDTH";
|
|
@@ -3983,16 +3994,9 @@ function useChatMessaging({
|
|
|
3983
3994
|
sendMessage
|
|
3984
3995
|
};
|
|
3985
3996
|
}
|
|
3986
|
-
function useChatTrigger({
|
|
3987
|
-
getNodeByName,
|
|
3988
|
-
getNodeType,
|
|
3989
|
-
canvasNodes,
|
|
3990
|
-
workflow
|
|
3991
|
-
}) {
|
|
3992
|
-
const chatTriggerName = ref(null);
|
|
3993
|
-
const connectedNode = ref(null);
|
|
3997
|
+
function useChatTrigger({ getNodeByName, getNodeType, workflow }) {
|
|
3994
3998
|
const chatTriggerNode = computed(
|
|
3995
|
-
() =>
|
|
3999
|
+
() => Object.values(workflow.value.nodes).find(isChatNode) ?? null
|
|
3996
4000
|
);
|
|
3997
4001
|
const allowFileUploads = computed(() => {
|
|
3998
4002
|
return chatTriggerNode.value?.parameters?.options?.allowFileUploads === true;
|
|
@@ -4000,17 +4004,10 @@ function useChatTrigger({
|
|
|
4000
4004
|
const allowedFilesMimeTypes = computed(() => {
|
|
4001
4005
|
return chatTriggerNode.value?.parameters?.options?.allowedFilesMimeTypes?.toString() ?? "";
|
|
4002
4006
|
});
|
|
4003
|
-
|
|
4004
|
-
const triggerNode = unref(canvasNodes).find(isChatNode);
|
|
4005
|
-
if (!triggerNode) {
|
|
4006
|
-
return;
|
|
4007
|
-
}
|
|
4008
|
-
chatTriggerName.value = triggerNode.name;
|
|
4009
|
-
}
|
|
4010
|
-
function setConnectedNode() {
|
|
4007
|
+
const connectedNode = computed(() => {
|
|
4011
4008
|
const triggerNode = chatTriggerNode.value;
|
|
4012
4009
|
if (!triggerNode) {
|
|
4013
|
-
return;
|
|
4010
|
+
return null;
|
|
4014
4011
|
}
|
|
4015
4012
|
const chatChildren = workflow.value.getChildNodes(triggerNode.name);
|
|
4016
4013
|
const chatRootNode = chatChildren.reverse().map((nodeName) => getNodeByName(nodeName)).filter((n) => n !== null).reverse().find((storeNode) => {
|
|
@@ -4037,41 +4034,29 @@ function useChatTrigger({
|
|
|
4037
4034
|
const result = Boolean(isChatChild && (isAgent || isChain || isCustomChainOrAgent));
|
|
4038
4035
|
return result;
|
|
4039
4036
|
});
|
|
4040
|
-
|
|
4041
|
-
}
|
|
4037
|
+
return chatRootNode ?? null;
|
|
4038
|
+
});
|
|
4042
4039
|
return {
|
|
4043
4040
|
allowFileUploads,
|
|
4044
4041
|
allowedFilesMimeTypes,
|
|
4045
4042
|
chatTriggerNode,
|
|
4046
|
-
connectedNode
|
|
4047
|
-
setChatTriggerNode,
|
|
4048
|
-
setConnectedNode
|
|
4043
|
+
connectedNode
|
|
4049
4044
|
};
|
|
4050
4045
|
}
|
|
4051
|
-
function useChatState(isReadOnly
|
|
4046
|
+
function useChatState(isReadOnly) {
|
|
4052
4047
|
const locale = useI18n$1();
|
|
4053
4048
|
const workflowsStore = useWorkflowsStore();
|
|
4054
4049
|
const nodeTypesStore = useNodeTypesStore();
|
|
4055
|
-
const canvasStore = useCanvasStore();
|
|
4056
4050
|
const router = useRouter();
|
|
4057
4051
|
const nodeHelpers = useNodeHelpers();
|
|
4058
4052
|
const { runWorkflow } = useRunWorkflow({ router });
|
|
4059
4053
|
const messages2 = ref([]);
|
|
4060
4054
|
const currentSessionId = ref(v4().replace(/-/g, ""));
|
|
4061
|
-
const
|
|
4062
|
-
const allConnections = computed(() => workflowsStore.allConnections);
|
|
4055
|
+
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
4063
4056
|
const logsPanelState = computed(() => workflowsStore.logsPanelState);
|
|
4064
4057
|
const workflow = computed(() => workflowsStore.getCurrentWorkflow());
|
|
4065
|
-
const {
|
|
4066
|
-
chatTriggerNode,
|
|
4067
|
-
connectedNode,
|
|
4068
|
-
allowFileUploads,
|
|
4069
|
-
allowedFilesMimeTypes,
|
|
4070
|
-
setChatTriggerNode,
|
|
4071
|
-
setConnectedNode
|
|
4072
|
-
} = useChatTrigger({
|
|
4058
|
+
const { chatTriggerNode, connectedNode, allowFileUploads, allowedFilesMimeTypes } = useChatTrigger({
|
|
4073
4059
|
workflow,
|
|
4074
|
-
canvasNodes,
|
|
4075
4060
|
getNodeByName: workflowsStore.getNodeByName,
|
|
4076
4061
|
getNodeType: nodeTypesStore.getNodeType
|
|
4077
4062
|
});
|
|
@@ -4127,33 +4112,6 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4127
4112
|
);
|
|
4128
4113
|
provide(ChatSymbol, chatConfig);
|
|
4129
4114
|
provide(ChatOptionsSymbol, chatOptions);
|
|
4130
|
-
watch(
|
|
4131
|
-
() => logsPanelState.value,
|
|
4132
|
-
(state) => {
|
|
4133
|
-
if (state !== LOGS_PANEL_STATE.CLOSED) {
|
|
4134
|
-
setChatTriggerNode();
|
|
4135
|
-
setConnectedNode();
|
|
4136
|
-
setTimeout(() => {
|
|
4137
|
-
onWindowResize?.();
|
|
4138
|
-
chatEventBus.emit("focusInput");
|
|
4139
|
-
}, 0);
|
|
4140
|
-
}
|
|
4141
|
-
},
|
|
4142
|
-
{ immediate: true }
|
|
4143
|
-
);
|
|
4144
|
-
watch(
|
|
4145
|
-
() => allConnections.value,
|
|
4146
|
-
() => {
|
|
4147
|
-
if (canvasStore.isLoading) return;
|
|
4148
|
-
setTimeout(() => {
|
|
4149
|
-
if (!chatTriggerNode.value) {
|
|
4150
|
-
setChatTriggerNode();
|
|
4151
|
-
}
|
|
4152
|
-
setConnectedNode();
|
|
4153
|
-
}, 0);
|
|
4154
|
-
},
|
|
4155
|
-
{ deep: true }
|
|
4156
|
-
);
|
|
4157
4115
|
async function createExecutionPromise() {
|
|
4158
4116
|
return await new Promise((resolve) => {
|
|
4159
4117
|
const resolveIfFinished = (isRunning) => {
|
|
@@ -4189,6 +4147,9 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4189
4147
|
nodeHelpers.updateNodesExecutionIssues();
|
|
4190
4148
|
messages2.value = [];
|
|
4191
4149
|
currentSessionId.value = v4().replace(/-/g, "");
|
|
4150
|
+
if (logsPanelState.value !== LOGS_PANEL_STATE.CLOSED) {
|
|
4151
|
+
chatEventBus.emit("focusInput");
|
|
4152
|
+
}
|
|
4192
4153
|
}
|
|
4193
4154
|
function displayExecution(executionId) {
|
|
4194
4155
|
const route = router.resolve({
|
|
@@ -4200,6 +4161,7 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4200
4161
|
return {
|
|
4201
4162
|
currentSessionId,
|
|
4202
4163
|
messages: computed(() => isReadOnly ? restoredChatMessages.value : messages2.value),
|
|
4164
|
+
previousChatMessages,
|
|
4203
4165
|
chatTriggerNode,
|
|
4204
4166
|
connectedNode,
|
|
4205
4167
|
sendMessage,
|
|
@@ -4207,7 +4169,7 @@ function useChatState(isReadOnly, onWindowResize) {
|
|
|
4207
4169
|
displayExecution
|
|
4208
4170
|
};
|
|
4209
4171
|
}
|
|
4210
|
-
const _sfc_main$
|
|
4172
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
4211
4173
|
__name: "ConsumedTokenCountText",
|
|
4212
4174
|
props: {
|
|
4213
4175
|
consumedTokens: {}
|
|
@@ -4215,7 +4177,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4215
4177
|
setup(__props) {
|
|
4216
4178
|
const locale = useI18n$1();
|
|
4217
4179
|
return (_ctx, _cache) => {
|
|
4218
|
-
const _component_ConsumedTokensDetails = _sfc_main$
|
|
4180
|
+
const _component_ConsumedTokensDetails = _sfc_main$j;
|
|
4219
4181
|
return _ctx.consumedTokens !== void 0 ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
4220
4182
|
key: 0,
|
|
4221
4183
|
enterable: false
|
|
@@ -4235,36 +4197,67 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
4235
4197
|
};
|
|
4236
4198
|
}
|
|
4237
4199
|
});
|
|
4200
|
+
const _hoisted_1$1 = { key: 0 };
|
|
4201
|
+
const _hoisted_2 = { key: 1 };
|
|
4202
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
4203
|
+
__name: "NodeName",
|
|
4204
|
+
props: {
|
|
4205
|
+
name: {},
|
|
4206
|
+
latestName: {},
|
|
4207
|
+
isError: { type: Boolean },
|
|
4208
|
+
isDeleted: { type: Boolean }
|
|
4209
|
+
},
|
|
4210
|
+
setup(__props) {
|
|
4211
|
+
return (_ctx, _cache) => {
|
|
4212
|
+
return openBlock(), createBlock(unref(N8nText), {
|
|
4213
|
+
tag: "div",
|
|
4214
|
+
bold: true,
|
|
4215
|
+
size: "small",
|
|
4216
|
+
class: normalizeClass(_ctx.$style.name),
|
|
4217
|
+
color: _ctx.isError ? "danger" : void 0
|
|
4218
|
+
}, {
|
|
4219
|
+
default: withCtx(() => [
|
|
4220
|
+
_ctx.isDeleted || _ctx.name !== _ctx.latestName ? (openBlock(), createElementBlock("del", _hoisted_1$1, toDisplayString(_ctx.name), 1)) : createCommentVNode("", true),
|
|
4221
|
+
!_ctx.isDeleted ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(_ctx.latestName), 1)) : createCommentVNode("", true)
|
|
4222
|
+
]),
|
|
4223
|
+
_: 1
|
|
4224
|
+
}, 8, ["class", "color"]);
|
|
4225
|
+
};
|
|
4226
|
+
}
|
|
4227
|
+
});
|
|
4228
|
+
const name$1 = "_name_1t0q3_123";
|
|
4229
|
+
const style0$7 = {
|
|
4230
|
+
name: name$1
|
|
4231
|
+
};
|
|
4232
|
+
const cssModules$7 = {
|
|
4233
|
+
"$style": style0$7
|
|
4234
|
+
};
|
|
4235
|
+
const NodeName = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$7]]);
|
|
4236
|
+
const _hoisted_1 = ["aria-expanded"];
|
|
4238
4237
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
4239
4238
|
__name: "LogsOverviewRow",
|
|
4240
4239
|
props: {
|
|
4241
4240
|
data: {},
|
|
4242
|
-
node: {},
|
|
4243
4241
|
isSelected: { type: Boolean },
|
|
4244
4242
|
isReadOnly: { type: Boolean },
|
|
4245
4243
|
shouldShowConsumedTokens: { type: Boolean },
|
|
4246
|
-
isCompact: { type: Boolean }
|
|
4244
|
+
isCompact: { type: Boolean },
|
|
4245
|
+
latestInfo: {},
|
|
4246
|
+
expanded: { type: Boolean }
|
|
4247
4247
|
},
|
|
4248
4248
|
emits: ["toggleExpanded", "triggerPartialExecution", "openNdv"],
|
|
4249
4249
|
setup(__props, { emit: __emit }) {
|
|
4250
4250
|
const props = __props;
|
|
4251
4251
|
const emit = __emit;
|
|
4252
4252
|
const locale = useI18n$1();
|
|
4253
|
-
const containerRef = useTemplateRef("containerRef");
|
|
4254
|
-
const workflowsStore = useWorkflowsStore();
|
|
4255
4253
|
const nodeTypeStore = useNodeTypesStore();
|
|
4256
|
-
const
|
|
4257
|
-
const runData = computed(
|
|
4258
|
-
() => node.value ? workflowsStore.workflowExecutionData?.data?.resultData.runData[node.value.name]?.[props.data.runIndex] : void 0
|
|
4259
|
-
);
|
|
4260
|
-
const type = computed(() => node.value ? nodeTypeStore.getNodeType(node.value.type) : void 0);
|
|
4261
|
-
const depth = computed(() => (props.node.level ?? 1) - 1);
|
|
4254
|
+
const type = computed(() => nodeTypeStore.getNodeType(props.data.node.type));
|
|
4262
4255
|
const isSettled = computed(
|
|
4263
|
-
() => runData.
|
|
4256
|
+
() => props.data.runData.executionStatus && ["crashed", "error", "success"].includes(props.data.runData.executionStatus)
|
|
4264
4257
|
);
|
|
4265
|
-
const isError = computed(() => !!runData.
|
|
4258
|
+
const isError = computed(() => !!props.data.runData.error);
|
|
4266
4259
|
const startedAtText = computed(() => {
|
|
4267
|
-
const time = new Date(runData.
|
|
4260
|
+
const time = new Date(props.data.runData.startTime);
|
|
4268
4261
|
return locale.baseText("logs.overview.body.started", {
|
|
4269
4262
|
interpolate: {
|
|
4270
4263
|
time: `${toTime(time, true)}, ${toDayMonth(time)}`
|
|
@@ -4277,7 +4270,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4277
4270
|
function isLastChild(level) {
|
|
4278
4271
|
let parent = props.data.parent;
|
|
4279
4272
|
let data = props.data;
|
|
4280
|
-
for (let i = 0; i < depth
|
|
4273
|
+
for (let i = 0; i < props.data.depth - level; i++) {
|
|
4281
4274
|
data = parent;
|
|
4282
4275
|
parent = parent?.parent;
|
|
4283
4276
|
}
|
|
@@ -4285,21 +4278,12 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4285
4278
|
const lastSibling = siblings[siblings.length - 1];
|
|
4286
4279
|
return data === void 0 && lastSibling === void 0 || data?.node === lastSibling?.node && data?.runIndex === lastSibling?.runIndex;
|
|
4287
4280
|
}
|
|
4288
|
-
watch(
|
|
4289
|
-
[() => props.isSelected, containerRef],
|
|
4290
|
-
([isSelected, ref2]) => {
|
|
4291
|
-
if (isSelected && ref2) {
|
|
4292
|
-
ref2.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
4293
|
-
}
|
|
4294
|
-
},
|
|
4295
|
-
{ immediate: true }
|
|
4296
|
-
);
|
|
4297
4281
|
return (_ctx, _cache) => {
|
|
4298
|
-
const _component_NodeIcon = _sfc_main$
|
|
4299
|
-
return
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4282
|
+
const _component_NodeIcon = _sfc_main$k;
|
|
4283
|
+
return openBlock(), createElementBlock("div", {
|
|
4284
|
+
role: "treeitem",
|
|
4285
|
+
tabindex: "0",
|
|
4286
|
+
"aria-expanded": props.data.children.length > 0 && props.expanded,
|
|
4303
4287
|
class: normalizeClass({
|
|
4304
4288
|
[_ctx.$style.container]: true,
|
|
4305
4289
|
[_ctx.$style.compact]: props.isCompact,
|
|
@@ -4307,45 +4291,41 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4307
4291
|
[_ctx.$style.selected]: props.isSelected
|
|
4308
4292
|
})
|
|
4309
4293
|
}, [
|
|
4310
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(depth
|
|
4294
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(props.data.depth, (level) => {
|
|
4311
4295
|
return openBlock(), createElementBlock("div", {
|
|
4312
4296
|
key: level,
|
|
4313
4297
|
class: normalizeClass({
|
|
4314
4298
|
[_ctx.$style.indent]: true,
|
|
4315
|
-
[_ctx.$style.connectorCurved]: level === depth
|
|
4299
|
+
[_ctx.$style.connectorCurved]: level === props.data.depth,
|
|
4316
4300
|
[_ctx.$style.connectorStraight]: !isLastChild(level)
|
|
4317
4301
|
})
|
|
4318
4302
|
}, null, 2);
|
|
4319
4303
|
}), 128)),
|
|
4320
4304
|
createBaseVNode("div", {
|
|
4321
4305
|
class: normalizeClass(_ctx.$style.background),
|
|
4322
|
-
style: normalizeStyle({ "--indent-depth": depth
|
|
4306
|
+
style: normalizeStyle({ "--indent-depth": props.data.depth })
|
|
4323
4307
|
}, null, 6),
|
|
4324
4308
|
createVNode(_component_NodeIcon, {
|
|
4325
4309
|
"node-type": type.value,
|
|
4326
4310
|
size: 16,
|
|
4327
4311
|
class: normalizeClass(_ctx.$style.icon)
|
|
4328
4312
|
}, null, 8, ["node-type", "class"]),
|
|
4329
|
-
createVNode(
|
|
4330
|
-
tag: "div",
|
|
4331
|
-
bold: true,
|
|
4332
|
-
size: "small",
|
|
4313
|
+
createVNode(NodeName, {
|
|
4333
4314
|
class: normalizeClass(_ctx.$style.name),
|
|
4334
|
-
|
|
4335
|
-
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
createVNode(unref(N8nText), {
|
|
4315
|
+
"latest-name": _ctx.latestInfo?.name ?? props.data.node.name,
|
|
4316
|
+
name: props.data.node.name,
|
|
4317
|
+
"is-error": isError.value,
|
|
4318
|
+
"is-deleted": _ctx.latestInfo?.deleted ?? false
|
|
4319
|
+
}, null, 8, ["class", "latest-name", "name", "is-error", "is-deleted"]),
|
|
4320
|
+
!_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
|
|
4321
|
+
key: 0,
|
|
4342
4322
|
tag: "div",
|
|
4343
4323
|
color: "text-light",
|
|
4344
4324
|
size: "small",
|
|
4345
4325
|
class: normalizeClass(_ctx.$style.timeTook)
|
|
4346
4326
|
}, {
|
|
4347
4327
|
default: withCtx(() => [
|
|
4348
|
-
isSettled.value
|
|
4328
|
+
isSettled.value ? (openBlock(), createBlock(unref(I18nT), {
|
|
4349
4329
|
key: 0,
|
|
4350
4330
|
keypath: "logs.overview.body.summaryText"
|
|
4351
4331
|
}, {
|
|
@@ -4361,24 +4341,25 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4361
4341
|
icon: "exclamation-triangle",
|
|
4362
4342
|
class: normalizeClass(_ctx.$style.errorIcon)
|
|
4363
4343
|
}, null, 8, ["class"]),
|
|
4364
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4344
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4365
4345
|
]),
|
|
4366
4346
|
_: 1
|
|
4367
4347
|
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4368
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4348
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4369
4349
|
], 64))
|
|
4370
4350
|
]),
|
|
4371
4351
|
time: withCtx(() => [
|
|
4372
|
-
createTextVNode(toDisplayString(unref(locale).displayTimer(runData.
|
|
4352
|
+
createTextVNode(toDisplayString(unref(locale).displayTimer(props.data.runData.executionTime, true)), 1)
|
|
4373
4353
|
]),
|
|
4374
4354
|
_: 1
|
|
4375
4355
|
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4376
|
-
createTextVNode(toDisplayString(unref(upperFirst)(runData.
|
|
4356
|
+
createTextVNode(toDisplayString(unref(upperFirst)(props.data.runData.executionStatus)), 1)
|
|
4377
4357
|
], 64))
|
|
4378
4358
|
]),
|
|
4379
4359
|
_: 1
|
|
4380
|
-
}, 8, ["class"]),
|
|
4381
|
-
|
|
4360
|
+
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4361
|
+
!_ctx.isCompact ? (openBlock(), createBlock(unref(N8nText), {
|
|
4362
|
+
key: 1,
|
|
4382
4363
|
tag: "div",
|
|
4383
4364
|
color: "text-light",
|
|
4384
4365
|
size: "small",
|
|
@@ -4388,16 +4369,16 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4388
4369
|
createTextVNode(toDisplayString(startedAtText.value), 1)
|
|
4389
4370
|
]),
|
|
4390
4371
|
_: 1
|
|
4391
|
-
}, 8, ["class"]),
|
|
4392
|
-
subtreeConsumedTokens.value !== void 0 ? (openBlock(), createBlock(unref(N8nText), {
|
|
4393
|
-
key:
|
|
4372
|
+
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4373
|
+
!_ctx.isCompact && subtreeConsumedTokens.value !== void 0 ? (openBlock(), createBlock(unref(N8nText), {
|
|
4374
|
+
key: 2,
|
|
4394
4375
|
tag: "div",
|
|
4395
4376
|
color: "text-light",
|
|
4396
4377
|
size: "small",
|
|
4397
4378
|
class: normalizeClass(_ctx.$style.consumedTokens)
|
|
4398
4379
|
}, {
|
|
4399
4380
|
default: withCtx(() => [
|
|
4400
|
-
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.
|
|
4381
|
+
subtreeConsumedTokens.value.totalTokens > 0 && (props.data.children.length === 0 || !props.expanded) ? (openBlock(), createBlock(_sfc_main$8, {
|
|
4401
4382
|
key: 0,
|
|
4402
4383
|
"consumed-tokens": subtreeConsumedTokens.value
|
|
4403
4384
|
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
@@ -4405,33 +4386,36 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4405
4386
|
_: 1
|
|
4406
4387
|
}, 8, ["class"])) : createCommentVNode("", true),
|
|
4407
4388
|
isError.value && _ctx.isCompact ? (openBlock(), createBlock(unref(N8nIcon), {
|
|
4408
|
-
key:
|
|
4389
|
+
key: 3,
|
|
4409
4390
|
size: "medium",
|
|
4410
4391
|
color: "danger",
|
|
4411
4392
|
icon: "exclamation-triangle",
|
|
4412
4393
|
class: normalizeClass(_ctx.$style.compactErrorIcon)
|
|
4413
4394
|
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
4414
|
-
!props.
|
|
4415
|
-
key:
|
|
4395
|
+
!_ctx.isCompact || !props.latestInfo?.deleted ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
4396
|
+
key: 4,
|
|
4416
4397
|
type: "secondary",
|
|
4417
|
-
size: "
|
|
4418
|
-
icon: "
|
|
4398
|
+
size: "medium",
|
|
4399
|
+
icon: "edit",
|
|
4419
4400
|
style: { "color": "var(--color-text-base)" },
|
|
4420
|
-
|
|
4421
|
-
class: normalizeClass(
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4401
|
+
disabled: props.latestInfo?.deleted,
|
|
4402
|
+
class: normalizeClass(_ctx.$style.openNdvButton),
|
|
4403
|
+
"aria-label": unref(locale).baseText("logs.overview.body.open"),
|
|
4404
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("openNdv", props.data), ["stop"]))
|
|
4405
|
+
}, null, 8, ["disabled", "class", "aria-label"])) : createCommentVNode("", true),
|
|
4406
|
+
!_ctx.isCompact || !props.isReadOnly && !props.latestInfo?.deleted && !props.latestInfo?.disabled ? (openBlock(), createBlock(unref(_sfc_main$i), {
|
|
4407
|
+
key: 5,
|
|
4425
4408
|
type: "secondary",
|
|
4426
4409
|
size: "small",
|
|
4427
|
-
icon: "
|
|
4410
|
+
icon: "play",
|
|
4428
4411
|
style: { "color": "var(--color-text-base)" },
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4412
|
+
"aria-label": unref(locale).baseText("logs.overview.body.run"),
|
|
4413
|
+
class: normalizeClass([_ctx.$style.partialExecutionButton, props.data.depth > 0 ? _ctx.$style.unavailable : ""]),
|
|
4414
|
+
disabled: props.latestInfo?.deleted || props.latestInfo?.disabled,
|
|
4415
|
+
onClick: _cache[1] || (_cache[1] = withModifiers(($event) => emit("triggerPartialExecution", props.data), ["stop"]))
|
|
4416
|
+
}, null, 8, ["aria-label", "class", "disabled"])) : createCommentVNode("", true),
|
|
4433
4417
|
!_ctx.isCompact || props.data.children.length > 0 ? (openBlock(), createBlock(unref(N8nButton), {
|
|
4434
|
-
key:
|
|
4418
|
+
key: 6,
|
|
4435
4419
|
type: "secondary",
|
|
4436
4420
|
size: "small",
|
|
4437
4421
|
square: true,
|
|
@@ -4442,39 +4426,39 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
4442
4426
|
}),
|
|
4443
4427
|
class: normalizeClass(_ctx.$style.toggleButton),
|
|
4444
4428
|
"aria-label": unref(locale).baseText("logs.overview.body.toggleRow"),
|
|
4445
|
-
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleExpanded", props.
|
|
4429
|
+
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => emit("toggleExpanded", props.data), ["stop"]))
|
|
4446
4430
|
}, {
|
|
4447
4431
|
default: withCtx(() => [
|
|
4448
4432
|
createVNode(unref(N8nIcon), {
|
|
4449
4433
|
size: "medium",
|
|
4450
|
-
icon: props.
|
|
4434
|
+
icon: props.expanded ? "chevron-down" : "chevron-up"
|
|
4451
4435
|
}, null, 8, ["icon"])
|
|
4452
4436
|
]),
|
|
4453
4437
|
_: 1
|
|
4454
4438
|
}, 8, ["style", "class", "aria-label"])) : createCommentVNode("", true)
|
|
4455
|
-
],
|
|
4439
|
+
], 10, _hoisted_1);
|
|
4456
4440
|
};
|
|
4457
4441
|
}
|
|
4458
4442
|
});
|
|
4459
|
-
const container$5 = "
|
|
4460
|
-
const background = "
|
|
4461
|
-
const selected = "
|
|
4462
|
-
const error = "
|
|
4463
|
-
const indent = "
|
|
4464
|
-
const connectorCurved = "
|
|
4465
|
-
const connectorStraight = "
|
|
4466
|
-
const icon$1 = "
|
|
4467
|
-
const name
|
|
4468
|
-
const timeTook = "
|
|
4469
|
-
const errorIcon = "
|
|
4470
|
-
const
|
|
4471
|
-
const
|
|
4472
|
-
const
|
|
4473
|
-
const
|
|
4474
|
-
const
|
|
4475
|
-
const
|
|
4476
|
-
const unavailable = "
|
|
4477
|
-
const toggleButton = "
|
|
4443
|
+
const container$5 = "_container_1ohan_123";
|
|
4444
|
+
const background = "_background_1ohan_138";
|
|
4445
|
+
const selected = "_selected_1ohan_147";
|
|
4446
|
+
const error = "_error_1ohan_153";
|
|
4447
|
+
const indent = "_indent_1ohan_157";
|
|
4448
|
+
const connectorCurved = "_connectorCurved_1ohan_166";
|
|
4449
|
+
const connectorStraight = "_connectorStraight_1ohan_176";
|
|
4450
|
+
const icon$1 = "_icon_1ohan_185";
|
|
4451
|
+
const name = "_name_1ohan_191";
|
|
4452
|
+
const timeTook = "_timeTook_1ohan_197";
|
|
4453
|
+
const errorIcon = "_errorIcon_1ohan_202";
|
|
4454
|
+
const startedAt = "_startedAt_1ohan_207";
|
|
4455
|
+
const consumedTokens = "_consumedTokens_1ohan_213";
|
|
4456
|
+
const compactErrorIcon = "_compactErrorIcon_1ohan_220";
|
|
4457
|
+
const partialExecutionButton = "_partialExecutionButton_1ohan_228";
|
|
4458
|
+
const openNdvButton = "_openNdvButton_1ohan_229";
|
|
4459
|
+
const compact = "_compact_1ohan_220";
|
|
4460
|
+
const unavailable = "_unavailable_1ohan_239";
|
|
4461
|
+
const toggleButton = "_toggleButton_1ohan_247";
|
|
4478
4462
|
const style0$6 = {
|
|
4479
4463
|
container: container$5,
|
|
4480
4464
|
background,
|
|
@@ -4484,15 +4468,15 @@ const style0$6 = {
|
|
|
4484
4468
|
connectorCurved,
|
|
4485
4469
|
connectorStraight,
|
|
4486
4470
|
icon: icon$1,
|
|
4487
|
-
name
|
|
4471
|
+
name,
|
|
4488
4472
|
timeTook,
|
|
4489
4473
|
errorIcon,
|
|
4490
|
-
compact,
|
|
4491
4474
|
startedAt,
|
|
4492
4475
|
consumedTokens,
|
|
4493
4476
|
compactErrorIcon,
|
|
4494
4477
|
partialExecutionButton,
|
|
4495
4478
|
openNdvButton,
|
|
4479
|
+
compact,
|
|
4496
4480
|
unavailable,
|
|
4497
4481
|
toggleButton
|
|
4498
4482
|
};
|
|
@@ -4526,7 +4510,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
4526
4510
|
}, {
|
|
4527
4511
|
default: withCtx(() => [
|
|
4528
4512
|
createBaseVNode("span", null, toDisplayString(executionStatusText.value), 1),
|
|
4529
|
-
_ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$
|
|
4513
|
+
_ctx.consumedTokens.totalTokens > 0 ? (openBlock(), createBlock(_sfc_main$8, {
|
|
4530
4514
|
key: 0,
|
|
4531
4515
|
"consumed-tokens": _ctx.consumedTokens
|
|
4532
4516
|
}, null, 8, ["consumed-tokens"])) : createCommentVNode("", true)
|
|
@@ -4551,33 +4535,32 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4551
4535
|
selected: {},
|
|
4552
4536
|
isReadOnly: { type: Boolean },
|
|
4553
4537
|
isCompact: { type: Boolean },
|
|
4554
|
-
|
|
4538
|
+
execution: {},
|
|
4539
|
+
latestNodeInfo: {},
|
|
4540
|
+
scrollToSelection: { type: Boolean }
|
|
4555
4541
|
},
|
|
4556
|
-
emits: ["clickHeader", "select"],
|
|
4542
|
+
emits: ["clickHeader", "select", "clearExecutionData"],
|
|
4557
4543
|
setup(__props, { emit: __emit }) {
|
|
4558
4544
|
const emit = __emit;
|
|
4559
4545
|
const locale = useI18n$1();
|
|
4560
4546
|
const telemetry = useTelemetry();
|
|
4561
|
-
const workflowsStore = useWorkflowsStore();
|
|
4562
4547
|
const router = useRouter();
|
|
4563
4548
|
const runWorkflow = useRunWorkflow({ router });
|
|
4564
4549
|
const ndvStore = useNDVStore();
|
|
4565
|
-
const nodeHelpers = useNodeHelpers();
|
|
4566
4550
|
const isClearExecutionButtonVisible = useClearExecutionButtonVisible();
|
|
4567
|
-
const
|
|
4568
|
-
const isEmpty2 = computed(() => workflowsStore.workflowExecutionData === null);
|
|
4551
|
+
const isEmpty2 = computed(() => __props.execution === void 0);
|
|
4569
4552
|
const switchViewOptions = computed(() => [
|
|
4570
|
-
{ label: locale.baseText("logs.overview.header.switch.
|
|
4571
|
-
{ label: locale.baseText("logs.overview.header.switch.
|
|
4553
|
+
{ label: locale.baseText("logs.overview.header.switch.overview"), value: "overview" },
|
|
4554
|
+
{ label: locale.baseText("logs.overview.header.switch.details"), value: "details" }
|
|
4572
4555
|
]);
|
|
4573
|
-
const execution = computed(() => workflowsStore.workflowExecutionData);
|
|
4574
4556
|
const consumedTokens2 = computed(
|
|
4575
|
-
() => getTotalConsumedTokens(...__props.
|
|
4557
|
+
() => getTotalConsumedTokens(...(__props.execution?.tree ?? []).map(getSubtreeTotalConsumedTokens))
|
|
4576
4558
|
);
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4559
|
+
const collapsedEntries = ref({});
|
|
4560
|
+
const flatLogEntries = computed(
|
|
4561
|
+
() => flattenLogEntries(__props.execution?.tree ?? [], collapsedEntries.value)
|
|
4562
|
+
);
|
|
4563
|
+
const virtualList = useVirtualList(flatLogEntries, { itemHeight: 32 });
|
|
4581
4564
|
function handleClickNode(clicked) {
|
|
4582
4565
|
if (__props.selected?.node === clicked.node && __props.selected?.runIndex === clicked.runIndex) {
|
|
4583
4566
|
emit("select", void 0);
|
|
@@ -4585,24 +4568,49 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4585
4568
|
}
|
|
4586
4569
|
emit("select", clicked);
|
|
4587
4570
|
telemetry.track("User selected node in log view", {
|
|
4588
|
-
node_type:
|
|
4589
|
-
node_id:
|
|
4590
|
-
execution_id:
|
|
4591
|
-
workflow_id:
|
|
4571
|
+
node_type: clicked.node.type,
|
|
4572
|
+
node_id: clicked.node.id,
|
|
4573
|
+
execution_id: __props.execution?.id,
|
|
4574
|
+
workflow_id: __props.execution?.workflowData.id
|
|
4592
4575
|
});
|
|
4593
4576
|
}
|
|
4594
4577
|
function handleSwitchView(value) {
|
|
4595
|
-
emit(
|
|
4578
|
+
emit(
|
|
4579
|
+
"select",
|
|
4580
|
+
value === "overview" || (__props.execution?.tree ?? []).length === 0 ? void 0 : __props.execution?.tree[0]
|
|
4581
|
+
);
|
|
4596
4582
|
}
|
|
4597
4583
|
function handleToggleExpanded(treeNode) {
|
|
4598
|
-
treeNode.
|
|
4584
|
+
collapsedEntries.value[treeNode.id] = !collapsedEntries.value[treeNode.id];
|
|
4599
4585
|
}
|
|
4600
4586
|
async function handleOpenNdv(treeNode) {
|
|
4601
|
-
ndvStore.setActiveNodeName(treeNode.node);
|
|
4587
|
+
ndvStore.setActiveNodeName(treeNode.node.name);
|
|
4588
|
+
await nextTick(() => {
|
|
4589
|
+
const source = treeNode.runData.source[0];
|
|
4590
|
+
const inputBranch = source?.previousNodeOutput ?? 0;
|
|
4591
|
+
ndvEventBus.emit("updateInputNodeName", source?.previousNode);
|
|
4592
|
+
ndvEventBus.emit("setInputBranchIndex", inputBranch);
|
|
4593
|
+
ndvStore.setOutputRunIndex(treeNode.runIndex);
|
|
4594
|
+
});
|
|
4602
4595
|
}
|
|
4603
4596
|
async function handleTriggerPartialExecution(treeNode) {
|
|
4604
|
-
|
|
4597
|
+
const latestName = __props.latestNodeInfo[treeNode.node.id]?.name ?? treeNode.node.name;
|
|
4598
|
+
if (latestName) {
|
|
4599
|
+
await runWorkflow.runWorkflow({ destinationNode: latestName });
|
|
4600
|
+
}
|
|
4605
4601
|
}
|
|
4602
|
+
watch(
|
|
4603
|
+
() => __props.scrollToSelection ? __props.selected : void 0,
|
|
4604
|
+
async (entry) => {
|
|
4605
|
+
if (entry) {
|
|
4606
|
+
const index = flatLogEntries.value.findIndex((e) => e.id === entry.id);
|
|
4607
|
+
if (index >= 0) {
|
|
4608
|
+
await nextTick(() => virtualList.scrollTo(index));
|
|
4609
|
+
}
|
|
4610
|
+
}
|
|
4611
|
+
},
|
|
4612
|
+
{ immediate: true }
|
|
4613
|
+
);
|
|
4606
4614
|
return (_ctx, _cache) => {
|
|
4607
4615
|
return openBlock(), createElementBlock("div", {
|
|
4608
4616
|
class: normalizeClass(_ctx.$style.container),
|
|
@@ -4611,7 +4619,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4611
4619
|
createVNode(PanelHeader, {
|
|
4612
4620
|
title: unref(locale).baseText("logs.overview.header.title"),
|
|
4613
4621
|
"data-test-id": "logs-overview-header",
|
|
4614
|
-
onClick: _cache[
|
|
4622
|
+
onClick: _cache[1] || (_cache[1] = ($event) => emit("clickHeader"))
|
|
4615
4623
|
}, {
|
|
4616
4624
|
actions: withCtx(() => [
|
|
4617
4625
|
unref(isClearExecutionButtonVisible) ? (openBlock(), createBlock(unref(N8nTooltip), {
|
|
@@ -4625,7 +4633,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4625
4633
|
icon: "trash",
|
|
4626
4634
|
"icon-size": "medium",
|
|
4627
4635
|
class: normalizeClass(_ctx.$style.clearButton),
|
|
4628
|
-
onClick: withModifiers(
|
|
4636
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("clearExecutionData"), ["stop"]))
|
|
4629
4637
|
}, {
|
|
4630
4638
|
default: withCtx(() => [
|
|
4631
4639
|
createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.header.actions.clearExecution")), 1)
|
|
@@ -4656,71 +4664,63 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
4656
4664
|
createTextVNode(toDisplayString(unref(locale).baseText("logs.overview.body.empty.message")), 1)
|
|
4657
4665
|
]),
|
|
4658
4666
|
_: 1
|
|
4659
|
-
}, 8, ["class"])) : (openBlock(), createElementBlock(
|
|
4660
|
-
|
|
4661
|
-
class: normalizeClass(_ctx.$style.scrollable)
|
|
4662
|
-
}, [
|
|
4663
|
-
execution.value ? (openBlock(), createBlock(ExecutionSummary, {
|
|
4667
|
+
}, 8, ["class"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
4668
|
+
_ctx.execution ? (openBlock(), createBlock(ExecutionSummary, {
|
|
4664
4669
|
key: 0,
|
|
4665
4670
|
class: normalizeClass(_ctx.$style.summary),
|
|
4666
|
-
status: execution.
|
|
4671
|
+
status: _ctx.execution.status,
|
|
4667
4672
|
"consumed-tokens": consumedTokens2.value,
|
|
4668
|
-
"time-took": execution.
|
|
4673
|
+
"time-took": _ctx.execution.startedAt && _ctx.execution.stoppedAt ? +new Date(_ctx.execution.stoppedAt) - +new Date(_ctx.execution.startedAt) : void 0
|
|
4669
4674
|
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true),
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
|
|
4678
|
-
|
|
4679
|
-
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
]),
|
|
4693
|
-
_: 1
|
|
4694
|
-
}, 8, ["class", "data"])) : createCommentVNode("", true),
|
|
4675
|
+
createBaseVNode("div", mergeProps({
|
|
4676
|
+
class: _ctx.$style.tree
|
|
4677
|
+
}, unref(virtualList).containerProps), [
|
|
4678
|
+
createBaseVNode("div", mergeProps(unref(virtualList).wrapperProps.value, { role: "tree" }), [
|
|
4679
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(virtualList).list.value, ({ data, index }) => {
|
|
4680
|
+
return openBlock(), createBlock(LogsOverviewRow, {
|
|
4681
|
+
key: index,
|
|
4682
|
+
data,
|
|
4683
|
+
"is-read-only": _ctx.isReadOnly,
|
|
4684
|
+
"is-selected": data.node.name === _ctx.selected?.node.name && data.runIndex === _ctx.selected?.runIndex,
|
|
4685
|
+
"is-compact": _ctx.isCompact,
|
|
4686
|
+
"should-show-consumed-tokens": consumedTokens2.value.totalTokens > 0,
|
|
4687
|
+
"latest-info": _ctx.latestNodeInfo[data.node.id],
|
|
4688
|
+
expanded: !collapsedEntries.value[data.id],
|
|
4689
|
+
onClick: withModifiers(($event) => handleClickNode(data), ["stop"]),
|
|
4690
|
+
onToggleExpanded: handleToggleExpanded,
|
|
4691
|
+
onOpenNdv: handleOpenNdv,
|
|
4692
|
+
onTriggerPartialExecution: handleTriggerPartialExecution
|
|
4693
|
+
}, null, 8, ["data", "is-read-only", "is-selected", "is-compact", "should-show-consumed-tokens", "latest-info", "expanded", "onClick"]);
|
|
4694
|
+
}), 128))
|
|
4695
|
+
], 16)
|
|
4696
|
+
], 16),
|
|
4695
4697
|
createVNode(unref(N8nRadioButtons), {
|
|
4696
|
-
size: "medium",
|
|
4698
|
+
size: "small-medium",
|
|
4697
4699
|
class: normalizeClass(_ctx.$style.switchViewButtons),
|
|
4698
4700
|
"model-value": _ctx.selected ? "details" : "overview",
|
|
4699
4701
|
options: switchViewOptions.value,
|
|
4700
4702
|
"onUpdate:modelValue": handleSwitchView
|
|
4701
4703
|
}, null, 8, ["class", "model-value", "options"])
|
|
4702
|
-
],
|
|
4704
|
+
], 64))
|
|
4703
4705
|
], 2)) : createCommentVNode("", true)
|
|
4704
4706
|
], 2);
|
|
4705
4707
|
};
|
|
4706
4708
|
}
|
|
4707
4709
|
});
|
|
4708
|
-
const container$3 = "
|
|
4709
|
-
const clearButton = "
|
|
4710
|
-
const content$1 = "
|
|
4711
|
-
const empty = "
|
|
4712
|
-
const emptyText = "
|
|
4713
|
-
const
|
|
4714
|
-
const
|
|
4715
|
-
const
|
|
4716
|
-
const switchViewButtons = "_switchViewButtons_ow69g_176";
|
|
4710
|
+
const container$3 = "_container_acxst_123";
|
|
4711
|
+
const clearButton = "_clearButton_acxst_133";
|
|
4712
|
+
const content$1 = "_content_acxst_139";
|
|
4713
|
+
const empty = "_empty_acxst_148";
|
|
4714
|
+
const emptyText = "_emptyText_acxst_153";
|
|
4715
|
+
const summary = "_summary_acxst_158";
|
|
4716
|
+
const tree = "_tree_acxst_162";
|
|
4717
|
+
const switchViewButtons = "_switchViewButtons_acxst_169";
|
|
4717
4718
|
const style0$4 = {
|
|
4718
4719
|
container: container$3,
|
|
4719
4720
|
clearButton,
|
|
4720
4721
|
content: content$1,
|
|
4721
4722
|
empty,
|
|
4722
4723
|
emptyText,
|
|
4723
|
-
scrollable,
|
|
4724
4724
|
summary,
|
|
4725
4725
|
tree,
|
|
4726
4726
|
switchViewButtons
|
|
@@ -4734,38 +4734,44 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4734
4734
|
props: {
|
|
4735
4735
|
title: {},
|
|
4736
4736
|
paneType: {},
|
|
4737
|
-
logEntry: {}
|
|
4737
|
+
logEntry: {},
|
|
4738
|
+
workflow: {},
|
|
4739
|
+
execution: {}
|
|
4738
4740
|
},
|
|
4739
4741
|
setup(__props) {
|
|
4740
4742
|
const locale = useI18n$1();
|
|
4741
|
-
const workflowsStore = useWorkflowsStore();
|
|
4742
4743
|
const ndvStore = useNDVStore();
|
|
4743
|
-
const
|
|
4744
|
-
const
|
|
4744
|
+
const displayMode = ref(__props.paneType === "input" ? "schema" : "table");
|
|
4745
|
+
const isMultipleInput = computed(() => __props.paneType === "input" && __props.logEntry.runData.source.length > 1);
|
|
4746
|
+
const runDataProps = computed(() => {
|
|
4745
4747
|
if (__props.logEntry.depth > 0 || __props.paneType === "output") {
|
|
4746
|
-
return
|
|
4748
|
+
return { node: __props.logEntry.node, runIndex: __props.logEntry.runIndex };
|
|
4747
4749
|
}
|
|
4748
|
-
const
|
|
4749
|
-
|
|
4750
|
+
const source = __props.logEntry.runData.source[0];
|
|
4751
|
+
const node = source && __props.workflow.getNode(source.previousNode);
|
|
4752
|
+
if (!source || !node) {
|
|
4750
4753
|
return void 0;
|
|
4751
4754
|
}
|
|
4752
|
-
return
|
|
4755
|
+
return {
|
|
4756
|
+
node: {
|
|
4757
|
+
...node,
|
|
4758
|
+
disabled: false
|
|
4759
|
+
// For RunData component to render data from disabled nodes as well
|
|
4760
|
+
},
|
|
4761
|
+
runIndex: source.previousNodeRun ?? 0,
|
|
4762
|
+
overrideOutputs: [source.previousNodeOutput ?? 0]
|
|
4763
|
+
};
|
|
4753
4764
|
});
|
|
4754
|
-
const isMultipleInput = computed(
|
|
4755
|
-
() => __props.paneType === "input" && uniqBy(
|
|
4756
|
-
workflow.value.getParentNodesByDepth(__props.logEntry.node).filter((n) => n.name !== __props.logEntry.node),
|
|
4757
|
-
(n) => n.name
|
|
4758
|
-
).length > 1
|
|
4759
|
-
);
|
|
4760
4765
|
function handleClickOpenNdv() {
|
|
4761
|
-
ndvStore.setActiveNodeName(__props.logEntry.node);
|
|
4766
|
+
ndvStore.setActiveNodeName(__props.logEntry.node.name);
|
|
4767
|
+
}
|
|
4768
|
+
function handleChangeDisplayMode(value) {
|
|
4769
|
+
displayMode.value = value;
|
|
4762
4770
|
}
|
|
4763
4771
|
return (_ctx, _cache) => {
|
|
4764
|
-
return
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
workflow: workflow.value,
|
|
4768
|
-
"run-index": _ctx.logEntry.runIndex,
|
|
4772
|
+
return runDataProps.value ? (openBlock(), createBlock(RunData, mergeProps({ key: 0 }, runDataProps.value, {
|
|
4773
|
+
workflow: _ctx.workflow,
|
|
4774
|
+
"workflow-execution": _ctx.execution,
|
|
4769
4775
|
"too-much-data-title": unref(locale).baseText("ndv.output.tooMuchData.title"),
|
|
4770
4776
|
"no-data-in-branch-message": unref(locale).baseText("ndv.output.noOutputDataInBranch"),
|
|
4771
4777
|
"executing-message": unref(locale).baseText("ndv.output.executing"),
|
|
@@ -4774,8 +4780,12 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4774
4780
|
compact: true,
|
|
4775
4781
|
"disable-pin": true,
|
|
4776
4782
|
"disable-edit": true,
|
|
4777
|
-
"
|
|
4778
|
-
|
|
4783
|
+
"disable-hover-highlight": true,
|
|
4784
|
+
"display-mode": displayMode.value,
|
|
4785
|
+
"disable-ai-content": _ctx.logEntry.depth === 0,
|
|
4786
|
+
"table-header-bg-color": "light",
|
|
4787
|
+
onDisplayModeChange: handleChangeDisplayMode
|
|
4788
|
+
}), createSlots({
|
|
4779
4789
|
header: withCtx(() => [
|
|
4780
4790
|
createVNode(unref(N8nText), {
|
|
4781
4791
|
class: normalizeClass(_ctx.$style.title),
|
|
@@ -4828,7 +4838,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
4828
4838
|
]),
|
|
4829
4839
|
key: "1"
|
|
4830
4840
|
} : void 0
|
|
4831
|
-
]),
|
|
4841
|
+
]), 1040, ["workflow", "workflow-execution", "too-much-data-title", "no-data-in-branch-message", "executing-message", "pane-type", "display-mode", "disable-ai-content"])) : createCommentVNode("", true);
|
|
4832
4842
|
};
|
|
4833
4843
|
}
|
|
4834
4844
|
});
|
|
@@ -4851,26 +4861,28 @@ function useResizablePanel(localStorageKey, {
|
|
|
4851
4861
|
allowFullSize
|
|
4852
4862
|
}) {
|
|
4853
4863
|
const containerSize = ref(0);
|
|
4854
|
-
const
|
|
4864
|
+
const persistedSize = useLocalStorage(localStorageKey, -1, { writeDefaults: false });
|
|
4855
4865
|
const isResizing = ref(false);
|
|
4866
|
+
const sizeOnResizeStart = ref();
|
|
4867
|
+
const minSizeValue = computed(() => resolveSize(minSize, containerSize.value));
|
|
4868
|
+
const maxSizeValue = computed(() => resolveSize(maxSize, containerSize.value));
|
|
4856
4869
|
const constrainedSize = computed(() => {
|
|
4857
|
-
|
|
4870
|
+
const sizeInPixels = persistedSize.value >= 0 && persistedSize.value <= 1 ? containerSize.value * persistedSize.value : -1;
|
|
4871
|
+
if (isResizing.value && allowCollapse && sizeInPixels < 30) {
|
|
4858
4872
|
return 0;
|
|
4859
4873
|
}
|
|
4860
|
-
if (isResizing.value && allowFullSize &&
|
|
4874
|
+
if (isResizing.value && allowFullSize && sizeInPixels > containerSize.value - 30) {
|
|
4861
4875
|
return containerSize.value;
|
|
4862
4876
|
}
|
|
4863
4877
|
const defaultSizeValue = resolveSize(defaultSize, containerSize.value);
|
|
4864
|
-
if (Number.isNaN(
|
|
4878
|
+
if (Number.isNaN(sizeInPixels) || !Number.isFinite(sizeInPixels) || sizeInPixels < 0) {
|
|
4865
4879
|
return defaultSizeValue;
|
|
4866
4880
|
}
|
|
4867
|
-
const minSizeValue = resolveSize(minSize, containerSize.value);
|
|
4868
|
-
const maxSizeValue = resolveSize(maxSize, containerSize.value);
|
|
4869
4881
|
return Math.max(
|
|
4870
|
-
minSizeValue,
|
|
4882
|
+
minSizeValue.value,
|
|
4871
4883
|
Math.min(
|
|
4872
|
-
snap && Math.abs(defaultSizeValue -
|
|
4873
|
-
maxSizeValue
|
|
4884
|
+
snap && Math.abs(defaultSizeValue - sizeInPixels) < 30 ? defaultSizeValue : sizeInPixels,
|
|
4885
|
+
maxSizeValue.value
|
|
4874
4886
|
)
|
|
4875
4887
|
);
|
|
4876
4888
|
});
|
|
@@ -4888,13 +4900,21 @@ function useResizablePanel(localStorageKey, {
|
|
|
4888
4900
|
}
|
|
4889
4901
|
function onResize(data) {
|
|
4890
4902
|
const containerRect = unref(container2)?.getBoundingClientRect();
|
|
4891
|
-
|
|
4892
|
-
size.value = Math.max(
|
|
4903
|
+
const newSizeInPixels = Math.max(
|
|
4893
4904
|
0,
|
|
4894
4905
|
position === "bottom" ? (containerRect ? getSize(containerRect) : 0) - getValue(data) : getValue(data) - (containerRect ? getValue(containerRect) : 0)
|
|
4895
4906
|
);
|
|
4907
|
+
isResizing.value = true;
|
|
4908
|
+
persistedSize.value = newSizeInPixels / containerSize.value;
|
|
4909
|
+
if (sizeOnResizeStart.value === void 0) {
|
|
4910
|
+
sizeOnResizeStart.value = persistedSize.value;
|
|
4911
|
+
}
|
|
4896
4912
|
}
|
|
4897
4913
|
function onResizeEnd() {
|
|
4914
|
+
if (minSizeValue.value > 0 && constrainedSize.value <= 0 || maxSizeValue.value < containerSize.value && constrainedSize.value >= containerSize.value) {
|
|
4915
|
+
persistedSize.value = sizeOnResizeStart.value;
|
|
4916
|
+
}
|
|
4917
|
+
sizeOnResizeStart.value = void 0;
|
|
4898
4918
|
isResizing.value = false;
|
|
4899
4919
|
}
|
|
4900
4920
|
watch(
|
|
@@ -4912,12 +4932,6 @@ function useResizablePanel(localStorageKey, {
|
|
|
4912
4932
|
},
|
|
4913
4933
|
{ immediate: true }
|
|
4914
4934
|
);
|
|
4915
|
-
watch(containerSize, (newValue, oldValue) => {
|
|
4916
|
-
if (size.value > 0 && oldValue > 0) {
|
|
4917
|
-
const ratio = size.value / oldValue;
|
|
4918
|
-
size.value = Math.round(newValue * ratio);
|
|
4919
|
-
}
|
|
4920
|
-
});
|
|
4921
4935
|
return {
|
|
4922
4936
|
isResizing: computed(() => isResizing.value),
|
|
4923
4937
|
isCollapsed: computed(() => isResizing.value && constrainedSize.value <= 0),
|
|
@@ -4933,21 +4947,23 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
4933
4947
|
props: {
|
|
4934
4948
|
isOpen: { type: Boolean },
|
|
4935
4949
|
logEntry: {},
|
|
4936
|
-
|
|
4950
|
+
workflow: {},
|
|
4951
|
+
execution: {},
|
|
4952
|
+
window: {},
|
|
4953
|
+
latestInfo: {}
|
|
4937
4954
|
},
|
|
4938
4955
|
emits: ["clickHeader"],
|
|
4939
4956
|
setup(__props, { emit: __emit }) {
|
|
4940
4957
|
const emit = __emit;
|
|
4941
4958
|
const locale = useI18n$1();
|
|
4942
4959
|
const telemetry = useTelemetry();
|
|
4943
|
-
const workflowsStore = useWorkflowsStore();
|
|
4944
4960
|
const nodeTypeStore = useNodeTypesStore();
|
|
4945
|
-
const content2 =
|
|
4946
|
-
|
|
4947
|
-
|
|
4948
|
-
|
|
4949
|
-
() => (workflowsStore.workflowExecutionData?.data?.resultData.runData[__props.logEntry.node] ?? [])[__props.logEntry.runIndex]
|
|
4961
|
+
const content2 = useLocalStorage(
|
|
4962
|
+
"N8N_LOGS_DETAIL_PANEL_CONTENT",
|
|
4963
|
+
LOG_DETAILS_CONTENT.OUTPUT,
|
|
4964
|
+
{ writeDefaults: false }
|
|
4950
4965
|
);
|
|
4966
|
+
const type = computed(() => nodeTypeStore.getNodeType(__props.logEntry.node.type));
|
|
4951
4967
|
const consumedTokens2 = computed(() => getSubtreeTotalConsumedTokens(__props.logEntry));
|
|
4952
4968
|
const isTriggerNode = computed(() => type.value?.group.includes("trigger"));
|
|
4953
4969
|
const container2 = useTemplateRef("container");
|
|
@@ -5000,34 +5016,29 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5000
5016
|
}, [
|
|
5001
5017
|
createVNode(PanelHeader, {
|
|
5002
5018
|
"data-test-id": "log-details-header",
|
|
5019
|
+
class: normalizeClass(_ctx.$style.header),
|
|
5003
5020
|
onClick: _cache[0] || (_cache[0] = ($event) => emit("clickHeader"))
|
|
5004
5021
|
}, {
|
|
5005
5022
|
title: withCtx(() => [
|
|
5006
5023
|
createBaseVNode("div", {
|
|
5007
5024
|
class: normalizeClass(_ctx.$style.title)
|
|
5008
5025
|
}, [
|
|
5009
|
-
createVNode(_sfc_main$
|
|
5026
|
+
createVNode(_sfc_main$k, {
|
|
5010
5027
|
"node-type": type.value,
|
|
5011
5028
|
size: 16,
|
|
5012
5029
|
class: normalizeClass(_ctx.$style.icon)
|
|
5013
5030
|
}, null, 8, ["node-type", "class"]),
|
|
5014
|
-
createVNode(
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
}, {
|
|
5020
|
-
default: withCtx(() => [
|
|
5021
|
-
createTextVNode(toDisplayString(node.value?.name), 1)
|
|
5022
|
-
]),
|
|
5023
|
-
_: 1
|
|
5024
|
-
}, 8, ["class"]),
|
|
5031
|
+
createVNode(NodeName, {
|
|
5032
|
+
"latest-name": _ctx.latestInfo?.name ?? _ctx.logEntry.node.name,
|
|
5033
|
+
name: _ctx.logEntry.node.name,
|
|
5034
|
+
"is-deleted": _ctx.latestInfo?.deleted ?? false
|
|
5035
|
+
}, null, 8, ["latest-name", "name", "is-deleted"]),
|
|
5025
5036
|
_ctx.isOpen ? (openBlock(), createBlock(ExecutionSummary, {
|
|
5026
5037
|
key: 0,
|
|
5027
5038
|
class: normalizeClass(_ctx.$style.executionSummary),
|
|
5028
|
-
status: runData.
|
|
5039
|
+
status: _ctx.logEntry.runData.executionStatus ?? "unknown",
|
|
5029
5040
|
"consumed-tokens": consumedTokens2.value,
|
|
5030
|
-
"time-took": runData.
|
|
5041
|
+
"time-took": _ctx.logEntry.runData.executionTime
|
|
5031
5042
|
}, null, 8, ["class", "status", "consumed-tokens", "time-took"])) : createCommentVNode("", true)
|
|
5032
5043
|
], 2)
|
|
5033
5044
|
]),
|
|
@@ -5039,7 +5050,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5039
5050
|
createVNode(unref(N8nButton), {
|
|
5040
5051
|
size: "mini",
|
|
5041
5052
|
type: "secondary",
|
|
5042
|
-
class: normalizeClass(content2
|
|
5053
|
+
class: normalizeClass(unref(content2) === unref(LOG_DETAILS_CONTENT).OUTPUT ? "" : _ctx.$style.pressed),
|
|
5043
5054
|
onClick: withModifiers(handleToggleInput, ["stop"])
|
|
5044
5055
|
}, {
|
|
5045
5056
|
default: withCtx(() => [
|
|
@@ -5050,7 +5061,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5050
5061
|
createVNode(unref(N8nButton), {
|
|
5051
5062
|
size: "mini",
|
|
5052
5063
|
type: "secondary",
|
|
5053
|
-
class: normalizeClass(content2
|
|
5064
|
+
class: normalizeClass(unref(content2) === unref(LOG_DETAILS_CONTENT).INPUT ? "" : _ctx.$style.pressed),
|
|
5054
5065
|
onClick: withModifiers(handleToggleOutput, ["stop"])
|
|
5055
5066
|
}, {
|
|
5056
5067
|
default: withCtx(() => [
|
|
@@ -5062,13 +5073,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5062
5073
|
renderSlot(_ctx.$slots, "actions")
|
|
5063
5074
|
]),
|
|
5064
5075
|
_: 3
|
|
5065
|
-
}),
|
|
5076
|
+
}, 8, ["class"]),
|
|
5066
5077
|
_ctx.isOpen ? (openBlock(), createElementBlock("div", {
|
|
5067
5078
|
key: 0,
|
|
5068
5079
|
class: normalizeClass(_ctx.$style.content),
|
|
5069
5080
|
"data-test-id": "logs-details-body"
|
|
5070
5081
|
}, [
|
|
5071
|
-
!isTriggerNode.value && content2
|
|
5082
|
+
!isTriggerNode.value && unref(content2) !== unref(LOG_DETAILS_CONTENT).OUTPUT ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5072
5083
|
key: 0,
|
|
5073
5084
|
class: normalizeClass({
|
|
5074
5085
|
[_ctx.$style.inputResizer]: true,
|
|
@@ -5088,43 +5099,47 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
5088
5099
|
"data-test-id": "log-details-input",
|
|
5089
5100
|
"pane-type": "input",
|
|
5090
5101
|
title: unref(locale).baseText("logs.details.header.actions.input"),
|
|
5091
|
-
"log-entry": _ctx.logEntry
|
|
5092
|
-
|
|
5102
|
+
"log-entry": _ctx.logEntry,
|
|
5103
|
+
workflow: _ctx.workflow,
|
|
5104
|
+
execution: _ctx.execution
|
|
5105
|
+
}, null, 8, ["title", "log-entry", "workflow", "execution"])
|
|
5093
5106
|
]),
|
|
5094
5107
|
_: 1
|
|
5095
5108
|
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"])) : createCommentVNode("", true),
|
|
5096
|
-
isTriggerNode.value || content2
|
|
5109
|
+
isTriggerNode.value || unref(content2) !== unref(LOG_DETAILS_CONTENT).INPUT ? (openBlock(), createBlock(RunDataView, {
|
|
5097
5110
|
key: 1,
|
|
5098
5111
|
"data-test-id": "log-details-output",
|
|
5099
5112
|
"pane-type": "output",
|
|
5100
5113
|
class: normalizeClass(_ctx.$style.outputPanel),
|
|
5101
5114
|
title: unref(locale).baseText("logs.details.header.actions.output"),
|
|
5102
|
-
"log-entry": _ctx.logEntry
|
|
5103
|
-
|
|
5115
|
+
"log-entry": _ctx.logEntry,
|
|
5116
|
+
workflow: _ctx.workflow,
|
|
5117
|
+
execution: _ctx.execution
|
|
5118
|
+
}, null, 8, ["class", "title", "log-entry", "workflow", "execution"])) : createCommentVNode("", true)
|
|
5104
5119
|
], 2)) : createCommentVNode("", true)
|
|
5105
5120
|
], 2);
|
|
5106
5121
|
};
|
|
5107
5122
|
}
|
|
5108
5123
|
});
|
|
5109
|
-
const container$2 = "
|
|
5110
|
-
const
|
|
5111
|
-
const
|
|
5112
|
-
const
|
|
5113
|
-
const
|
|
5114
|
-
const
|
|
5115
|
-
const executionSummary = "
|
|
5116
|
-
const content = "
|
|
5117
|
-
const outputPanel = "
|
|
5118
|
-
const inputResizer = "
|
|
5119
|
-
const collapsed = "
|
|
5120
|
-
const full = "
|
|
5124
|
+
const container$2 = "_container_pax0a_123";
|
|
5125
|
+
const header = "_header_pax0a_132";
|
|
5126
|
+
const actions = "_actions_pax0a_136";
|
|
5127
|
+
const pressed = "_pressed_pax0a_142";
|
|
5128
|
+
const title = "_title_pax0a_146";
|
|
5129
|
+
const icon = "_icon_pax0a_152";
|
|
5130
|
+
const executionSummary = "_executionSummary_pax0a_156";
|
|
5131
|
+
const content = "_content_pax0a_160";
|
|
5132
|
+
const outputPanel = "_outputPanel_pax0a_168";
|
|
5133
|
+
const inputResizer = "_inputResizer_pax0a_173";
|
|
5134
|
+
const collapsed = "_collapsed_pax0a_177";
|
|
5135
|
+
const full = "_full_pax0a_177";
|
|
5121
5136
|
const style0$2 = {
|
|
5122
5137
|
container: container$2,
|
|
5138
|
+
header,
|
|
5123
5139
|
actions,
|
|
5124
5140
|
pressed,
|
|
5125
5141
|
title,
|
|
5126
5142
|
icon,
|
|
5127
|
-
name,
|
|
5128
5143
|
executionSummary,
|
|
5129
5144
|
content,
|
|
5130
5145
|
outputPanel,
|
|
@@ -5163,7 +5178,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5163
5178
|
content: popOutButtonText.value
|
|
5164
5179
|
}, {
|
|
5165
5180
|
default: withCtx(() => [
|
|
5166
|
-
createVNode(unref(_sfc_main$
|
|
5181
|
+
createVNode(unref(_sfc_main$i), {
|
|
5167
5182
|
icon: "pop-out",
|
|
5168
5183
|
type: "secondary",
|
|
5169
5184
|
size: "small",
|
|
@@ -5180,7 +5195,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
5180
5195
|
content: toggleButtonText.value
|
|
5181
5196
|
}, {
|
|
5182
5197
|
default: withCtx(() => [
|
|
5183
|
-
createVNode(unref(_sfc_main$
|
|
5198
|
+
createVNode(unref(_sfc_main$i), {
|
|
5184
5199
|
type: "secondary",
|
|
5185
5200
|
size: "small",
|
|
5186
5201
|
"icon-size": "medium",
|
|
@@ -5220,13 +5235,13 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5220
5235
|
});
|
|
5221
5236
|
const chatPanelResizer = useResizablePanel(LOCAL_STORAGE_PANEL_WIDTH, {
|
|
5222
5237
|
container: container2,
|
|
5223
|
-
defaultSize: (size) => size * 0.3,
|
|
5224
|
-
minSize:
|
|
5238
|
+
defaultSize: (size) => Math.min(800, size * 0.3),
|
|
5239
|
+
minSize: 240,
|
|
5225
5240
|
maxSize: (size) => size * 0.8
|
|
5226
5241
|
});
|
|
5227
5242
|
const overviewPanelResizer = useResizablePanel(LOCAL_STORAGE_OVERVIEW_PANEL_WIDTH, {
|
|
5228
5243
|
container: logsContainer2,
|
|
5229
|
-
defaultSize: (size) => size * 0.
|
|
5244
|
+
defaultSize: (size) => Math.min(240, size * 0.2),
|
|
5230
5245
|
minSize: 80,
|
|
5231
5246
|
maxSize: 500,
|
|
5232
5247
|
allowFullSize: true
|
|
@@ -5273,11 +5288,15 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5273
5288
|
}
|
|
5274
5289
|
resizer.onResizeEnd();
|
|
5275
5290
|
}
|
|
5276
|
-
watch(
|
|
5277
|
-
|
|
5278
|
-
|
|
5279
|
-
|
|
5280
|
-
|
|
5291
|
+
watch(
|
|
5292
|
+
[panelState, resizer.size],
|
|
5293
|
+
([state, height]) => {
|
|
5294
|
+
canvasStore.setPanelHeight(
|
|
5295
|
+
state === LOGS_PANEL_STATE.FLOATING ? 0 : state === LOGS_PANEL_STATE.ATTACHED ? height : 32
|
|
5296
|
+
);
|
|
5297
|
+
},
|
|
5298
|
+
{ immediate: true }
|
|
5299
|
+
);
|
|
5281
5300
|
return {
|
|
5282
5301
|
height: resizer.size,
|
|
5283
5302
|
chatPanelWidth: chatPanelResizer.size,
|
|
@@ -5298,6 +5317,73 @@ function useLayout(pipContainer, pipContent2, container2, logsContainer2) {
|
|
|
5298
5317
|
onOverviewPanelResizeEnd: overviewPanelResizer.onResizeEnd
|
|
5299
5318
|
};
|
|
5300
5319
|
}
|
|
5320
|
+
function useExecutionData() {
|
|
5321
|
+
const nodeHelpers = useNodeHelpers();
|
|
5322
|
+
const workflowsStore = useWorkflowsStore();
|
|
5323
|
+
const execData = ref();
|
|
5324
|
+
const workflow = computed(
|
|
5325
|
+
() => execData.value ? new Workflow({
|
|
5326
|
+
...execData.value?.workflowData,
|
|
5327
|
+
nodeTypes: workflowsStore.getNodeTypes()
|
|
5328
|
+
}) : void 0
|
|
5329
|
+
);
|
|
5330
|
+
const latestNodeNameById = computed(
|
|
5331
|
+
() => Object.values(workflow.value?.nodes ?? {}).reduce(
|
|
5332
|
+
(acc, node) => {
|
|
5333
|
+
const nodeInStore = workflowsStore.getNodeById(node.id);
|
|
5334
|
+
acc[node.id] = {
|
|
5335
|
+
deleted: !nodeInStore,
|
|
5336
|
+
disabled: nodeInStore?.disabled ?? false,
|
|
5337
|
+
name: nodeInStore?.name ?? node.name
|
|
5338
|
+
};
|
|
5339
|
+
return acc;
|
|
5340
|
+
},
|
|
5341
|
+
{}
|
|
5342
|
+
)
|
|
5343
|
+
);
|
|
5344
|
+
const hasChat = computed(
|
|
5345
|
+
() => [Object.values(workflow.value?.nodes ?? {}), workflowsStore.workflow.nodes].some(
|
|
5346
|
+
(nodes) => nodes.some(isChatNode)
|
|
5347
|
+
)
|
|
5348
|
+
);
|
|
5349
|
+
const execution = computed(() => {
|
|
5350
|
+
if (!execData.value || !workflow.value) {
|
|
5351
|
+
return void 0;
|
|
5352
|
+
}
|
|
5353
|
+
return {
|
|
5354
|
+
...execData.value,
|
|
5355
|
+
tree: createLogEntries(workflow.value, execData.value.data?.resultData.runData ?? {})
|
|
5356
|
+
};
|
|
5357
|
+
});
|
|
5358
|
+
const updateInterval = computed(() => (execution.value?.tree.length ?? 0) > 10 ? 300 : 0);
|
|
5359
|
+
const runStatusList = computed(
|
|
5360
|
+
() => workflowsStore.workflowExecutionData?.id === IN_PROGRESS_EXECUTION_ID ? Object.values(workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}).flatMap((tasks) => tasks.map((task) => task.executionStatus ?? "")).join("|") : ""
|
|
5361
|
+
);
|
|
5362
|
+
function resetExecutionData() {
|
|
5363
|
+
execData.value = void 0;
|
|
5364
|
+
workflowsStore.setWorkflowExecutionData(null);
|
|
5365
|
+
nodeHelpers.updateNodesExecutionIssues();
|
|
5366
|
+
}
|
|
5367
|
+
watch(
|
|
5368
|
+
// Fields that should trigger update
|
|
5369
|
+
[
|
|
5370
|
+
() => workflowsStore.workflowExecutionData?.id,
|
|
5371
|
+
() => workflowsStore.workflowExecutionData?.workflowData.id,
|
|
5372
|
+
() => workflowsStore.workflowExecutionData?.status,
|
|
5373
|
+
runStatusList
|
|
5374
|
+
],
|
|
5375
|
+
useThrottleFn(
|
|
5376
|
+
() => {
|
|
5377
|
+
execData.value = deepToRaw(workflowsStore.workflowExecutionData ?? void 0);
|
|
5378
|
+
},
|
|
5379
|
+
updateInterval,
|
|
5380
|
+
true,
|
|
5381
|
+
true
|
|
5382
|
+
),
|
|
5383
|
+
{ immediate: true }
|
|
5384
|
+
);
|
|
5385
|
+
return { execution, workflow, hasChat, latestNodeNameById, resetExecutionData };
|
|
5386
|
+
}
|
|
5301
5387
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5302
5388
|
__name: "LogsPanel",
|
|
5303
5389
|
props: {
|
|
@@ -5305,12 +5391,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5305
5391
|
},
|
|
5306
5392
|
setup(__props) {
|
|
5307
5393
|
const props = __props;
|
|
5308
|
-
const workflowsStore = useWorkflowsStore();
|
|
5309
5394
|
const container2 = useTemplateRef("container");
|
|
5310
5395
|
const logsContainer2 = useTemplateRef("logsContainer");
|
|
5311
5396
|
const pipContainer = useTemplateRef("pipContainer");
|
|
5312
5397
|
const pipContent2 = useTemplateRef("pipContent");
|
|
5313
|
-
const previousChatMessages = computed(() => workflowsStore.getPastChatMessages);
|
|
5314
5398
|
const {
|
|
5315
5399
|
height,
|
|
5316
5400
|
chatPanelWidth,
|
|
@@ -5330,34 +5414,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5330
5414
|
onOverviewPanelResize,
|
|
5331
5415
|
onOverviewPanelResizeEnd
|
|
5332
5416
|
} = useLayout(pipContainer, pipContent2, container2, logsContainer2);
|
|
5333
|
-
const {
|
|
5334
|
-
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
workflow.value,
|
|
5343
|
-
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5344
|
-
)
|
|
5345
|
-
);
|
|
5417
|
+
const {
|
|
5418
|
+
currentSessionId,
|
|
5419
|
+
messages: messages2,
|
|
5420
|
+
previousChatMessages,
|
|
5421
|
+
sendMessage,
|
|
5422
|
+
refreshSession,
|
|
5423
|
+
displayExecution
|
|
5424
|
+
} = useChatState(props.isReadOnly);
|
|
5425
|
+
const { workflow, execution, hasChat, latestNodeNameById, resetExecutionData } = useExecutionData();
|
|
5346
5426
|
const manualLogEntrySelection = ref({ type: "initial" });
|
|
5347
|
-
const autoSelectedLogEntry = computed(
|
|
5348
|
-
() => findLogEntryToAutoSelect(
|
|
5349
|
-
executionTree.value,
|
|
5350
|
-
workflowsStore.nodesByName,
|
|
5351
|
-
workflowsStore.workflowExecutionData?.data?.resultData.runData ?? {}
|
|
5352
|
-
)
|
|
5353
|
-
);
|
|
5354
5427
|
const selectedLogEntry = computed(
|
|
5355
|
-
() => manualLogEntrySelection.value
|
|
5428
|
+
() => findSelectedLogEntry(manualLogEntrySelection.value, execution.value)
|
|
5356
5429
|
);
|
|
5357
|
-
const isLogDetailsOpen = computed(
|
|
5358
|
-
|
|
5430
|
+
const isLogDetailsOpen = computed(() => isOpen.value && selectedLogEntry.value !== void 0);
|
|
5431
|
+
const isLogDetailsVisuallyOpen = computed(
|
|
5432
|
+
() => isLogDetailsOpen.value && !isCollapsingDetailsPanel.value
|
|
5359
5433
|
);
|
|
5360
|
-
const isLogDetailsOpenOrCollapsing = computed(() => selectedLogEntry.value !== void 0);
|
|
5361
5434
|
const logsPanelActionsProps = computed(() => ({
|
|
5362
5435
|
isOpen: isOpen.value,
|
|
5363
5436
|
showToggleButton: !isPoppedOut.value,
|
|
@@ -5366,7 +5439,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5366
5439
|
onToggleOpen
|
|
5367
5440
|
}));
|
|
5368
5441
|
function handleSelectLogEntry(selected2) {
|
|
5369
|
-
|
|
5442
|
+
const workflowId = execution.value?.workflowData.id;
|
|
5443
|
+
if (!workflowId) {
|
|
5444
|
+
return;
|
|
5445
|
+
}
|
|
5446
|
+
manualLogEntrySelection.value = selected2 === void 0 ? { type: "none", workflowId } : { type: "selected", workflowId, data: selected2 };
|
|
5370
5447
|
}
|
|
5371
5448
|
function handleResizeOverviewPanelEnd() {
|
|
5372
5449
|
if (isOverviewPanelFullWidth.value) {
|
|
@@ -5400,7 +5477,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5400
5477
|
class: normalizeClass([_ctx.$style.container, "ignore-key-press-canvas"]),
|
|
5401
5478
|
tabindex: "0"
|
|
5402
5479
|
}, [
|
|
5403
|
-
hasChat.
|
|
5480
|
+
unref(hasChat) && (!props.isReadOnly || unref(messages2).length > 0) ? (openBlock(), createBlock(unref(N8nResizeWrapper), {
|
|
5404
5481
|
key: 0,
|
|
5405
5482
|
"supported-directions": ["right"],
|
|
5406
5483
|
"is-resizing-enabled": unref(isOpen),
|
|
@@ -5418,7 +5495,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5418
5495
|
"is-read-only": _ctx.isReadOnly,
|
|
5419
5496
|
messages: unref(messages2),
|
|
5420
5497
|
"session-id": unref(currentSessionId),
|
|
5421
|
-
"past-chat-messages": previousChatMessages
|
|
5498
|
+
"past-chat-messages": unref(previousChatMessages),
|
|
5422
5499
|
"show-close-button": false,
|
|
5423
5500
|
"is-new-logs-enabled": true,
|
|
5424
5501
|
onClose: unref(onToggleOpen),
|
|
@@ -5438,45 +5515,52 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
5438
5515
|
createVNode(unref(N8nResizeWrapper), {
|
|
5439
5516
|
class: normalizeClass(_ctx.$style.overviewResizer),
|
|
5440
5517
|
width: unref(overviewPanelWidth),
|
|
5441
|
-
style: normalizeStyle({ width:
|
|
5518
|
+
style: normalizeStyle({ width: isLogDetailsVisuallyOpen.value ? `${unref(overviewPanelWidth)}px` : "" }),
|
|
5442
5519
|
"supported-directions": ["right"],
|
|
5443
|
-
"is-resizing-enabled":
|
|
5520
|
+
"is-resizing-enabled": isLogDetailsOpen.value,
|
|
5444
5521
|
window: unref(pipWindow),
|
|
5445
5522
|
onResize: unref(onOverviewPanelResize),
|
|
5446
5523
|
onResizeend: handleResizeOverviewPanelEnd
|
|
5447
5524
|
}, {
|
|
5448
5525
|
default: withCtx(() => [
|
|
5449
|
-
|
|
5526
|
+
(openBlock(), createBlock(LogsOverviewPanel, {
|
|
5527
|
+
key: unref(execution)?.id ?? "",
|
|
5450
5528
|
class: normalizeClass(_ctx.$style.logsOverview),
|
|
5451
5529
|
"is-open": unref(isOpen),
|
|
5452
5530
|
"is-read-only": _ctx.isReadOnly,
|
|
5453
|
-
"is-compact":
|
|
5531
|
+
"is-compact": isLogDetailsVisuallyOpen.value,
|
|
5454
5532
|
selected: selectedLogEntry.value,
|
|
5455
|
-
|
|
5533
|
+
execution: unref(execution),
|
|
5534
|
+
"scroll-to-selection": manualLogEntrySelection.value.type !== "selected" || manualLogEntrySelection.value.data.id !== selectedLogEntry.value?.id,
|
|
5535
|
+
"latest-node-info": unref(latestNodeNameById),
|
|
5456
5536
|
onClickHeader: _cache[1] || (_cache[1] = ($event) => unref(onToggleOpen)(true)),
|
|
5457
|
-
onSelect: handleSelectLogEntry
|
|
5537
|
+
onSelect: handleSelectLogEntry,
|
|
5538
|
+
onClearExecutionData: unref(resetExecutionData)
|
|
5458
5539
|
}, {
|
|
5459
5540
|
actions: withCtx(() => [
|
|
5460
|
-
!
|
|
5541
|
+
!isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5461
5542
|
]),
|
|
5462
5543
|
_: 1
|
|
5463
|
-
}, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution-
|
|
5544
|
+
}, 8, ["class", "is-open", "is-read-only", "is-compact", "selected", "execution", "scroll-to-selection", "latest-node-info", "onClearExecutionData"]))
|
|
5464
5545
|
]),
|
|
5465
5546
|
_: 1
|
|
5466
5547
|
}, 8, ["class", "width", "style", "is-resizing-enabled", "window", "onResize"]),
|
|
5467
|
-
|
|
5548
|
+
isLogDetailsVisuallyOpen.value && selectedLogEntry.value && unref(workflow) && unref(execution) ? (openBlock(), createBlock(LogsDetailsPanel, {
|
|
5468
5549
|
key: 0,
|
|
5469
5550
|
class: normalizeClass(_ctx.$style.logDetails),
|
|
5470
5551
|
"is-open": unref(isOpen),
|
|
5471
5552
|
"log-entry": selectedLogEntry.value,
|
|
5553
|
+
workflow: unref(workflow),
|
|
5554
|
+
execution: unref(execution),
|
|
5472
5555
|
window: unref(pipWindow),
|
|
5556
|
+
"latest-info": unref(latestNodeNameById)[selectedLogEntry.value.node.id],
|
|
5473
5557
|
onClickHeader: _cache[2] || (_cache[2] = ($event) => unref(onToggleOpen)(true))
|
|
5474
5558
|
}, {
|
|
5475
5559
|
actions: withCtx(() => [
|
|
5476
|
-
|
|
5560
|
+
isLogDetailsVisuallyOpen.value ? (openBlock(), createBlock(LogsPanelActions, normalizeProps(mergeProps({ key: 0 }, logsPanelActionsProps.value)), null, 16)) : createCommentVNode("", true)
|
|
5477
5561
|
]),
|
|
5478
5562
|
_: 1
|
|
5479
|
-
}, 8, ["class", "is-open", "log-entry", "window"])) : createCommentVNode("", true)
|
|
5563
|
+
}, 8, ["class", "is-open", "log-entry", "workflow", "execution", "window", "latest-info"])) : createCommentVNode("", true)
|
|
5480
5564
|
], 2)
|
|
5481
5565
|
], 2)
|
|
5482
5566
|
]),
|