@atom8n/n8n-editor-ui 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/.stylelintcache +1 -0
  2. package/README.md +59 -0
  3. package/biome.jsonc +8 -0
  4. package/build.log +55 -0
  5. package/data/node-popularity.json +3998 -0
  6. package/dist/assets/AddDataTableModal-UINkk54_.js +1555 -0
  7. package/dist/assets/AgentEditorModal-CVww87TJ.js +358 -0
  8. package/dist/assets/Alert-Dy86dyOr.js +102 -0
  9. package/dist/assets/AnimatedSpinner-DmPN4poP.js +15 -0
  10. package/dist/assets/AnnotationTagsDropdown.ee-BJ7N9lek.js +71 -0
  11. package/dist/assets/AuthView-D2LWHrMp.js +106 -0
  12. package/dist/assets/BottomMenu-CIQiK_dJ.js +532 -0
  13. package/dist/assets/CalendarDate-DgQUMbNo.js +875 -0
  14. package/dist/assets/ChangePasswordView-Z6tUkw0u.js +133 -0
  15. package/dist/assets/ChatAgentAvatar-50YBnv3N.js +67 -0
  16. package/dist/assets/ChatFile-xZxmc2nV.js +146 -0
  17. package/dist/assets/ChatLayout-CTE_5SiM.js +96 -0
  18. package/dist/assets/ChatPersonalAgentsView-BGpHk03K.js +149 -0
  19. package/dist/assets/ChatSidebar-BkVwIypC.js +528 -0
  20. package/dist/assets/ChatView-BbbdeU9x.js +1559 -0
  21. package/dist/assets/ChatWorkflowAgentsView-BtunOxlC.js +116 -0
  22. package/dist/assets/CollectionParameter-BdcPG1lu.js +52 -0
  23. package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
  24. package/dist/assets/CommunityNodeUpdateInfo-C37kca4W.js +273 -0
  25. package/dist/assets/CopyInput-DDZVu2iU.js +74 -0
  26. package/dist/assets/CredentialIcon-8YdTTFZ1.js +80 -0
  27. package/dist/assets/CredentialPicker-DWtj314o.js +293 -0
  28. package/dist/assets/CredentialSelectorModal-DTW2fKh0.js +138 -0
  29. package/dist/assets/CredentialsView-BjUchcCu.js +480 -0
  30. package/dist/assets/DataTableActions-DpAkoxg_.js +95 -0
  31. package/dist/assets/DataTableDetailsView-Coq7zdW5.js +41922 -0
  32. package/dist/assets/DataTableView-Cs-BIkzw.js +293 -0
  33. package/dist/assets/DemoFooter-Cga3jvi-.js +65 -0
  34. package/dist/assets/Draggable-vfvXl9Sp.js +105 -0
  35. package/dist/assets/EmptySharedSectionActionBox-DOXZtTCv.js +36 -0
  36. package/dist/assets/EnterpriseEdition.ee-D_rCFexM.js +15 -0
  37. package/dist/assets/EntityNotFound-3dhTRWsE.js +85 -0
  38. package/dist/assets/EntityUnAuthorised-ChJYZakE.js +66 -0
  39. package/dist/assets/ErrorView-zT9cX76a.js +61 -0
  40. package/dist/assets/EvaluationsRootView-C-OVWYnY.js +523 -0
  41. package/dist/assets/EvaluationsView-CJwJTruc.js +469 -0
  42. package/dist/assets/ExecutionsTime-DEQiyozR.js +573 -0
  43. package/dist/assets/ExecutionsView-Bd5Oh8TH.js +791 -0
  44. package/dist/assets/ExternalSecretsProviderConnectionSwitch.ee-C7Ih-uRo.js +191 -0
  45. package/dist/assets/FixedCollectionParameter-CYuTDW9t.js +496 -0
  46. package/dist/assets/ForgotMyPasswordView-Bs_L9P27.js +102 -0
  47. package/dist/assets/InsightsChartAverageRuntime-Bp3VA8_7.js +62 -0
  48. package/dist/assets/InsightsChartFailed-KPaNWoEr.js +52 -0
  49. package/dist/assets/InsightsChartFailureRate-DE6kE3FM.js +54 -0
  50. package/dist/assets/InsightsChartTimeSaved-auABNZlc.js +68 -0
  51. package/dist/assets/InsightsChartTotal-BKzYRKE7.js +56 -0
  52. package/dist/assets/InsightsDashboard-JWx4W6Db.js +473 -0
  53. package/dist/assets/InsightsPaywall-C8zLLKe8.js +63 -0
  54. package/dist/assets/InsightsSummary-cmN1lHDm.js +210 -0
  55. package/dist/assets/InsightsTableWorkflows-CqcC3IbQ.js +203 -0
  56. package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  57. package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  58. package/dist/assets/ItemsRenderer-DC8WVyMv.js +922 -0
  59. package/dist/assets/KeyboardShortcutTooltip-D8PAK5JP.js +31 -0
  60. package/dist/assets/LogsPanel-BR06u9RK.js +52 -0
  61. package/dist/assets/LogsPanel-C-_acMHp.js +2325 -0
  62. package/dist/assets/MCPConnectWorkflowsModal-3g8_iUa4.js +303 -0
  63. package/dist/assets/MainHeader-DiQc1edn.js +2153 -0
  64. package/dist/assets/MainSidebar-CoPGG5Ea.js +804 -0
  65. package/dist/assets/MigrationRuleDetail-BAxk1Pvl.js +295 -0
  66. package/dist/assets/MigrationRules-IW9lZMpE.js +285 -0
  67. package/dist/assets/Modal-CIzXlZdZ.js +204 -0
  68. package/dist/assets/ModelByIdSelectorModal-DLvBjzJO.js +115 -0
  69. package/dist/assets/NDVEmptyState-33UoX00I.js +19743 -0
  70. package/dist/assets/NodeCreation-BNzbSWSB.js +240 -0
  71. package/dist/assets/NodeCreator-BftgCKx7.js +1288 -0
  72. package/dist/assets/NodeDetailsView-CsoQCpcF.js +1075 -0
  73. package/dist/assets/NodeDetailsViewV2-C_wNQR_3.js +981 -0
  74. package/dist/assets/NodeIcon-B9VW6tX6.js +87 -0
  75. package/dist/assets/NodeSettings-ZwVip6VR.js +1872 -0
  76. package/dist/assets/NodeView-D4WUEvLB.js +2452 -0
  77. package/dist/assets/OAuthConsentView-DlrUqZbT.js +230 -0
  78. package/dist/assets/PageViewLayout-NT1KPFgy.js +12 -0
  79. package/dist/assets/ParameterInputList-sG2nz-Jo.js +38091 -0
  80. package/dist/assets/PrebuiltAgentTemplatesView-Csi5U8dc.js +154 -0
  81. package/dist/assets/ProjectBreadcrumb-C_XiY7sc.js +98 -0
  82. package/dist/assets/ProjectCardBadge-t_hs7vzx.js +209 -0
  83. package/dist/assets/ProjectHeader-Dq5Ihb26.js +549 -0
  84. package/dist/assets/ProjectIcon-DY8gGuHX.js +64 -0
  85. package/dist/assets/ProjectRoleView-Du-KTrAC.js +435 -0
  86. package/dist/assets/ProjectRolesView-DjxM_y4u.js +239 -0
  87. package/dist/assets/ProjectSettings-C6kWuV21.js +966 -0
  88. package/dist/assets/ProjectSharing-CVUgNWAY.js +262 -0
  89. package/dist/assets/ProjectVariables-CJlAo3dv.js +467 -0
  90. package/dist/assets/ProviderSettingsModal-BUFC2ZLv.js +307 -0
  91. package/dist/assets/PushConnectionTracker-DPBnGV0v.js +27 -0
  92. package/dist/assets/ResolversView-3BdkvvYA.js +209 -0
  93. package/dist/assets/ResourceFiltersDropdown-dgyXpcEX.js +159 -0
  94. package/dist/assets/ResourcesListLayout-qBLtomK6.js +631 -0
  95. package/dist/assets/RunDataHtml-BrW0OQra.js +7 -0
  96. package/dist/assets/RunDataHtml-Cleia4Cj.js +40 -0
  97. package/dist/assets/RunDataJson-uxkrhYRK.js +227 -0
  98. package/dist/assets/RunDataJsonActions-DkPk7E8d.js +5007 -0
  99. package/dist/assets/RunDataParsedAiContent-CtPRjig-.js +26 -0
  100. package/dist/assets/RunDataParsedAiContent-WAuqLQ5M.js +192 -0
  101. package/dist/assets/RunDataSearch-YBWUr93C.js +141 -0
  102. package/dist/assets/RunDataTable-DcXaBynW.js +631 -0
  103. package/dist/assets/SamlOnboarding-BTdQ_hr3.js +78 -0
  104. package/dist/assets/SaveButton-D5sQSxIk.js +89 -0
  105. package/dist/assets/SelectedItemsInfo-BHZ-NvF5.js +58 -0
  106. package/dist/assets/SettingsApiView-IfZTMXx1.js +313 -0
  107. package/dist/assets/SettingsChatHubView-gWh2X6vX.js +285 -0
  108. package/dist/assets/SettingsCommunityNodesView-D8VQtpGY.js +349 -0
  109. package/dist/assets/SettingsExternalSecrets-CpMc7mkW.js +233 -0
  110. package/dist/assets/SettingsLdapView-CU5a2MAy.js +2553 -0
  111. package/dist/assets/SettingsLogStreamingView-uojTe-oX.js +375 -0
  112. package/dist/assets/SettingsMCPView-B5Swp1C_.js +1214 -0
  113. package/dist/assets/SettingsPersonalView-Cr3aGood.js +402 -0
  114. package/dist/assets/SettingsSourceControl-DXOvFDEY.js +547 -0
  115. package/dist/assets/SettingsSso-27MfU1HV.js +1032 -0
  116. package/dist/assets/SettingsUsageAndPlan-DqIO-G46.js +419 -0
  117. package/dist/assets/SettingsUsersView-DfHB4_Kh.js +833 -0
  118. package/dist/assets/SettingsView-C4sA7Uny.js +90 -0
  119. package/dist/assets/SetupTemplateFormStep-BmiSzZin.js +258 -0
  120. package/dist/assets/SetupView-VORZ-L_u.js +112 -0
  121. package/dist/assets/SetupWorkflowCredentialsButton-DTmkOAW5.js +73 -0
  122. package/dist/assets/SetupWorkflowFromTemplateView-B9NupdJE.js +286 -0
  123. package/dist/assets/SeverityTag-CX1qTTNA.js +45 -0
  124. package/dist/assets/SigninView-D9_Pm16j.js +358 -0
  125. package/dist/assets/SignoutView-BFsjEAGz.js +19 -0
  126. package/dist/assets/SignupView-Am4ot0QZ.js +137 -0
  127. package/dist/assets/SkeletonAgentCard-C5TL-h8F.js +191 -0
  128. package/dist/assets/TagsDropdown-Bvx_Hd6Q.js +230 -0
  129. package/dist/assets/TemplateCard-CyQ1GuVz.js +105 -0
  130. package/dist/assets/TemplateDetails-CZRusTxE.js +124 -0
  131. package/dist/assets/TemplateList-DKvbwuiY.js +333 -0
  132. package/dist/assets/TemplatesCollectionView-D8dxU8By.js +184 -0
  133. package/dist/assets/TemplatesSearchView-CebC_GLs.js +1230 -0
  134. package/dist/assets/TemplatesView-025CcmIY.js +57 -0
  135. package/dist/assets/TemplatesWorkflowView-C2JfwJAn.js +170 -0
  136. package/dist/assets/TestRunDetailView-Ck78TTWO.js +395 -0
  137. package/dist/assets/TextWithHighlights-BxumwGnv.js +57 -0
  138. package/dist/assets/TimeAgo-C6EN4lCs.js +123 -0
  139. package/dist/assets/ToolsSelectorModal-8QJoUvRL.js +368 -0
  140. package/dist/assets/TriggerPanel-B6pacLkk.js +1225 -0
  141. package/dist/assets/VirtualSchema-B3zGe_8b.js +2402 -0
  142. package/dist/assets/VirtualSchema-Dkh0Cu5z.js +37 -0
  143. package/dist/assets/VueMarkdown-CQqJL9vK.js +28 -0
  144. package/dist/assets/WorkerView-Caznsljo.js +563 -0
  145. package/dist/assets/WorkflowActivationErrorMessage-CGrfPi9O.js +17 -0
  146. package/dist/assets/WorkflowActivator-BINnz0f7.js +362 -0
  147. package/dist/assets/WorkflowExecutionsInfoAccordion-Dg37yEfT.js +166 -0
  148. package/dist/assets/WorkflowExecutionsLandingPage-V2wdubhK.js +93 -0
  149. package/dist/assets/WorkflowExecutionsPreview-DdJaqYV6.js +616 -0
  150. package/dist/assets/WorkflowExecutionsView-DV8ySTfn.js +808 -0
  151. package/dist/assets/WorkflowHistory-GtaBMzIM.js +973 -0
  152. package/dist/assets/WorkflowLocation-CQ9Sq-2y.js +164 -0
  153. package/dist/assets/WorkflowOnboardingView-C49gt0Jr.js +61 -0
  154. package/dist/assets/WorkflowPreview-CXdvv4Nq.js +186 -0
  155. package/dist/assets/WorkflowTagsDropdown-QwbICWjN.js +71 -0
  156. package/dist/assets/WorkflowsView-B-MWIECO.js +3253 -0
  157. package/dist/assets/_MapCache-CcdIl4Ae.js +363 -0
  158. package/dist/assets/_baseOrderBy-N8Be_6z6.js +2989 -0
  159. package/dist/assets/_initCloneObject-viQQyT6o.js +80 -0
  160. package/dist/assets/_plugin-vue_export-helper-BwBpWJRZ.js +6 -0
  161. package/dist/assets/aiTemplatesStarterCollection.store-nL9nePkK.js +656 -0
  162. package/dist/assets/apiKeys.store-BhOFmP2j.js +51 -0
  163. package/dist/assets/assistant.store-CNywgN4S.js +518 -0
  164. package/dist/assets/auth.eventBus-CWXS0Qp7.js +5 -0
  165. package/dist/assets/banners.store-CGEcBTDn.js +195 -0
  166. package/dist/assets/builder.store-Czk2ipDE.js +31417 -0
  167. package/dist/assets/buttons.esm-yintpW2E.js +364 -0
  168. package/dist/assets/chart-CNvyywtJ.js +10958 -0
  169. package/dist/assets/chartjs.utils-BAE52Cv9.js +155 -0
  170. package/dist/assets/chat.store-290YeyrQ.js +865 -0
  171. package/dist/assets/chatPanel.store-NDaawEZL.js +118 -0
  172. package/dist/assets/chunk-6z4oVpB-.js +36 -0
  173. package/dist/assets/col-Cmt4cmuS.js +158 -0
  174. package/dist/assets/constants-C8OH4tTq.js +106256 -0
  175. package/dist/assets/constants-DMrsrpD7.js +32 -0
  176. package/dist/assets/core-B9gt_4yk.js +4 -0
  177. package/dist/assets/core-CP5FY4aX.js +1202 -0
  178. package/dist/assets/core-CRbPymLT.js +9741 -0
  179. package/dist/assets/dataTable.store-DmipQsol.js +207 -0
  180. package/dist/assets/date-picker-2IDsBs2n.js +4115 -0
  181. package/dist/assets/dateFormatter-ik4-9_9r.js +33 -0
  182. package/dist/assets/dateformat-hG8NERse.js +181 -0
  183. package/dist/assets/dialog-lMho1TD8.js +425 -0
  184. package/dist/assets/dist-Cw46Is-h.js +151 -0
  185. package/dist/assets/doppler-B__k0MeW.webp +0 -0
  186. package/dist/assets/element-icons-B-tDfklg.woff +0 -0
  187. package/dist/assets/element-icons-_lZGOqcG.ttf +0 -0
  188. package/dist/assets/empty-BuGRxzl4.js +2210 -0
  189. package/dist/assets/en-CF30SCh2.js +95 -0
  190. package/dist/assets/en-DyO2pPiC.js +2 -0
  191. package/dist/assets/es-BkUFJVtD.js +43338 -0
  192. package/dist/assets/evaluation.constants-GYAwmJnh.js +284 -0
  193. package/dist/assets/executions.store-B9uRYwgv.js +205 -0
  194. package/dist/assets/exports-Crx_gvt_.js +1799 -0
  195. package/dist/assets/externalSecrets.ee.store-BJh4a_6G.js +118 -0
  196. package/dist/assets/fileUtils-CRWqOQje.js +20 -0
  197. package/dist/assets/folders.store-yAFj-5Vl.js +235 -0
  198. package/dist/assets/get-BcEmeOxn.js +2781 -0
  199. package/dist/assets/index-SL8542zQ.js +28372 -0
  200. package/dist/assets/insights.constants-BkJCYJTL.js +55 -0
  201. package/dist/assets/insights.store-BFc3kDUo.js +61 -0
  202. package/dist/assets/insights.utils-CcLXdrrz.js +77 -0
  203. package/dist/assets/isEmpty-C3XXoHqJ.js +35216 -0
  204. package/dist/assets/languageModules-9LyndCqU.js +13862 -0
  205. package/dist/assets/logStreaming.store-IZhWe_VK.js +190 -0
  206. package/dist/assets/mcp.constants-_Jcn7fPq.js +10 -0
  207. package/dist/assets/mcp.store-B9yfcAN9.js +116 -0
  208. package/dist/assets/merge-DhuTk1HM.js +564 -0
  209. package/dist/assets/nodeCreator.store-Bpnrwp2l.js +5444 -0
  210. package/dist/assets/nodeIcon-D6X-ENYt.js +102 -0
  211. package/dist/assets/nodeTransforms-RzcOM0v2.js +42 -0
  212. package/dist/assets/orderBy-Cu9F9DU_.js +15 -0
  213. package/dist/assets/path-browserify-RUt2u7iT.js +328 -0
  214. package/dist/assets/personalizedTemplatesV3.store-BGYp0YBN.js +334 -0
  215. package/dist/assets/pickBy-UI0Jt4wC.js +18 -0
  216. package/dist/assets/preload-helper-dyVz7ck7.js +59 -0
  217. package/dist/assets/radio-CSce3UT0.js +262 -0
  218. package/dist/assets/readyToRun.store-YEMvPUqo.js +626 -0
  219. package/dist/assets/readyToRunWorkflows.store-G3srgIze.js +1319 -0
  220. package/dist/assets/retry-BgHaYzbB.js +23 -0
  221. package/dist/assets/roles.store-CRf_zJTb.js +51 -0
  222. package/dist/assets/router-DNpzz3GH.js +2631 -0
  223. package/dist/assets/sanitize-html-CbW56HUN.js +10758 -0
  224. package/dist/assets/schemaPreview.store-DUgN1yVE.js +113 -0
  225. package/dist/assets/semver-Bk6DGseV.js +1306 -0
  226. package/dist/assets/smartDecimal-DAZl4HKA.js +6 -0
  227. package/dist/assets/sortByProperty-Cn7iGKYu.js +8 -0
  228. package/dist/assets/sourceControl.eventBus-D47xXSc_.js +3 -0
  229. package/dist/assets/sqlite3-DBpDb1lf.wasm +0 -0
  230. package/dist/assets/sqlite3-opfs-async-proxy-vVtmDGHX.js +461 -0
  231. package/dist/assets/sqlite3-worker1-bundler-friendly-DLarOZDL.js +9405 -0
  232. package/dist/assets/src-jviYSG25.js +55454 -0
  233. package/dist/assets/sso.store-DyApJwhx.js +139 -0
  234. package/dist/assets/style-E3CrYFV8.css +111829 -0
  235. package/dist/assets/table-we1DjFMV.js +3944 -0
  236. package/dist/assets/templateActions-bEDSARw2.js +65 -0
  237. package/dist/assets/templateTransforms-BHWiRbtR.js +43 -0
  238. package/dist/assets/truncate-C0KYt7i3.js +4176 -0
  239. package/dist/assets/typescript.worker-CYqLvLHh.js +152048 -0
  240. package/dist/assets/uniqBy-xDyuCRP0.js +10 -0
  241. package/dist/assets/usage.store-CU5J_nGm.js +100 -0
  242. package/dist/assets/useActions-B1JckIRj.js +255 -0
  243. package/dist/assets/useBeforeUnload-DiDkvI8p.js +40 -0
  244. package/dist/assets/useCanvasMapping-BXT7rGhC.js +12570 -0
  245. package/dist/assets/useCanvasOperations-8ULLtMkY.js +1765 -0
  246. package/dist/assets/useClipboard-DvjhVHqJ.js +39 -0
  247. package/dist/assets/useCommandBar-C4tLJbKt.js +2425 -0
  248. package/dist/assets/useCredentialResolvers-BKeFGJnY.js +78 -0
  249. package/dist/assets/useCustomAgent-DpILEt5e.js +471 -0
  250. package/dist/assets/useDebounce-Br5_1ug-.js +147 -0
  251. package/dist/assets/useExecutionData-M5iKsX6z.js +23 -0
  252. package/dist/assets/useExecutionDebugging-8azMzbnd.js +191 -0
  253. package/dist/assets/useExecutionHelpers-BgRRhpBM.js +91 -0
  254. package/dist/assets/useImportCurlCommand-CKiEmX5P.js +8891 -0
  255. package/dist/assets/useIntersectionObserver-BWMwOueh.js +33 -0
  256. package/dist/assets/useKeybindings-B2jfN6rd.js +62 -0
  257. package/dist/assets/useLogsTreeExpand-sZViUfdM.js +843 -0
  258. package/dist/assets/useMcp-DoMOIfqT.js +27 -0
  259. package/dist/assets/usePageRedirectionHelper-DjkznpX6.js +51 -0
  260. package/dist/assets/usePinnedData-BhZkqttf.js +203 -0
  261. package/dist/assets/usePushConnection-DMS-F_IW.js +513 -0
  262. package/dist/assets/useRecentResources-BVORr7eM.js +118 -0
  263. package/dist/assets/useRunWorkflow-LO7ffLp9.js +950 -0
  264. package/dist/assets/useSettingsItems-BhZXwMZn.js +144 -0
  265. package/dist/assets/useTelemetryContext-V6bv4YRq.js +34 -0
  266. package/dist/assets/useWorkflowActivate-DeSmDXjI.js +152 -0
  267. package/dist/assets/useWorkflowsCache-DtcEEAIR.js +179 -0
  268. package/dist/assets/userRoleProvisioning.store-kkSIdeTo.js +33 -0
  269. package/dist/assets/utils-DI7dLldp.js +54 -0
  270. package/dist/assets/versions.store-B1z2OrLE.js +191 -0
  271. package/dist/assets/vue-CydWIhxN.js +4378 -0
  272. package/dist/assets/vue-json-pretty-CsGX66mG.js +1130 -0
  273. package/dist/assets/vue.runtime.esm-bundler-tP5dCd7J.js +7325 -0
  274. package/dist/assets/xml-B_oj6Mle.js +2060 -0
  275. package/dist/favicon.ico +0 -0
  276. package/dist/index.html +157 -0
  277. package/dist/static/base-path.js +1 -0
  278. package/dist/static/community_package_tooltip_img.png +0 -0
  279. package/dist/static/data-mapping-gif.gif +0 -0
  280. package/dist/static/form-grey.svg +1 -0
  281. package/dist/static/google-auth/disabled.dark.png +0 -0
  282. package/dist/static/google-auth/disabled.png +0 -0
  283. package/dist/static/google-auth/focus.dark.png +0 -0
  284. package/dist/static/google-auth/focus.png +0 -0
  285. package/dist/static/google-auth/normal.dark.png +0 -0
  286. package/dist/static/google-auth/normal.png +0 -0
  287. package/dist/static/google-auth/pressed.dark.png +0 -0
  288. package/dist/static/google-auth/pressed.png +0 -0
  289. package/dist/static/n8n-logo.png +0 -0
  290. package/dist/static/og_image.png +0 -0
  291. package/dist/static/open-ai.svg +1 -0
  292. package/dist/static/openChat.png +0 -0
  293. package/dist/static/posthog.init.js +41 -0
  294. package/dist/static/prefers-color-scheme.css +5 -0
  295. package/dist/static/webhook-icon.svg +1 -0
  296. package/dist/tree-sitter-bash.wasm +0 -0
  297. package/dist/tree-sitter.wasm +0 -0
  298. package/eslint.config.mjs +59 -0
  299. package/index.html +45 -0
  300. package/index.js +0 -0
  301. package/package.json +147 -0
  302. package/postcss.config.cjs +6 -0
  303. package/scripts/fetch-node-popularity.mjs +102 -0
  304. package/stylelint.config.mjs +9 -0
  305. package/tailwind.config.js +8 -0
  306. package/tsconfig.json +36 -0
  307. package/vite/i18n-locales-hmr-helpers.ts +19 -0
  308. package/vite/source-map-js-shim.ts +1 -0
  309. package/vite/vite-plugin-node-popularity.mts +32 -0
  310. package/vite.config.mts +304 -0
@@ -0,0 +1,1225 @@
1
+ import { o as __toESM } from "./chunk-6z4oVpB-.js";
2
+ import { C as computed, Cn as toDisplayString, D as createElementBlock, E as createCommentVNode, Gt as unref, It as ref, J as onBeforeUnmount, M as createVNode, P as defineComponent, T as createBlock, Z as onMounted, _ as Fragment, _t as watch, bt as withCtx, et as openBlock, h as withModifiers, it as renderList, j as createTextVNode, k as createSlots, n as Transition, p as vShow, st as resolveDirective, vn as normalizeClass, w as createBaseVNode, xt as withDirectives, zt as shallowRef } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
3
+ import { it as I18nT, rt as useI18n } from "./core-CRbPymLT.js";
4
+ import { Cn as N8nIcon_default, E as N8nPulse_default, R as N8nInfoTip_default, Sn as N8nSpinner_default, T as N8nRadioButtons_default, bn as N8nText_default, ht as N8nTooltip_default, mt as N8nLink_default, vn as N8nHeading_default, xn as N8nButton_default, z as N8nInfoAccordion_default } from "./src-jviYSG25.js";
5
+ import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BwBpWJRZ.js";
6
+ import { s as createEventBus } from "./truncate-C0KYt7i3.js";
7
+ import { Ct as parseAiContent, N as useNDVStore, Nt as waitingNodeTooltip, P as useWorkflowsStore, Pt as useNodeTypesStore, aa as useUIStore, k as useTelemetry, qn as injectWorkflowState, qr as CanvasNodeDirtiness, v as require_FileSaver_min, wi as getTriggerNodeServiceName, xt as formatTokenUsageCount, zn as useWorkflowHelpers, zr as isTriggerPanelObject } from "./builder.store-Czk2ipDE.js";
8
+ import { v as useRouter } from "./get-BcEmeOxn.js";
9
+ import { Gs as MAX_DISPLAY_DATA_SIZE_LOGS_VIEW, Ro as VIEWS, Ua as NodeConnectionTypes, hr as WEBHOOK_NODE_TYPE, un as FORM_TRIGGER_NODE_TYPE, xs as WORKFLOW_SETTINGS_MODAL_KEY, zt as CHAT_TRIGGER_NODE_TYPE } from "./constants-C8OH4tTq.js";
10
+ import { A as storeToRefs } from "./_baseOrderBy-N8Be_6z6.js";
11
+ import { r as useNodeDirtiness } from "./useRunWorkflow-LO7ffLp9.js";
12
+ import { n as useNodeType, t as usePinnedData } from "./usePinnedData-BhZkqttf.js";
13
+ import { y as require_capitalize } from "./nodeCreator.store-Bpnrwp2l.js";
14
+ import { t as NodeIcon_default } from "./NodeIcon-B9VW6tX6.js";
15
+ import { t as CopyInput_default } from "./CopyInput-DDZVu2iU.js";
16
+ import { a as NodeErrorView_default, i as ViewSubExecution_default, n as RunData_default } from "./isEmpty-C3XXoHqJ.js";
17
+ import { t as NDVEmptyState_default } from "./NDVEmptyState-33UoX00I.js";
18
+ import { n as NodeExecuteButton_default } from "./VirtualSchema-B3zGe_8b.js";
19
+ import { n as convertToDisplayDateComponents } from "./dateFormatter-ik4-9_9r.js";
20
+ import { t as useExecutionData } from "./useExecutionData-M5iKsX6z.js";
21
+ import { c as findLogEntryById, d as getConsumedTokens, n as useLogsExecutionData, o as ConsumedTokensDetails_default, r as LogsOverviewRows_default, t as useLogsTreeExpand } from "./useLogsTreeExpand-sZViUfdM.js";
22
+ import { n as getReferencedData, t as RunDataParsedAiContent_default } from "./RunDataParsedAiContent-WAuqLQ5M.js";
23
+ var _hoisted_1$3 = [
24
+ "data-node-name",
25
+ "data-node-placement",
26
+ "onClick"
27
+ ];
28
+ var FloatingNodePosition = /* @__PURE__ */ function(FloatingNodePosition$1) {
29
+ FloatingNodePosition$1["top"] = "outputSub";
30
+ FloatingNodePosition$1["right"] = "outputMain";
31
+ FloatingNodePosition$1["left"] = "inputMain";
32
+ return FloatingNodePosition$1;
33
+ }(FloatingNodePosition || {});
34
+ var NDVFloatingNodes_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
35
+ __name: "NDVFloatingNodes",
36
+ props: { rootNode: {} },
37
+ emits: ["switchSelectedNode"],
38
+ setup(__props, { expose: __expose, emit: __emit }) {
39
+ const props = __props;
40
+ const workflowsStore = useWorkflowsStore();
41
+ const nodeTypesStore = useNodeTypesStore();
42
+ const emit = __emit;
43
+ const isNDVV2 = computed(() => true);
44
+ function moveNodeDirection(direction) {
45
+ const matchedDirectionNode = connectedNodes.value[direction][0];
46
+ if (matchedDirectionNode) emit("switchSelectedNode", matchedDirectionNode.node.name);
47
+ }
48
+ function onKeyDown(e) {
49
+ if (e.shiftKey && e.altKey && (e.ctrlKey || e.metaKey)) {
50
+ const matchingDirection = {
51
+ ArrowUp: FloatingNodePosition.top,
52
+ ArrowRight: FloatingNodePosition.right,
53
+ ArrowLeft: FloatingNodePosition.left
54
+ }[e.key] || null;
55
+ if (matchingDirection) moveNodeDirection(matchingDirection);
56
+ }
57
+ }
58
+ function getINodesFromNames(names) {
59
+ return names.map((name) => {
60
+ const node = workflowsStore.getNodeByName(name);
61
+ if (node) {
62
+ const nodeType = nodeTypesStore.getNodeType(node.type);
63
+ if (nodeType) return {
64
+ node,
65
+ nodeType
66
+ };
67
+ }
68
+ return null;
69
+ }).filter((n) => n !== null);
70
+ }
71
+ const connectedNodes = computed(() => {
72
+ const workflowObject = workflowsStore.workflowObject;
73
+ const rootName = props.rootNode.name;
74
+ return {
75
+ [FloatingNodePosition.top]: getINodesFromNames(workflowObject.getChildNodes(rootName, "ALL_NON_MAIN")),
76
+ [FloatingNodePosition.right]: getINodesFromNames(workflowObject.getChildNodes(rootName, NodeConnectionTypes.Main, 1)).reverse(),
77
+ [FloatingNodePosition.left]: getINodesFromNames(workflowObject.getParentNodes(rootName, NodeConnectionTypes.Main, 1)).reverse()
78
+ };
79
+ });
80
+ const connectionGroups = [
81
+ FloatingNodePosition.top,
82
+ FloatingNodePosition.right,
83
+ FloatingNodePosition.left
84
+ ];
85
+ const tooltipPositionMapper = {
86
+ [FloatingNodePosition.top]: "bottom",
87
+ [FloatingNodePosition.right]: "left",
88
+ [FloatingNodePosition.left]: "right"
89
+ };
90
+ onMounted(() => {
91
+ document.addEventListener("keydown", onKeyDown, true);
92
+ });
93
+ onBeforeUnmount(() => {
94
+ document.removeEventListener("keydown", onKeyDown, true);
95
+ });
96
+ __expose({ moveNodeDirection });
97
+ return (_ctx, _cache) => {
98
+ return openBlock(), createElementBlock("aside", {
99
+ class: normalizeClass([_ctx.$style.floatingNodes, { [_ctx.$style.v2]: isNDVV2.value }]),
100
+ "data-test-id": "floating-nodes"
101
+ }, [(openBlock(), createElementBlock(Fragment, null, renderList(connectionGroups, (connectionGroup) => {
102
+ return createBaseVNode("ul", {
103
+ key: connectionGroup,
104
+ class: normalizeClass([_ctx.$style.nodesList, _ctx.$style[connectionGroup]])
105
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(connectedNodes.value[connectionGroup], ({ node, nodeType }) => {
106
+ return openBlock(), createElementBlock(Fragment, null, [node && nodeType ? (openBlock(), createBlock(unref(N8nTooltip_default), {
107
+ key: node.name,
108
+ placement: tooltipPositionMapper[connectionGroup],
109
+ teleported: false,
110
+ offset: isNDVV2.value ? 16 : 60
111
+ }, {
112
+ content: withCtx(() => [createTextVNode(toDisplayString(node.name), 1)]),
113
+ default: withCtx(() => [createBaseVNode("li", {
114
+ class: normalizeClass(_ctx.$style.connectedNode),
115
+ "data-test-id": "floating-node",
116
+ "data-node-name": node.name,
117
+ "data-node-placement": connectionGroup,
118
+ onClick: ($event) => emit("switchSelectedNode", node.name)
119
+ }, [createVNode(NodeIcon_default, {
120
+ "node-type": nodeType,
121
+ "node-name": node.name,
122
+ "tooltip-position": tooltipPositionMapper[connectionGroup],
123
+ size: isNDVV2.value ? 24 : 35,
124
+ circle: ""
125
+ }, null, 8, [
126
+ "node-type",
127
+ "node-name",
128
+ "tooltip-position",
129
+ "size"
130
+ ])], 10, _hoisted_1$3)]),
131
+ _: 2
132
+ }, 1032, ["placement", "offset"])) : createCommentVNode("", true)], 64);
133
+ }), 256))], 2);
134
+ }), 64))], 2);
135
+ };
136
+ }
137
+ });
138
+ var NDVFloatingNodes_vue_vue_type_style_index_0_lang_module_default = {
139
+ floatingNodes: "_floatingNodes_1bfoo_123",
140
+ nodesList: "_nodesList_1bfoo_133",
141
+ inputSub: "_inputSub_1bfoo_147",
142
+ outputSub: "_outputSub_1bfoo_147",
143
+ outputMain: "_outputMain_1bfoo_160",
144
+ inputMain: "_inputMain_1bfoo_160",
145
+ connectedNode: "_connectedNode_1bfoo_173",
146
+ v2: "_v2_1bfoo_214"
147
+ };
148
+ var NDVFloatingNodes_default = /* @__PURE__ */ __plugin_vue_export_helper_default(NDVFloatingNodes_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": NDVFloatingNodes_vue_vue_type_style_index_0_lang_module_default }]]);
149
+ var RunInfo_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
150
+ __name: "RunInfo",
151
+ props: {
152
+ taskData: {},
153
+ hasStaleData: { type: Boolean },
154
+ hasPinData: { type: Boolean }
155
+ },
156
+ setup(__props) {
157
+ const i18n = useI18n();
158
+ const props = __props;
159
+ const runTaskData = computed(() => {
160
+ return props.taskData;
161
+ });
162
+ const theme = computed(() => {
163
+ return props.taskData?.error ? "danger" : "success";
164
+ });
165
+ const runMetadata = computed(() => {
166
+ if (!runTaskData.value) return null;
167
+ const { date, time } = convertToDisplayDateComponents(runTaskData.value.startTime);
168
+ return {
169
+ executionTime: runTaskData.value.executionTime,
170
+ startTime: `${date} at ${time}`
171
+ };
172
+ });
173
+ return (_ctx, _cache) => {
174
+ const _directive_n8n_html = resolveDirective("n8n-html");
175
+ return _ctx.hasStaleData ? (openBlock(), createBlock(unref(N8nInfoTip_default), {
176
+ key: 0,
177
+ theme: "warning-light",
178
+ type: "tooltip",
179
+ "tooltip-placement": "right",
180
+ "data-test-id": "node-run-info-stale"
181
+ }, {
182
+ default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, unref(i18n).baseText(_ctx.hasPinData ? "ndv.output.staleDataWarning.pinData" : "ndv.output.staleDataWarning.regular")]])]),
183
+ _: 1
184
+ })) : runMetadata.value ? (openBlock(), createElementBlock("div", {
185
+ key: 1,
186
+ class: normalizeClass(_ctx.$style.tooltipRow)
187
+ }, [_ctx.taskData?.executionStatus !== "canceled" ? (openBlock(), createBlock(unref(N8nInfoTip_default), {
188
+ key: 0,
189
+ type: "note",
190
+ theme: theme.value,
191
+ "data-test-id": `node-run-status-${theme.value}`,
192
+ size: "large"
193
+ }, null, 8, ["theme", "data-test-id"])) : createCommentVNode("", true), createVNode(unref(N8nInfoTip_default), {
194
+ type: "tooltip",
195
+ theme: "info",
196
+ "data-test-id": `node-run-info`,
197
+ "tooltip-placement": "right"
198
+ }, {
199
+ default: withCtx(() => [createBaseVNode("div", null, [
200
+ createVNode(unref(N8nText_default), {
201
+ bold: true,
202
+ size: "small"
203
+ }, {
204
+ default: withCtx(() => [createTextVNode(toDisplayString(runTaskData.value?.error ? unref(i18n).baseText("runData.executionStatus.failed") : runTaskData.value?.executionStatus === "canceled" ? unref(i18n).baseText("runData.executionStatus.canceled") : unref(i18n).baseText("runData.executionStatus.success")), 1)]),
205
+ _: 1
206
+ }),
207
+ _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
208
+ createVNode(unref(N8nText_default), {
209
+ bold: true,
210
+ size: "small"
211
+ }, {
212
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("runData.startTime") + ":"), 1)]),
213
+ _: 1
214
+ }),
215
+ createTextVNode(" " + toDisplayString(runMetadata.value.startTime), 1),
216
+ _cache[1] || (_cache[1] = createBaseVNode("br", null, null, -1)),
217
+ createVNode(unref(N8nText_default), {
218
+ bold: true,
219
+ size: "small"
220
+ }, {
221
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("runData.executionTime") + ":"), 1)]),
222
+ _: 1
223
+ }),
224
+ createTextVNode(" " + toDisplayString(runMetadata.value.executionTime) + " " + toDisplayString(unref(i18n).baseText("runData.ms")), 1)
225
+ ])]),
226
+ _: 1
227
+ })], 2)) : createCommentVNode("", true);
228
+ };
229
+ }
230
+ });
231
+ var RunInfo_vue_vue_type_style_index_0_lang_module_default = { tooltipRow: "_tooltipRow_1uvh5_123" };
232
+ var RunInfo_default = /* @__PURE__ */ __plugin_vue_export_helper_default(RunInfo_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": RunInfo_vue_vue_type_style_index_0_lang_module_default }]]);
233
+ var import_capitalize = /* @__PURE__ */ __toESM(require_capitalize());
234
+ var import_FileSaver_min = /* @__PURE__ */ __toESM(require_FileSaver_min());
235
+ var AiRunContentBlock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
236
+ __name: "AiRunContentBlock",
237
+ props: {
238
+ runData: {},
239
+ error: {}
240
+ },
241
+ setup(__props) {
242
+ const props = __props;
243
+ const i18n = useI18n();
244
+ const isExpanded = ref(getInitialExpandedState());
245
+ const renderType = ref("rendered");
246
+ const dataSize = ref(0);
247
+ const showData = ref(false);
248
+ const dataSizeInMB = computed(() => (dataSize.value / (1024 * 1024)).toFixed(1));
249
+ const parsedRun = computed(() => parseAiContent(props.runData.data ?? [], props.runData.type));
250
+ const contentParsed = computed(() => parsedRun.value.some((item) => item.parsedContent?.parsed === true));
251
+ function getInitialExpandedState() {
252
+ return !{
253
+ input: [NodeConnectionTypes.AiDocument, NodeConnectionTypes.AiTextSplitter],
254
+ output: [
255
+ NodeConnectionTypes.AiDocument,
256
+ NodeConnectionTypes.AiEmbedding,
257
+ NodeConnectionTypes.AiTextSplitter,
258
+ NodeConnectionTypes.AiVectorStore
259
+ ]
260
+ }[props.runData.inOut].includes(props.runData.type);
261
+ }
262
+ function onBlockHeaderClick() {
263
+ isExpanded.value = !isExpanded.value;
264
+ }
265
+ function onRenderTypeChange(value) {
266
+ renderType.value = value;
267
+ }
268
+ function updateShowData() {
269
+ showData.value = dataSize.value < MAX_DISPLAY_DATA_SIZE_LOGS_VIEW;
270
+ }
271
+ function refreshDataSize() {
272
+ showData.value = false;
273
+ dataSize.value = new Blob([JSON.stringify(props.runData.data)]).size;
274
+ updateShowData();
275
+ }
276
+ function onShowDataAnyway() {
277
+ showData.value = true;
278
+ }
279
+ function downloadJsonData() {
280
+ const fileName = props.runData.inOut === "input" ? "input_data" : "output_data";
281
+ (0, import_FileSaver_min.saveAs)(new Blob([JSON.stringify(props.runData.data, null, 2)], { type: "application/json" }), `${fileName}.json`);
282
+ }
283
+ onMounted(() => {
284
+ refreshDataSize();
285
+ });
286
+ watch(() => props.runData.data, () => {
287
+ refreshDataSize();
288
+ });
289
+ return (_ctx, _cache) => {
290
+ const _directive_n8n_html = resolveDirective("n8n-html");
291
+ return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.block) }, [createBaseVNode("header", {
292
+ class: normalizeClass(_ctx.$style.blockHeader),
293
+ onClick: onBlockHeaderClick
294
+ }, [
295
+ createBaseVNode("button", { class: normalizeClass(_ctx.$style.blockToggle) }, [createVNode(unref(N8nIcon_default), {
296
+ icon: isExpanded.value ? "chevron-down" : "chevron-right",
297
+ size: "large"
298
+ }, null, 8, ["icon"])], 2),
299
+ createBaseVNode("p", { class: normalizeClass(_ctx.$style.blockTitle) }, toDisplayString(unref(import_capitalize.default)(_ctx.runData.inOut)), 3),
300
+ contentParsed.value && !_ctx.error && isExpanded.value ? (openBlock(), createBlock(unref(N8nRadioButtons_default), {
301
+ key: 0,
302
+ size: "small",
303
+ "model-value": renderType.value,
304
+ class: normalizeClass(_ctx.$style.rawSwitch),
305
+ options: [{
306
+ label: "Rendered",
307
+ value: "rendered"
308
+ }, {
309
+ label: "JSON",
310
+ value: "json"
311
+ }],
312
+ "onUpdate:modelValue": onRenderTypeChange
313
+ }, null, 8, ["model-value", "class"])) : createCommentVNode("", true)
314
+ ], 2), createBaseVNode("main", { class: normalizeClass({
315
+ [_ctx.$style.blockContent]: true,
316
+ [_ctx.$style.blockContentExpanded]: isExpanded.value
317
+ }) }, [_ctx.error ? (openBlock(), createBlock(NodeErrorView_default, {
318
+ key: 0,
319
+ error: _ctx.error,
320
+ class: normalizeClass(_ctx.$style.error),
321
+ "show-details": ""
322
+ }, null, 8, ["error", "class"])) : showData.value ? (openBlock(), createBlock(RunDataParsedAiContent_default, {
323
+ key: 1,
324
+ data: _ctx.runData.data,
325
+ type: _ctx.runData.type,
326
+ content: parsedRun.value,
327
+ "render-type": renderType.value
328
+ }, null, 8, [
329
+ "data",
330
+ "type",
331
+ "content",
332
+ "render-type"
333
+ ])) : (openBlock(), createElementBlock("section", {
334
+ key: 2,
335
+ class: normalizeClass(_ctx.$style.warning)
336
+ }, [createVNode(NDVEmptyState_default, {
337
+ title: unref(i18n).baseText("ndv.tooMuchData.title", { interpolate: { size: dataSizeInMB.value } }),
338
+ class: normalizeClass(_ctx.$style.warningState)
339
+ }, {
340
+ default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, unref(i18n).baseText("ndv.tooMuchData.message")]])]),
341
+ _: 1
342
+ }, 8, ["title", "class"]), createBaseVNode("div", { class: normalizeClass(_ctx.$style.warningActions) }, [createVNode(unref(N8nButton_default), {
343
+ outline: "",
344
+ size: "small",
345
+ label: unref(i18n).baseText("runData.downloadBinaryData"),
346
+ onClick: withModifiers(downloadJsonData, ["stop"])
347
+ }, null, 8, ["label"]), createVNode(unref(N8nButton_default), {
348
+ size: "small",
349
+ label: unref(i18n).baseText("ndv.tooMuchData.showDataAnyway"),
350
+ onClick: withModifiers(onShowDataAnyway, ["stop"])
351
+ }, null, 8, ["label"])], 2)], 2))], 2)], 2);
352
+ };
353
+ }
354
+ });
355
+ var AiRunContentBlock_vue_vue_type_style_index_0_lang_module_default = {
356
+ block: "_block_1mcvs_123",
357
+ blockContent: "_blockContent_1mcvs_130",
358
+ blockContentExpanded: "_blockContentExpanded_1mcvs_134",
359
+ rawSwitch: "_rawSwitch_1mcvs_138",
360
+ blockHeader: "_blockHeader_1mcvs_148",
361
+ blockTitle: "_blockTitle_1mcvs_161",
362
+ blockToggle: "_blockToggle_1mcvs_168",
363
+ error: "_error_1mcvs_176",
364
+ warning: "_warning_1mcvs_180",
365
+ warningState: "_warningState_1mcvs_189",
366
+ warningActions: "_warningActions_1mcvs_193"
367
+ };
368
+ var AiRunContentBlock_default = /* @__PURE__ */ __plugin_vue_export_helper_default(AiRunContentBlock_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": AiRunContentBlock_vue_vue_type_style_index_0_lang_module_default }]]);
369
+ var _hoisted_1$2 = { key: 0 };
370
+ var _hoisted_2$1 = { key: 1 };
371
+ var _hoisted_3$1 = { key: 2 };
372
+ var RunDataAiContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
373
+ __name: "RunDataAiContent",
374
+ props: { inputData: {} },
375
+ setup(__props) {
376
+ const props = __props;
377
+ const data = computed(() => props.inputData.runData ? getReferencedData(props.inputData.runData) : void 0);
378
+ const nodeTypesStore = useNodeTypesStore();
379
+ const i18n = useI18n();
380
+ const consumedTokensSum = computed(() => getConsumedTokens(outputRun.value?.data ?? []));
381
+ function extractRunMeta(run) {
382
+ const uiNode = props.inputData.node;
383
+ const nodeType = nodeTypesStore.getNodeType(uiNode?.type ?? "");
384
+ return {
385
+ startTimeMs: run.metadata.startTime,
386
+ executionTimeMs: run.metadata.executionTime,
387
+ node: nodeType,
388
+ type: run.inOut,
389
+ connectionType: run.type,
390
+ subExecution: run.metadata?.subExecution
391
+ };
392
+ }
393
+ const outputRun = computed(() => {
394
+ return data.value?.find((r) => r.inOut === "output");
395
+ });
396
+ const runMeta = computed(() => {
397
+ if (outputRun.value === void 0) return;
398
+ return extractRunMeta(outputRun.value);
399
+ });
400
+ const outputError = computed(() => props.inputData.runData?.error);
401
+ return (_ctx, _cache) => {
402
+ return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.container) }, [createBaseVNode("header", { class: normalizeClass(_ctx.$style.header) }, [runMeta.value?.node ? (openBlock(), createBlock(NodeIcon_default, {
403
+ key: 0,
404
+ class: normalizeClass(_ctx.$style.nodeIcon),
405
+ "node-type": runMeta.value.node,
406
+ size: 20
407
+ }, null, 8, ["class", "node-type"])) : createCommentVNode("", true), createBaseVNode("div", { class: normalizeClass(_ctx.$style.headerWrap) }, [createBaseVNode("p", { class: normalizeClass(_ctx.$style.title) }, toDisplayString(_ctx.inputData.node.name), 3), createBaseVNode("ul", { class: normalizeClass(_ctx.$style.meta) }, [
408
+ runMeta.value?.startTimeMs ? (openBlock(), createElementBlock("li", _hoisted_1$2, toDisplayString(runMeta.value?.executionTimeMs) + "ms", 1)) : createCommentVNode("", true),
409
+ runMeta.value?.startTimeMs ? (openBlock(), createElementBlock("li", _hoisted_2$1, [createVNode(unref(N8nTooltip_default), null, {
410
+ content: withCtx(() => [createTextVNode(toDisplayString(new Date(runMeta.value?.startTimeMs).toLocaleString()), 1)]),
411
+ default: withCtx(() => [createTextVNode(" " + toDisplayString(unref(i18n).baseText("runData.aiContentBlock.startedAt", { interpolate: { startTime: new Date(runMeta.value?.startTimeMs).toLocaleTimeString() } })), 1)]),
412
+ _: 1
413
+ })])) : createCommentVNode("", true),
414
+ runMeta.value ? (openBlock(), createElementBlock("li", _hoisted_3$1, [createVNode(ViewSubExecution_default, {
415
+ "task-metadata": runMeta.value,
416
+ "display-mode": "ai",
417
+ inline: true
418
+ }, null, 8, ["task-metadata"])])) : createCommentVNode("", true),
419
+ (consumedTokensSum.value?.totalTokens ?? 0) > 0 ? (openBlock(), createElementBlock("li", {
420
+ key: 3,
421
+ class: normalizeClass(_ctx.$style.tokensUsage)
422
+ }, [createTextVNode(toDisplayString(unref(i18n).baseText("runData.aiContentBlock.tokens", { interpolate: { count: unref(formatTokenUsageCount)(consumedTokensSum.value, "total") } })) + " ", 1), createVNode(unref(N8nInfoTip_default), {
423
+ type: "tooltip",
424
+ theme: "info-light",
425
+ "tooltip-placement": "right"
426
+ }, {
427
+ default: withCtx(() => [createVNode(ConsumedTokensDetails_default, { "consumed-tokens": consumedTokensSum.value }, null, 8, ["consumed-tokens"])]),
428
+ _: 1
429
+ })], 2)) : createCommentVNode("", true)
430
+ ], 2)], 2)], 2), (openBlock(true), createElementBlock(Fragment, null, renderList(data.value ?? [], (run, index) => {
431
+ return openBlock(), createElementBlock("main", {
432
+ key: index,
433
+ class: normalizeClass(_ctx.$style.content)
434
+ }, [createVNode(AiRunContentBlock_default, {
435
+ "run-data": run,
436
+ error: run.inOut === "output" ? outputError.value : void 0
437
+ }, null, 8, ["run-data", "error"])], 2);
438
+ }), 128))], 2);
439
+ };
440
+ }
441
+ });
442
+ var RunDataAiContent_vue_vue_type_style_index_0_lang_module_default = {
443
+ container: "_container_1ddvo_2",
444
+ nodeIcon: "_nodeIcon_1ddvo_5",
445
+ header: "_header_1ddvo_8",
446
+ headerWrap: "_headerWrap_1ddvo_14",
447
+ title: "_title_1ddvo_18",
448
+ meta: "_meta_1ddvo_25",
449
+ tokensUsage: "_tokensUsage_1ddvo_41"
450
+ };
451
+ var RunDataAiContent_default = /* @__PURE__ */ __plugin_vue_export_helper_default(RunDataAiContent_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": RunDataAiContent_vue_vue_type_style_index_0_lang_module_default }]]);
452
+ var RunDataAi_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
453
+ __name: "RunDataAi",
454
+ props: {
455
+ node: {},
456
+ runIndex: { default: 0 }
457
+ },
458
+ setup(__props) {
459
+ const i18n = useI18n();
460
+ const { entries, execution, latestNodeNameById, loadSubExecution } = useLogsExecutionData({ filter: computed(() => ({
461
+ rootNodeId: __props.node.id,
462
+ rootNodeRunIndex: __props.runIndex
463
+ })) });
464
+ const { flatLogEntries, toggleExpanded } = useLogsTreeExpand(entries, loadSubExecution);
465
+ const selected = shallowRef();
466
+ function select(entry) {
467
+ selected.value = entry?.node.id === __props.node.id ? void 0 : entry;
468
+ }
469
+ watch(entries, (latestEntries) => {
470
+ if (!selected.value || findLogEntryById(selected.value.id, latestEntries) === void 0) selected.value = latestEntries[0]?.children[0];
471
+ }, { immediate: true });
472
+ return (_ctx, _cache) => {
473
+ return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.container) }, [unref(flatLogEntries).length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(LogsOverviewRows_default, {
474
+ class: normalizeClass(_ctx.$style.tree),
475
+ "is-compact": "",
476
+ "is-read-only": "",
477
+ "flat-log-entries": unref(flatLogEntries),
478
+ "should-show-token-count-column": false,
479
+ "latest-node-info": unref(latestNodeNameById),
480
+ selected: selected.value,
481
+ "can-open-ndv": false,
482
+ execution: unref(execution),
483
+ onToggleExpanded: unref(toggleExpanded),
484
+ onSelect: select
485
+ }, null, 8, [
486
+ "class",
487
+ "flat-log-entries",
488
+ "latest-node-info",
489
+ "selected",
490
+ "execution",
491
+ "onToggleExpanded"
492
+ ]), createBaseVNode("div", { class: normalizeClass(_ctx.$style.runData) }, [selected.value ? (openBlock(), createBlock(RunDataAiContent_default, {
493
+ key: 0,
494
+ "input-data": selected.value
495
+ }, null, 8, ["input-data"])) : (openBlock(), createElementBlock("div", {
496
+ key: 1,
497
+ class: normalizeClass(_ctx.$style.empty)
498
+ }, [createVNode(unref(N8nText_default), { size: "large" }, {
499
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.ai.empty", { interpolate: { node: _ctx.node.name } })), 1)]),
500
+ _: 1
501
+ })], 2))], 2)], 64)) : (openBlock(), createElementBlock("div", {
502
+ key: 1,
503
+ class: normalizeClass(_ctx.$style.noData)
504
+ }, toDisplayString(unref(i18n).baseText("ndv.output.ai.waiting")), 3))], 2);
505
+ };
506
+ }
507
+ });
508
+ var RunDataAi_vue_vue_type_style_index_0_lang_module_default = {
509
+ noData: "_noData_owvsu_123",
510
+ empty: "_empty_owvsu_131",
511
+ tree: "_tree_owvsu_135",
512
+ runData: "_runData_owvsu_142",
513
+ container: "_container_owvsu_148"
514
+ };
515
+ var RunDataAi_default = /* @__PURE__ */ __plugin_vue_export_helper_default(RunDataAi_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": RunDataAi_vue_vue_type_style_index_0_lang_module_default }]]);
516
+ var _hoisted_1$1 = {
517
+ key: 0,
518
+ "data-test-id": "ndv-output-waiting"
519
+ };
520
+ var OutputPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
521
+ __name: "OutputPanel",
522
+ props: {
523
+ workflowObject: {},
524
+ runIndex: {},
525
+ isReadOnly: { type: Boolean },
526
+ linkedRuns: { type: Boolean },
527
+ canLinkRuns: { type: Boolean },
528
+ pushRef: {},
529
+ blockUI: {
530
+ type: Boolean,
531
+ default: false
532
+ },
533
+ isProductionExecutionPreview: {
534
+ type: Boolean,
535
+ default: false
536
+ },
537
+ isPaneActive: {
538
+ type: Boolean,
539
+ default: false
540
+ },
541
+ displayMode: {}
542
+ },
543
+ emits: [
544
+ "linkRun",
545
+ "unlinkRun",
546
+ "runChange",
547
+ "activatePane",
548
+ "tableMounted",
549
+ "itemHover",
550
+ "search",
551
+ "openSettings",
552
+ "execute",
553
+ "displayModeChange"
554
+ ],
555
+ setup(__props, { emit: __emit }) {
556
+ const OUTPUT_TYPE = {
557
+ REGULAR: "regular",
558
+ LOGS: "logs"
559
+ };
560
+ const props = __props;
561
+ const emit = __emit;
562
+ const ndvStore = useNDVStore();
563
+ const nodeTypesStore = useNodeTypesStore();
564
+ const workflowsStore = useWorkflowsStore();
565
+ const workflowState = injectWorkflowState();
566
+ const telemetry = useTelemetry();
567
+ const i18n = useI18n();
568
+ const { activeNode } = storeToRefs(ndvStore);
569
+ const { dirtinessByName } = useNodeDirtiness();
570
+ const { isSubNodeType } = useNodeType({ node: activeNode });
571
+ const pinnedData = usePinnedData(activeNode, {
572
+ runIndex: props.runIndex,
573
+ displayMode: props.displayMode
574
+ });
575
+ const outputMode = ref(OUTPUT_TYPE.REGULAR);
576
+ const outputTypes = ref([{
577
+ label: i18n.baseText("ndv.output.outType.regular"),
578
+ value: OUTPUT_TYPE.REGULAR
579
+ }, {
580
+ label: i18n.baseText("ndv.output.outType.logs"),
581
+ value: OUTPUT_TYPE.LOGS
582
+ }]);
583
+ const runDataRef = ref();
584
+ const collapsingColumnName = ref(null);
585
+ const node = computed(() => {
586
+ return ndvStore.activeNode ?? void 0;
587
+ });
588
+ const { hasNodeRun, workflowExecution, workflowRunData } = useExecutionData({ node });
589
+ const isTriggerNode = computed(() => {
590
+ return !!node.value && nodeTypesStore.isTriggerNode(node.value.type);
591
+ });
592
+ const hasAiMetadata = computed(() => {
593
+ if (isNodeRunning.value || !workflowRunData.value) return false;
594
+ if (node.value) {
595
+ const resultData = props.workflowObject.getParentNodes(node.value.name, "ALL_NON_MAIN").map(workflowsStore.getWorkflowResultDataByNodeName);
596
+ return resultData && Array.isArray(resultData) && resultData.length > 0;
597
+ }
598
+ return false;
599
+ });
600
+ const hasError = computed(() => Boolean(workflowRunData.value && node.value && workflowRunData.value[node.value.name]?.[props.runIndex]?.error));
601
+ const defaultOutputMode = computed(() => {
602
+ return hasError.value && hasAiMetadata.value ? OUTPUT_TYPE.LOGS : OUTPUT_TYPE.REGULAR;
603
+ });
604
+ const isNodeRunning = computed(() => {
605
+ return workflowRunning.value && !!node.value && workflowState.executingNode.isNodeExecuting(node.value.name);
606
+ });
607
+ const workflowRunning = computed(() => workflowsStore.isWorkflowRunning);
608
+ const runTaskData = computed(() => {
609
+ if (!node.value || workflowExecution.value === null) return null;
610
+ const runData$2 = workflowRunData.value;
611
+ if (!runData$2?.hasOwnProperty(node.value.name)) return null;
612
+ if (runData$2[node.value.name].length <= props.runIndex) return null;
613
+ return runData$2[node.value.name][props.runIndex];
614
+ });
615
+ const runsCount = computed(() => {
616
+ if (node.value === null) return 0;
617
+ const runData$2 = workflowRunData.value;
618
+ if (runData$2 === null || node.value && !runData$2.hasOwnProperty(node.value.name)) return 0;
619
+ if (node.value && runData$2[node.value.name].length) return runData$2[node.value.name].length;
620
+ return 0;
621
+ });
622
+ const staleData = computed(() => {
623
+ if (!node.value) return false;
624
+ return dirtinessByName.value[node.value.name] === CanvasNodeDirtiness.PARAMETERS_UPDATED;
625
+ });
626
+ const outputPanelEditMode = computed(() => {
627
+ return ndvStore.outputPanelEditMode;
628
+ });
629
+ const canPinData = computed(() => {
630
+ return pinnedData.isValidNodeType.value && !props.isReadOnly;
631
+ });
632
+ const allToolsWereUnusedNotice = computed(() => {
633
+ if (!node.value || runsCount.value === 0 || hasError.value) return void 0;
634
+ if (pinnedData.hasData.value) return void 0;
635
+ const toolsAvailable = props.workflowObject.getParentNodes(node.value.name, NodeConnectionTypes.AiTool, 1);
636
+ const toolsUsedInLatestRun = toolsAvailable.filter((tool) => !!workflowRunData.value?.[tool]?.[props.runIndex]);
637
+ if (toolsAvailable.length > 0 && toolsUsedInLatestRun.length === 0) return i18n.baseText("ndv.output.noToolUsedInfo");
638
+ else return;
639
+ });
640
+ const isNDVV2 = computed(() => true);
641
+ const insertTestData = () => {
642
+ if (!runDataRef.value) return;
643
+ runDataRef.value.enterEditMode({ origin: "insertTestDataLink" });
644
+ telemetry.track("User clicked ndv link", {
645
+ workflow_id: workflowsStore.workflowId,
646
+ push_ref: props.pushRef,
647
+ node_type: node.value?.type,
648
+ pane: "output",
649
+ type: "insert-test-data"
650
+ });
651
+ };
652
+ const onLinkRun = () => {
653
+ emit("linkRun");
654
+ };
655
+ const onUnlinkRun = () => {
656
+ emit("unlinkRun");
657
+ };
658
+ const openSettings = () => {
659
+ emit("openSettings");
660
+ telemetry.track("User clicked ndv link", {
661
+ node_type: node.value?.type,
662
+ workflow_id: workflowsStore.workflowId,
663
+ push_ref: props.pushRef,
664
+ pane: "output",
665
+ type: "settings"
666
+ });
667
+ };
668
+ const onRunIndexChange = (run) => {
669
+ emit("runChange", run);
670
+ };
671
+ onMounted(() => {
672
+ outputMode.value = defaultOutputMode.value;
673
+ });
674
+ watch(defaultOutputMode, (newValue, oldValue) => {
675
+ if (newValue === OUTPUT_TYPE.LOGS && oldValue === OUTPUT_TYPE.REGULAR && hasNodeRun.value) outputMode.value = defaultOutputMode.value;
676
+ });
677
+ const activatePane = () => {
678
+ emit("activatePane");
679
+ };
680
+ function handleChangeCollapsingColumn(columnName) {
681
+ collapsingColumnName.value = columnName;
682
+ }
683
+ return (_ctx, _cache) => {
684
+ const _directive_n8n_html = resolveDirective("n8n-html");
685
+ return openBlock(), createBlock(RunData_default, {
686
+ ref_key: "runDataRef",
687
+ ref: runDataRef,
688
+ class: normalizeClass([_ctx.$style.runData, { [_ctx.$style.runDataV2]: isNDVV2.value }]),
689
+ node: node.value,
690
+ "workflow-object": _ctx.workflowObject,
691
+ "run-index": _ctx.runIndex,
692
+ "linked-runs": _ctx.linkedRuns,
693
+ "can-link-runs": _ctx.canLinkRuns,
694
+ "no-data-in-branch-message": unref(i18n).baseText("ndv.output.noOutputDataInBranch"),
695
+ "is-executing": isNodeRunning.value,
696
+ "executing-message": unref(i18n).baseText("ndv.output.executing"),
697
+ "push-ref": _ctx.pushRef,
698
+ "block-u-i": _ctx.blockUI,
699
+ "is-production-execution-preview": _ctx.isProductionExecutionPreview,
700
+ "search-shortcut": _ctx.isPaneActive ? "/" : void 0,
701
+ "hide-pagination": outputMode.value === "logs",
702
+ "pane-type": "output",
703
+ "data-output-type": outputMode.value,
704
+ "callout-message": allToolsWereUnusedNotice.value,
705
+ "display-mode": _ctx.displayMode,
706
+ "disable-ai-content": true,
707
+ "collapsing-table-column-name": collapsingColumnName.value,
708
+ "data-test-id": "ndv-output-panel",
709
+ onActivatePane: activatePane,
710
+ onRunChange: onRunIndexChange,
711
+ onLinkRun,
712
+ onUnlinkRun,
713
+ onTableMounted: _cache[3] || (_cache[3] = ($event) => emit("tableMounted", $event)),
714
+ onItemHover: _cache[4] || (_cache[4] = ($event) => emit("itemHover", $event)),
715
+ onSearch: _cache[5] || (_cache[5] = ($event) => emit("search", $event)),
716
+ onDisplayModeChange: _cache[6] || (_cache[6] = ($event) => emit("displayModeChange", $event)),
717
+ onCollapsingTableColumnChanged: handleChangeCollapsingColumn
718
+ }, createSlots({
719
+ header: withCtx(() => [createBaseVNode("div", { class: normalizeClass([_ctx.$style.titleSection, { [_ctx.$style.titleSectionV2]: isNDVV2.value }]) }, [hasAiMetadata.value ? (openBlock(), createBlock(unref(N8nRadioButtons_default), {
720
+ key: 0,
721
+ modelValue: outputMode.value,
722
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => outputMode.value = $event),
723
+ "data-test-id": "ai-output-mode-select",
724
+ options: outputTypes.value
725
+ }, null, 8, ["modelValue", "options"])) : (openBlock(), createElementBlock("span", {
726
+ key: 1,
727
+ class: normalizeClass([_ctx.$style.title, { [_ctx.$style.titleV2]: isNDVV2.value }])
728
+ }, toDisplayString(unref(i18n).baseText(outputPanelEditMode.value.enabled ? "ndv.output.edit" : "ndv.output")), 3)), unref(hasNodeRun) && !unref(pinnedData).hasData.value && (runsCount.value === 1 || runsCount.value > 0 && staleData.value) ? withDirectives((openBlock(), createBlock(RunInfo_default, {
729
+ key: 2,
730
+ "task-data": runTaskData.value,
731
+ "has-stale-data": staleData.value,
732
+ "has-pin-data": unref(pinnedData).hasData.value
733
+ }, null, 8, [
734
+ "task-data",
735
+ "has-stale-data",
736
+ "has-pin-data"
737
+ ])), [[vShow, !outputPanelEditMode.value.enabled]]) : createCommentVNode("", true)], 2)]),
738
+ "node-not-run": withCtx(() => [isNDVV2.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_ctx.isReadOnly ? (openBlock(), createBlock(NDVEmptyState_default, {
739
+ key: 0,
740
+ title: unref(i18n).baseText(isTriggerNode.value ? "ndv.output.noOutputData.trigger.title" : "ndv.output.noOutputData.v2.title")
741
+ }, null, 8, ["title"])) : (openBlock(), createBlock(NDVEmptyState_default, {
742
+ key: 1,
743
+ title: unref(i18n).baseText(isTriggerNode.value ? "ndv.output.noOutputData.trigger.title" : "ndv.output.noOutputData.v2.title")
744
+ }, createSlots({
745
+ default: withCtx(() => [!canPinData.value || unref(isSubNodeType) ? (openBlock(), createBlock(unref(I18nT), {
746
+ key: 0,
747
+ tag: "span",
748
+ keypath: unref(isSubNodeType) ? "ndv.output.runNodeHintSubNode" : "ndv.output.noOutputData.v2.description",
749
+ scope: "global"
750
+ }, {
751
+ link: withCtx(() => [createVNode(NodeExecuteButton_default, {
752
+ "hide-icon": "",
753
+ transparent: "",
754
+ type: "secondary",
755
+ "node-name": unref(activeNode)?.name ?? "",
756
+ label: unref(i18n).baseText(isTriggerNode.value ? "ndv.output.noOutputData.trigger.action" : "ndv.output.noOutputData.v2.action"),
757
+ "telemetry-source": "inputs",
758
+ onExecute: _cache[1] || (_cache[1] = ($event) => emit("execute"))
759
+ }, null, 8, ["node-name", "label"]), _cache[8] || (_cache[8] = createBaseVNode("br", null, null, -1))]),
760
+ _: 1
761
+ }, 8, ["keypath"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
762
+ createVNode(NodeExecuteButton_default, {
763
+ "hide-icon": "",
764
+ transparent: "",
765
+ type: "secondary",
766
+ "node-name": unref(activeNode)?.name ?? "",
767
+ label: unref(i18n).baseText(isTriggerNode.value ? "ndv.output.noOutputData.trigger.action" : "ndv.output.noOutputData.v2.action"),
768
+ "telemetry-source": "inputs",
769
+ onExecute: _cache[2] || (_cache[2] = ($event) => emit("execute"))
770
+ }, null, 8, ["node-name", "label"]),
771
+ _cache[9] || (_cache[9] = createBaseVNode("br", null, null, -1)),
772
+ createTextVNode(" " + toDisplayString(unref(i18n).baseText("generic.or")) + " ", 1),
773
+ createVNode(unref(N8nText_default), {
774
+ tag: "a",
775
+ size: "medium",
776
+ color: "primary",
777
+ onClick: insertTestData
778
+ }, {
779
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.insertTestData")), 1)]),
780
+ _: 1
781
+ })
782
+ ], 64))]),
783
+ _: 2
784
+ }, [isTriggerNode.value ? {
785
+ name: "icon",
786
+ fn: withCtx(() => [_cache[7] || (_cache[7] = createBaseVNode("svg", {
787
+ width: "16",
788
+ viewBox: "0 0 14 18",
789
+ fill: "none",
790
+ xmlns: "http://www.w3.org/2000/svg"
791
+ }, [createBaseVNode("path", {
792
+ d: "M10.9062 2.40625L8.5 8.03125H12C12.4062 8.03125 12.7812 8.28125 12.9375 8.65625C13.0625 9.0625 12.9688 9.5 12.6562 9.78125L4.65625 16.7812C4.28125 17.0625 3.78125 17.0938 3.40625 16.8125C3.03125 16.5625 2.875 16.0625 3.0625 15.625L5.46875 10H2C1.5625 10 1.1875 9.75 1.0625 9.375C0.90625 8.96875 1 8.53125 1.3125 8.25L9.3125 1.25C9.6875 0.96875 10.1875 0.9375 10.5625 1.21875C10.9375 1.46875 11.0938 1.96875 10.9062 2.40625Z",
793
+ fill: "currentColor"
794
+ })], -1))]),
795
+ key: "0"
796
+ } : {
797
+ name: "icon",
798
+ fn: withCtx(() => [createVNode(unref(N8nIcon_default), {
799
+ icon: "arrow-right-from-line",
800
+ size: "xlarge"
801
+ })]),
802
+ key: "1"
803
+ }]), 1032, ["title"]))], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [workflowRunning.value && !isTriggerNode.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [createBaseVNode("div", { class: normalizeClass(_ctx.$style.spinner) }, [createVNode(unref(N8nSpinner_default), { type: "ring" })], 2), createVNode(unref(N8nText_default), null, {
804
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.waitingToRun")), 1)]),
805
+ _: 1
806
+ })])) : createCommentVNode("", true), !workflowRunning.value ? (openBlock(), createBlock(unref(N8nText_default), {
807
+ key: 1,
808
+ "data-test-id": "ndv-output-run-node-hint"
809
+ }, {
810
+ default: withCtx(() => [unref(isSubNodeType) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHintSubNode")), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.runNodeHint")) + " ", 1), canPinData.value ? (openBlock(), createElementBlock("span", {
811
+ key: 0,
812
+ onClick: insertTestData
813
+ }, [
814
+ _cache[10] || (_cache[10] = createBaseVNode("br", null, null, -1)),
815
+ createTextVNode(" " + toDisplayString(unref(i18n).baseText("generic.or")) + " ", 1),
816
+ createVNode(unref(N8nText_default), {
817
+ tag: "a",
818
+ size: "medium",
819
+ color: "primary"
820
+ }, {
821
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.insertTestData")), 1)]),
822
+ _: 1
823
+ })
824
+ ])) : createCommentVNode("", true)], 64))]),
825
+ _: 1
826
+ })) : createCommentVNode("", true)], 64))]),
827
+ "node-waiting": withCtx(() => [createVNode(NDVEmptyState_default, {
828
+ title: unref(i18n).baseText("ndv.output.waitNodeWaiting.title"),
829
+ wide: ""
830
+ }, {
831
+ default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, unref(waitingNodeTooltip)(node.value, _ctx.workflowObject)]])]),
832
+ _: 1
833
+ }, 8, ["title"])]),
834
+ "no-output-data": withCtx(() => [createVNode(NDVEmptyState_default, { title: unref(i18n).baseText("ndv.output.noOutputData.title") }, {
835
+ default: withCtx(() => [
836
+ createTextVNode(toDisplayString(unref(i18n).baseText("ndv.output.noOutputData.message")) + " ", 1),
837
+ createBaseVNode("a", { onClick: openSettings }, toDisplayString(unref(i18n).baseText("ndv.output.noOutputData.message.settings")), 1),
838
+ createTextVNode(" " + toDisplayString(unref(i18n).baseText("ndv.output.noOutputData.message.settingsOption")), 1)
839
+ ]),
840
+ _: 1
841
+ }, 8, ["title"])]),
842
+ "recovered-artificial-output-data": withCtx(() => [createVNode(NDVEmptyState_default, { title: unref(i18n).baseText("executionDetails.executionFailed.recoveredNodeTitle") }, {
843
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("executionDetails.executionFailed.recoveredNodeMessage")), 1)]),
844
+ _: 1
845
+ }, 8, ["title"])]),
846
+ _: 2
847
+ }, [outputMode.value === "logs" && node.value ? {
848
+ name: "content",
849
+ fn: withCtx(() => [createVNode(RunDataAi_default, {
850
+ node: node.value,
851
+ "run-index": _ctx.runIndex,
852
+ "workflow-object": _ctx.workflowObject
853
+ }, null, 8, [
854
+ "node",
855
+ "run-index",
856
+ "workflow-object"
857
+ ])]),
858
+ key: "0"
859
+ } : void 0, !unref(pinnedData).hasData.value && runsCount.value > 1 ? {
860
+ name: "run-info",
861
+ fn: withCtx(() => [createVNode(RunInfo_default, { "task-data": runTaskData.value }, null, 8, ["task-data"])]),
862
+ key: "1"
863
+ } : void 0]), 1032, [
864
+ "class",
865
+ "node",
866
+ "workflow-object",
867
+ "run-index",
868
+ "linked-runs",
869
+ "can-link-runs",
870
+ "no-data-in-branch-message",
871
+ "is-executing",
872
+ "executing-message",
873
+ "push-ref",
874
+ "block-u-i",
875
+ "is-production-execution-preview",
876
+ "search-shortcut",
877
+ "hide-pagination",
878
+ "data-output-type",
879
+ "callout-message",
880
+ "display-mode",
881
+ "collapsing-table-column-name"
882
+ ]);
883
+ };
884
+ }
885
+ });
886
+ var OutputPanel_vue_vue_type_style_index_0_lang_module_default = {
887
+ runData: "_runData_w7r0e_128",
888
+ runDataV2: "_runDataV2_w7r0e_132",
889
+ outputTypeSelect: "_outputTypeSelect_w7r0e_136",
890
+ titleSection: "_titleSection_w7r0e_141",
891
+ titleSectionV2: "_titleSectionV2_w7r0e_149",
892
+ title: "_title_w7r0e_141",
893
+ titleV2: "_titleV2_w7r0e_161",
894
+ noOutputData: "_noOutputData_w7r0e_166",
895
+ link: "_link_w7r0e_176",
896
+ spinner: "_spinner_w7r0e_183"
897
+ };
898
+ var OutputPanel_default = /* @__PURE__ */ __plugin_vue_export_helper_default(OutputPanel_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": OutputPanel_vue_vue_type_style_index_0_lang_module_default }]]);
899
+ var _hoisted_1 = { key: "empty" };
900
+ var _hoisted_2 = {
901
+ key: "listening",
902
+ "data-test-id": "trigger-listening"
903
+ };
904
+ var _hoisted_3 = { key: 0 };
905
+ var _hoisted_4 = { key: 1 };
906
+ var _hoisted_5 = { key: 0 };
907
+ var _hoisted_6 = { key: "default" };
908
+ var _hoisted_7 = {
909
+ key: 0,
910
+ class: "mb-xl"
911
+ };
912
+ var _hoisted_8 = ["textContent"];
913
+ var TriggerPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
914
+ __name: "TriggerPanel",
915
+ props: {
916
+ nodeName: {},
917
+ pushRef: { default: "" }
918
+ },
919
+ emits: ["activate", "execute"],
920
+ setup(__props, { emit: __emit }) {
921
+ const props = __props;
922
+ const emit = __emit;
923
+ const nodesTypeStore = useNodeTypesStore();
924
+ const uiStore = useUIStore();
925
+ const workflowsStore = useWorkflowsStore();
926
+ const ndvStore = useNDVStore();
927
+ const router = useRouter();
928
+ const workflowHelpers = useWorkflowHelpers();
929
+ const i18n = useI18n();
930
+ const telemetry = useTelemetry();
931
+ const executionsHelpEventBus = createEventBus();
932
+ const help = ref(null);
933
+ const node = computed(() => workflowsStore.getNodeByName(props.nodeName));
934
+ const nodeType = computed(() => {
935
+ if (node.value) return nodesTypeStore.getNodeType(node.value.type, node.value.typeVersion);
936
+ return null;
937
+ });
938
+ const triggerPanel = computed(() => {
939
+ const panel = nodeType.value?.triggerPanel;
940
+ if (isTriggerPanelObject(panel)) return panel;
941
+ });
942
+ const hideContent = computed(() => {
943
+ const hideContent$1 = triggerPanel.value?.hideContent;
944
+ if (typeof hideContent$1 === "boolean") return hideContent$1;
945
+ if (node.value) {
946
+ const hideContentValue = workflowsStore.workflowObject.expression.getSimpleParameterValue(node.value, hideContent$1, "internal", {});
947
+ if (typeof hideContentValue === "boolean") return hideContentValue;
948
+ }
949
+ return false;
950
+ });
951
+ const hasIssues = computed(() => {
952
+ return Boolean(node.value?.issues && (node.value.issues.parameters ?? node.value.issues.credentials));
953
+ });
954
+ const serviceName = computed(() => {
955
+ if (nodeType.value) return getTriggerNodeServiceName(nodeType.value);
956
+ return "";
957
+ });
958
+ const displayChatButton = computed(() => {
959
+ return Boolean(node.value && node.value.type === "@n8n/n8n-nodes-langchain.chatTrigger" && node.value.parameters.mode !== "webhook");
960
+ });
961
+ const isWebhookNode = computed(() => {
962
+ return Boolean(node.value && node.value.type === "n8n-nodes-base.webhook");
963
+ });
964
+ const webhookHttpMethod = computed(() => {
965
+ if (!node.value || !nodeType.value?.webhooks?.length) return;
966
+ const httpMethod = workflowHelpers.getWebhookExpressionValue(nodeType.value.webhooks[0], "httpMethod", false);
967
+ if (Array.isArray(httpMethod)) return httpMethod.join(", ");
968
+ return httpMethod;
969
+ });
970
+ const webhookTestUrl = computed(() => {
971
+ if (!node.value || !nodeType.value?.webhooks?.length) return;
972
+ return workflowHelpers.getWebhookUrl(nodeType.value.webhooks[0], node.value, "test");
973
+ });
974
+ const isWebhookBasedNode = computed(() => {
975
+ return Boolean(nodeType.value?.webhooks?.length);
976
+ });
977
+ const isPollingNode = computed(() => {
978
+ return Boolean(nodeType.value?.polling);
979
+ });
980
+ const isListeningForEvents = computed(() => {
981
+ if (!node.value || node.value.disabled || !isWebhookBasedNode.value) return false;
982
+ if (!workflowsStore.executionWaitingForWebhook) return false;
983
+ const executedNode = workflowsStore.executedNode;
984
+ const isCurrentNodeExecuted = executedNode === props.nodeName;
985
+ const isChildNodeExecuted = executedNode ? workflowsStore.workflowObject.getParentNodes(executedNode).includes(props.nodeName) : false;
986
+ return !executedNode || isCurrentNodeExecuted || isChildNodeExecuted;
987
+ });
988
+ const workflowRunning = computed(() => workflowsStore.isWorkflowRunning);
989
+ const isActivelyPolling = computed(() => {
990
+ const triggeredNode = workflowsStore.executedNode;
991
+ return workflowRunning.value && isPollingNode.value && props.nodeName === triggeredNode;
992
+ });
993
+ const isWorkflowActive = computed(() => {
994
+ return workflowsStore.isWorkflowActive;
995
+ });
996
+ const listeningTitle = computed(() => {
997
+ return nodeType.value?.name === "n8n-nodes-base.formTrigger" ? i18n.baseText("ndv.trigger.webhookNode.formTrigger.listening") : i18n.baseText("ndv.trigger.webhookNode.listening");
998
+ });
999
+ const listeningHint = computed(() => {
1000
+ switch (nodeType.value?.name) {
1001
+ case CHAT_TRIGGER_NODE_TYPE: return i18n.baseText("ndv.trigger.webhookBasedNode.chatTrigger.serviceHint");
1002
+ case FORM_TRIGGER_NODE_TYPE: return i18n.baseText("ndv.trigger.webhookBasedNode.formTrigger.serviceHint");
1003
+ default: return i18n.baseText("ndv.trigger.webhookBasedNode.serviceHint", { interpolate: { service: serviceName.value } });
1004
+ }
1005
+ });
1006
+ const header$2 = computed(() => {
1007
+ if (isActivelyPolling.value) return i18n.baseText("ndv.trigger.pollingNode.fetchingEvent");
1008
+ if (triggerPanel.value?.header) return triggerPanel.value.header;
1009
+ if (isWebhookBasedNode.value) return i18n.baseText("ndv.trigger.webhookBasedNode.action", { interpolate: { name: serviceName.value } });
1010
+ return "";
1011
+ });
1012
+ const subheader = computed(() => {
1013
+ if (isActivelyPolling.value) return i18n.baseText("ndv.trigger.pollingNode.fetchingHint", { interpolate: { name: serviceName.value } });
1014
+ return "";
1015
+ });
1016
+ const executionsHelp = computed(() => {
1017
+ if (triggerPanel.value?.executionsHelp) {
1018
+ if (typeof triggerPanel.value.executionsHelp === "string") return triggerPanel.value.executionsHelp;
1019
+ if (!isWorkflowActive.value && triggerPanel.value.executionsHelp.inactive) return triggerPanel.value.executionsHelp.inactive;
1020
+ if (isWorkflowActive.value && triggerPanel.value.executionsHelp.active) return triggerPanel.value.executionsHelp.active;
1021
+ }
1022
+ if (isWebhookBasedNode.value) if (isWorkflowActive.value) return i18n.baseText("ndv.trigger.webhookBasedNode.executionsHelp.active", { interpolate: { service: serviceName.value } });
1023
+ else return i18n.baseText("ndv.trigger.webhookBasedNode.executionsHelp.inactive", { interpolate: { service: serviceName.value } });
1024
+ if (isPollingNode.value) if (isWorkflowActive.value) return i18n.baseText("ndv.trigger.pollingNode.executionsHelp.active", { interpolate: { service: serviceName.value } });
1025
+ else return i18n.baseText("ndv.trigger.pollingNode.executionsHelp.inactive", { interpolate: { service: serviceName.value } });
1026
+ return "";
1027
+ });
1028
+ const activationHint = computed(() => {
1029
+ if (isActivelyPolling.value || !triggerPanel.value) return "";
1030
+ if (triggerPanel.value.activationHint) {
1031
+ if (typeof triggerPanel.value.activationHint === "string") return triggerPanel.value.activationHint;
1032
+ if (!isWorkflowActive.value && typeof triggerPanel.value.activationHint.inactive === "string") return triggerPanel.value.activationHint.inactive;
1033
+ if (isWorkflowActive.value && typeof triggerPanel.value.activationHint.active === "string") return triggerPanel.value.activationHint.active;
1034
+ }
1035
+ if (isWebhookBasedNode.value) if (isWorkflowActive.value) return i18n.baseText("ndv.trigger.webhookBasedNode.activationHint.active", { interpolate: { service: serviceName.value } });
1036
+ else return i18n.baseText("ndv.trigger.webhookBasedNode.activationHint.inactive", { interpolate: { service: serviceName.value } });
1037
+ if (isPollingNode.value) if (isWorkflowActive.value) return i18n.baseText("ndv.trigger.pollingNode.activationHint.active", { interpolate: { service: serviceName.value } });
1038
+ else return i18n.baseText("ndv.trigger.pollingNode.activationHint.inactive", { interpolate: { service: serviceName.value } });
1039
+ return "";
1040
+ });
1041
+ const expandExecutionHelp = () => {
1042
+ if (help.value) executionsHelpEventBus.emit("expand");
1043
+ };
1044
+ const openWebhookUrl = () => {
1045
+ telemetry.track("User clicked ndv link", {
1046
+ workflow_id: workflowsStore.workflowId,
1047
+ push_ref: props.pushRef,
1048
+ pane: "input",
1049
+ type: "open-chat"
1050
+ });
1051
+ window.open(webhookTestUrl.value, "_blank", "noreferrer");
1052
+ };
1053
+ const onLinkClick = (e) => {
1054
+ if (!e.target) return;
1055
+ const target = e.target;
1056
+ if (target.localName !== "a") return;
1057
+ if (target.dataset?.key) {
1058
+ e.stopPropagation();
1059
+ e.preventDefault();
1060
+ if (target.dataset.key === "activate") emit("activate");
1061
+ else if (target.dataset.key === "executions") {
1062
+ telemetry.track("User clicked ndv link", {
1063
+ workflow_id: workflowsStore.workflowId,
1064
+ push_ref: props.pushRef,
1065
+ pane: "input",
1066
+ type: "open-executions-log"
1067
+ });
1068
+ ndvStore.unsetActiveNodeName();
1069
+ router.push({ name: VIEWS.EXECUTIONS });
1070
+ } else if (target.dataset.key === "settings") uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
1071
+ }
1072
+ };
1073
+ const onTestLinkCopied = () => {
1074
+ telemetry.track("User copied webhook URL", {
1075
+ pane: "inputs",
1076
+ type: "test url"
1077
+ });
1078
+ };
1079
+ const onNodeExecute = () => {
1080
+ emit("execute");
1081
+ };
1082
+ return (_ctx, _cache) => {
1083
+ const _directive_n8n_html = resolveDirective("n8n-html");
1084
+ return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.$style.container) }, [createVNode(Transition, {
1085
+ name: "fade",
1086
+ mode: "out-in"
1087
+ }, {
1088
+ default: withCtx(() => [hasIssues.value || hideContent.value ? (openBlock(), createElementBlock("div", _hoisted_1)) : isListeningForEvents.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(N8nPulse_default), null, {
1089
+ default: withCtx(() => [createVNode(NodeIcon_default, {
1090
+ "node-type": nodeType.value,
1091
+ size: 40
1092
+ }, null, 8, ["node-type"])]),
1093
+ _: 1
1094
+ }), isWebhookNode.value ? (openBlock(), createElementBlock("div", _hoisted_3, [
1095
+ createVNode(unref(N8nText_default), {
1096
+ tag: "div",
1097
+ size: "large",
1098
+ color: "text-dark",
1099
+ class: "mb-2xs",
1100
+ bold: ""
1101
+ }, {
1102
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.trigger.webhookNode.listening")), 1)]),
1103
+ _: 1
1104
+ }),
1105
+ createBaseVNode("div", { class: normalizeClass([_ctx.$style.shake, "mb-xs"]) }, [createVNode(unref(N8nText_default), null, {
1106
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.trigger.webhookNode.requestHint", { interpolate: { type: webhookHttpMethod.value ?? "" } })), 1)]),
1107
+ _: 1
1108
+ })], 2),
1109
+ createVNode(CopyInput_default, {
1110
+ value: webhookTestUrl.value,
1111
+ "toast-title": unref(i18n).baseText("ndv.trigger.copiedTestUrl"),
1112
+ class: "mb-2xl",
1113
+ size: "medium",
1114
+ collapse: true,
1115
+ "copy-button-text": unref(i18n).baseText("generic.clickToCopy"),
1116
+ onCopy: onTestLinkCopied
1117
+ }, null, 8, [
1118
+ "value",
1119
+ "toast-title",
1120
+ "copy-button-text"
1121
+ ]),
1122
+ createVNode(NodeExecuteButton_default, {
1123
+ "data-test-id": "trigger-execute-button",
1124
+ "node-name": _ctx.nodeName,
1125
+ size: "medium",
1126
+ "telemetry-source": "inputs",
1127
+ onExecute: onNodeExecute
1128
+ }, null, 8, ["node-name"])
1129
+ ])) : (openBlock(), createElementBlock("div", _hoisted_4, [
1130
+ createVNode(unref(N8nText_default), {
1131
+ tag: "div",
1132
+ size: "large",
1133
+ color: "text-dark",
1134
+ class: "mb-2xs",
1135
+ bold: ""
1136
+ }, {
1137
+ default: withCtx(() => [createTextVNode(toDisplayString(listeningTitle.value), 1)]),
1138
+ _: 1
1139
+ }),
1140
+ createBaseVNode("div", { class: normalizeClass([_ctx.$style.shake, "mb-xs"]) }, [createVNode(unref(N8nText_default), { tag: "div" }, {
1141
+ default: withCtx(() => [createTextVNode(toDisplayString(listeningHint.value), 1)]),
1142
+ _: 1
1143
+ })], 2),
1144
+ displayChatButton.value ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(unref(N8nButton_default), {
1145
+ class: "mb-xl",
1146
+ onClick: _cache[0] || (_cache[0] = ($event) => openWebhookUrl())
1147
+ }, {
1148
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.trigger.chatTrigger.openChat")), 1)]),
1149
+ _: 1
1150
+ })])) : createCommentVNode("", true),
1151
+ createVNode(NodeExecuteButton_default, {
1152
+ "data-test-id": "trigger-execute-button",
1153
+ "node-name": _ctx.nodeName,
1154
+ size: "medium",
1155
+ "telemetry-source": "inputs",
1156
+ onExecute: onNodeExecute
1157
+ }, null, 8, ["node-name"])
1158
+ ]))])) : (openBlock(), createElementBlock("div", _hoisted_6, [
1159
+ isActivelyPolling.value ? (openBlock(), createElementBlock("div", _hoisted_7, [createVNode(unref(N8nSpinner_default), { type: "ring" })])) : createCommentVNode("", true),
1160
+ createBaseVNode("div", { class: normalizeClass(_ctx.$style.action) }, [createBaseVNode("div", {
1161
+ "data-test-id": "trigger-header",
1162
+ class: normalizeClass(_ctx.$style.header)
1163
+ }, [header$2.value ? (openBlock(), createBlock(unref(N8nHeading_default), {
1164
+ key: 0,
1165
+ tag: "h1",
1166
+ bold: ""
1167
+ }, {
1168
+ default: withCtx(() => [createTextVNode(toDisplayString(header$2.value), 1)]),
1169
+ _: 1
1170
+ })) : createCommentVNode("", true), subheader.value ? (openBlock(), createBlock(unref(N8nText_default), { key: 1 }, {
1171
+ default: withCtx(() => [createBaseVNode("span", { textContent: toDisplayString(subheader.value) }, null, 8, _hoisted_8)]),
1172
+ _: 1
1173
+ })) : createCommentVNode("", true)], 2), createVNode(NodeExecuteButton_default, {
1174
+ "data-test-id": "trigger-execute-button",
1175
+ "node-name": _ctx.nodeName,
1176
+ size: "medium",
1177
+ "telemetry-source": "inputs",
1178
+ onExecute: onNodeExecute
1179
+ }, null, 8, ["node-name"])], 2),
1180
+ activationHint.value ? (openBlock(), createBlock(unref(N8nText_default), {
1181
+ key: 1,
1182
+ size: "small",
1183
+ onClick: onLinkClick
1184
+ }, {
1185
+ default: withCtx(() => [withDirectives(createBaseVNode("span", null, null, 512), [[_directive_n8n_html, activationHint.value]]), _cache[1] || (_cache[1] = createTextVNode("\xA0 "))]),
1186
+ _: 1
1187
+ })) : createCommentVNode("", true),
1188
+ activationHint.value && executionsHelp.value ? (openBlock(), createBlock(unref(N8nLink_default), {
1189
+ key: 2,
1190
+ size: "small",
1191
+ onClick: expandExecutionHelp
1192
+ }, {
1193
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("ndv.trigger.moreInfo")), 1)]),
1194
+ _: 1
1195
+ })) : createCommentVNode("", true),
1196
+ executionsHelp.value ? (openBlock(), createBlock(unref(N8nInfoAccordion_default), {
1197
+ key: 3,
1198
+ ref_key: "help",
1199
+ ref: help,
1200
+ class: normalizeClass(_ctx.$style.accordion),
1201
+ title: unref(i18n).baseText("ndv.trigger.executionsHint.question"),
1202
+ description: executionsHelp.value,
1203
+ "event-bus": unref(executionsHelpEventBus),
1204
+ "onClick:body": onLinkClick
1205
+ }, null, 8, [
1206
+ "class",
1207
+ "title",
1208
+ "description",
1209
+ "event-bus"
1210
+ ])) : createCommentVNode("", true)
1211
+ ]))]),
1212
+ _: 1
1213
+ })], 2);
1214
+ };
1215
+ }
1216
+ });
1217
+ var TriggerPanel_vue_vue_type_style_index_0_lang_module_default = {
1218
+ container: "_container_6tej3_123",
1219
+ header: "_header_6tej3_140",
1220
+ action: "_action_6tej3_147",
1221
+ shake: "_shake_6tej3_151",
1222
+ accordion: "_accordion_6tej3_172"
1223
+ };
1224
+ var TriggerPanel_default = /* @__PURE__ */ __plugin_vue_export_helper_default(TriggerPanel_vue_vue_type_script_setup_true_lang_default, [["__cssModules", { "$style": TriggerPanel_vue_vue_type_style_index_0_lang_module_default }], ["__scopeId", "data-v-d428ffd7"]]);
1225
+ export { OutputPanel_default as n, NDVFloatingNodes_default as r, TriggerPanel_default as t };