n8n-editor-ui
Version:
Workflow Editor UI for n8n
1 lines • 98.8 kB
JavaScript
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.13.4`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`5d450486-4229-41b6-9907-e5b950079dda`,e._sentryDebugIdIdentifier=`sentry-dbid-5d450486-4229-41b6-9907-e5b950079dda`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,C as r,E as i,Ft as a,Mt as o,N as s,O as c,S as l,Sn as u,T as d,Wt as f,X as p,Z as m,_ as h,_n as g,at as _,bt as v,gt as y,h as b,it as x,j as S,m as C,n as w,p as T,pt as E,q as D,rt as O,w as k,yn as ee,yt as A}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{bt as j}from"./_MapCache-CUJwh2qp.js";import{$i as M,At as N,D as P,Et as te,Fi as ne,Mi as F,Nt as I,Oi as L,P as re,Qi as ie,Ri as ae,Rt as oe,Tt as se,Ut as R,Xi as ce,Yi as le,Zi as z,_t as ue,gt as de,h as fe,lt as pe,tt as me,vt as he,yt as ge,zt as _e}from"./src-wni2AGA3.js";import{t as B}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import{$a as ve,Ai as V,Ar as ye,As as be,Dn as xe,Ft as Se,Ga as Ce,Gr as we,Hr as Te,It as Ee,Ka as De,Ra as Oe,Tr as ke,Ua as H,Wa as Ae,Ya as je,at as Me,en as Ne,et as Pe,fr as Fe,hr as U,jr as Ie,kt as Le,mr as Re,qa as ze,qr as Be,r as Ve,s as He,sl as Ue,t as We,vn as Ge,w as W,z as Ke}from"./users.store-BHWXXawf.js";import{$a as G,Cs as qe,Ps as K,Qs as q,Ro as Je,Ts as J,Yc as Ye,gl as Xe,ho as Ze,i as Qe,is as $e,lc as Y,ms as X,pl as et,tc as tt,ul as nt,wl as rt,ws as it}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import{N as at,j as ot}from"./_baseOrderBy-CaKruttV.js";import{t as st}from"./banners.store-D1XIK6Qv.js";import{t as ct}from"./dateformat-CYfyw486.js";import{n as lt,t as ut}from"./useDebounce-CTeIt-cH.js";import{t as Z}from"./Modal-CfEU2AWh.js";import"./executions.store-CZbPSd3l.js";import"./uniqBy-CvYQiCPx.js";import"./communityNodes.store-CwKzTEmt.js";import"./usePinnedData-bxdhY-Ce.js";import"./nodeIcon-BFJyt77y.js";import"./canvas.utils-BMxgA7cX.js";import"./canvas.eventBus-C-z2MFNA.js";import"./useCanvasOperations-CI7Ylcwf.js";import"./setupPanel.store-D0Kh-_X7.js";import"./nodeTransforms-DgA3LbBA.js";import"./templateTransforms-Bcjcx-gt.js";import{n as dt,t as ft}from"./ContactAdministratorToInstall-CmQ5LyOX.js";import"./ProjectIcon-BBMQDCgu.js";import{t as pt}from"./ProjectCardBadge-CYWra6Zo.js";import{t as mt}from"./usage.store-Djhh9hUt.js";import"./EnterpriseEdition.ee-B8ZRsjsp.js";import{t as ht}from"./useDynamicCredentials-C74iW7Qx.js";import{t as gt}from"./Draggable-B_Sok8jx.js";import{t as _t}from"./NodeIcon-0naEDfOR.js";import"./pushConnection.store-L5aofOKN.js";import"./collaboration.store-BcnGWDqh.js";import{t as vt}from"./TimeAgo-B5--ltV7.js";import"./orderBy-D1a3yE-B.js";import"./ProjectSharing-XbSSp3Qv.js";import{t as yt}from"./folders.store-DKth0xuB.js";import"./TagsDropdown-DD1kUoaA.js";import{t as bt}from"./WorkflowTagsDropdown-BqoujWpp.js";import{t as xt}from"./insights.store-DoHmMCwa.js";import"./insights.constants-BWd0PYhd.js";import"./insights.utils-BGXnT8rV.js";import{t as St}from"./useMcp-D0Wazsp1.js";import{n as Ct,r as wt,t as Tt}from"./shuffle-CMoQZhEl.js";import{t as Q}from"./useWorkflowActivate-DFt4_Nvv.js";import"./values-C-wh6oVb.js";import{r as Et,t as Dt}from"./readyToRun.store-DpPozriV.js";import{t as Ot}from"./aiTemplatesStarterCollection.store-BmxR4DN8.js";import{t as kt}from"./readyToRunWorkflows.store-Cuyl81V2.js";import"./ProjectBreadcrumb-Dme2WBZU.js";import{t as At}from"./FolderBreadcrumbs-DQCcj0vL.js";import{t as jt}from"./emptyStateBuilderPrompt.store-_iBFPMyJ.js";import{t as Mt}from"./EmptySharedSectionActionBox-CDcZ4HAo.js";import{t as Nt}from"./ResourcesListLayout-BwbPvp3x.js";import"./ResourceFiltersDropdown-xUxdFA2c.js";import{n as Pt,t as Ft}from"./ProjectHeader-AgSz0mHM.js";import{t as It}from"./mcp.store-C36HSxV6.js";import{n as Lt,r as Rt,t as zt}from"./RecommendedTemplateCard-BzdFHjix.js";import{n as Bt,t as Vt}from"./shield-alt-DWWlpAvN.js";import{t as Ht}from"./InsightsSummary-CbWiDO6-.js";var Ut={"data-test-id":`folder-card`},Wt={key:0},Gt=B(s({__name:`FolderCard`,props:{data:{},personalProject:{},actions:{default:()=>[]},readOnly:{type:Boolean,default:!0},showOwnershipBadge:{type:Boolean,default:!1}},emits:[`action`,`folderOpened`],setup(e,{emit:o}){let s=e,c=j(),p=de(),m=ue(),h=yt(),v=o,y=a(new Promise(()=>{})),x=a([]),C=l(()=>c.baseText(`generic.folder`).toLowerCase()),w=l(()=>O(s.data.id)),T=l(()=>s.data.homeProject?.type===Ee.Personal?c.baseText(`projects.menu.personal`):s.data.homeProject?.name),E=l(()=>s.data.parentFolder?[{id:s.data.parentFolder.id,name:s.data.parentFolder.name,label:s.data.parentFolder.name,href:m.resolve({name:X.PROJECTS_FOLDERS,params:{projectId:s.data.homeProject?.id,folderId:s.data.parentFolder.id}}).href}]:[]),D=l(()=>s.showOwnershipBadge&&E.value.length),O=e=>m.resolve({name:X.PROJECTS_FOLDERS,params:{projectId:p.params.projectId,folderId:e},query:p.query}).href,ee=async e=>{if(e===H.OPEN){v(`folderOpened`,{folder:s.data}),await m.push(w.value);return}v(`action`,{action:e,folderId:s.data.id})},N=async()=>{if(!s.data.homeProject?.id||!T.value||!s.data.parentFolder)y.value=Promise.resolve([]);else{if(x.value.length){y.value=Promise.resolve(x.value);return}let e=h.getHiddenBreadcrumbsItems({id:s.data.homeProject.id,name:T.value},s.data.parentFolder.id);y.value=e,x.value=await e}},te=async e=>{e.href&&await m.push(e.href)};return(a,o)=>{let l=_(`RouterLink`);return t(),i(`div`,Ut,[S(l,{to:w.value,onClick:o[1]||=()=>v(`folderOpened`,{folder:s.data})},{default:A(()=>[S(f(I),{class:g(a.$style.card)},{prepend:A(()=>[S(f(M),{"data-test-id":`folder-card-icon`,class:g(a.$style[`folder-icon`]),icon:`folder`,size:`xlarge`,"stroke-width":1},null,8,[`class`])]),header:A(()=>[r(`div`,{class:g(a.$style[`card-header`])},[S(f(le),{tag:`h2`,bold:``,size:`small`,"data-test-id":`folder-card-name`},{default:A(()=>[n(u(e.data.name),1)]),_:1}),e.readOnly?(t(),k(f(R),{key:0,class:`ml-3xs`,theme:`tertiary`,bold:``},{default:A(()=>[n(u(f(c).baseText(`workflows.item.readonly`)),1)]),_:1})):d(``,!0)],2)]),footer:A(()=>[r(`div`,{class:g(a.$style[`card-footer`])},[e.data.workflowCount>0?(t(),k(f(z),{key:0,size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--workflow-count`]]),"data-test-id":`folder-card-folder-count`},{default:A(()=>[n(u(f(c).baseText(`generic.workflow`,{interpolate:{count:e.data.workflowCount}})),1)]),_:1},8,[`class`])):d(``,!0),e.data.subFolderCount>0?(t(),k(f(z),{key:1,size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--workflow-count`]]),"data-test-id":`folder-card-workflow-count`},{default:A(()=>[n(u(f(c).baseText(`generic.folderCount`,{interpolate:{count:e.data.subFolderCount}})),1)]),_:1},8,[`class`])):d(``,!0),S(f(z),{size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--updated`]]),"data-test-id":`folder-card-last-updated`},{default:A(()=>[n(u(f(c).baseText(`workerList.item.lastUpdated`))+` `,1),S(vt,{date:String(e.data.updatedAt)},null,8,[`date`])]),_:1},8,[`class`]),S(f(z),{size:`small`,color:`text-light`,class:g([a.$style[`info-cell`],a.$style[`info-cell--created`]]),"data-test-id":`folder-card-created`},{default:A(()=>[n(u(f(c).baseText(`workflows.item.created`))+` `,1),S(vt,{date:String(e.data.createdAt)},null,8,[`date`])]),_:1},8,[`class`])],2)]),append:A(()=>[r(`div`,{class:g(a.$style[`card-actions`]),onClick:o[0]||=b(()=>{},[`prevent`])},[e.data.homeProject&&e.showOwnershipBadge?(t(),i(`div`,Wt,[S(pt,{class:g({[a.$style.cardBadge]:!0,[a.$style[`with-breadcrumbs`]]:D.value}),resource:e.data,"resource-type":f(V).Workflow,"resource-type-label":C.value,"personal-project":e.personalProject,"show-badge-border":!1},{default:A(()=>[D.value?(t(),i(`div`,{key:0,class:g(a.$style.breadcrumbs)},[S(f(P),{items:E.value,"hidden-items":e.data.parentFolder?.parentFolderId===null?void 0:y.value,"path-truncated":e.data.parentFolder?.parentFolderId!==null,"highlight-last-item":!1,"hidden-items-trigger":`hover`,theme:`small`,"data-test-id":`folder-card-breadcrumbs`,onTooltipOpened:N,onItemSelected:te},{prepend:A(()=>[...o[2]||=[]]),_:1},8,[`items`,`hidden-items`,`path-truncated`])],2)):d(``,!0)]),_:1},8,[`class`,`resource`,`resource-type`,`resource-type-label`,`personal-project`])])):d(``,!0),e.actions.length?(t(),k(f(oe),{key:1,actions:e.actions,theme:`dark`,"data-test-id":`folder-card-actions`,onAction:ee},null,8,[`actions`])):d(``,!0)],2)]),_:1},8,[`class`])]),_:1},8,[`to`])])}}}),[[`__cssModules`,{$style:{card:`_card_mp6zu_125`,"folder-icon":`_folder-icon_mp6zu_133`,"card-header":`_card-header_mp6zu_142`,"card-footer":`_card-footer_mp6zu_150`,"info-cell":`_info-cell_mp6zu_154`,cardBadge:`_cardBadge_mp6zu_159`,"with-breadcrumbs":`_with-breadcrumbs_mp6zu_159`,"card-actions":`_card-actions_mp6zu_166`,"info-cell--created":`_info-cell--created_mp6zu_184`}}]]),Kt=e(ct(),1),qt={key:0},Jt=B(s({__name:`WorkflowCard`,props:{data:{},readOnly:{type:Boolean,default:!1},workflowListEventBus:{default:void 0},showOwnershipBadge:{type:Boolean,default:!1},areTagsEnabled:{type:Boolean,default:!0},isMcpEnabled:{type:Boolean,default:!1},areFoldersEnabled:{type:Boolean,default:!1}},emits:[`expand:tags`,`click:tag`,`workflow:deleted`,`workflow:archived`,`workflow:unarchived`,`workflow:unpublished`,`workflow:active-toggle`,`action:move-to-folder`],setup(e,{emit:o}){let s={OPEN:`open`,SHARE:`share`,DUPLICATE:`duplicate`,DELETE:`delete`,ARCHIVE:`archive`,UNARCHIVE:`unarchive`,MOVE:`move`,MOVE_TO_FOLDER:`moveToFolder`,ENABLE_MCP_ACCESS:`enableMCPAccess`,REMOVE_MCP_ACCESS:`removeMCPAccess`,UNPUBLISH:`unpublish`},c=e,p=o,m=ke(),h=Ie(),_=j(),y=ue(),x=de(),C=Ne(),w=St(),{isEnabled:E}=ht(),D=Ve(),O=We(),ee=He(),te=we(),ne=Se(),L=yt(),ie=It(),ae=Q(),se=a(new Promise(()=>{})),ce=a([]),le=a(null),fe=l(()=>_.baseText(`generic.workflow`).toLowerCase()),pe=l(()=>O.currentUser??{}),me=l(()=>$e(c.data.scopes).workflow),he=l(()=>$e(O.currentUser?.globalScopes).workflow),ge=l(()=>$e(ne.myProjects?.find(e=>c.data.homeProject?.id===e.id)?.scopes).workflow),_e=l(()=>he.value.create??ge.value.create),B=l(()=>c.showOwnershipBadge&&!Te.value&&ye.value.length),ve=l(()=>c.data.homeProject?.type===Ee.Personal?_.baseText(`projects.menu.personal`):c.data.homeProject?.name),ye=l(()=>c.data.parentFolder?[{id:c.data.parentFolder.id,name:c.data.parentFolder.name,label:c.data.parentFolder.name,href:y.resolve({name:X.PROJECTS_FOLDERS,params:{projectId:c.data.homeProject?.id,folderId:c.data.parentFolder.id}}).href}]:[]),be=l(()=>{let e=[{label:_.baseText(`workflows.item.open`),value:s.OPEN}];return me.value.share&&e.push({label:_.baseText(`workflows.item.share`),value:s.SHARE}),me.value.read&&_e.value&&!c.readOnly&&!c.data.isArchived&&e.push({label:_.baseText(`workflows.item.duplicate`),value:s.DUPLICATE}),!c.readOnly&&c.areFoldersEnabled&&(me.value.update||me.value.move&&ne.isTeamProjectFeatureEnabled)&&x.name!==X.SHARED_WORKFLOWS&&e.push({label:_.baseText(`folders.actions.moveToFolder`),value:s.MOVE_TO_FOLDER}),me.value.delete&&!c.readOnly&&(c.data.isArchived?(e.push({label:_.baseText(`workflows.item.delete`),value:s.DELETE}),e.push({label:_.baseText(`workflows.item.unarchive`),value:s.UNARCHIVE})):e.push({label:_.baseText(`workflows.item.archive`),value:s.ARCHIVE})),De.value&&me.value.unpublish&&!c.readOnly&&!c.data.isArchived&&e.push({label:_.baseText(`menuActions.unpublish`),value:s.UNPUBLISH}),c.isMcpEnabled&&me.value.update&&!c.readOnly&&!c.data.isArchived&&(Ce.value?e.push({label:_.baseText(`workflows.item.disableMCPAccess`),value:s.REMOVE_MCP_ACCESS}):e.push({label:_.baseText(`workflows.item.enableMCPAccess`),value:s.ENABLE_MCP_ACCESS})),e}),xe=l(()=>{let e=new Date().getFullYear().toString();return(0,Kt.default)(c.data.createdAt,`d mmmm${String(c.data.createdAt).startsWith(e)?``:`, yyyy`}`)}),Ce=l(()=>le.value===null?c.data.settings?.availableInMCP??!1:le.value),Te=l(()=>c.data.homeProject?.type!==Ee.Team&&c.data.homeProject?.id!==ne.personalProject?.id),De=l(()=>c.data.activeVersionId!==null),H=l(()=>E.value&&c.data.hasResolvableCredentials),Ae=l(()=>E.value&&c.data.hasResolvableCredentials&&!c.data.settings?.credentialResolverId);async function je(e){if(e?.ctrlKey||e?.metaKey){let e=y.resolve({name:X.WORKFLOW,params:{name:c.data.id}});window.open(e.href,`_blank`);return}await y.push({name:X.WORKFLOW,params:{name:c.data.id}})}function Me(e,t){t.stopPropagation(),p(`click:tag`,e,t)}function Pe(){p(`expand:tags`)}async function Fe(e){switch(e){case s.OPEN:await je();break;case s.DUPLICATE:D.openModalWithData({name:qe,data:{id:c.data.id,name:c.data.name,tags:(c.data.tags??[]).map(e=>typeof e!=`string`&&`id`in e?e.id:e),externalEventBus:c.workflowListEventBus,parentFolderId:c.data.parentFolder?.id}});break;case s.SHARE:D.openModalWithData({name:tt,data:{id:c.data.id}}),C.track(`User opened sharing modal`,{workflow_id:c.data.id,user_id_sharer:pe.value.id,sub_view:`Workflows listing`});break;case s.DELETE:await Re();break;case s.ARCHIVE:await ze();break;case s.UNARCHIVE:await Be();break;case s.MOVE:Ge();break;case s.MOVE_TO_FOLDER:p(`action:move-to-folder`,{id:c.data.id,name:c.data.name,parentFolderId:c.data.parentFolder?.id,sharedWithProjects:c.data.sharedWithProjects,homeProjectId:c.data.homeProject?.id});break;case s.ENABLE_MCP_ACCESS:await Le(!0);break;case s.REMOVE_MCP_ACCESS:await Le(!1);break;case s.UNPUBLISH:await U();break}}async function U(){if(!c.data.activeVersionId){m.showMessage({title:_.baseText(`workflowHistory.action.unpublish.notAvailable`),type:`warning`});return}let e=N();e.once(`unpublish`,async()=>{let e=await ae.unpublishWorkflowFromHistory(c.data.id);D.closeModal(q),e&&(p(`workflow:unpublished`,{id:c.data.id}),m.showMessage({title:_.baseText(`workflowHistory.action.unpublish.success.title`),type:`success`}))}),D.openModalWithData({name:q,data:{versionName:c.data.name,eventBus:e}})}async function Le(e){try{await ie.toggleWorkflowMcpAccess(c.data.id,e),le.value=e,w.trackMcpAccessEnabledForWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`workflowSettings.toggleMCP.error.title`));return}}async function Re(){if(await h.confirm(_.baseText(`mainSidebar.confirmMessage.workflowDelete.message`,{interpolate:{workflowName:c.data.name}}),_.baseText(`mainSidebar.confirmMessage.workflowDelete.headline`),{type:`warning`,confirmButtonText:_.baseText(`mainSidebar.confirmMessage.workflowDelete.confirmButtonText`),cancelButtonText:_.baseText(`mainSidebar.confirmMessage.workflowDelete.cancelButtonText`)})===`confirm`){try{await te.deleteWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.deleteWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleSelect1.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:deleted`)}}async function ze(){if(!(c.data.active&&await h.confirm(_.baseText(`mainSidebar.confirmMessage.workflowArchive.message`,{interpolate:{workflowName:c.data.name}}),_.baseText(`mainSidebar.confirmMessage.workflowArchive.headline`),{type:`warning`,confirmButtonText:_.baseText(`mainSidebar.confirmMessage.workflowArchive.confirmButtonText`),cancelButtonText:_.baseText(`mainSidebar.confirmMessage.workflowArchive.cancelButtonText`)})!==`confirm`)){try{await ee.archiveWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.archiveWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleArchive.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:archived`)}}async function Be(){try{await ee.unarchiveWorkflow(c.data.id)}catch(e){m.showError(e,_.baseText(`generic.unarchiveWorkflowError`));return}m.showMessage({title:_.baseText(`mainSidebar.showMessage.handleUnarchive.title`,{interpolate:{workflowName:c.data.name}}),type:`success`}),p(`workflow:unarchived`)}let Ue=async()=>{if(!c.data.homeProject?.id||!ve.value||!c.data.parentFolder)se.value=Promise.resolve([]);else{if(ce.value.length){se.value=Promise.resolve(ce.value);return}let e=L.getHiddenBreadcrumbsItems({id:c.data.homeProject.id,name:ve.value},c.data.parentFolder.id);se.value=e,ce.value=await e}};function Ge(){D.openModalWithData({name:Oe,data:{resource:c.data,resourceType:V.Workflow,resourceTypeLabel:fe.value,eventBus:c.workflowListEventBus}})}let W=async e=>{e.href&&await y.push(e.href)},Ke=l(()=>c.data.tags?.map(e=>typeof e==`string`?{id:e,name:e}:e)??[]);return(a,o)=>(t(),k(f(I),{class:g({[a.$style.cardLink]:!0,[a.$style.cardArchived]:e.data.isArchived}),"data-test-id":`workflow-card`,onClick:je},{header:A(()=>[S(f(z),{tag:`h2`,bold:``,class:g({[a.$style.cardHeading]:!0,[a.$style.cardHeadingArchived]:e.data.isArchived}),"data-test-id":`workflow-card-name`},{default:A(()=>[n(u(e.data.name)+` `,1),me.value.update?d(``,!0):(t(),k(f(R),{key:0,class:`ml-3xs`,theme:`tertiary`,bold:``},{default:A(()=>[n(u(f(_).baseText(`workflows.item.readonly`)),1)]),_:1})),H.value?(t(),k(f(F),{key:1,placement:`top`},{content:A(()=>[r(`div`,{class:g(a.$style.tooltipContent)},[r(`strong`,null,u(f(_).baseText(`workflows.dynamic.tooltipTitle`)),1),r(`span`,null,u(f(_).baseText(`workflows.dynamic.tooltip`)),1)],2)]),default:A(()=>[S(f(R),{theme:`tertiary`,class:`ml-3xs pl-3xs pr-3xs`,"data-test-id":`workflow-card-dynamic-credentials`},{default:A(()=>[r(`span`,{class:g(a.$style.dynamicBadgeText)},[S(f(M),{icon:`key-round`,size:`medium`}),n(` `+u(f(_).baseText(`credentials.dynamic.badge`)),1)],2)]),_:1})]),_:1})):d(``,!0),Ae.value?(t(),k(f(R),{key:2,theme:`warning`,class:`ml-3xs pl-3xs pr-3xs`,"data-test-id":`workflow-card-resolver-missing`},{default:A(()=>[r(`span`,{class:g(a.$style.resolverMissingBadge)},u(f(_).baseText(`workflows.dynamic.resolverMissing`)),3)]),_:1})):d(``,!0)]),_:1},8,[`class`])]),append:A(()=>[r(`div`,{class:g(a.$style.cardActions),onClick:o[0]||=b(()=>{},[`stop`])},[e.showOwnershipBadge?(t(),k(pt,{key:0,class:g({[a.$style.cardBadge]:!0,[a.$style[`with-breadcrumbs`]]:B.value}),resource:e.data,"resource-type":f(V).Workflow,"resource-type-label":fe.value,"personal-project":f(ne).personalProject,"show-badge-border":!1},{default:A(()=>[B.value?(t(),i(`div`,{key:0,class:g(a.$style.breadcrumbs)},[S(f(P),{items:ye.value,"hidden-items":e.data.parentFolder?.parentFolderId===null?void 0:se.value,"path-truncated":e.data.parentFolder?.parentFolderId!==null,"highlight-last-item":!1,"hidden-items-trigger":`hover`,theme:`small`,"data-test-id":`workflow-card-breadcrumbs`,onTooltipOpened:Ue,onItemSelected:W},{prepend:A(()=>[...o[2]||=[]]),_:1},8,[`items`,`hidden-items`,`path-truncated`])],2)):d(``,!0)]),_:1},8,[`class`,`resource`,`resource-type`,`resource-type-label`,`personal-project`])):d(``,!0),e.data.isArchived?(t(),k(f(z),{key:1,color:`text-light`,size:`small`,bold:``,class:`ml-s mr-s`,"data-test-id":`workflow-card-archived`},{default:A(()=>[n(u(f(_).baseText(`workflows.item.archived`)),1)]),_:1})):De.value?(t(),i(`div`,{key:2,class:g(a.$style.publishIndicator),"data-test-id":`workflow-card-publish-indicator`},[r(`span`,{class:g(a.$style.publishIndicatorDot)},null,2),S(f(z),{size:`small`,color:`text-base`},{default:A(()=>[n(u(f(_).baseText(`workflows.published`)),1)]),_:1})],2)):d(``,!0),S(f(oe),{actions:be.value,theme:`dark`,"data-test-id":`workflow-card-actions`,onAction:Fe},null,8,[`actions`])],2)]),default:A(()=>[r(`div`,{class:g(a.$style.cardDescription)},[v(r(`span`,null,[n(u(f(_).baseText(`workflows.item.updated`))+` `,1),S(vt,{date:String(e.data.updatedAt)},null,8,[`date`]),o[1]||=n(` | `,-1)],512),[[T,e.data]]),v(r(`span`,null,[n(u(f(_).baseText(`workflows.item.created`))+` `+u(xe.value)+` `,1),c.isMcpEnabled&&Ce.value?(t(),i(`span`,qt,`|`)):d(``,!0)],512),[[T,e.data]]),v(r(`span`,{class:g([a.$style[`description-cell`],a.$style[`description-cell--mcp`]]),"data-test-id":`workflow-card-mcp`},[S(f(F),{placement:`right`,content:f(_).baseText(`workflows.item.availableInMCP`),"data-test-id":`workflow-card-mcp-tooltip`},{default:A(()=>[S(f(M),{icon:`mcp`,size:`medium`})]),_:1},8,[`content`])],2),[[T,c.isMcpEnabled&&Ce.value]]),c.areTagsEnabled&&e.data.tags&&e.data.tags.length>0?v((t(),i(`span`,{key:0,class:g(a.$style.cardTags)},[S(f(re),{tags:Ke.value,"truncate-at":3,truncate:``,"data-test-id":`workflow-card-tags`,"onClick:tag":Me,onExpand:Pe},null,8,[`tags`])],2)),[[T,e.data]]):d(``,!0)],2)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{cardLink:`_cardLink_fcosa_125`,cardHeading:`_cardHeading_fcosa_135`,cardHeadingArchived:`_cardHeadingArchived_fcosa_143`,"description-popper":`_description-popper_fcosa_147`,cardDescription:`_cardDescription_fcosa_151`,cardTags:`_cardTags_fcosa_161`,cardActions:`_cardActions_fcosa_166`,cardBadge:`_cardBadge_fcosa_177`,"with-breadcrumbs":`_with-breadcrumbs_fcosa_181`,cardArchived:`_cardArchived_fcosa_188`,"description-cell--mcp":`_description-cell--mcp_fcosa_194`,dynamicBadgeText:`_dynamicBadgeText_fcosa_202`,resolverMissingBadge:`_resolverMissingBadge_fcosa_210`,tooltipContent:`_tooltipContent_fcosa_218`,publishIndicator:`_publishIndicator_fcosa_224`,publishIndicatorDot:`_publishIndicatorDot_fcosa_237`,breadcrumbs:`_breadcrumbs_fcosa_256`}}]]),Yt=80,Xt=20;function Zt(e){let t,n=0,r=e.edgeSize??Yt,i=e.maxSpeed??Xt,a=()=>{n=0,t!==void 0&&(cancelAnimationFrame(t),t=void 0)},s=()=>{let r=e.container.value;if(!r||n===0){t=void 0;return}r.scrollBy({top:n}),t=requestAnimationFrame(s)},c=e=>{n=e,t??=requestAnimationFrame(s)},l=t=>{let n=e.container.value;if(!n){a();return}let{scrollHeight:o,clientHeight:s}=n;if(o<=s){a();return}let l=n.getBoundingClientRect(),u=t.clientY,d=0,f=0;if(u<l.top)d=-1,f=r;else if(u>l.bottom)d=1,f=r;else{let e=u-l.top,t=l.bottom-u,n=e<r,i=t<r;(n||i)&&(!i||e<=t?(d=-1,f=r-Math.min(e,r)):(d=1,f=r-Math.min(t,r)))}if(d===0){a();return}let p=Math.min(f/r,1);c(d*Math.max(2,p*i))},u=()=>{window.addEventListener(`mousemove`,l)},d=()=>{window.removeEventListener(`mousemove`,l)};y([e.isActive,e.container],([e,t],n,r)=>{d(),a(),e&&t&&u(),r(()=>{d(),a()})},{immediate:!0}),o(()=>{d(),a()})}function Qt(){let e=0;function t(){let t=++e;return()=>t===e}return{next:t}}function $t(e){return e.type===`folder`||e.type===`project`}function en(e){return[`folder`,`workflow`,`project`].includes(e)}function tn(){let e=j(),t=yt(),n=l(()=>t.draggedElement!==null);function r(t){return Ae.test(t)?e.baseText(`folders.invalidName.invalidCharacters.message`,{interpolate:{illegalChars:ze.join(` `)}}):De.test(t)?e.baseText(`folders.invalidName.only.dots.message`):t.startsWith(`.`)?e.baseText(`folders.invalidName.starts.with.dot..message`):t.trim()===``?e.baseText(`folders.invalidName.empty.message`):t.length>128?e.baseText(`folders.invalidName.tooLong.message`,{interpolate:{maxLength:128}}):!0}function i(e){let n=e.closest(`[data-target]`);if(!n)return;let r=c(n);r&&(r.type===`folder`||r.type===`workflow`)&&(t.draggedElement={type:r.type,id:r.id,name:r.name},document.body.classList.add(`dragging-resource`))}function a(){t.draggedElement=null,t.activeDropTarget=null,document.body.classList.remove(`dragging-resource`)}function o(e){let r=e.target;if(!r||!n.value)return;e.preventDefault(),e.stopPropagation();let i=c(r);!i||i.type!==`folder`||(t.activeDropTarget={type:i.type,id:i.id,name:i.name})}function s(){t.activeDropTarget=null}function c(e){let t=e.closest(`[data-target]`);if(!t)return null;let n=t.dataset.target,r=t.dataset.resourceid,i=t.dataset.resourcename;return!n||!r||!i||!en(n)?null:{type:n,id:r,name:i}}function u(e){let r=e.target;if(!r||!n.value)return{};e.preventDefault();let i=t.draggedElement?.id,o=t.draggedElement?.type,s=t.draggedElement?.name;if(!i||!o||!s)return{};a();let l=c(r);return!l||!$t(l)?{}:{draggedResource:{type:o,id:i,name:s},dropTarget:{type:l.type,id:l.id,name:l.name}}}return{validateFolderName:r,onDragStart:i,onDragEnd:a,onDragEnter:o,resetDropTarget:s,handleDrop:u}}var nn=[6270,5271,2178],rn={"n8n-nodes-base.gmail":[5678,4722,5694],"n8n-nodes-base.googleSheets":[5694,5690,5906],"n8n-nodes-base.telegram":[5626,2114,4875],"@n8n/n8n-nodes-langchain.openAi":[2462,2722,2178],"@n8n/n8n-nodes-langchain.googleGemini":[5993,6270,5677],"n8n-nodes-base.googleCalendar":[2328,3393,2110],"n8n-nodes-base.youTube":[3188,4846,4506],"n8n-nodes-base.airtable":[3053,2700,2579]};function an(e){return Object.keys(rn).filter(t=>e.includes(t)).reduce((e,t)=>[...e,...rn[t]],[])}function on(e){if(e.length===0)return nn;let t=an(e);return t.length>0?t:[]}function sn(e){return e.length<=3?e:Array.from(new Map(e.map(e=>[e.id,e])).values()).sort((e,t)=>t.totalViews-e.totalViews).slice(0,3)}const cn=ot(Ue.PERSONALIZED_TEMPLATES,()=>{let e=Ne(),t=Te(),n=U(),r=xe(),i=a([]),o=Be(Y),s=l(()=>o.value?G(o.value,{fallbackValue:[]}):[]),c=l(()=>i.value.filter(({id:e})=>!s.value.includes(e))),u=e=>{o.value=JSON.stringify([...s.value??[],e])},d=()=>t.getVariant(nt.name)===nt.variantSuggestedTemplates&&n.userIsTrialing,f=t=>{e.track(`User was recommended personalized templates`,{templateIds:t})},p=t=>{e.track(`User clicked on personalized template callout`,{templateId:t})},m=t=>{e.track(`User dismissed personalized template callout`,{templateId:t})},h=async(e,t)=>{if(d())try{if(e===1){let e=on(t);if(e.length>0){let t=e.map(async e=>await r.fetchTemplateById(e.toString())),n=sn(await Promise.all(t));i.value=n,f(n.map(e=>e.id));return}}let n=(await r.getWorkflows({categories:[],search:``,sort:`rank:desc`,nodes:t.length>0?t:void 0,combineWith:`or`})).slice(0,3).map(e=>e.id).map(async e=>await r.fetchTemplateById(e.toString())),a=sn(await Promise.all(n));i.value=a,f(a.map(e=>e.id))}catch{}};return y(()=>n.currentUserCloudInfo,async e=>{if(!e)return;let t=n.codingSkill;await h(t,n.selectedApps??[])}),{isFeatureEnabled:d,suggestedWorkflows:c,dismissSuggestedWorkflow:u,trackUserClickedOnPersonalizedTemplate:p,trackUserDismissedCallout:m,getTemplateRoute:e=>({name:X.TEMPLATE,params:{id:e}})}});var ln=B(s({__name:`SuggestedWorkflowCard`,props:{data:{}},setup(e){let{data:i}=e,{dismissSuggestedWorkflow:a,getTemplateRoute:o,trackUserClickedOnPersonalizedTemplate:s,trackUserDismissedCallout:c}=cn(),l=j(),d=()=>{c(i.id),a(i.id)},p=()=>{s(i.id),a(i.id)};return(e,a)=>(t(),k(f(ce),{theme:`secondary`,iconless:!0,class:g(e.$style[`suggested-workflow-callout`]),slim:!0},{trailingContent:A(()=>[r(`div`,{class:g(e.$style[`callout-trailing-content`])},[S(f(pe),{"data-test-id":`suggested-workflow-button`,size:`small`,to:f(o)(f(i).id),onClick:p},{default:A(()=>[n(u(f(l).baseText(`workflows.itemSuggestion.try`)),1)]),_:1},8,[`to`]),S(f(M),{size:`small`,icon:`x`,title:f(l).baseText(`generic.dismiss`),class:`clickable`,onClick:d},null,8,[`title`])],2)]),default:A(()=>[r(`div`,{class:g(e.$style[`callout-content`])},u(f(i).name),3)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{"suggested-workflow-callout":`_suggested-workflow-callout_1wrxf_125`,"callout-content":`_callout-content_1wrxf_131`,"callout-trailing-content":`_callout-trailing-content_1wrxf_135`}}]]),un={"suggested-workflows":`_suggested-workflows_15lpu_125`},$={},dn={class:`suggested-workflows`,"data-test-id":`suggested-workflows`};function fn(e,n){return t(),i(`div`,dn,[x(e.$slots,`default`)])}var pn=B($,[[`render`,fn],[`__cssModules`,{$style:un}]]),mn=B(s({__name:`NodeRecommendationCard`,props:{nodeName:{}},setup(e){let a=e,o=Ve(),s=W(),{trackMinicardClick:c}=wt(),d=l(()=>s.getNodeType(a.nodeName)),m=()=>{c(d.value?.displayName??a.nodeName),o.openModalWithData({name:it,data:{nodeName:a.nodeName}})};return p(async()=>{await s.loadNodeTypesIfNotLoaded()}),(e,a)=>(t(),i(`div`,null,[S(f(I),{class:g(e.$style.nodeCard),hoverable:``,onClick:m},{default:A(()=>[r(`div`,{class:g(e.$style.emptyStateCardContent)},[S(_t,{"node-type":d.value,class:g(e.$style.nodeIcon),"stroke-width":1.5},null,8,[`node-type`,`class`]),S(f(z),{size:`xsmall`,class:`mt-xs pl-2xs pr-2xs`,bold:!0},{default:A(()=>[n(u(d.value?.displayName),1)]),_:1})],2)]),_:1},8,[`class`])]))}}),[[`__cssModules`,{$style:{nodeCard:`_nodeCard_tubis_125`,nodeIcon:`_nodeIcon_tubis_135`,emptyStateCardContent:`_emptyStateCardContent_tubis_139`}}]]),hn={key:0,class:`text-center mt-3xl`,"data-test-id":`list-empty-state`},gn=B(s({__name:`TemplateRecommendationV2`,setup(e){let a=wt(),o=j();return(e,s)=>f(a).nodes.length?(t(),i(`div`,hn,[S(f(le),{tag:`h2`,size:`medium`,class:`mb-2xs`,color:`text-light`},{default:A(()=>[n(u(f(o).baseText(`workflows.templateRecoV2.exploreTemplates`)),1)]),_:1}),r(`div`,{class:g(e.$style.nodeCardsContainer)},[(t(!0),i(h,null,O(f(a).nodes,e=>(t(),k(mn,{key:e,"node-name":e},null,8,[`node-name`]))),128))],2)])):d(``,!0)}}),[[`__cssModules`,{$style:{nodeCardsContainer:`_nodeCardsContainer_1seru_125`}}]]),_n=B(s({__name:`NodeRecommendationCard`,props:{nodeName:{}},setup(e){let a=e,o=Ve(),s=W(),{trackPersonalizationCardClick:c,markTemplateRecommendationInteraction:d}=Ct(),m=l(()=>s.getNodeType(a.nodeName)),h=()=>{c(),d(),o.openModalWithData({name:J,data:{nodeName:a.nodeName}})};return p(async()=>{await s.loadNodeTypesIfNotLoaded()}),(e,a)=>(t(),i(`div`,null,[S(f(I),{class:g(e.$style.nodeCard),hoverable:``,onClick:h},{default:A(()=>[r(`div`,{class:g(e.$style.emptyStateCardContent)},[S(_t,{"node-type":m.value,class:g(e.$style.nodeIcon),"stroke-width":1.5},null,8,[`node-type`,`class`]),S(f(z),{size:`xsmall`,class:`mt-xs pl-2xs pr-2xs`,bold:!0},{default:A(()=>[n(u(m.value?.displayName),1)]),_:1})],2)]),_:1},8,[`class`])]))}}),[[`__cssModules`,{$style:{nodeCard:`_nodeCard_tubis_125`,nodeIcon:`_nodeIcon_tubis_135`,emptyStateCardContent:`_emptyStateCardContent_tubis_139`}}]]),vn={key:0,class:`text-center mt-3xl`,"data-test-id":`list-empty-state`},yn=B(s({__name:`TemplateRecommendationV3`,setup(e){let a=Ct(),o=j();return(e,s)=>f(a).hasChosenHubSpot?(t(),i(`div`,vn,[S(f(le),{tag:`h2`,size:`medium`,class:`mb-2xs`,color:`text-light`},{default:A(()=>[n(u(f(o).baseText(`experiments.personalizedTemplatesV3.exploreTemplates`)),1)]),_:1}),r(`div`,{class:g(e.$style.nodeCardsContainer)},[S(_n,{"node-name":`n8n-nodes-base.hubspot`})],2)])):d(``,!0)}}),[[`__cssModules`,{$style:{nodeCardsContainer:`_nodeCardsContainer_1seru_125`}}]]),bn=B(s({__name:`SkeletonTemplateCard`,setup(e){return(e,n)=>(t(),k(f(I),{class:g(e.$style.card),"aria-hidden":`true`},{default:A(()=>[r(`div`,{class:g(e.$style.cardContent)},[r(`div`,{class:g(e.$style.widthRow)},[r(`div`,{class:g(e.$style.widthBlock)},null,2),r(`div`,{class:g(e.$style.widthBlock)},null,2),r(`div`,{class:g(e.$style.widthBlock)},null,2)],2),r(`div`,{class:g(e.$style.nodes)},[r(`div`,{class:g(e.$style.nodeIcon)},[S(f(_e),{variant:`custom`})],2),r(`div`,{class:g(e.$style.nodeIcon)},[S(f(_e),{variant:`custom`})],2)],2),r(`div`,{class:g(e.$style.title)},[S(f(_e),{variant:`custom`})],2),r(`div`,{class:g(e.$style.title)},[S(f(_e),{variant:`custom`})],2),r(`div`,{class:g(e.$style.title)},[S(f(_e),{variant:`custom`})],2),r(`div`,{class:g(e.$style.stats)},[r(`div`,{class:g(e.$style.statItem)},[S(f(_e),{variant:`custom`})],2)],2)],2)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{card:`_card_1pphi_125`,widthRow:`_widthRow_1pphi_133`,widthBlock:`_widthBlock_1pphi_140`,cardContent:`_cardContent_1pphi_146`,nodes:`_nodes_1pphi_153`,nodeIcon:`_nodeIcon_1pphi_158`,title:`_title_1pphi_168`,stats:`_stats_1pphi_175`,statItem:`_statItem_1pphi_179`}}]]),xn=B(s({__name:`RecommendedTemplatesSection`,setup(e){let o=j(),s=Rt(),{websiteTemplateRepositoryURL:c}=at(xe()),l=a([]),d=a(!1);return p(async()=>{d.value=!0;try{l.value=await s.loadRecommendedTemplates()}finally{d.value=!1}}),(e,a)=>(t(),i(`section`,{class:g(e.$style.container),"data-test-id":`recommended-templates-section`},[r(`div`,{class:g(e.$style.header)},[S(f(z),{tag:`h2`,size:`large`,bold:!0},{default:A(()=>[n(u(f(o).baseText(`workflows.empty.startWithTemplate`)),1)]),_:1}),S(f(pe),{href:f(c),class:g(e.$style.allTemplatesLink)},{default:A(()=>[n(u(f(o).baseText(`templates.featured.seeMore`)),1)]),_:1},8,[`href`,`class`])],2),d.value?(t(),i(`div`,{key:0,class:g(e.$style.suggestions)},[(t(!0),i(h,null,O(f(6),e=>(t(),k(bn,{key:e}))),128))],2)):(t(),i(`div`,{key:1,class:g(e.$style.suggestions)},[(t(!0),i(h,null,O(l.value,(e,n)=>(t(),k(zt,{key:e.id,template:e,"tile-number":n+1,clickable:!0},null,8,[`template`,`tile-number`]))),128))],2))],2))}}),[[`__cssModules`,{$style:{container:`_container_d40wj_125`,header:`_header_d40wj_131`,allTemplatesLink:`_allTemplatesLink_d40wj_147`,suggestions:`_suggestions_d40wj_151`}}]]),Sn=`N8N_APP_SELECTION_DISMISSED`;const Cn=ot(Ue.EXPERIMENT_CREDENTIALS_APP_SELECTION,()=>{let e=Te(),t=Me(),n=U(),r=Ne(),i=Be(Sn),a=l(()=>i.value===`true`),o=l(()=>e.getVariant(Ye.name)),s=l(()=>o.value===Ye.variant),c=l(()=>n.userIsTrialing),u=l(()=>!(a.value||!s.value||!c.value)),d=l(()=>t.allCredentials.length),f=l(()=>d.value>0);function p(){r.track(`App selection page viewed`)}function m(e,t){r.track(`App selection search performed`,{search_term:e,result_count:t})}function h(){i.value=`true`}function g(e){r.track(`App selection completed`,{connected_count:d.value,connected_apps:e}),h()}function _(){i.value=null}return{currentVariant:o,isFeatureEnabled:u,isDismissed:a,connectedCount:d,canContinue:f,trackPageViewed:p,trackSearchPerformed:m,trackCompleted:g,dismiss:h,reset:_}});function wn(){let e=j(),t=We(),n=Se(),r=ye(),i=Rt(),a=jt(),o=Cn(),s=l(()=>t.currentUser??{}),c=l(()=>n.personalProject),u=l(()=>r.preferences.branchReadOnly),d=l(()=>$e(n.currentProject?.scopes??c.value?.scopes)),f=l(()=>!u.value&&d.value.workflow.create),p=l(()=>i.isFeatureEnabled&&!u.value&&d.value.workflow.create),m=l(()=>a.isFeatureEnabled&&!u.value&&d.value.workflow.create);return{showAppSelection:l(()=>o.isFeatureEnabled&&!u.value&&d.value.workflow.create),showBuilderPrompt:m,showRecommendedTemplatesInline:p,builderHeading:l(()=>{let t=s.value.firstName;return t?e.baseText(`workflows.empty.heading.builder`,{interpolate:{name:t}}):e.baseText(`workflows.empty.heading.builder.userNotSetup`)}),emptyStateHeading:l(()=>{let t=s.value.firstName;return p.value?t?e.baseText(`workflows.empty.heading`,{interpolate:{name:t}}):e.baseText(`workflows.empty.heading.userNotSetup`):t?e.baseText(`workflows.empty.headingWithIcon`,{interpolate:{name:t}}):e.baseText(`workflows.empty.headingWithIcon.userNotSetup`)}),emptyStateDescription:l(()=>u.value?e.baseText(`workflows.empty.description.readOnlyEnv`):d.value.workflow.create?e.baseText(`workflows.empty.description`):e.baseText(`workflows.empty.description.noPermission`)),canCreateWorkflow:f,readOnlyEnv:u,projectPermissions:d}}const Tn=[{id:`multi-agent-research`,summary:`a multi-agent research workflow`,prompt:'Create a multi-agent AI workflow using `gpt-4.1-mini` where several agents work together to research a topic, fact-check the findings, and write a report that\'s sent as an HTML email. One agent should gather recent, credible information about the topic. Another agent should verify the facts and only mark something as "verified" if it appears in at least two independent sources. A third agent should combine the verified information into a clear, well-written report under 1,000 words. A final agent should edit and format the report to make it look clean and professional in the body of the email. Use Gmail to send the report.'},{id:`email-summary`,summary:`an email summary workflow`,prompt:"Create an automation that runs on Monday mornings. It reads my Gmail inbox from the weekend, analyzes them with `gpt-4.1-mini` to find action items and priorities, and emails me a structured email using Gmail."},{id:`ai-news-digest`,summary:`a daily AI news digest workflow`,prompt:'Build an automation that runs every night 8pm. Use the NewsAPI "/everything" endpoint to search for AI-related news from the day. Pick the top 5 articles and use OpenAI `gpt-4.1-mini` to summarize each in two sentences. Generate an image using OpenAI based on the top article\'s summary. Send a structured Telegram message.'},{id:`daily-weather-report`,summary:`a daily weather report workflow`,prompt:"Create an automation that checks the weather for my location every morning at 5 a.m using OpenWeather. Send me a short weather report by email using Gmail. Use OpenAI `gpt-4.1-mini` to write a short, fun formatted email body by adding personality when describing the weather and how the day might feel. Include all details relevant to decide on my plans and clothes for the day."},{id:`invoice-pipeline`,summary:`an invoice processing workflow`,prompt:"Create an invoice processing workflow using an n8n Form. When a user submits an invoice file (PDF or image) with their email address, use OpenAI `gpt-4.1-mini` to extract invoice data. Then, validate the date format is correct, the currency is valid, and the total amount is greater than zero. If validation fails, email the user a clear error message that explains which check failed from my Gmail. If the data passes validation, store the structured result in a datatable plus email the user. Every Monday morning, generate a weekly spending report using `gpt-4.1-mini` based on stored invoices and send a clean email using Gmail."},{id:`rag-assistant`,summary:`a RAG knowledge agent`,prompt:"Build an automation that creates a document-to-chat RAG pipeline. The workflow starts with an n8n Form where a user uploads one or more files (PDF, CSV, or JSON). Each upload should trigger a process that reads the file, splits it into chunks, and generates embeddings using OpenAI `gpt-4.1-mini` model, saved in one Pinecone table. Add a second part of the workflow for querying: use a Chat Message Trigger to act as a chatbot interface. When a user sends a question, retrieve the top 5 most relevant chunks from Pinecone, pass them into `gpt-4.1-mini` as context, and have it answer naturally using only the retrieved information. If a question can't be answered confidently, the bot should respond with: \"I couldn't find that in the uploaded documents.\" Log each chat interaction in a Data Table with the user query, matched file(s), and timestamp. Send a daily summary email through Gmail showing total questions asked, top files referenced, and any failed lookups."},{id:`lead-qualification`,summary:`a lead qualification workflow`,prompt:`Create an n8n form with a lead generation form I can embed on my website homepage. Build an automation that processes form submissions, uses AI to qualify the lead, sends data to an n8n data table. For high-score leads, it should also email them to offer to schedule a 15-min call in a free slot in my calendar.`},{id:`youtube-auto-chapters`,summary:`a YouTube chapter generator workflow`,prompt:`Build an n8n workflow that automatically generates YouTube chapter timestamps from video captions. Use the n8n chat trigger for me to enter the URL of the YouTube video. Use the YouTube Get a video node to get the video title, description, and existing metadata. Use the YouTube Captions API to download the transcript for the given video ID. Send the transcript to AI agent using Anthropic's Claude model. Prompt the model to identify topic shifts and return structured output in timestamp - chapter format. Append the generated chapter list to the existing video description. Use the YouTube Update a video node to update the video description. Respond back with the updates using the respond to chat node.`}];var En=e(Tt(),1),Dn=40,On=25,kn=1500,An=300,jn=`Build `;function Mn(e,t){let n=a(0),r=a(``),i=null,o=l(()=>{let t=e.value;return t.length===0?``:t[n.value%t.length]?.summary??``}),s=l(()=>jn+r.value);function c(){i!==null&&(clearTimeout(i),i=null)}function u(){if(!t.value||e.value.length===0)return;let n=o.value;r.value.length<n.length?(r.value=n.slice(0,r.value.length+1),i=setTimeout(u,Dn)):i=setTimeout(d,kn)}function d(){f()}function f(){t.value&&e.value.length!==0&&(r.value.length>0?(r.value=r.value.slice(0,-1),i=setTimeout(f,On)):(n.value=(n.value+1)%e.value.length,i=setTimeout(u,An)))}function p(){c(),u()}function h(){c()}return y(t,e=>{e?p():h()},{immediate:!0}),m(()=>{c()}),{placeholder:s}}var Nn=B(s({__name:`EmptyStateBuilderPrompt`,props:{projectId:{},parentFolderId:{}},emits:[`submit`,`startFromScratch`],setup(e,{emit:o}){let s=e,c=ue(),d=ke(),p=j(),m=Ne(),h=jt(),_=o,v=a(``),y=a(),b=a(null),{placeholder:x}=Mn(l(()=>(0,En.default)(Tn).slice(0,6)),l(()=>v.value.length===0));function C(){v.value.trim()&&_(`submit`,v.value)}function w(){m.track(`User clicked from scratch in empty state`),_(`startFromScratch`)}function T(){Re(Fe.emptyStateBuilderPrompt),c.push({name:X.TEMPLATES})}function E(){b.value?.click()}function D(){let e=b.value;if(!e?.files?.length)return;let t=new FileReader;t.onload=async()=>{let n=t.result;if(typeof n!=`string`){e.value=``;return}let r;try{r=JSON.parse(n)}catch{d.showMessage({title:p.baseText(`mainSidebar.showMessage.handleFileImport.title`),message:p.baseText(`mainSidebar.showMessage.handleFileImport.message`),type:`error`}),e.value=``;return}try{await h.createWorkflowFromImport(r,s.projectId,s.parentFolderId)}catch{d.showError(Error(p.baseText(`nodeView.couldntLoadWorkflow.invalidWorkflowObject`)),p.baseText(`nodeView.couldntImportWorkflow`))}finally{e.value=``}},t.readAsText(e.files[0])}return(e,a)=>(t(),i(`div`,{class:g(e.$style.container)},[r(`input`,{ref_key:`importFileRef`,ref:b,type:`file`,accept:`.json`,style:{display:`none`},onChange:D},null,544),r(`p`,{class:g(e.$style.subtitle)},u(f(p).baseText(`emptyStateBuilderPrompt.subtitle`)),3),r(`div`,{class:g(e.$style.promptInput)},[S(f(L),{ref_key:`promptInputRef`,ref:y,modelValue:v.value,"onUpdate:modelValue":a[0]||=e=>v.value=e,placeholder:f(x),"min-lines":4,"button-label":f(p).baseText(`emptyStateBuilderPrompt.buildWorkflow`),"data-test-id":`empty-state-builder-prompt-input`,autofocus:``,onSubmit:C},null,8,[`modelValue`,`placeholder`,`button-label`])],2),r(`div`,{class:g(e.$style.footer)},[r(`div`,{class:g(e.$style.alternativeActions)},[r(`span`,{class:g(e.$style.startWithText)},u(f(p).baseText(`emptyStateBuilderPrompt.orStartWith`)),3),S(f(F),{content:f(p).baseText(`emptyStateBuilderPrompt.fromScratchTooltip`)},{default:A(()=>[S(f(ie),{variant:`subtle`,size:`small`,icon:`play`,onClick:w},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.fromScratch`)),1)]),_:1})]),_:1},8,[`content`]),S(f(F),{content:f(p).baseText(`emptyStateBuilderPrompt.templateTooltip`)},{default:A(()=>[S(f(ie),{variant:`subtle`,size:`small`,icon:`layout-template`,onClick:T},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.template`)),1)]),_:1})]),_:1},8,[`content`]),S(f(F),{content:f(p).baseText(`emptyStateBuilderPrompt.importFromFileTooltip`)},{default:A(()=>[S(f(ie),{variant:`subtle`,size:`small`,icon:`upload`,onClick:E},{default:A(()=>[n(u(f(p).baseText(`emptyStateBuilderPrompt.importFromFile`)),1)]),_:1})]),_:1},8,[`content`])],2)],2)],2))}}),[[`__cssModules`,{$style:{container:`_container_1wank_125`,subtitle:`_subtitle_1wank_133`,promptInput:`_promptInput_1wank_139`,"el-tooltip__trigger":`_el-tooltip__trigger_1wank_143`,footer:`_footer_1wank_148`,alternativeActions:`_alternativeActions_1wank_155`,startWithText:`_startWithText_1wank_163`}}]]),Pn=new Set([`oAuth2Api`,`oAuth1Api`,`httpBasicAuth`,`httpDigestAuth`,`httpHeaderAuth`,`httpQueryAuth`,`httpCustomAuth`,`noAuth`]),Fn={gmail:1,googlesheets:2,googledrive:3,googlecalendar:4,googledocs:5,microsoftoutlook:6,microsoftexcel:7,microsoftonedrive:8,microsoftteams:9,slack:10,discord:11,telegram:12,notion:13,airtable:14,trello:15,asana:16,todoist:17,hubspot:18,salesforce:19,pipedrive:20,github:21,gitlab:22,jira:23,linear:24,stripe:25,shopify:26,twilio:27,sendgrid:28,mailchimp:29,dropbox:30,zoom:31,calendly:32,typeform:33,intercom:34,zendesk:35,freshdesk:36,clickup:37,mondaycom:38,baserow:39,supabase:40},In=[`n8n-nodes-base.httpRequest`,`n8n-nodes-base.webhook`,`n8n-nodes-base.code`,`n8n-nodes-base.scheduleTrigger`,`n8n-nodes-base.emailSend`,`n8n-nodes-base.set`,`n8n-nodes-base.if`,`n8n-nodes-base.switch`,`n8n-nodes-base.merge`,`n8n-nodes-base.splitInBatches`,`n8n-nodes-base.noOp`,`n8n-nodes-base.start`,`n8n-nodes-base.stickyNote`,`n8n-nodes-base.executeWorkflow`,`n8n-nodes-base.executeWorkflowTrigger`,`n8n-nodes-base.respondToWebhook`,`n8n-nodes-base.manualTrigger`,`n8n-nodes-base.errorTrigger`,`n8n-nodes-base.function`,`n8n-nodes-base.functionItem`],Ln=e=>e.startsWith(`@n8n/n8n-nodes-langchain.`),Rn=e=>In.includes(e)||Ln(e),zn=e=>e.group?.includes(`trigger`)??!1,Bn=e=>!e.outputs||!Array.isArray(e.outputs)?!1:e.outputs.map(e=>typeof e==`string`?e:e.type).includes(Ze.AiTool);function Vn(){let e=Me(),t=W(),n=a(!0),r=a(null);t.fetchCommunityNodePreviews();let i=e=>e.extends?e.extends.includes(`oAuth2Api`)||e.extends.includes(`oAuth1Api`)||e.extends.includes(`googleOAuth2Api`)||e.extends.includes(`microsoftOAuth2Api`):!1,o=e=>e.extends?e.extends.includes(`googleOAuth2Api`):!1,s=e=>e.extends?e.extends.includes(`microsoftOAuth2Api`):!1,c=e=>{if(!i(e))return!1;if(o(e)||s(e))return!0;let t=e.__overwrittenProperties;return!t||!Array.isArray(t)?!1:t.includes(`clientId`)&&t.includes(`clientSecret`)},u=e=>{let t=o(e),n=s(e),r=e.extends?.includes(`oAuth2Api`),i=e.extends?.includes(`oAuth1Api`),a=c(e);return t||n?6:r&&a?5:i&&a?4:r?3:i?2:1},d=e=>{let t,n;typeof e.icon==`string`?t=e.icon:e.icon&&typeof e.icon==`object`&&`light`in e.icon&&(t=e.icon.light,n=e.icon.dark);let r,i;return typeof e.iconUrl==`string`?r=e.iconUrl:e.iconUrl&&typeof e.iconUrl==`object`&&`light`in e.iconUrl&&(r=e.iconUrl.light,i=e.iconUrl.dark),{name:e.name,displayName:e.displayName,icon:t,iconDark:n,iconUrl:r,iconUrlDark:i,iconColor:e.iconColor}},f=(e,t)=>{let n=e.credentials?.map(e=>e.name)??[];return t.filter(e=>n.includes(e.name)&&!Pn.has(e.name))},p=l(()=>{let n=e.allCredentialTypes,r=t.visibleNodeTypes;if(n.length===0||r.length===0)return[];let i=new Map,a=(e,t,r,a,o,s)=>{if(Rn(e.name)||zn(e)||Bn(e))return;let l=f(e,n),p=e.credentials&&e.credentials.length>0;if(t&&!p||t&&l.length===0)return;let m;l.length>0&&(l.sort((e,t)=>u(t)-u(e)),m=l[0]);let h=e.name.split(`.`).pop()?.replace(/V\d+$/,``).toLowerCase()??e.name,g=r?Fn[h]:o,_=i.get(h);(!_||m&&(!_.credentialType||u(m)>u(_.credentialType)))&&i.set(h,{app:d(e),credentialType:m,supportsInstantOAuth:m?c(m):!1,installed:t,isBundled:r,packageName:a,popularity:g,communityNodeInfo:s})};for(let e of r){let n=t.communityNodeType(e.name)??t.communityNodeType(Ke(e.name));if(n&&!n.isOfficialNode)continue;let r=t.getIsNodeInstalled(e.name),i=!n,o=n?.numberOfDownloads,s=n?.packageName;a(e,r,i,s,o,n)}let o=Array.from(i.values());return o.sort((e,t)=>{if(e.isBundled&&!t.isBundled)return-1;if(!e.isBundled&&t.isBundled)return 1;if(e.isBundled&&t.isBundled){let n=e.popularity!==void 0,r=t.popularity!==void 0;return n&&!r?-1:!n&&r?1:n&&r?(e.popularity??0)-(t.popularity??0):e.app.displayName.localeCompare(t.app.displayName)}let n=e.popularity!==void 0,r=t.popularity!==void 0;return n&&!r?-1:!n&&r?1:n&&r?(t.popularity??0)-(e.popularity??0):e.app.displayName.localeCompare(t.app.displayName)}),o});return y(()=>({nodeTypes:t.visibleNodeTypes,credentialTypes:e.allCredentialTypes}),({nodeTypes:e,credentialTypes:t})=>{e.length>0&&t.length>0&&(n.value=!1)},{immediate:!0}),{appEntries:p,isLoading:n,error:r}}var Hn=[`data-test-id`,`tabindex`,`onKeydown`],Un=B(s({__name:`AppSelectionCard`,props:{app:{},state:{},supportsInstantOAuth:{type:Boolean},skeleton:{type:Boolean},installed:{type:Boolean},showWarning:{type:Boolean},showBadge:{type:Boolean},isOwner:{type:Boolean}},emits:[`click`],setup(e,{emit:a}){let o=e,s=a,c=W(),p=j(),m=l(()=>o.installed),h=l(()=>o.isOwner?p.baseText(`credentialsAppSelection.installToConnect`):p.baseText(`credentialsAppSelection.askAdminToInstall`)),_=l(()=>!o.skeleton&&(o.state===`default`||o.state===`error`||o.state===`connected`||o.state===void 0)),v=()=>{_.value&&s(`click`)},y=l(()=>{let{app:e}=o;if(!e)return null;let t=c.getNodeType(e.name);if(t)return t;let n=Ke(e.name),r=c.communityNodeType(n);return r?.nodeDescription?r.nodeDescription:e.iconUrl||e.icon?{name:e.name,displayName:e.displayName,iconUrl:e.iconUrl,icon:e.icon,iconColor:e.iconColor,group:[],outputs:[],defaults:{name:e.displayName},description:``}:null});return(a,o)=>e.skeleton?(t(),i(`div`,{key:0,class:g([a.$style.card,a.$style.skeleton]),"data-test-id":`app-selection-card-skeleton`},[r(`div`,{class:g(a.$style.iconContainer)},[r(`div`,{class:g(a.$style.skeletonIcon)},null,2)],2),r(`div`,{class:g(a.$style.skeletonText)},null,2)],2)):(t(),i(`div`,{key:1,class:g([a.$style.card,{[a.$style.clickable]:_.value,[a.$style.connected]:e.state===`connected`&&!e.showWarning,[a.$style.warning]:e.state===`connected`&&e.showWarning,[a.$style.error]:e.state===`error`,[a.$style.loading]:e.state===`loading`}]),"data-test-id":`app-selection-card-${e.app?.name}`,role:`button`,tabindex:_.value?0:-1,onClick:v,onKeydown:[C(v,[`enter`]),C(b(v,[`prevent`]),[`space`])]},[S(w,{name:`fade`},{default:A(()=>[e.showBadge&&e.showWarning&&e.state===`connected`?(t(),i(`div`,{key:0,class:g(a.$style.warningBadgeWrapper)},[S(f(F),{placement:`top`,"show-after":300},{content:A(()=>[n(u(f(p).baseText(`credentialsAppSelection.credentialsNotValid`)),1)]),default:A(()=>[r(`div`,{class:g(a.$style.warningBadge)},[S(f(M),{icon:`triangle-alert`,class:g(a.$style.badgeIcon)},null,8,[`class`])],2)]),_:1})],2)):e.showBadge&&e.state===`connected`?(t(),i(`div`,{key:1,class:g(a.$style.connectedBadge)},[S(f(M),{icon:`check`,class:g(a.$style.badgeIcon)},null,8,[`class`])],2)):d(``,!0)]),_:1}),m.value?d(``,!0):(t(),i(`div`,{key:0,class:g(a.$style.installBadgeWrapper)},[S(f(F),{placement:`top`,"show-after":300},{content:A(()=>[n(u(h.value),1)]),default:A(()=>[r(`div`,{class:g(a.$style.installBadge)},[S(f(M),{icon:`download`,class:g(a.$style.installBadgeIcon)},null,8,[`class`])],2)]),_:1})],2)),r(`div`,{class:g(a.$style.iconContainer)},[S(_t,{"node-type":y.value,size:32,class:g(a.$style.icon)},null,8,[`node-type`,`class`])],2),S(f(z),{class:g(a.$style.name)