@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,513 @@
1
+ import { It as ref } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
2
+ import { rt as useI18n } from "./core-CRbPymLT.js";
3
+ import { At as getExecutionErrorToastConfiguration, Bs as sendGetWorkerStatus, Hr as isValidNodeConnectionType, Kn as useNodeHelpers, P as useWorkflowsStore, Pi as parse, Pt as useNodeTypesStore, Xn as useDocumentTitle, _n as useCredentialsStore, aa as useUIStore, cn as isTutorialTemplateId, k as useTelemetry, kt as getExecutionErrorMessage, ms as useSettingsStore, n as useWorkflowSaving, qn as injectWorkflowState, r as useWorkflowFileSync, ra as codeNodeEditorEventBus, sn as isPrebuiltAgentTemplateId, t as useBuilderStore, ta as globalLinkActionsEventBus, tn as SampleTemplates, wi as getTriggerNodeServiceName, wt as clearPopupWindowState, x as useExternalHooks, y as useToast, zn as useWorkflowHelpers } from "./builder.store-Czk2ipDE.js";
4
+ import { Ta as isCommunityPackageName, Vi as createRunExecutionData, eo as EVALUATION_TRIGGER_NODE_TYPE, fo as TRIMMED_TASK_DATA_CONNECTIONS_KEY, qi as generateNodesGraph, xs as WORKFLOW_SETTINGS_MODAL_KEY } from "./constants-C8OH4tTq.js";
5
+ import { k as defineStore, r as useRootStore } from "./_baseOrderBy-N8Be_6z6.js";
6
+ import { t as useAssistantStore } from "./assistant.store-CNywgN4S.js";
7
+ import { i as usePushConnectionStore, t as useRunWorkflow } from "./useRunWorkflow-LO7ffLp9.js";
8
+ import { t as useCanvasOperations } from "./useCanvasOperations-8ULLtMkY.js";
9
+ import { t as useBannersStore } from "./banners.store-CGEcBTDn.js";
10
+ import { t as useSchemaPreviewStore } from "./schemaPreview.store-DUgN1yVE.js";
11
+ import { t as useAITemplatesStarterCollectionStore } from "./aiTemplatesStarterCollection.store-nL9nePkK.js";
12
+ import { t as useReadyToRunStore } from "./readyToRun.store-YEMvPUqo.js";
13
+ async function builderCreditsUpdated(event) {
14
+ useBuilderStore().updateBuilderCredits(event.data.creditsQuota, event.data.creditsClaimed);
15
+ }
16
+ async function executionFinished({ data }, options) {
17
+ const workflowsStore = useWorkflowsStore();
18
+ const uiStore = useUIStore();
19
+ const aiTemplatesStarterCollectionStore = useAITemplatesStarterCollectionStore();
20
+ const readyToRunStore = useReadyToRunStore();
21
+ options.workflowState.executingNode.lastAddedExecutingNode = null;
22
+ if (typeof workflowsStore.activeExecutionId === "undefined") return;
23
+ const telemetry = useTelemetry();
24
+ clearPopupWindowState();
25
+ const templateId = workflowsStore.getWorkflowById(data.workflowId)?.meta?.templateId;
26
+ if (templateId) {
27
+ if (templateId === SampleTemplates.EasyAiTemplate) telemetry.track("User executed test AI workflow", { status: data.status });
28
+ else if (templateId.startsWith("035_template_onboarding")) aiTemplatesStarterCollectionStore.trackUserExecutedWorkflow(templateId.split("-").pop() ?? "", data.status);
29
+ else if (templateId === "ready-to-run-ai-workflow" || templateId === "ready-to-run-ai-workflow-v5" || templateId === "ready-to-run-ai-workflow-v6") if (data.status === "success") readyToRunStore.trackExecuteAiWorkflowSuccess();
30
+ else readyToRunStore.trackExecuteAiWorkflow(data.status);
31
+ else if (isPrebuiltAgentTemplateId(templateId)) telemetry.track("User executed pre-built Agent", {
32
+ template: templateId,
33
+ status: data.status
34
+ });
35
+ else if (isTutorialTemplateId(templateId)) telemetry.track("User executed tutorial template", {
36
+ template: templateId,
37
+ status: data.status
38
+ });
39
+ }
40
+ uiStore.setProcessingExecutionResults(true);
41
+ let successToastAlreadyShown = false;
42
+ if (data.status === "success") {
43
+ handleExecutionFinishedWithSuccessOrOther(options.workflowState, data.status, successToastAlreadyShown);
44
+ successToastAlreadyShown = true;
45
+ }
46
+ const execution = await fetchExecutionData(data.executionId);
47
+ if (!execution) {
48
+ options.workflowState.setActiveExecutionId(void 0);
49
+ uiStore.setProcessingExecutionResults(false);
50
+ return;
51
+ }
52
+ const runExecutionData = getRunExecutionData(execution);
53
+ uiStore.setProcessingExecutionResults(false);
54
+ if (execution.data?.waitTill !== void 0) handleExecutionFinishedWithWaitTill(options);
55
+ else if (execution.status === "error" || execution.status === "canceled") handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData);
56
+ else handleExecutionFinishedWithSuccessOrOther(options.workflowState, execution.status, successToastAlreadyShown);
57
+ setRunExecutionData(execution, runExecutionData, options.workflowState);
58
+ const workflowFileSync = useWorkflowFileSync();
59
+ if (workflowFileSync.isVSCodeWebview()) {
60
+ const currentWorkflowData = workflowFileSync.getCurrentWorkflowData();
61
+ if (currentWorkflowData) {
62
+ const executionRunData = execution.data?.resultData?.runData;
63
+ workflowFileSync.syncWorkflowToFile(currentWorkflowData, true, executionRunData);
64
+ }
65
+ }
66
+ continueEvaluationLoop(execution, options);
67
+ }
68
+ function continueEvaluationLoop(execution, opts) {
69
+ if (execution.status !== "success" || execution.data?.startData?.destinationNode !== void 0) return;
70
+ const evaluationTrigger = execution.workflowData.nodes.find((node) => node.type === EVALUATION_TRIGGER_NODE_TYPE);
71
+ const triggerRunData = evaluationTrigger ? execution?.data?.resultData?.runData[evaluationTrigger.name] : void 0;
72
+ if (!evaluationTrigger || triggerRunData === void 0) return;
73
+ const mainData = triggerRunData[0]?.data?.main[0];
74
+ const rowsLeft = mainData ? mainData[0]?.json?._rowsLeft : 0;
75
+ if (rowsLeft && rowsLeft > 0) {
76
+ const { runWorkflow } = useRunWorkflow(opts);
77
+ runWorkflow({
78
+ triggerNode: evaluationTrigger.name,
79
+ nodeData: triggerRunData[0],
80
+ rerunTriggerNode: true
81
+ });
82
+ }
83
+ }
84
+ async function fetchExecutionData(executionId) {
85
+ const workflowsStore = useWorkflowsStore();
86
+ try {
87
+ const executionResponse = await workflowsStore.fetchExecutionDataById(executionId);
88
+ if (!executionResponse?.data) return;
89
+ return {
90
+ id: executionId,
91
+ workflowId: executionResponse.workflowId,
92
+ workflowData: workflowsStore.workflow,
93
+ data: parse(executionResponse.data),
94
+ status: executionResponse.status,
95
+ startedAt: workflowsStore.workflowExecutionData?.startedAt,
96
+ stoppedAt: /* @__PURE__ */ new Date()
97
+ };
98
+ } catch {
99
+ return;
100
+ }
101
+ }
102
+ function getRunExecutionData(execution) {
103
+ return createRunExecutionData({
104
+ ...execution.data,
105
+ startData: execution.data?.startData,
106
+ resultData: execution.data?.resultData ?? { runData: {} },
107
+ executionData: execution.data?.executionData
108
+ });
109
+ }
110
+ function getRunDataExecutedErrorMessage(execution) {
111
+ const i18n = useI18n();
112
+ if (execution.status === "crashed") return i18n.baseText("pushConnection.executionFailed.message");
113
+ else if (execution.status === "canceled") {
114
+ const workflowsStore = useWorkflowsStore();
115
+ return i18n.baseText("executionsList.showMessage.stopExecution.message", { interpolate: { activeExecutionId: workflowsStore.activeExecutionId ?? "" } });
116
+ }
117
+ return getExecutionErrorMessage({
118
+ error: execution.data?.resultData.error,
119
+ lastNodeExecuted: execution.data?.resultData.lastNodeExecuted
120
+ });
121
+ }
122
+ function handleExecutionFinishedWithWaitTill(options) {
123
+ const workflowsStore = useWorkflowsStore();
124
+ const settingsStore = useSettingsStore();
125
+ const workflowSaving = useWorkflowSaving(options);
126
+ const workflowObject = workflowsStore.workflowObject;
127
+ if (!(workflowsStore.workflowSettings.saveManualExecutions ?? settingsStore.saveManualExecutions)) {
128
+ const uiStore = useUIStore();
129
+ globalLinkActionsEventBus.emit("registerGlobalLinkAction", {
130
+ key: "open-settings",
131
+ action: async () => {
132
+ if (!workflowsStore.isWorkflowSaved[workflowsStore.workflowId]) await workflowSaving.saveAsNewWorkflow();
133
+ uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);
134
+ }
135
+ });
136
+ }
137
+ useDocumentTitle().setDocumentTitle(workflowObject.name, "IDLE");
138
+ }
139
+ function handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData) {
140
+ const toast = useToast();
141
+ const i18n = useI18n();
142
+ const telemetry = useTelemetry();
143
+ const workflowsStore = useWorkflowsStore();
144
+ const documentTitle = useDocumentTitle();
145
+ const workflowHelpers = useWorkflowHelpers();
146
+ const workflowObject = workflowsStore.workflowObject;
147
+ documentTitle.setDocumentTitle(workflowObject.name, "ERROR");
148
+ if (runExecutionData.resultData.error?.name === "ExpressionError" && runExecutionData.resultData.error.functionality === "pairedItem") {
149
+ const error = runExecutionData.resultData.error;
150
+ workflowHelpers.getWorkflowDataToSave().then((workflowData) => {
151
+ const eventData = {
152
+ caused_by_credential: false,
153
+ error_message: error.description,
154
+ error_title: error.message,
155
+ error_type: error.context.type,
156
+ node_graph_string: JSON.stringify(generateNodesGraph(workflowData, workflowHelpers.getNodeTypes()).nodeGraph),
157
+ workflow_id: workflowsStore.workflowId
158
+ };
159
+ if (error.context.nodeCause && ["paired_item_no_info", "paired_item_invalid_info"].includes(error.context.type)) {
160
+ const node = workflowObject.getNode(error.context.nodeCause);
161
+ if (node) {
162
+ eventData.is_pinned = !!workflowObject.getPinDataOfNode(node.name);
163
+ eventData.mode = node.parameters.mode;
164
+ eventData.node_type = node.type;
165
+ eventData.operation = node.parameters.operation;
166
+ eventData.resource = node.parameters.resource;
167
+ }
168
+ }
169
+ telemetry.track("Instance FE emitted paired item error", eventData);
170
+ });
171
+ }
172
+ if (execution.status === "canceled") toast.showMessage({
173
+ title: i18n.baseText("nodeView.showMessage.stopExecutionTry.title"),
174
+ type: "success"
175
+ });
176
+ else if (execution.data?.resultData.error) {
177
+ const { message, title } = getExecutionErrorToastConfiguration({
178
+ error: execution.data.resultData.error,
179
+ lastNodeExecuted: execution.data?.resultData.lastNodeExecuted
180
+ });
181
+ toast.showMessage({
182
+ title,
183
+ message,
184
+ type: "error",
185
+ duration: 0
186
+ });
187
+ useBuilderStore().incrementManualExecutionStats("error");
188
+ }
189
+ }
190
+ function handleExecutionFinishedSuccessfully(workflowName, message, workflowState) {
191
+ const toast = useToast();
192
+ useDocumentTitle().setDocumentTitle(workflowName, "IDLE");
193
+ workflowState.setActiveExecutionId(void 0);
194
+ toast.showMessage({
195
+ title: message,
196
+ type: "success"
197
+ });
198
+ }
199
+ function handleExecutionFinishedWithSuccessOrOther(workflowState, executionStatus, successToastAlreadyShown) {
200
+ const workflowsStore = useWorkflowsStore();
201
+ const toast = useToast();
202
+ const i18n = useI18n();
203
+ const nodeTypesStore = useNodeTypesStore();
204
+ const workflowName = workflowsStore.workflowObject.name ?? "";
205
+ useDocumentTitle().setDocumentTitle(workflowName, "IDLE");
206
+ const workflowExecution = workflowsStore.getWorkflowExecution;
207
+ if (workflowExecution?.executedNode) {
208
+ const node = workflowsStore.getNodeByName(workflowExecution.executedNode);
209
+ const nodeType = node && nodeTypesStore.getNodeType(node.type, node.typeVersion);
210
+ const nodeOutput = workflowExecution.data?.resultData?.runData?.[workflowExecution.executedNode];
211
+ if (nodeType?.polling && !nodeOutput) toast.showMessage({
212
+ title: i18n.baseText("pushConnection.pollingNode.dataNotFound", { interpolate: { service: getTriggerNodeServiceName(nodeType) } }),
213
+ message: i18n.baseText("pushConnection.pollingNode.dataNotFound.message", { interpolate: { service: getTriggerNodeServiceName(nodeType) } }),
214
+ type: "success"
215
+ });
216
+ else if (!successToastAlreadyShown) handleExecutionFinishedSuccessfully(workflowName, i18n.baseText("pushConnection.nodeExecutedSuccessfully"), workflowState);
217
+ } else if (!successToastAlreadyShown) handleExecutionFinishedSuccessfully(workflowName, i18n.baseText("pushConnection.workflowExecutedSuccessfully"), workflowState);
218
+ if (executionStatus === "success" && !successToastAlreadyShown) useBuilderStore().incrementManualExecutionStats("success");
219
+ }
220
+ function setRunExecutionData(execution, runExecutionData, workflowState) {
221
+ const workflowsStore = useWorkflowsStore();
222
+ const nodeHelpers = useNodeHelpers({ workflowState });
223
+ const runDataExecutedErrorMessage = getRunDataExecutedErrorMessage(execution);
224
+ const workflowExecution = workflowsStore.getWorkflowExecution;
225
+ workflowState.executingNode.executingNode.length = 0;
226
+ if (workflowExecution === null) return;
227
+ workflowState.setWorkflowExecutionData({
228
+ ...workflowExecution,
229
+ status: execution.status,
230
+ id: execution.id,
231
+ stoppedAt: execution.stoppedAt
232
+ });
233
+ workflowsStore.setWorkflowExecutionRunData(runExecutionData);
234
+ workflowState.setActiveExecutionId(void 0);
235
+ nodeHelpers.updateNodesExecutionIssues();
236
+ const lastNodeExecuted = runExecutionData.resultData.lastNodeExecuted;
237
+ let itemsCount = 0;
238
+ if (lastNodeExecuted && runExecutionData.resultData.runData[lastNodeExecuted] && !runDataExecutedErrorMessage) itemsCount = runExecutionData.resultData.runData[lastNodeExecuted][0].data?.main[0]?.length ?? 0;
239
+ workflowState.setActiveExecutionId(void 0);
240
+ useExternalHooks().run("pushConnection.executionFinished", {
241
+ itemsCount,
242
+ nodeName: runExecutionData.resultData.lastNodeExecuted,
243
+ errorMessage: runDataExecutedErrorMessage,
244
+ runDataExecutedStartData: runExecutionData.startData,
245
+ resultDataError: runExecutionData.resultData.error
246
+ });
247
+ const lineNumber = runExecutionData.resultData?.error?.lineNumber;
248
+ codeNodeEditorEventBus.emit("highlightLine", lineNumber ?? "last");
249
+ }
250
+ async function executionRecovered({ data }, options) {
251
+ const workflowsStore = useWorkflowsStore();
252
+ const uiStore = useUIStore();
253
+ if (typeof workflowsStore.activeExecutionId === "undefined") return;
254
+ uiStore.setProcessingExecutionResults(true);
255
+ const execution = await fetchExecutionData(data.executionId);
256
+ if (!execution) {
257
+ uiStore.setProcessingExecutionResults(false);
258
+ return;
259
+ }
260
+ const runExecutionData = getRunExecutionData(execution);
261
+ uiStore.setProcessingExecutionResults(false);
262
+ if (execution.data?.waitTill !== void 0) handleExecutionFinishedWithWaitTill(options);
263
+ else if (execution.status === "error" || execution.status === "canceled") handleExecutionFinishedWithErrorOrCanceled(execution, runExecutionData);
264
+ else handleExecutionFinishedWithSuccessOrOther(options.workflowState, execution.status, false);
265
+ setRunExecutionData(execution, runExecutionData, options.workflowState);
266
+ }
267
+ async function executionStarted({ data }, options) {
268
+ const workflowsStore = useWorkflowsStore();
269
+ if (typeof workflowsStore.activeExecutionId === "undefined") return;
270
+ else if (workflowsStore.activeExecutionId === null) options.workflowState.setActiveExecutionId(data.executionId);
271
+ if (workflowsStore.workflowExecutionData?.data && data.flattedRunData) workflowsStore.workflowExecutionData.data.resultData.runData = parse(data.flattedRunData);
272
+ }
273
+ async function nodeDescriptionUpdated(_event) {
274
+ const nodeTypesStore = useNodeTypesStore();
275
+ const credentialsStore = useCredentialsStore();
276
+ await nodeTypesStore.getNodeTypes();
277
+ await credentialsStore.fetchCredentialTypes(true);
278
+ }
279
+ async function nodeExecuteAfter({ data: pushData }, { workflowState }) {
280
+ const workflowsStore = useWorkflowsStore();
281
+ const assistantStore = useAssistantStore();
282
+ const placeholderOutputData = { main: [] };
283
+ if (pushData.itemCountByConnectionType && typeof pushData.itemCountByConnectionType === "object") {
284
+ const fillObject = { json: { [TRIMMED_TASK_DATA_CONNECTIONS_KEY]: true } };
285
+ for (const [connectionType, outputs] of Object.entries(pushData.itemCountByConnectionType)) if (isValidNodeConnectionType(connectionType)) placeholderOutputData[connectionType] = outputs.map((count) => Array.from({ length: count }, () => fillObject));
286
+ }
287
+ const pushDataWithPlaceholderOutputData = {
288
+ ...pushData,
289
+ data: {
290
+ ...pushData.data,
291
+ data: placeholderOutputData
292
+ }
293
+ };
294
+ workflowsStore.updateNodeExecutionStatus(pushDataWithPlaceholderOutputData);
295
+ workflowState.executingNode.removeExecutingNode(pushData.nodeName);
296
+ assistantStore.onNodeExecution(pushData);
297
+ }
298
+ async function nodeExecuteAfterData({ data: pushData }) {
299
+ const workflowsStore = useWorkflowsStore();
300
+ const schemaPreviewStore = useSchemaPreviewStore();
301
+ workflowsStore.updateNodeExecutionRunData(pushData);
302
+ schemaPreviewStore.trackSchemaPreviewExecution(pushData);
303
+ }
304
+ async function nodeExecuteBefore({ data }, { workflowState }) {
305
+ const workflowsStore = useWorkflowsStore();
306
+ workflowState.executingNode.addExecutingNode(data.nodeName);
307
+ workflowsStore.addNodeExecutionStartedData(data);
308
+ }
309
+ async function reloadNodeType({ data }) {
310
+ const nodeTypesStore = useNodeTypesStore();
311
+ await nodeTypesStore.getNodeTypes();
312
+ const isCommunityNode = isCommunityPackageName(data.name);
313
+ await nodeTypesStore.getFullNodesProperties([data], !isCommunityNode);
314
+ }
315
+ async function removeNodeType({ data }) {
316
+ const nodeTypesStore = useNodeTypesStore();
317
+ const credentialsStore = useCredentialsStore();
318
+ const nodesToBeRemoved = [data];
319
+ await credentialsStore.fetchCredentialTypes(false).then(() => {
320
+ nodeTypesStore.removeNodeTypes(nodesToBeRemoved);
321
+ });
322
+ }
323
+ async function sendConsoleMessage({ data }) {
324
+ console.log(data.source, ...data.messages);
325
+ }
326
+ const WORKER_HISTORY_LENGTH = 100;
327
+ var STALE_SECONDS = 120 * 1e3;
328
+ const useOrchestrationStore = defineStore("orchestrationManager", {
329
+ state: () => ({
330
+ initialStatusReceived: false,
331
+ workers: {},
332
+ workersHistory: {},
333
+ workersLastUpdated: {},
334
+ statusInterval: null
335
+ }),
336
+ actions: {
337
+ updateWorkerStatus(data) {
338
+ this.workers[data.senderId] = data;
339
+ if (!this.workersHistory[data.senderId]) this.workersHistory[data.senderId] = [];
340
+ this.workersHistory[data.senderId].push({
341
+ data,
342
+ timestamp: Date.now()
343
+ });
344
+ if (this.workersHistory[data.senderId].length > 100) this.workersHistory[data.senderId].shift();
345
+ this.workersLastUpdated[data.senderId] = Date.now();
346
+ this.initialStatusReceived = true;
347
+ },
348
+ removeStaleWorkers() {
349
+ for (const id in this.workersLastUpdated) if (this.workersLastUpdated[id] + STALE_SECONDS < Date.now()) {
350
+ delete this.workers[id];
351
+ delete this.workersHistory[id];
352
+ delete this.workersLastUpdated[id];
353
+ }
354
+ },
355
+ startWorkerStatusPolling() {
356
+ const rootStore = useRootStore();
357
+ if (!this.statusInterval) this.statusInterval = setInterval(async () => {
358
+ await sendGetWorkerStatus(rootStore.restApiContext);
359
+ this.removeStaleWorkers();
360
+ }, 1e3);
361
+ },
362
+ stopWorkerStatusPolling() {
363
+ if (this.statusInterval) {
364
+ clearInterval(this.statusInterval);
365
+ this.statusInterval = null;
366
+ }
367
+ },
368
+ getWorkerLastUpdated(workerId) {
369
+ return this.workersLastUpdated[workerId] ?? 0;
370
+ },
371
+ getWorkerStatus(workerId) {
372
+ return this.workers[workerId];
373
+ },
374
+ getWorkerStatusHistory(workerId) {
375
+ return this.workersHistory[workerId] ?? [];
376
+ }
377
+ }
378
+ });
379
+ async function sendWorkerStatusMessage({ data }) {
380
+ useOrchestrationStore().updateWorkerStatus(data.status);
381
+ }
382
+ async function testWebhookDeleted({ data }, options) {
383
+ const workflowsStore = useWorkflowsStore();
384
+ if (data.workflowId === workflowsStore.workflowId) {
385
+ workflowsStore.executionWaitingForWebhook = false;
386
+ options.workflowState.setActiveExecutionId(void 0);
387
+ }
388
+ }
389
+ async function testWebhookReceived({ data }, options) {
390
+ const workflowsStore = useWorkflowsStore();
391
+ if (data.workflowId === workflowsStore.workflowId) {
392
+ workflowsStore.executionWaitingForWebhook = false;
393
+ options.workflowState.setActiveExecutionId(data.executionId ?? null);
394
+ }
395
+ }
396
+ async function workflowActivated({ data }) {
397
+ const { initializeWorkspace } = useCanvasOperations();
398
+ const workflowsStore = useWorkflowsStore();
399
+ const bannersStore = useBannersStore();
400
+ const uiStore = useUIStore();
401
+ const { workflowId, activeVersionId } = data;
402
+ const workflowIsBeingViewed = workflowsStore.workflowId === workflowId;
403
+ const activeVersionIsSet = workflowsStore.workflow.activeVersionId !== activeVersionId;
404
+ if (workflowIsBeingViewed && activeVersionIsSet) {
405
+ if (!uiStore.stateIsDirty) {
406
+ const updatedWorkflow = await workflowsStore.fetchWorkflow(workflowId);
407
+ if (!updatedWorkflow.checksum) throw new Error("Failed to fetch workflow");
408
+ await initializeWorkspace(updatedWorkflow);
409
+ }
410
+ }
411
+ if (workflowIsBeingViewed) bannersStore.removeBannerFromStack("WORKFLOW_AUTO_DEACTIVATED");
412
+ }
413
+ async function workflowAutoDeactivated({ data }) {
414
+ const workflowsStore = useWorkflowsStore();
415
+ const { initializeWorkspace } = useCanvasOperations();
416
+ const bannersStore = useBannersStore();
417
+ const uiStore = useUIStore();
418
+ workflowsStore.setWorkflowInactive(data.workflowId);
419
+ if (workflowsStore.workflowId === data.workflowId) {
420
+ if (!uiStore.stateIsDirty) {
421
+ const updatedWorkflow = await workflowsStore.fetchWorkflow(data.workflowId);
422
+ if (!updatedWorkflow.checksum) throw new Error("Failed to fetch workflow");
423
+ await initializeWorkspace(updatedWorkflow);
424
+ }
425
+ bannersStore.pushBannerToStack("WORKFLOW_AUTO_DEACTIVATED");
426
+ }
427
+ }
428
+ async function workflowDeactivated({ data }) {
429
+ const { initializeWorkspace } = useCanvasOperations();
430
+ const workflowsStore = useWorkflowsStore();
431
+ const uiStore = useUIStore();
432
+ if (workflowsStore.workflowId === data.workflowId) {
433
+ if (!uiStore.stateIsDirty) {
434
+ const updatedWorkflow = await workflowsStore.fetchWorkflow(data.workflowId);
435
+ if (!updatedWorkflow.checksum) throw new Error("Failed to fetch workflow");
436
+ await initializeWorkspace(updatedWorkflow);
437
+ }
438
+ }
439
+ }
440
+ async function workflowFailedToActivate({ data }, options) {
441
+ const workflowsStore = useWorkflowsStore();
442
+ if (workflowsStore.workflowId !== data.workflowId) return;
443
+ workflowsStore.setWorkflowInactive(data.workflowId);
444
+ options.workflowState.setActive(null);
445
+ const toast = useToast();
446
+ const i18n = useI18n();
447
+ toast.showError(new Error(data.errorMessage), i18n.baseText("workflowActivator.showError.title", { interpolate: { newStateName: "activated" } }) + ":");
448
+ }
449
+ function createEventQueue(processEvent) {
450
+ const queue = [];
451
+ let processing = false;
452
+ async function processNext() {
453
+ if (processing || queue.length === 0) return;
454
+ processing = true;
455
+ const currentEvent = queue.shift();
456
+ if (currentEvent !== void 0) try {
457
+ await processEvent(currentEvent);
458
+ } catch (error) {
459
+ console.error("Error processing event:", error);
460
+ }
461
+ processing = false;
462
+ await processNext();
463
+ }
464
+ function enqueue(event) {
465
+ queue.push(event);
466
+ processNext();
467
+ }
468
+ return { enqueue };
469
+ }
470
+ function usePushConnection({ router, workflowState }) {
471
+ const pushStore = usePushConnectionStore();
472
+ const options = {
473
+ router,
474
+ workflowState: workflowState ?? injectWorkflowState()
475
+ };
476
+ const { enqueue } = createEventQueue(processEvent);
477
+ const removeEventListener = ref(null);
478
+ function initialize() {
479
+ removeEventListener.value = pushStore.addEventListener((message) => {
480
+ enqueue(message);
481
+ });
482
+ }
483
+ function terminate() {
484
+ if (typeof removeEventListener.value === "function") removeEventListener.value();
485
+ }
486
+ async function processEvent(event) {
487
+ switch (event.type) {
488
+ case "testWebhookDeleted": return await testWebhookDeleted(event, options);
489
+ case "testWebhookReceived": return await testWebhookReceived(event, options);
490
+ case "reloadNodeType": return await reloadNodeType(event);
491
+ case "removeNodeType": return await removeNodeType(event);
492
+ case "nodeDescriptionUpdated": return await nodeDescriptionUpdated(event);
493
+ case "nodeExecuteBefore": return await nodeExecuteBefore(event, options);
494
+ case "nodeExecuteAfter": return await nodeExecuteAfter(event, options);
495
+ case "nodeExecuteAfterData": return await nodeExecuteAfterData(event);
496
+ case "executionStarted": return await executionStarted(event, options);
497
+ case "sendWorkerStatusMessage": return await sendWorkerStatusMessage(event);
498
+ case "sendConsoleMessage": return await sendConsoleMessage(event);
499
+ case "workflowFailedToActivate": return await workflowFailedToActivate(event, options);
500
+ case "executionFinished": return await executionFinished(event, options);
501
+ case "executionRecovered": return await executionRecovered(event, options);
502
+ case "workflowActivated": return await workflowActivated(event);
503
+ case "workflowDeactivated": return await workflowDeactivated(event);
504
+ case "workflowAutoDeactivated": return await workflowAutoDeactivated(event);
505
+ case "updateBuilderCredits": return await builderCreditsUpdated(event);
506
+ }
507
+ }
508
+ return {
509
+ initialize,
510
+ terminate
511
+ };
512
+ }
513
+ export { WORKER_HISTORY_LENGTH as n, useOrchestrationStore as r, usePushConnection as t };
@@ -0,0 +1,118 @@
1
+ import { C as computed } from "./vue.runtime.esm-bundler-tP5dCd7J.js";
2
+ import { rt as useI18n, v as useLocalStorage } from "./core-CRbPymLT.js";
3
+ import { Cn as N8nIcon_default } from "./src-jviYSG25.js";
4
+ import { P as useWorkflowsStore, Pt as useNodeTypesStore } from "./builder.store-Czk2ipDE.js";
5
+ import { v as useRouter } from "./get-BcEmeOxn.js";
6
+ import { Ro as VIEWS } from "./constants-C8OH4tTq.js";
7
+ import { t as useCanvasOperations } from "./useCanvasOperations-8ULLtMkY.js";
8
+ import { t as NodeIcon_default } from "./NodeIcon-B9VW6tX6.js";
9
+ var MAX_RECENT_ITEMS = 5;
10
+ var MAX_RECENT_WORKFLOWS_TO_DISPLAY = 3;
11
+ var RECENT_WORKFLOWS_STORAGE_KEY = "n8n-recent-workflows";
12
+ var RECENT_NODES_STORAGE_KEY = "n8n-recent-nodes";
13
+ function useRecentResources() {
14
+ const i18n = useI18n();
15
+ const router = useRouter();
16
+ const workflowsStore = useWorkflowsStore();
17
+ const nodeTypesStore = useNodeTypesStore();
18
+ const { setNodeActive } = useCanvasOperations();
19
+ const recentWorkflows = useLocalStorage(RECENT_WORKFLOWS_STORAGE_KEY, []);
20
+ const recentNodes = useLocalStorage(RECENT_NODES_STORAGE_KEY, {});
21
+ function trackResourceOpened(to) {
22
+ if (to.name === VIEWS.WORKFLOW && typeof to.params.name === "string") {
23
+ const workflowId = to.params.name;
24
+ const isNewWorkflow = to.query.new === "true";
25
+ if (workflowId && !isNewWorkflow) {
26
+ registerWorkflowOpen(workflowId);
27
+ if (typeof to.params.nodeId === "string" && to.params.nodeId) registerNodeOpen(workflowId, to.params.nodeId);
28
+ }
29
+ }
30
+ }
31
+ function registerWorkflowOpen(workflowId) {
32
+ const filtered = recentWorkflows.value.filter((w) => w.id !== workflowId);
33
+ recentWorkflows.value = [{
34
+ id: workflowId,
35
+ openedAt: Date.now()
36
+ }, ...filtered].slice(0, MAX_RECENT_ITEMS);
37
+ }
38
+ function registerNodeOpen(workflowId, nodeId) {
39
+ const filtered = (recentNodes.value[workflowId] ?? []).filter((n) => n.nodeId !== nodeId);
40
+ const updatedNodes = [{
41
+ nodeId,
42
+ openedAt: Date.now()
43
+ }, ...filtered].slice(0, MAX_RECENT_ITEMS);
44
+ recentNodes.value = {
45
+ ...recentNodes.value,
46
+ [workflowId]: updatedNodes
47
+ };
48
+ }
49
+ const recentResourceCommands = computed(() => {
50
+ const items = [];
51
+ const currentRoute = router.currentRoute.value;
52
+ const currentWorkflowId = currentRoute.name === VIEWS.WORKFLOW && typeof currentRoute.params.name === "string" ? currentRoute.params.name : null;
53
+ if (currentWorkflowId && recentNodes.value[currentWorkflowId]) {
54
+ const nodesForWorkflow = recentNodes.value[currentWorkflowId];
55
+ for (const recentNode of nodesForWorkflow) {
56
+ const node = workflowsStore.findNodeByPartialId(recentNode.nodeId);
57
+ if (!node) continue;
58
+ const nodeType = nodeTypesStore.getNodeType(node.type, node.typeVersion);
59
+ items.push({
60
+ id: `recent-node-${currentWorkflowId}-${recentNode.nodeId}`,
61
+ title: i18n.baseText("generic.openResource", { interpolate: { resource: node.name } }),
62
+ section: i18n.baseText("commandBar.sections.recent"),
63
+ icon: {
64
+ component: NodeIcon_default,
65
+ props: {
66
+ nodeType,
67
+ size: 16
68
+ }
69
+ },
70
+ handler: () => {
71
+ const node$1 = workflowsStore.findNodeByPartialId(recentNode.nodeId);
72
+ if (node$1) setNodeActive(node$1.id, "command_bar");
73
+ }
74
+ });
75
+ }
76
+ }
77
+ if (recentWorkflows.value.length > 0) {
78
+ let workflowsAdded = 0;
79
+ for (const recentWorkflow of recentWorkflows.value) {
80
+ if (workflowsAdded >= MAX_RECENT_WORKFLOWS_TO_DISPLAY) break;
81
+ const workflow = workflowsStore.getWorkflowById(recentWorkflow.id);
82
+ if (!workflow) continue;
83
+ items.push({
84
+ id: `recent-workflow-${recentWorkflow.id}`,
85
+ title: i18n.baseText("generic.openResource", { interpolate: { resource: workflow.name || i18n.baseText("commandBar.workflows.unnamed") } }),
86
+ section: i18n.baseText("commandBar.sections.recent"),
87
+ icon: {
88
+ component: N8nIcon_default,
89
+ props: { icon: "arrow-right" }
90
+ },
91
+ handler: () => {
92
+ const targetRoute = router.resolve({
93
+ name: VIEWS.WORKFLOW,
94
+ params: { name: recentWorkflow.id }
95
+ });
96
+ window.location.href = targetRoute.fullPath;
97
+ }
98
+ });
99
+ workflowsAdded++;
100
+ }
101
+ }
102
+ return items;
103
+ });
104
+ async function initialize() {
105
+ const workflowsToFetch = recentWorkflows.value.slice(0, MAX_RECENT_WORKFLOWS_TO_DISPLAY);
106
+ await Promise.all(workflowsToFetch.map(async (recentWorkflow) => {
107
+ try {
108
+ if (!workflowsStore.getWorkflowById(recentWorkflow.id)) await workflowsStore.fetchWorkflow(recentWorkflow.id);
109
+ } catch {}
110
+ }));
111
+ }
112
+ return {
113
+ commands: recentResourceCommands,
114
+ trackResourceOpened,
115
+ initialize
116
+ };
117
+ }
118
+ export { useRecentResources as t };