n8n-editor-ui 1.102.2 → 1.103.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/assets/{ActionDropdown-CiegfqhB.js → ActionDropdown-BhU4vCrE.js} +1 -1
  2. package/dist/assets/{AnimatedSpinner-DZ7wHd_W.js → AnimatedSpinner-Du5eXSIY.js} +1 -1
  3. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BQoi5khn.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DEQTwSbx.js} +1 -1
  4. package/dist/assets/{AuthView-K2y2JXyp.js → AuthView-BJ-YTYTN.js} +2 -2
  5. package/dist/assets/{ChangePasswordView-D_EsQtLD.js → ChangePasswordView-B-OkU_yr.js} +3 -3
  6. package/dist/assets/CollectionParameter-BHthTTpD.js +4 -0
  7. package/dist/assets/{CredentialsView-DvE9GnD7.js → CredentialsView-BjUZvEdd.js} +8 -8
  8. package/dist/assets/{DemoFooter-kRP32xy4.js → DemoFooter-9WRPL1Nd.js} +8 -8
  9. package/dist/assets/{EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-B6KKFEL7.js → EmptySharedSectionActionBox.vue_vue_type_script_setup_true_lang-D3Zaxt4S.js} +1 -1
  10. package/dist/assets/{EntityNotFound-q_5k8QTh.js → EntityNotFound-DvAk0XOf.js} +1 -1
  11. package/dist/assets/{EntityUnAuthorised-DrFh2EVh.js → EntityUnAuthorised-BTLaJBAA.js} +1 -1
  12. package/dist/assets/{ErrorView-CdyA4lBI.js → ErrorView-KDDRlAEN.js} +1 -1
  13. package/dist/assets/{EvaluationsRootView-DBi9hUxa.js → EvaluationsRootView-BViIGqmh.js} +1 -1
  14. package/dist/assets/{EvaluationsView-VbCSsM2z.js → EvaluationsView-BY0HmUSo.js} +3 -3
  15. package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-v5SEEKlZ.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Dz1TldYs.js} +3 -6
  16. package/dist/assets/{ExecutionsView-sSmNa_LK.js → ExecutionsView-z5GL4TFM.js} +9 -9
  17. package/dist/assets/{FileSaver.min-BemkeU_7.js → FileSaver.min-BRpMoNCX.js} +1 -1
  18. package/dist/assets/{FixedCollectionParameter-yzvCzSx6.js → FixedCollectionParameter-BW_7bc6a.js} +1 -1
  19. package/dist/assets/{ForgotMyPasswordView-BKvBLqbr.js → ForgotMyPasswordView-C3yPX8Sm.js} +3 -3
  20. package/dist/assets/{InfoAccordion--ZQQuSPX.js → InfoAccordion-B3ebdljQ.js} +1 -1
  21. package/dist/assets/{InsightsChartAverageRuntime-DGOGXDwW.js → InsightsChartAverageRuntime-B07vNUKi.js} +4 -4
  22. package/dist/assets/{InsightsChartFailed-1vg5XpxV.js → InsightsChartFailed-vwVIlrMM.js} +4 -4
  23. package/dist/assets/{InsightsChartFailureRate-7nJvVi9O.js → InsightsChartFailureRate-3R9NR__K.js} +4 -4
  24. package/dist/assets/{InsightsChartTimeSaved-DKn1pZ2q.js → InsightsChartTimeSaved-0XAZRsQL.js} +4 -4
  25. package/dist/assets/{InsightsChartTotal-ByrPtNMJ.js → InsightsChartTotal-QtHpPQPx.js} +4 -4
  26. package/dist/assets/{InsightsDashboard-BwLnzxKC.js → InsightsDashboard-jAR8co6U.js} +10 -10
  27. package/dist/assets/{InsightsPaywall-8Xzv5tgi.js → InsightsPaywall-CqlSj87d.js} +1 -1
  28. package/dist/assets/{InsightsSummary-CVMZ0AIR.js → InsightsSummary-1EyHgtD2.js} +1 -1
  29. package/dist/assets/{InsightsTableWorkflows-KGsV_wLS.js → InsightsTableWorkflows-CMfER3Lz.js} +6 -7
  30. package/dist/assets/{InsightsTableWorkflows-DJhX6bQW.css → InsightsTableWorkflows-RGpSnp7n.css} +3 -3
  31. package/dist/assets/{Logo-DFdhGUpH.js → Logo-BAbynr3J.js} +1 -1
  32. package/dist/assets/{LogsPanel-DDzEUcu_.js → LogsPanel-C4P2jfja.js} +14 -8
  33. package/dist/assets/{MainHeader-IUjqKc1i.js → MainHeader-2VAdoAN3.js} +12 -19
  34. package/dist/assets/{MainSidebar-BV-JzM27.js → MainSidebar-ChT_fvtq.js} +3 -3
  35. package/dist/assets/{N8nDataTableServer-Dq5Mwh9d.js → N8nDataTableServer-CUJVgPuN.js} +21 -11
  36. package/dist/assets/{NodeCreation-DCV9QVeh.js → NodeCreation-B0_VqZl0.js} +43 -21
  37. package/dist/assets/{NodeCreation-32nlvQSy.css → NodeCreation-CxN6JIS_.css} +9 -1
  38. package/dist/assets/{NodeCreator-C8jv1gta.js → NodeCreator-Dudc-sld.js} +2 -9
  39. package/dist/assets/{NodeDetailsView-D7qedYA0.js → NodeDetailsView-D3jGDk45.js} +15 -15
  40. package/dist/assets/{NodeDetailsViewV2-BAkPjDo5.js → NodeDetailsViewV2-B0iyvHRQ.js} +15 -15
  41. package/dist/assets/{NodeView-DKlyR0_C.js → NodeView-CX3GlUP1.js} +392 -129
  42. package/dist/assets/{NodeView-BbQy7Are.css → NodeView-hst6fesm.css} +63 -76
  43. package/dist/assets/{ProjectHeader-Co0EPo6y.js → ProjectHeader-CBBQ32Nc.js} +2 -2
  44. package/dist/assets/{ProjectSettings-CUwuhSyu.js → ProjectSettings-D7CCWy0v.js} +3 -3
  45. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-DDVpVAyT.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-aTaPuBRW.js} +1 -1
  46. package/dist/assets/{ResourcesListLayout-0KbQy3_m.js → ResourcesListLayout-CR6jD0wL.js} +3 -3
  47. package/dist/assets/{RunData-CctCvWsu.js → RunData-CY2AnQ-5.js} +83 -70
  48. package/dist/assets/{RunData-DuKNwYqe.css → RunData-D0dKnadD.css} +61 -62
  49. package/dist/assets/{RunDataJson-T-LRvnsQ.js → RunDataJson-PZfvyEtF.js} +9 -9
  50. package/dist/assets/{RunDataJsonActions-C5tGgl2w.js → RunDataJsonActions-BmrxonyU.js} +1 -1
  51. package/dist/assets/RunDataParsedAiContent-b0irqoyM.js +298 -0
  52. package/dist/assets/{RunDataSearch-CsykTpQU.js → RunDataSearch-DS17rPDS.js} +1 -1
  53. package/dist/assets/{RunDataTable-DS-hDrAF.js → RunDataTable-DgBV9mGl.js} +50 -41
  54. package/dist/assets/{RunDataTable-CTBtmQIs.css → RunDataTable-n918b-Qv.css} +55 -55
  55. package/dist/assets/{SamlOnboarding-Dr42BiUa.js → SamlOnboarding-COuXHYGq.js} +3 -3
  56. package/dist/assets/{SettingsApiView-0TAqOns3.js → SettingsApiView-Bjmx5RKa.js} +1 -1
  57. package/dist/assets/{SettingsCommunityNodesView-BO5mZg81.js → SettingsCommunityNodesView-JkmQWaRv.js} +3 -3
  58. package/dist/assets/{SettingsExternalSecrets-BmpYfnUN.js → SettingsExternalSecrets-unJLQHhU.js} +1 -1
  59. package/dist/assets/{SettingsLdapView-AdcIL_WB.js → SettingsLdapView-DvZbXhb2.js} +1 -1
  60. package/dist/assets/{SettingsLogStreamingView-DHAPBv4i.js → SettingsLogStreamingView-DT_BpBbv.js} +1 -1
  61. package/dist/assets/{SettingsPersonalView-D-sKTNF5.js → SettingsPersonalView-D0VCYPEd.js} +1 -1
  62. package/dist/assets/{SettingsSourceControl-D_jgIQPN.js → SettingsSourceControl-CatnTfFf.js} +1 -1
  63. package/dist/assets/{SettingsSso-DpxORkrt.js → SettingsSso-CxWN7WTJ.js} +1 -1
  64. package/dist/assets/{SettingsUsageAndPlan-DWu4RW1N.js → SettingsUsageAndPlan-BMsLzUeh.js} +1 -1
  65. package/dist/assets/{SettingsUsersView-BuZbf1jq.css → SettingsUsersView-B81cHl3f.css} +9 -6
  66. package/dist/assets/{SettingsUsersView-r6-ZO8CO.js → SettingsUsersView-hbKTH9np.js} +12 -10
  67. package/dist/assets/{SettingsView-DoZ4920P.js → SettingsView-C3FWxmaD.js} +1 -1
  68. package/dist/assets/{SetupView-Ca70rhsh.js → SetupView-DdjBoiKa.js} +3 -3
  69. package/dist/assets/{SetupWorkflowCredentialsButton-ujybntOa.js → SetupWorkflowCredentialsButton-BX8a8Tuq.js} +1 -1
  70. package/dist/assets/{SetupWorkflowFromTemplateView-KE6NTkHC.js → SetupWorkflowFromTemplateView-D9BTRma8.js} +3 -3
  71. package/dist/assets/{SigninView-_rmKLSpx.js → SigninView-D8iOgwLO.js} +3 -3
  72. package/dist/assets/{SignoutView-DYPGyBsZ.js → SignoutView-DXt0Sdaq.js} +1 -1
  73. package/dist/assets/{SignupView-BDSpYIB0.js → SignupView-D6pEOFGY.js} +3 -3
  74. package/dist/assets/{TableBase-Bz6zRvAL.js → TableBase-6tpR_KYY.js} +1 -1
  75. package/dist/assets/{Tags-Doq3WsWA.js → Tags-3OtmQZg1.js} +1 -1
  76. package/dist/assets/{TemplateDetails-BzDS-0Fd.js → TemplateDetails-Bvec_Syb.js} +2 -2
  77. package/dist/assets/{TemplateList-D_XBHKQu.js → TemplateList-B0_W0uvx.js} +1 -1
  78. package/dist/assets/{TemplatesCollectionView-BvnC5QZ9.js → TemplatesCollectionView-ChXD8R-e.js} +6 -6
  79. package/dist/assets/{TemplatesSearchView-CCsnhiD3.js → TemplatesSearchView-B_cMlFlv.js} +3 -3
  80. package/dist/assets/{TemplatesView-DbW9D41Q.js → TemplatesView-CziYbcJq.js} +1 -1
  81. package/dist/assets/{TemplatesWorkflowView-CVFtBBcd.js → TemplatesWorkflowView-Hb4zWBu5.js} +6 -6
  82. package/dist/assets/{TriggerPanel-CP3_UsCW.js → TriggerPanel-BsmQ9v2s.js} +4 -112
  83. package/dist/assets/{VariablesView-DIZkSQZ3.js → VariablesView-WOzl2JBK.js} +5 -5
  84. package/dist/assets/{WorkerView-DgXLi4d9.js → WorkerView-C0gI6gbP.js} +5 -5
  85. package/dist/assets/{WorkflowActivator-f0lJXePV.js → WorkflowActivator-B96_pQnb.js} +2 -2
  86. package/dist/assets/{WorkflowExecutionsInfoAccordion-BFSae6PE.js → WorkflowExecutionsInfoAccordion-DFCLkh95.js} +2 -2
  87. package/dist/assets/{WorkflowExecutionsLandingPage-Bb104kSO.js → WorkflowExecutionsLandingPage-B3aM2Zsk.js} +3 -3
  88. package/dist/assets/{WorkflowExecutionsPreview-Do5Rp-8m.js → WorkflowExecutionsPreview-D6oMyJtk.js} +9 -7
  89. package/dist/assets/{WorkflowExecutionsView-BSv7OYhx.js → WorkflowExecutionsView-BiKDjD1D.js} +8 -8
  90. package/dist/assets/{WorkflowHistory-CsEfwZK8.js → WorkflowHistory-CgxAK62K.js} +3 -3
  91. package/dist/assets/{WorkflowOnboardingView-BOvx7CPi.js → WorkflowOnboardingView-tKN781CD.js} +1 -1
  92. package/dist/assets/{WorkflowPreview-BQ_GLS2J.js → WorkflowPreview-CDgvgZcr.js} +3 -1
  93. package/dist/assets/{WorkflowsView-DYxrTukw.js → WorkflowsView-zxJZKrLk.js} +10 -10
  94. package/dist/assets/{chartjs.utils-D8ESC4_p.js → chartjs.utils-EXdTT15A.js} +2 -2
  95. package/dist/assets/{en-C2EOIYih.js → en-FjyeYndD.js} +5 -0
  96. package/dist/assets/{global-link-actions-BIVeUMGo.js → global-link-actions-NNtNk_7A.js} +1 -1
  97. package/dist/assets/{import-curl-CjhdjoGU.js → import-curl-DcVVML3m.js} +1 -1
  98. package/dist/assets/{index-B3p3789J.js → index-BEC9W_3K.js} +3051 -2886
  99. package/dist/assets/{index-COleXxZf.css → index-C6LoGNAx.css} +84 -217
  100. package/dist/assets/{index-DAODXvFs.js → index-CFNl0R-J.js} +1 -1
  101. package/dist/assets/{pickBy-CaeaG_7P.js → pickBy-BXP1QU1C.js} +1 -1
  102. package/dist/assets/{templateActions-Ct4VGqHx.js → templateActions-DWb-SuCl.js} +1 -1
  103. package/dist/assets/{useBeforeUnload-Yj83KQFp.js → useBeforeUnload-uH0nIAM3.js} +1 -1
  104. package/dist/assets/{useExecutionDebugging-wUQ9K2sh.js → useExecutionDebugging-bE32iQtx.js} +1 -1
  105. package/dist/assets/{useExecutionHelpers-i07QEXws.js → useExecutionHelpers-CXZC4OGe.js} +1 -1
  106. package/dist/assets/{useImportCurlCommand-Bs8VOC2z.js → useImportCurlCommand-Bxi0W0ub.js} +2 -2
  107. package/dist/assets/{useKeybindings-ul7syjnB.js → useKeybindings-D5pwrTFM.js} +72 -2
  108. package/dist/assets/{useProjectPages-DHCwu3nX.js → useProjectPages-BKkEKuqG.js} +1 -1
  109. package/dist/assets/{usePushConnection-Iyy-883l.js → usePushConnection-TyXi_EKD.js} +2 -2
  110. package/dist/assets/{useWorkflowActivate-DpHXxGAq.js → useWorkflowActivate-BRxfn_zV.js} +1 -1
  111. package/dist/index.html +2 -2
  112. package/eslint.config.mjs +1 -1
  113. package/package.json +1 -1
  114. package/dist/assets/CollectionParameter-DvyRKBx0.js +0 -4
  115. package/dist/assets/RunDataParsedAiContent-BILLIvVH.js +0 -148
@@ -1,9 +1,9 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunDataJsonActions-C5tGgl2w.js","assets/index-B3p3789J.js","assets/index-COleXxZf.css","assets/_commonjs-dynamic-modules-TGKdzP3c.js","assets/RunDataJsonActions-B2jW3_UG.css"])))=>i.map(i=>d[i]);
2
- import { d as defineComponent, aM as useNDVStore, r as ref, cY as useElementSize, x as computed, gk as executionDataToJson, h as createElementBlock, g as openBlock, e as createBlock, i as createVNode, w as withCtx, f as createCommentVNode, l as unref, et as defineAsyncComponent, dT as Suspense, hI as TextWithHighlights, n as normalizeClass, hJ as MappingPill, hl as Draggable, aI as __vitePreload, hK as shorten, hM as getMappedExpression, bf as useExternalHooks, ay as useTelemetry, hN as isString, hO as nonExistingJsonPath, _ as _export_sfc } from "./index-B3p3789J.js";
3
- import { a as VueJsonPretty } from "./RunData-CctCvWsu.js";
4
- import "./FileSaver.min-BemkeU_7.js";
5
- import "./useKeybindings-ul7syjnB.js";
6
- import "./useExecutionHelpers-i07QEXws.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RunDataJsonActions-BmrxonyU.js","assets/index-BEC9W_3K.js","assets/index-C6LoGNAx.css","assets/_commonjs-dynamic-modules-TGKdzP3c.js","assets/RunDataJsonActions-B2jW3_UG.css"])))=>i.map(i=>d[i]);
2
+ import { d as defineComponent, aM as useNDVStore, r as ref, cW as useElementSize, x as computed, gB as executionDataToJson, h as createElementBlock, g as openBlock, e as createBlock, i as createVNode, w as withCtx, f as createCommentVNode, l as unref, eK as defineAsyncComponent, dU as Suspense, hY as __unplugin_components_0, n as normalizeClass, hZ as MappingPill, hB as Draggable, aI as __vitePreload, h_ as shorten, i0 as getMappedExpression, bd as useExternalHooks, ay as useTelemetry, i1 as isString, i2 as nonExistingJsonPath, _ as _export_sfc } from "./index-BEC9W_3K.js";
3
+ import { a as VueJsonPretty } from "./RunData-CY2AnQ-5.js";
4
+ import "./FileSaver.min-BRpMoNCX.js";
5
+ import "./useKeybindings-D5pwrTFM.js";
6
+ import "./useExecutionHelpers-CXZC4OGe.js";
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
8
  __name: "RunDataJson",
9
9
  props: {
@@ -22,7 +22,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
22
22
  },
23
23
  setup(__props) {
24
24
  const LazyRunDataJsonActions = defineAsyncComponent(
25
- async () => await __vitePreload(() => import("./RunDataJsonActions-C5tGgl2w.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0)
25
+ async () => await __vitePreload(() => import("./RunDataJsonActions-BmrxonyU.js"), true ? __vite__mapDeps([0,1,2,3,4]) : void 0)
26
26
  );
27
27
  const props = __props;
28
28
  const ndvStore = useNDVStore();
@@ -146,7 +146,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
146
146
  "onUpdate:selectedValue": _cache[0] || (_cache[0] = ($event) => selectedJsonPath.value = $event)
147
147
  }, {
148
148
  renderNodeKey: withCtx(({ node }) => [
149
- createVNode(TextWithHighlights, {
149
+ createVNode(__unplugin_components_0, {
150
150
  content: formatKey(node.key),
151
151
  search: _ctx.search,
152
152
  "data-target": "mappable",
@@ -161,7 +161,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
161
161
  }, null, 8, ["content", "search", "data-value", "data-name", "data-path", "data-depth", "class"])
162
162
  ]),
163
163
  renderNodeValue: withCtx(({ node }) => [
164
- createVNode(TextWithHighlights, {
164
+ createVNode(__unplugin_components_0, {
165
165
  content: formatValue(node.content),
166
166
  search: _ctx.search,
167
167
  "data-target": "mappable",
@@ -1,4 +1,4 @@
1
- import { g5 as commonjsGlobal, bL as getDefaultExportFromCjs, d as defineComponent, hO as nonExistingJsonPath, bW as inject, c5 as PiPWindowSymbol, x as computed, aM as useNDVStore, a4 as useWorkflowsStore, c4 as useClipboard, bD as useNodeHelpers, bB as usePinnedData, a as useToast, a5 as useRoute, h as createElementBlock, g as openBlock, e as createBlock, l as unref, c as useI18n, a0 as _sfc_main$1, w as withCtx, j as createBaseVNode, i as createVNode, A as ElDropdownMenu, B as ElDropdownItem, k as createTextVNode, t as toDisplayString, E as ElDropdown, n as normalizeClass, ay as useTelemetry, gC as clearJsonKey, gk as executionDataToJson, iv as convertPath, _ as _export_sfc } from "./index-B3p3789J.js";
1
+ import { gm as commonjsGlobal, bJ as getDefaultExportFromCjs, d as defineComponent, i2 as nonExistingJsonPath, bU as inject, c3 as PiPWindowSymbol, x as computed, aM as useNDVStore, a4 as useWorkflowsStore, c2 as useClipboard, bB as useNodeHelpers, bz as usePinnedData, a as useToast, a5 as useRoute, h as createElementBlock, g as openBlock, e as createBlock, l as unref, c as useI18n, a0 as _sfc_main$1, w as withCtx, j as createBaseVNode, i as createVNode, A as ElDropdownMenu, B as ElDropdownItem, k as createTextVNode, t as toDisplayString, E as ElDropdown, n as normalizeClass, ay as useTelemetry, gS as clearJsonKey, gB as executionDataToJson, iP as convertPath, _ as _export_sfc } from "./index-BEC9W_3K.js";
2
2
  import { c as commonjsRequire } from "./_commonjs-dynamic-modules-TGKdzP3c.js";
3
3
  var jsonpath = { exports: {} };
4
4
  /*! jsonpath 1.1.1 */
@@ -0,0 +1,298 @@
1
+ import { i3 as requireUtils, bm as emptyTokenUsageData, bl as addTokenUsageData, i4 as libExports, i5 as splitTextBySearch, d as defineComponent, c2 as useClipboard, a as useToast, x as computed, h as createElementBlock, g as openBlock, n as normalizeClass, F as Fragment, y as renderList, e as createBlock, f as createCommentVNode, l as unref, hY as __unplugin_components_0, i as createVNode, a0 as _sfc_main$1, c as useI18n, _ as _export_sfc } from "./index-BEC9W_3K.js";
2
+ import { V as VueMarkdown, H as HighlightJS } from "./RunData-CY2AnQ-5.js";
3
+ var utilsExports = requireUtils();
4
+ function createNode(parent, nodeName, currentDepth, runIndex, r, children = []) {
5
+ return {
6
+ parent,
7
+ node: nodeName,
8
+ id: `${nodeName}:${runIndex}`,
9
+ depth: currentDepth,
10
+ startTime: r?.data?.metadata?.startTime ?? 0,
11
+ runIndex,
12
+ children,
13
+ consumedTokens: getConsumedTokens(r?.data)
14
+ };
15
+ }
16
+ function getTreeNodeData(nodeName, workflow, aiData, runIndex) {
17
+ return getTreeNodeDataRec(void 0, nodeName, 0, workflow, aiData, runIndex);
18
+ }
19
+ function getTreeNodeDataRec(parent, nodeName, currentDepth, workflow, aiData, runIndex) {
20
+ const connections = workflow.connectionsByDestinationNode[nodeName];
21
+ const resultData = aiData?.filter((data) => data.node === nodeName && runIndex === data.runIndex) ?? [];
22
+ if (!connections) {
23
+ return resultData.map((d) => createNode(parent, nodeName, currentDepth, d.runIndex, d));
24
+ }
25
+ const filteredAiData = aiData?.filter(({ data }) => {
26
+ if (!data?.source || data.source.every((source) => source === null)) {
27
+ return true;
28
+ }
29
+ return data.source.some(
30
+ (source) => source?.previousNode === nodeName && source.previousNodeRun === runIndex
31
+ );
32
+ });
33
+ const connectedSubNodes = workflow.getParentNodes(nodeName, "ALL_NON_MAIN", 1);
34
+ const treeNode = createNode(parent, nodeName, currentDepth, runIndex);
35
+ const children = (filteredAiData ?? []).flatMap(
36
+ (data) => connectedSubNodes.includes(data.node) ? getTreeNodeDataRec(treeNode, data.node, currentDepth + 1, workflow, aiData, data.runIndex) : []
37
+ );
38
+ treeNode.children = children;
39
+ if (resultData.length) {
40
+ return resultData.map(
41
+ (r) => createNode(parent, nodeName, currentDepth, r.runIndex, r, children)
42
+ );
43
+ }
44
+ return [treeNode];
45
+ }
46
+ function createAiData(nodeName, workflow, getWorkflowResultDataByNodeName) {
47
+ return workflow.getParentNodes(nodeName, "ALL_NON_MAIN").flatMap(
48
+ (node) => (getWorkflowResultDataByNodeName(node) ?? []).map((task, index) => ({ node, task, index }))
49
+ ).sort((a, b) => {
50
+ if (a.task.executionIndex !== void 0 && b.task.executionIndex !== void 0) {
51
+ return a.task.executionIndex - b.task.executionIndex;
52
+ }
53
+ const aTime = a.task.startTime ?? 0;
54
+ const bTime = b.task.startTime ?? 0;
55
+ return aTime - bTime;
56
+ }).map(({ node, task, index }) => ({
57
+ data: getReferencedData(task, false)[0],
58
+ node,
59
+ runIndex: index
60
+ }));
61
+ }
62
+ function getReferencedData(taskData, withInput, withOutput) {
63
+ if (!taskData) {
64
+ return [];
65
+ }
66
+ const returnData = [];
67
+ function addFunction(data, inOut) {
68
+ if (!data) {
69
+ return;
70
+ }
71
+ Object.keys(data).map((type) => {
72
+ returnData.push({
73
+ data: data[type][0],
74
+ inOut,
75
+ type,
76
+ // Include source information in AI content to track which node triggered the execution
77
+ // This enables filtering in the UI to show only relevant executions
78
+ source: taskData.source,
79
+ metadata: {
80
+ executionTime: taskData.executionTime,
81
+ startTime: taskData.startTime,
82
+ subExecution: taskData.metadata?.subExecution
83
+ }
84
+ });
85
+ });
86
+ }
87
+ if (withInput) {
88
+ addFunction(taskData.inputOverride, "input");
89
+ }
90
+ {
91
+ addFunction(taskData.data, "output");
92
+ }
93
+ return returnData;
94
+ }
95
+ function getConsumedTokens(outputRun) {
96
+ if (!outputRun?.data) {
97
+ return emptyTokenUsageData;
98
+ }
99
+ const tokenUsage = outputRun.data.reduce(
100
+ (acc, curr) => {
101
+ const tokenUsageData = curr.json?.tokenUsage ?? curr.json?.tokenUsageEstimate;
102
+ if (!tokenUsageData) return acc;
103
+ return addTokenUsageData(acc, {
104
+ ...tokenUsageData,
105
+ isEstimate: !!curr.json.tokenUsageEstimate
106
+ });
107
+ },
108
+ emptyTokenUsageData
109
+ );
110
+ return tokenUsage;
111
+ }
112
+ function createHtmlFragmentWithSearchHighlight(text, search) {
113
+ const escaped = libExports.escapeHtml(text);
114
+ return search ? splitTextBySearch(escaped, search).map((part) => part.isMatched ? `<mark>${part.content}</mark>` : part.content).join("") : escaped;
115
+ }
116
+ function createSearchHighlightPlugin(search) {
117
+ return (md) => {
118
+ md.renderer.rules.text = (tokens, idx) => createHtmlFragmentWithSearchHighlight(tokens[idx].content, search);
119
+ md.renderer.rules.code_inline = (tokens, idx, _, __, slf) => `<code${slf.renderAttrs(tokens[idx])}>${createHtmlFragmentWithSearchHighlight(tokens[idx].content, search)}</code>`;
120
+ md.renderer.rules.code_block = (tokens, idx, _, __, slf) => `<pre${slf.renderAttrs(tokens[idx])}><code>${createHtmlFragmentWithSearchHighlight(tokens[idx].content, search)}</code></pre>
121
+ `;
122
+ md.renderer.rules.fence = (tokens, idx, options, _, slf) => {
123
+ const token = tokens[idx];
124
+ const info = token.info ? utilsExports.unescapeAll(token.info).trim() : "";
125
+ let langName = "";
126
+ let langAttrs = "";
127
+ if (info) {
128
+ const arr = info.split(/(\s+)/g);
129
+ langName = arr[0];
130
+ langAttrs = arr.slice(2).join("");
131
+ }
132
+ const highlighted = options.highlight?.(token.content, langName, langAttrs) ?? createHtmlFragmentWithSearchHighlight(token.content, search);
133
+ if (highlighted.indexOf("<pre") === 0) {
134
+ return highlighted + "\n";
135
+ }
136
+ return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>
137
+ `;
138
+ };
139
+ };
140
+ }
141
+ const _hoisted_1 = ["data-content-type"];
142
+ const _sfc_main = /* @__PURE__ */ defineComponent({
143
+ __name: "RunDataParsedAiContent",
144
+ props: {
145
+ content: {},
146
+ compact: { type: Boolean, default: false },
147
+ search: {},
148
+ renderType: {}
149
+ },
150
+ setup(__props) {
151
+ const i18n = useI18n();
152
+ const clipboard = useClipboard();
153
+ const { showMessage } = useToast();
154
+ const vueMarkdownPlugins = computed(() => [createSearchHighlightPlugin(__props.search)]);
155
+ function isJsonString(text) {
156
+ try {
157
+ JSON.parse(text);
158
+ return true;
159
+ } catch (e) {
160
+ return false;
161
+ }
162
+ }
163
+ const markdownOptions = {
164
+ highlight(str, lang) {
165
+ if (lang && HighlightJS.getLanguage(lang)) {
166
+ try {
167
+ return HighlightJS.highlight(str, { language: lang }).value;
168
+ } catch {
169
+ }
170
+ }
171
+ return void 0;
172
+ }
173
+ };
174
+ function isMarkdown(jsonMarkdown) {
175
+ if (typeof jsonMarkdown !== "string") return false;
176
+ const markdownPatterns = [
177
+ /^# .+/gm,
178
+ // headers
179
+ /\*{1,2}.+\*{1,2}/g,
180
+ // emphasis and strong
181
+ /\[.+\]\(.+\)/g,
182
+ // links
183
+ /```[\s\S]+```/g
184
+ // code blocks
185
+ ];
186
+ return markdownPatterns.some((pattern) => pattern.test(jsonMarkdown));
187
+ }
188
+ function formatToJsonMarkdown(data) {
189
+ return "```json\n" + data + "\n```";
190
+ }
191
+ function jsonToMarkdown(data) {
192
+ if (isMarkdown(data)) return data;
193
+ if (Array.isArray(data) && data.length && typeof data[0] !== "number") {
194
+ const markdownArray = data.map((item) => jsonToMarkdown(item));
195
+ return markdownArray.join("\n\n").trim();
196
+ }
197
+ if (typeof data === "string") {
198
+ if (isJsonString(data)) {
199
+ return formatToJsonMarkdown(data);
200
+ }
201
+ return data;
202
+ }
203
+ return formatToJsonMarkdown(JSON.stringify(data, null, 2));
204
+ }
205
+ function onCopyToClipboard(object) {
206
+ try {
207
+ void clipboard.copy(JSON.stringify(object, void 0, 2));
208
+ showMessage({
209
+ title: i18n.baseText("generic.copiedToClipboard"),
210
+ type: "success"
211
+ });
212
+ } catch {
213
+ }
214
+ }
215
+ return (_ctx, _cache) => {
216
+ const _component_TextWithHighlights = __unplugin_components_0;
217
+ return openBlock(), createElementBlock("div", {
218
+ class: normalizeClass([_ctx.$style.component, _ctx.compact ? _ctx.$style.compact : ""])
219
+ }, [
220
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.content, ({ parsedContent, raw }, index) => {
221
+ return openBlock(), createElementBlock("div", {
222
+ key: index,
223
+ class: normalizeClass(_ctx.$style.contentText),
224
+ "data-content-type": parsedContent?.type
225
+ }, [
226
+ parsedContent && _ctx.renderType === "rendered" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
227
+ parsedContent.type === "json" ? (openBlock(), createBlock(unref(VueMarkdown), {
228
+ key: 0,
229
+ source: jsonToMarkdown(parsedContent.data),
230
+ class: normalizeClass(_ctx.$style.markdown),
231
+ options: markdownOptions,
232
+ plugins: vueMarkdownPlugins.value
233
+ }, null, 8, ["source", "class", "plugins"])) : parsedContent.type === "markdown" ? (openBlock(), createBlock(unref(VueMarkdown), {
234
+ key: 1,
235
+ source: parsedContent.data,
236
+ class: normalizeClass(_ctx.$style.markdown),
237
+ options: markdownOptions,
238
+ plugins: vueMarkdownPlugins.value
239
+ }, null, 8, ["source", "class", "plugins"])) : parsedContent.type === "text" ? (openBlock(), createBlock(_component_TextWithHighlights, {
240
+ key: 2,
241
+ class: normalizeClass(_ctx.$style.runText),
242
+ content: String(parsedContent.data),
243
+ search: _ctx.search
244
+ }, null, 8, ["class", "content", "search"])) : createCommentVNode("", true)
245
+ ], 64)) : (openBlock(), createElementBlock("div", {
246
+ key: 1,
247
+ class: normalizeClass(_ctx.$style.rawContent)
248
+ }, [
249
+ createVNode(unref(_sfc_main$1), {
250
+ size: "small",
251
+ class: normalizeClass(_ctx.$style.copyToClipboard),
252
+ type: "secondary",
253
+ title: unref(i18n).baseText("nodeErrorView.copyToClipboard"),
254
+ icon: "files",
255
+ onClick: ($event) => onCopyToClipboard(raw)
256
+ }, null, 8, ["class", "title", "onClick"]),
257
+ createVNode(unref(VueMarkdown), {
258
+ source: jsonToMarkdown(raw),
259
+ class: normalizeClass(_ctx.$style.markdown),
260
+ plugins: vueMarkdownPlugins.value
261
+ }, null, 8, ["source", "class", "plugins"])
262
+ ], 2))
263
+ ], 10, _hoisted_1);
264
+ }), 128))
265
+ ], 2);
266
+ };
267
+ }
268
+ });
269
+ const runText = "_runText_1ucj0_123";
270
+ const markdown = "_markdown_1ucj0_128";
271
+ const compact = "_compact_1ucj0_151";
272
+ const copyToClipboard = "_copyToClipboard_1ucj0_159";
273
+ const rawContent = "_rawContent_1ucj0_169";
274
+ const contentText = "_contentText_1ucj0_173";
275
+ const style0 = {
276
+ runText,
277
+ markdown,
278
+ compact,
279
+ copyToClipboard,
280
+ rawContent,
281
+ contentText
282
+ };
283
+ const cssModules = {
284
+ "$style": style0
285
+ };
286
+ const RunDataAi = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
287
+ const RunDataParsedAiContent = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
288
+ __proto__: null,
289
+ default: RunDataAi
290
+ }, Symbol.toStringTag, { value: "Module" }));
291
+ export {
292
+ RunDataAi as R,
293
+ getTreeNodeData as a,
294
+ getReferencedData as b,
295
+ createAiData as c,
296
+ RunDataParsedAiContent as d,
297
+ getConsumedTokens as g
298
+ };
@@ -1,4 +1,4 @@
1
- import { d as defineComponent, S as useDebounce, r as ref, x as computed, c as useI18n, o as onMounted, c1 as onUnmounted, aa as watch, e as createBlock, g as openBlock, w as withCtx, i as createVNode, N as N8nIcon, n as normalizeClass, P as normalizeStyle, dH as N8nInput, _ as _export_sfc } from "./index-B3p3789J.js";
1
+ import { d as defineComponent, S as useDebounce, r as ref, x as computed, c as useI18n, o as onMounted, b$ as onUnmounted, aa as watch, e as createBlock, g as openBlock, w as withCtx, i as createVNode, N as N8nIcon, n as normalizeClass, P as normalizeStyle, dI as N8nInput, _ as _export_sfc } from "./index-BEC9W_3K.js";
2
2
  const COLLAPSED_WIDTH = "30px";
3
3
  const OPEN_WIDTH = "204px";
4
4
  const OPEN_MIN_WIDTH = "120px";
@@ -1,5 +1,5 @@
1
- import { d as defineComponent, ab as useCssModule, x as computed, fn as getCurrentInstance, h as createElementBlock, f as createCommentVNode, g as openBlock, F as Fragment, y as renderList, n as normalizeClass, l as unref, J as renderSlot, j as createBaseVNode, t as toDisplayString, e as createBlock, bh as createSlots, w as withCtx, D as mergeProps, _ as _export_sfc, ar as useTemplateRef, r as ref, aM as useNDVStore, a4 as useWorkflowsStore, fh as storeToRefs, o as onMounted, aa as watch, O as resolveComponent, i as createVNode, aU as withDirectives, a0 as _sfc_main$2, aV as vShow, c as useI18n, $ as N8nTooltip, k as createTextVNode, eR as InfoTip, hl as Draggable, hI as TextWithHighlights, N as N8nIcon, hJ as MappingPill, hK as shorten, hL as getPairedItemId, hM as getMappedExpression, bf as useExternalHooks, ay as useTelemetry } from "./index-B3p3789J.js";
2
- import { u as useExecutionHelpers } from "./useExecutionHelpers-i07QEXws.js";
1
+ import { d as defineComponent, ab as useCssModule, x as computed, fE as getCurrentInstance, h as createElementBlock, f as createCommentVNode, g as openBlock, F as Fragment, y as renderList, n as normalizeClass, l as unref, J as renderSlot, j as createBaseVNode, t as toDisplayString, e as createBlock, bf as createSlots, w as withCtx, D as mergeProps, _ as _export_sfc, ar as useTemplateRef, r as ref, aM as useNDVStore, a4 as useWorkflowsStore, fy as storeToRefs, o as onMounted, aa as watch, O as resolveComponent, i as createVNode, aS as withDirectives, a0 as _sfc_main$2, aT as vShow, c as useI18n, $ as N8nTooltip, k as createTextVNode, f6 as InfoTip, hB as Draggable, hY as __unplugin_components_0, N as N8nIcon, hZ as MappingPill, h_ as shorten, h$ as getPairedItemId, i0 as getMappedExpression, bd as useExternalHooks, ay as useTelemetry } from "./index-BEC9W_3K.js";
2
+ import { u as useExecutionHelpers } from "./useExecutionHelpers-CXZC4OGe.js";
3
3
  const _hoisted_1$1 = {
4
4
  key: 0,
5
5
  class: "n8n-tree"
@@ -150,6 +150,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
150
150
  const draggedColumn = ref(false);
151
151
  const draggingPath = ref(null);
152
152
  const hoveringPath = ref(null);
153
+ const hoveringColumnIndex = ref(-1);
153
154
  const activeRow = ref(null);
154
155
  const columnLimit = ref(MAX_COLUMNS_LIMIT);
155
156
  const columnLimitExceeded = ref(false);
@@ -224,10 +225,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
224
225
  }
225
226
  function onMouseEnterCell(e) {
226
227
  const target = e.target;
227
- if (target && props.mappingEnabled) {
228
- const col = target.dataset.col;
229
- if (col && !isNaN(parseInt(col, 10))) {
230
- activeColumn.value = parseInt(col, 10);
228
+ const col = target.dataset.col;
229
+ const parsedCol = col ? parseInt(col, 10) : Number.NaN;
230
+ if (!isNaN(parsedCol)) {
231
+ hoveringColumnIndex.value = parsedCol;
232
+ if (target && props.mappingEnabled) {
233
+ activeColumn.value = parsedCol;
231
234
  }
232
235
  }
233
236
  if (target) {
@@ -242,6 +245,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
242
245
  activeColumn.value = -1;
243
246
  activeRow.value = null;
244
247
  emit("activeRowChanged", null);
248
+ hoveringColumnIndex.value = -1;
245
249
  }
246
250
  function onMouseEnterKey(path, colIndex) {
247
251
  hoveringPath.value = getCellExpression(path, colIndex);
@@ -574,7 +578,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
574
578
  (openBlock(true), createElementBlock(Fragment, null, renderList(tableData.value.columns || [], (column, i) => {
575
579
  return openBlock(), createElementBlock("th", {
576
580
  key: column,
577
- class: normalizeClass(collapsingColumnIndex.value === i ? _ctx.$style.isCollapsingColumn : "")
581
+ class: normalizeClass({
582
+ [_ctx.$style.isCollapsingColumn]: collapsingColumnIndex.value === i,
583
+ [_ctx.$style.isHoveredColumn]: hoveringColumnIndex.value === i
584
+ })
578
585
  }, [
579
586
  createVNode(unref(N8nTooltip), {
580
587
  placement: "bottom-start",
@@ -612,7 +619,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
612
619
  [_ctx.$style.draggingHeader]: isDragging
613
620
  })
614
621
  }, [
615
- createVNode(TextWithHighlights, {
622
+ createVNode(__unplugin_components_0, {
616
623
  content: getValueToRender(column || ""),
617
624
  search: _ctx.search
618
625
  }, null, 8, ["content", "search"]),
@@ -755,7 +762,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
755
762
  onMouseenter: onMouseEnterCell,
756
763
  onMouseleave: onMouseLeaveCell
757
764
  }, [
758
- isSimple(data) ? (openBlock(), createBlock(TextWithHighlights, {
765
+ isSimple(data) ? (openBlock(), createBlock(__unplugin_components_0, {
759
766
  key: 0,
760
767
  content: getValueToRender(data),
761
768
  search: _ctx.search,
@@ -766,7 +773,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
766
773
  value: data
767
774
  }, {
768
775
  label: withCtx(({ label, path }) => [
769
- createVNode(TextWithHighlights, {
776
+ createVNode(__unplugin_components_0, {
770
777
  "data-target": "mappable",
771
778
  class: normalizeClass({
772
779
  [_ctx.$style.hoveringKey]: _ctx.mappingEnabled && isHovering(path, index2),
@@ -784,7 +791,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
784
791
  }, null, 8, ["class", "content", "search", "data-name", "data-value", "data-depth", "onMouseenter"])
785
792
  ]),
786
793
  value: withCtx(({ value: value2 }) => [
787
- createVNode(TextWithHighlights, {
794
+ createVNode(__unplugin_components_0, {
788
795
  content: getValueToRender(value2),
789
796
  search: _ctx.search,
790
797
  class: normalizeClass({ [_ctx.$style.nestedValue]: true, [_ctx.$style.empty]: isEmpty(value2) })
@@ -808,35 +815,36 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
808
815
  };
809
816
  }
810
817
  });
811
- const dataDisplay = "_dataDisplay_zlszl_123";
812
- const compact = "_compact_zlszl_135";
813
- const table = "_table_zlszl_139";
814
- const lightHeader = "_lightHeader_zlszl_156";
815
- const tableRightMargin = "_tableRightMargin_zlszl_159";
816
- const hasCollapsingColumn = "_hasCollapsingColumn_zlszl_194";
817
- const isCollapsingColumn = "_isCollapsingColumn_zlszl_197";
818
- const nodeClass = "_nodeClass_zlszl_226";
819
- const emptyCell = "_emptyCell_zlszl_230";
820
- const header = "_header_zlszl_234";
821
- const draggableHeader = "_draggableHeader_zlszl_246";
822
- const dragButton = "_dragButton_zlszl_250";
823
- const highlight = "_highlight_zlszl_254";
824
- const draggingHeader = "_draggingHeader_zlszl_258";
825
- const activeHeader = "_activeHeader_zlszl_263";
826
- const dataKey = "_dataKey_zlszl_274";
827
- const value = "_value_zlszl_283";
828
- const nestedValue = "_nestedValue_zlszl_287 _value_zlszl_283";
829
- const mappable = "_mappable_zlszl_292";
830
- const empty = "_empty_zlszl_230";
831
- const limitColWidth = "_limitColWidth_zlszl_300";
832
- const minColWidth = "_minColWidth_zlszl_304";
833
- const hoveringKey = "_hoveringKey_zlszl_308";
834
- const draggingKey = "_draggingKey_zlszl_312";
835
- const hoveringRow = "_hoveringRow_zlszl_328";
836
- const warningTooltip = "_warningTooltip_zlszl_333";
837
- const executionLinkCell = "_executionLinkCell_zlszl_337";
838
- const executionLinkRowHeader = "_executionLinkRowHeader_zlszl_341";
839
- const collapseColumnButton = "_collapseColumnButton_zlszl_345";
818
+ const dataDisplay = "_dataDisplay_7vm96_123";
819
+ const compact = "_compact_7vm96_135";
820
+ const table = "_table_7vm96_139";
821
+ const lightHeader = "_lightHeader_7vm96_156";
822
+ const tableRightMargin = "_tableRightMargin_7vm96_159";
823
+ const hasCollapsingColumn = "_hasCollapsingColumn_7vm96_194";
824
+ const isCollapsingColumn = "_isCollapsingColumn_7vm96_197";
825
+ const nodeClass = "_nodeClass_7vm96_226";
826
+ const emptyCell = "_emptyCell_7vm96_230";
827
+ const header = "_header_7vm96_234";
828
+ const draggableHeader = "_draggableHeader_7vm96_246";
829
+ const dragButton = "_dragButton_7vm96_250";
830
+ const highlight = "_highlight_7vm96_254";
831
+ const draggingHeader = "_draggingHeader_7vm96_258";
832
+ const activeHeader = "_activeHeader_7vm96_263";
833
+ const dataKey = "_dataKey_7vm96_274";
834
+ const value = "_value_7vm96_283";
835
+ const nestedValue = "_nestedValue_7vm96_287 _value_7vm96_283";
836
+ const mappable = "_mappable_7vm96_292";
837
+ const empty = "_empty_7vm96_230";
838
+ const limitColWidth = "_limitColWidth_7vm96_300";
839
+ const minColWidth = "_minColWidth_7vm96_304";
840
+ const hoveringKey = "_hoveringKey_7vm96_308";
841
+ const draggingKey = "_draggingKey_7vm96_312";
842
+ const hoveringRow = "_hoveringRow_7vm96_328";
843
+ const warningTooltip = "_warningTooltip_7vm96_333";
844
+ const executionLinkCell = "_executionLinkCell_7vm96_337";
845
+ const executionLinkRowHeader = "_executionLinkRowHeader_7vm96_341";
846
+ const collapseColumnButton = "_collapseColumnButton_7vm96_345";
847
+ const isHoveredColumn = "_isHoveredColumn_7vm96_352";
840
848
  const style0 = {
841
849
  dataDisplay,
842
850
  compact,
@@ -866,7 +874,8 @@ const style0 = {
866
874
  warningTooltip,
867
875
  executionLinkCell,
868
876
  executionLinkRowHeader,
869
- collapseColumnButton
877
+ collapseColumnButton,
878
+ isHoveredColumn
870
879
  };
871
880
  const cssModules = {
872
881
  "$style": style0