n8n-editor-ui
Version:
Workflow Editor UI for n8n
2 lines • 36.8 kB
JavaScript
!function(){try{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).SENTRY_RELEASE={id:"n8n@2.16.1"}}catch(e){}}(),System.register(["./vue.runtime.esm-bundler-legacy-BW6xDdqj.js","./core-legacy-VD8c7QJ-.js","./src-legacy-B67uuxhB.js","./_plugin-vue_export-helper-legacy-DFdC_I5Z.js","./users.store-legacy-azRUgFdP.js","./constants-legacy-2_ytuuS3.js","./useRootStore-legacy-CC08el-l.js","./settings.store-legacy-I6rZOvfF.js","./usePageRedirectionHelper-legacy-DQM99rgh.js","./canvas.utils-legacy-DBwbAhDp.js","./CredentialIcon-legacy-B7DgooOp.js","./useDynamicCredentials-legacy-ByFvi9Dz.js","./useFreeAiCredits-legacy-Dp5EPiCI.js","./constants-legacy-Bi9z6I7b.js","./chat.store-legacy-BnVb-kpz.js","./fileUtils-legacy-Dp16LI9C.js","./useResizablePanel-legacy-BdkDGWxP.js","./ChatGreetings-legacy-BhOJgGJo.js","./ToolsSelector-legacy-Du810vCp.js","./ChatMarkdownChunk-legacy-DA4DzuRA.js","./ChatLayout-legacy-BHfkskAp.js","./useCustomAgent-legacy-DaU8vKJd.js"],(function(e,t){var a,n,l,i,s,r,o,c,d,u,_,v,g,p,m,f,h,y,w,b,x,C,k,A,S,z,$,I,R,D,T,j,M,H,L,N,E,V,F,O,U,W,B,P,G,q,K,J,Q,Y,X,Z,ee,te,ae,ne,le,ie,se,re,oe,ce,de,ue,_e,ve,ge,pe,me,fe,he,ye,we,be,xe,Ce,ke,Ae,Se,ze,$e,Ie,Re,De,Te,je,Me,He,Le,Ne,Ee,Ve,Fe,Oe,Ue,We,Be,Pe,Ge,qe,Ke;function Je(e,t){const a=Y(),n=S(),l=d((()=>r(t?.disabled)??!1)),i=d((()=>!!l.value||!!a.isAnyModalOpen||!(!n.value||!ue(n.value)))),s=["["];A(document,"keydown",(t=>{if(i.value)return;if(t.isComposing)return;if(t.repeat)return;if((e=>e.ctrlKey||e.metaKey||e.altKey)(t))return;if(!(e=>1===e.key.length)(t))return;if((e=>s.includes(e.key))(t))return;const a=e.value;a&&(t.preventDefault(),a.appendText(t.key),a.focus())}))}function Qe(e){if(!e)return"";try{return new URL(e).searchParams.get("resolverId")??""}catch{return""}}function Ye(e){const t=oe(),a=s([]),n=s(!1),l=d((()=>a.value.length>0)),i=d((()=>l.value&&a.value.every((e=>"configured"===e.credentialStatus)))),r=d((()=>a.value.filter((e=>"configured"===e.credentialStatus)).length)),o=d((()=>a.value.length));async function c(){const l=e.value;if(l){n.value=!0;try{a.value=((await be(t.restApiContext,l)).credentials??[]).map((e=>({credentialId:e.credentialId,credentialName:e.credentialName,credentialType:e.credentialType,credentialStatus:e.credentialStatus,resolverId:Qe(e.authorizationUrl),isConnecting:!1,error:null})))}catch{a.value=[]}finally{n.value=!1}}else a.value=[]}return m(e,(e=>{e?c():a.value=[]}),{immediate:!0}),{credentials:a,hasDynamicCredentials:l,allAuthenticated:i,connectedCount:r,totalCount:o,isLoading:n,fetchStatus:c,authorize:async function(e){const n=a.value.find((t=>t.credentialId===e));if(n){n.isConnecting=!0,n.error=null;try{const l=await ye(t.restApiContext,e,n.resolverId),i=["http:","https:"];try{const e=new URL(l);if(!i.includes(e.protocol))return n.error="Invalid authorization URL",void(n.isConnecting=!1)}catch{return n.error="Invalid authorization URL",void(n.isConnecting=!1)}const s=window.open(l,"OAuth Authorization","scrollbars=no,resizable=yes,status=no,titlebar=no,location=no,toolbar=no,menubar=no,width=500,height=700"),r=new BroadcastChannel("oauth-callback");let o=!1;const d=async()=>{o||(o=!0,r.close(),clearInterval(u),await async function(e,t=10,n=1e3){for(let l=0;l<t;l++){if(await c(),"configured"===a.value.find((t=>t.credentialId===e))?.credentialStatus)return;await new Promise((e=>setTimeout(e,n)))}}(e),n.isConnecting=!1)};r.addEventListener("message",(async e=>{"success"===e.data&&(s&&s.close(),await d())}));const u=setInterval((()=>{s?.closed&&d()}),500)}catch{n.error="Failed to start authorization",n.isConnecting=!1}}},revoke:async function(e){const n=a.value.find((t=>t.credentialId===e));if(n){n.isConnecting=!0,n.error=null;try{await Ce(t.restApiContext,e,n.resolverId),await c()}catch{n.error="Failed to disconnect credential"}finally{n.isConnecting=!1}}}}}return{setters:[function(e){a=e.$,n=e.A,l=e.C,i=e.E,s=e.Ft,r=e.Ht,o=e.K,c=e.N,d=e.S,u=e.Sn,_=e.T,v=e.Wt,g=e._,p=e._n,m=e.gt,f=e.j,h=e.n,y=e.pt,w=e.rt,b=e.w,x=e.yn,C=e.yt},function(e){k=e.at,A=e.m,S=e.o,z=e.ot,$=e.p,I=e.v,R=e.y},function(e){D=e.A,T=e.Di,j=e.Ji,M=e.Mi,H=e.Qi,L=e.Xi,N=e.Zi,E=e.ct,V=e.i,F=e.k,O=e.lt,U=e.m,W=e.tt,B=e.wt},function(e){P=e.t},function(e){G=e.No,q=e.Pn,K=e.Rt,J=e.fr,Q=e.hi,Y=e.r,X=e.si,Z=e.t},function(e){ee=e.Eo,te=e.Gs,ae=e.Kr,ne=e.Qc,le=e.Qo,ie=e.Vr,se=e.Ws,re=e.Yr},function(e){oe=e.t},function(e){ce=e.t},function(e){de=e.t},function(e){ue=e.l},function(e){_e=e.t},function(e){ve=e.t},function(e){ge=e.t},function(e){pe=e.c,me=e.d,fe=e.n,he=e.t},function(e){ye=e.a,we=e.i,be=e.l,xe=e.t,Ce=e.u},function(e){ke=e.T,Ae=e._,Se=e.l,ze=e.u},function(e){$e=e.t},function(e){Ie=e.i,Re=e.n,De=e.r,Te=e.t},function(e){je=e.n},function(e){Me=e.t},function(e){He=e.n,Le=e.r,Ne=e.t},function(e){Ee=e.n,Ve=e.t}],execute:function(){(Fe=document.createElement("style")).textContent="._component_1hi6t_125{padding-left:var(--spacing--4xs);padding-right:var(--spacing--xs);align-items:center;gap:var(--spacing--4xs);border-bottom:var(--border);flex-grow:0;flex-shrink:0;height:56px;display:flex}._component_1hi6t_125:has(._menuButton_1hi6t_136){padding-inline:var(--spacing--xs)}._grow_1hi6t_140{align-items:center;gap:var(--spacing--4xs);flex-grow:1;display:flex}._title_1hi6t_147{margin-inline:var(--spacing--md)}._buttons_1hi6t_151{align-items:center;gap:var(--spacing--2xs);display:flex}._header_186nk_125{text-align:center;align-items:center;gap:var(--spacing--xs);flex-direction:column;display:flex}._cardGrid_186nk_133{max-width:700px;display:flex}@media screen and (max-width:991px){._cardGrid_186nk_133{flex-direction:column}}._cardWrapper_186nk_143{color:inherit;flex:1;text-decoration:none}._cardWrapper_186nk_143:not(:first-child){margin-left:-1px}@media screen and (max-width:991px){._cardWrapper_186nk_143:not(:first-child){margin-top:-1px;margin-left:0}}._card_186nk_133{height:100%;padding:var(--spacing--lg);align-items:flex-start;gap:var(--spacing--xs);border-radius:0}._cardFirst_186nk_166 ._card_186nk_133{border-radius:var(--radius--lg) 0 0 var(--radius--lg)}@media screen and (max-width:991px){._cardFirst_186nk_166 ._card_186nk_133{border-radius:var(--radius--lg) var(--radius--lg) 0 0}}._cardMiddle_186nk_175 ._card_186nk_133{border-radius:0}._cardLast_186nk_179 ._card_186nk_133{border-radius:0 var(--radius--lg) var(--radius--lg) 0}@media screen and (max-width:991px){._cardLast_186nk_179 ._card_186nk_133{border-radius:0 0 var(--radius--lg) var(--radius--lg)}}._cardHeader_186nk_188{align-items:flex-start;gap:var(--spacing--2xs);margin-bottom:var(--spacing--xs);flex-direction:column;display:flex}._providerIcons_186nk_196{gap:var(--spacing--2xs);display:flex}._buttonGroup_186nk_201{gap:var(--spacing--sm);justify-content:center;display:flex}._welcomeContent_186nk_207{z-index:100;justify-content:center;align-items:center;gap:var(--spacing--xl);background-color:var(--color--background--light-2);flex-direction:column;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.welcome-fade-enter-active,.welcome-fade-leave-active{transition:opacity .2s}.welcome-fade-enter-from,.welcome-fade-leave-to{opacity:0}._container_j3lr9_125{background-color:var(--color--background--light-2);border-left:var(--border-width) var(--border-style) var(--color--foreground);flex-direction:column;width:100%;min-width:0;height:100%;display:flex}._viewer_j3lr9_135{flex-direction:column;height:100%;display:flex;overflow:hidden}._header_j3lr9_142{justify-content:space-between;align-items:center;gap:var(--spacing--4xs);padding-left:var(--spacing--4xs);padding-right:var(--spacing--xs);border-bottom:var(--border);flex-grow:0;flex-shrink:0;min-width:0;height:56px;display:flex}._markdown_j3lr9_156{padding-inline:var(--spacing--sm)}._title_j3lr9_160{color:var(--color--text);text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden}._headerActions_j3lr9_169{align-items:center;gap:var(--spacing--4xs);flex-shrink:0;display:flex}._type_j3lr9_176{text-transform:uppercase;letter-spacing:.05em}._content_j3lr9_181{color:var(--color--text--shade-1);font-size:var(--font-size--md);line-height:var(--line-height--xl);flex:1;overflow-x:hidden}._iframe_j3lr9_189{background-color:var(--color--background);border:none;width:100%;height:100%}._container_8e4c4_125{background-color:var(--color--background--light-2);border-left:var(--border-width) var(--border-style) var(--color--foreground);flex-direction:column;width:100%;min-width:0;height:100%;display:flex}._panel_8e4c4_135{flex-direction:column;height:100%;display:flex;overflow:hidden}._header_8e4c4_142{justify-content:space-between;align-items:center;gap:var(--spacing--4xs);padding:var(--spacing--sm) var(--spacing--sm);border-bottom:var(--border);flex-shrink:0;height:56px;display:flex}._body_8e4c4_153{padding:var(--spacing--sm);flex:1;overflow-y:auto}._subtitle_8e4c4_159{gap:var(--spacing--4xs);margin-bottom:var(--spacing--sm);flex-direction:column;display:flex}._credentialList_8e4c4_166{gap:var(--spacing--2xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._credentialRow_8e4c4_175{justify-content:space-between;align-items:center;gap:var(--spacing--xs);padding:var(--spacing--xs);border:var(--border);border-radius:var(--radius--lg);display:flex}._credentialInfo_8e4c4_185{gap:var(--spacing--5xs);flex-direction:column;flex:1;min-width:0;display:flex}._credentialAction_8e4c4_193{flex-shrink:0;align-items:center;display:flex}._footer_8e4c4_199{padding:var(--spacing--xs) var(--spacing--sm);border-top:var(--border);flex-shrink:0}._chatLayout_5crcp_125{flex-direction:row;display:flex;position:relative}._chatLayout_5crcp_125._hasArtifact_5crcp_130 ._mainContent_5crcp_130{flex:1;min-width:0}._chatLayout_5crcp_125:not(._hasArtifact_5crcp_130) ._mainContent_5crcp_130{flex:1}._mainContentResizer_5crcp_138{flex-shrink:0;overflow:hidden}._mainContent_5crcp_130{flex-direction:column;flex:1;height:100%;display:flex;overflow:hidden}._dynamicCredentialsDrawer_5crcp_151{flex:0 0 340px;min-width:300px;max-width:400px;overflow:hidden}._artifactViewer_5crcp_158{flex:1;min-width:300px;overflow:hidden}._isResizing_5crcp_163 ._artifactViewer_5crcp_158{pointer-events:none}._scrollArea_5crcp_168{flex-grow:1;flex-shrink:1}._scrollable_5crcp_173{justify-content:start;align-items:stretch;gap:var(--spacing--xl);flex-direction:column;width:100%;min-height:100%;display:flex}._isNewSession_5crcp_182 ._scrollable_5crcp_173{justify-content:space-between}._isAgentNewSession_5crcp_185 ._scrollable_5crcp_173{padding-top:var(--spacing--2xl)}._greetingsCentered_5crcp_189{flex:1;justify-content:center;align-items:center;display:flex}._header_5crcp_196{justify-content:space-between;align-items:center;display:flex}._messageList_5crcp_202{align-self:center;gap:var(--spacing--xl);min-height:100%;padding-top:var(--spacing--2xl);flex-direction:column;padding-bottom:200px;display:flex}._promptContainer_5crcp_212{padding-block:var(--spacing--md);background:var(--color--background--light-2);justify-content:center;align-self:center;display:flex}._isMobileDevice_5crcp_219 ._promptContainer_5crcp_212,._isExistingSession_5crcp_219 ._promptContainer_5crcp_212{position:absolute;bottom:0;left:50%;transform:translate(-50%)}._messageList_5crcp_202,._promptContainer_5crcp_212{width:100%;max-width:88ch;padding-left:64px;padding-right:64px}._isMainPanelNarrow_5crcp_232 ._messageList_5crcp_202,._isMainPanelNarrow_5crcp_232 ._promptContainer_5crcp_212{padding-inline:var(--spacing--md)}._scrollToBottomButton_5crcp_237{bottom:calc(100% + var(--spacing--md));border-radius:50%;position:absolute;left:auto;box-shadow:0 4px 12px rgba(0,0,0,.15)}._isDraggingFile_5crcp_245{border-color:var(--color--secondary)}._dropOverlay_5crcp_249{z-index:9999;background-color:color-mix(in srgb, var(--color--background--light-2) 95%, transparent);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}\n/*$vite$:1*/",document.head.appendChild(Fe);try{t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},(r=(new t.Error).stack)&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[r]="173b0b2f-00e7-4ad8-82fa-7c46f731317f",t._sentryDebugIdIdentifier="sentry-dbid-173b0b2f-00e7-4ad8-82fa-7c46f731317f")}catch(t){}var t,r;Oe=c({__name:"ChatConversationHeader",props:{selectedModel:{},credentials:{},readyToShowModelSelector:{type:Boolean},showArtifactIcon:{type:Boolean}},emits:["selectModel","renameConversation","editCustomAgent","createCustomAgent","selectCredential","openWorkflow","reopenArtifact"],setup(e,{expose:t,emit:n}){const r=n,o=y("modelSelectorRef"),c=k(),u=xe(),g=s(!1),f=d((()=>"n8n"===e.selectedModel?.model.provider&&e.selectedModel.metadata.scopes?.includes("workflow:read")));function h(){"n8n"===e.selectedModel?.model.provider&&r("openWorkflow",e.selectedModel.model.workflowId)}function w(e){r("selectModel",e)}return m((()=>e.credentials),(async e=>{if(e){g.value=!0;try{await u.fetchAgents(e)}finally{g.value=!1}}}),{immediate:!0}),t({openModelSelector:()=>o.value?.open(),openCredentialSelector:e=>o.value?.openCredentialSelector(e)}),(t,n)=>(a(),i("div",{class:p(t.$style.component)},[l("div",{class:p(t.$style.grow)},[e.readyToShowModelSelector?(a(),b(Ee,{key:0,ref_key:"modelSelectorRef",ref:o,"selected-agent":e.selectedModel,credentials:e.credentials,text:"",agents:v(u).agents,"is-loading":g.value,onChange:w,onCreateCustomAgent:n[0]||(n[0]=e=>r("createCustomAgent")),onSelectCredential:n[1]||(n[1]=(e,t)=>r("selectCredential",e,t))},null,8,["selected-agent","credentials","agents","is-loading"])):_("",!0)],2),l("div",{class:p(t.$style.buttons)},["custom-agent"===e.selectedModel?.model.provider?(a(),b(v(N),{key:0,variant:"subtle",size:"small",icon:"settings",label:v(c).baseText("chatHub.chat.header.button.editAgent"),onClick:n[2]||(n[2]=t=>r("editCustomAgent",e.selectedModel.model.agentId))},null,8,["label"])):_("",!0),e.showArtifactIcon?(a(),b(v(M),{key:1,variant:"subtle",size:"small",icon:"panel-right",onClick:n[3]||(n[3]=e=>r("reopenArtifact"))})):_("",!0),f.value?(a(),b(v(N),{key:2,variant:"subtle",size:"small",icon:"settings",label:v(c).baseText("chatHub.chat.header.button.openWorkflow"),onClick:h},null,8,["label"])):_("",!0)],2)],2))}}),Ue=P(Oe,[["__cssModules",{$style:{component:"_component_1hi6t_125",menuButton:"_menuButton_1hi6t_136",grow:"_grow_1hi6t_140",title:"_title_1hi6t_147",buttons:"_buttons_1hi6t_151"}}]]),We=c({__name:"ChatStarter",props:{showWelcomeScreen:{type:Boolean}},emits:["startNewChat"],setup(e,{emit:t}){const s=t,r=Y(),o=ce(),c=k(),{goToUpgrade:g}=de(),m=d((()=>o.isEnterpriseFeatureEnabled[ne.AdvancedPermissions])),y=d((()=>X(["rbac"],{rbac:{scope:"user:create"}}))),w=d((()=>y.value)),x=d((()=>!m.value));function A(){s("startNewChat")}function S(){r.openModalWithData({name:G,data:{initialRole:ie.ChatUser}})}function $(){g("chat-hub","upgrade-advanced-permissions")}return(t,s)=>(a(),b(h,{name:"welcome-fade",mode:"out-in"},{default:C((()=>[e.showWelcomeScreen?(a(),i("div",{key:"welcome",class:p(t.$style.welcomeContent)},[l("div",{class:p(t.$style.header)},[f(v(j),{tag:"h2",bold:"",size:"xlarge"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.header")),1)])),_:1}),f(v(L),{size:"large",color:"text-light"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.subtitle")),1)])),_:1})],2),l("div",{class:p(t.$style.cardGrid)},[l("div",{"data-test-id":"welcome-card-workflow-agents",class:p([t.$style.cardWrapper,t.$style.cardFirst])},[f(v(B),{class:p(t.$style.card)},{default:C((()=>[l("div",{class:p(t.$style.cardHeader)},[f(v(H),{icon:"robot",size:"large",color:"text-dark"}),f(v(L),{bold:""},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.workflowAgents.title")),1)])),_:1})],2),f(v(L),{size:"small",color:"text-light"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.workflowAgents.description")),1)])),_:1})])),_:1},8,["class"])],2),l("div",{class:p([t.$style.cardWrapper,t.$style.cardMiddle]),"data-test-id":"welcome-card-personal-agents"},[f(v(B),{class:p(t.$style.card)},{default:C((()=>[l("div",{class:p(t.$style.cardHeader)},[f(v(H),{icon:"message-square",size:"large",color:"text-dark"}),f(v(L),{bold:""},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.personalAgents.title")),1)])),_:1})],2),f(v(L),{size:"small",color:"text-light"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.personalAgents.description")),1)])),_:1})])),_:1},8,["class"])],2),l("div",{class:p([t.$style.cardWrapper,t.$style.cardLast]),"data-test-id":"welcome-card-base-models"},[f(v(B),{class:p(t.$style.card)},{default:C((()=>[l("div",{class:p(t.$style.cardHeader)},[l("div",{class:p(t.$style.providerIcons)},[f(_e,{"credential-type-name":"openAiApi",size:20}),f(_e,{"credential-type-name":"anthropicApi",size:20}),f(_e,{"credential-type-name":"googlePalmApi",size:20})],2),f(v(L),{bold:""},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.baseModels.title")),1)])),_:1})],2),f(v(L),{size:"small",color:"text-light"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.card.baseModels.description")),1)])),_:1})])),_:1},8,["class"])],2)],2),l("div",{class:p(t.$style.buttonGroup)},[f(v(N),{variant:"solid",size:"medium",icon:"plus","data-test-id":"welcome-start-new-chat",onClick:A},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.button.startNewChat")),1)])),_:1}),w.value?(a(),b(v(T),{key:0,disabled:!x.value},{content:C((()=>[f(v(z),{keypath:"chatHub.welcome.inviteUpgrade.tooltip",scope:"global"},{link:C((()=>[f(v(W),{size:"small",onClick:$},{default:C((()=>[n(u(v(c).baseText("generic.upgrade")),1)])),_:1})])),docsLink:C((()=>[f(v(W),{size:"small",href:"https://docs.n8n.io/advanced-ai/chat-hub/#chat-user-role",target:"_blank",rel:"noopener"},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.inviteUpgrade.here")),1)])),_:1})])),_:1})])),default:C((()=>[f(v(N),{variant:"subtle",size:"medium",icon:"users",disabled:x.value,"data-test-id":"welcome-invite-chat-users",onClick:S},{default:C((()=>[n(u(v(c).baseText("chatHub.welcome.button.inviteChatUsers")),1)])),_:1},8,["disabled"])])),_:1},8,["disabled"])):_("",!0)],2)],2)):_("",!0)])),_:1}))}}),Be=P(We,[["__cssModules",{$style:{header:"_header_186nk_125",cardGrid:"_cardGrid_186nk_133",cardWrapper:"_cardWrapper_186nk_143",card:"_card_186nk_133",cardFirst:"_cardFirst_186nk_166",cardMiddle:"_cardMiddle_186nk_175",cardLast:"_cardLast_186nk_179",cardHeader:"_cardHeader_186nk_188",providerIcons:"_providerIcons_186nk_196",buttonGroup:"_buttonGroup_186nk_201",welcomeContent:"_welcomeContent_186nk_207"}}]]),Pe=["srcdoc","title"],Ge=P(c({__name:"ChatArtifactViewer",props:{artifacts:{},selectedIndex:{}},emits:["close","selectArtifact","download"],setup(e,{emit:t}){const n=e,s=t,r=d((()=>n.artifacts[n.selectedIndex]??n.artifacts[0])),o=d((()=>n.artifacts.map(((e,t)=>({value:t,label:e.title}))))),c=d((()=>"html"===r.value?.type)),u=d((()=>"md"===r.value?.type)),g=d((()=>({type:"text",content:u.value?r.value?.content:`\`\`\`${r.value?.type}\n${r.value?.content}\n\`\`\``})));return(t,n)=>(a(),i("div",{class:p(t.$style.container)},[l("div",{class:p(t.$style.viewer)},[l("div",{class:p(t.$style.header)},[(a(),b(v(V),{key:r.value?.title??"","model-value":e.selectedIndex,size:"medium",variant:"ghost",items:o.value,class:p(t.$style.title),"onUpdate:modelValue":n[0]||(n[0]=e=>s("selectArtifact",e))},null,8,["model-value","items","class"])),l("div",{class:p(t.$style.headerActions)},[f(v(M),{variant:"ghost",text:"",icon:"download",onClick:n[1]||(n[1]=e=>s("download"))}),f(v(M),{variant:"ghost",text:"",icon:"x",onClick:n[2]||(n[2]=e=>s("close"))})],2)],2),l("div",{class:p(t.$style.content)},[c.value?(a(),i("iframe",{key:0,srcdoc:r.value?.content,class:p(t.$style.iframe),sandbox:"",title:r.value?.title},null,10,Pe)):g.value?(a(),b(Me,{key:1,ref:"markdownChunk",class:p(u.value?t.$style.markdown:""),"single-pre":!u.value,source:g.value,"footnote-style":"normal"},null,8,["class","single-pre","source"])):_("",!0)],2)],2)],2))}}),[["__cssModules",{$style:{container:"_container_j3lr9_125",viewer:"_viewer_j3lr9_135",header:"_header_j3lr9_142",markdown:"_markdown_j3lr9_156",title:"_title_j3lr9_160",headerActions:"_headerActions_j3lr9_169",type:"_type_j3lr9_176",content:"_content_j3lr9_181",iframe:"_iframe_j3lr9_189"}}]]),qe=P(c({__name:"DynamicCredentialsDrawer",props:{credentials:{},connectedCount:{},totalCount:{}},emits:["close","authorize","revoke"],setup(e,{emit:t}){const s=t,r=k();return(t,o)=>(a(),i("div",{class:p(t.$style.container)},[l("div",{class:p(t.$style.panel)},[l("div",{class:p(t.$style.header)},[f(v(L),{bold:"",size:"large"},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.title")),1)])),_:1}),f(v(M),{type:"tertiary",text:"",icon:"x","data-testid":"dynamic-credentials-drawer-close",onClick:o[0]||(o[0]=e=>s("close"))})],2),l("div",{class:p(t.$style.body)},[l("div",{class:p(t.$style.subtitle)},[f(v(L),{bold:""},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.subtitle")),1)])),_:1}),f(v(L),{size:"small",color:"text-light"},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.description")),1)])),_:1})],2),l("ul",{class:p(t.$style.credentialList)},[(a(!0),i(g,null,w(e.credentials,(e=>(a(),i("li",{key:e.credentialId,class:p(t.$style.credentialRow),"data-testid":"dynamic-credential-row"},[l("div",{class:p(t.$style.credentialInfo)},[f(v(L),{bold:""},{default:C((()=>[n(u(e.credentialName),1)])),_:2},1024),"configured"===e.credentialStatus?(a(),b(v(L),{key:0,size:"small",color:"text-light"},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.status.connected")),1)])),_:1})):(a(),b(v(L),{key:1,size:"small",color:"text-light"},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.status.notConnected")),1)])),_:1})),e.error?(a(),b(v(L),{key:2,size:"small",color:"danger"},{default:C((()=>[n(u(e.error),1)])),_:2},1024)):_("",!0)],2),l("div",{class:p(t.$style.credentialAction)},[e.isConnecting?(a(),b(v(F),{key:0,size:"small"})):"configured"===e.credentialStatus?(a(),b(v(N),{key:1,type:"tertiary",size:"small","data-testid":"dynamic-credential-disconnect",onClick:t=>s("revoke",e.credentialId)},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.disconnect")),1)])),_:1},8,["onClick"])):(a(),b(v(N),{key:2,type:"secondary",size:"small","data-testid":"dynamic-credential-connect",onClick:t=>s("authorize",e.credentialId)},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.connect")),1)])),_:1},8,["onClick"]))],2)],2)))),128))],2)],2),l("div",{class:p(t.$style.footer)},[f(v(L),{size:"small",color:"text-light"},{default:C((()=>[n(u(v(r).baseText("chatHub.dynamicCredentials.drawer.footer",{interpolate:{connected:String(e.connectedCount),total:String(e.totalCount)}})),1)])),_:1})],2)],2)],2))}}),[["__cssModules",{$style:{container:"_container_8e4c4_125",panel:"_panel_8e4c4_135",header:"_header_8e4c4_142",body:"_body_8e4c4_153",subtitle:"_subtitle_8e4c4_159",credentialList:"_credentialList_8e4c4_166",credentialRow:"_credentialRow_8e4c4_175",credentialInfo:"_credentialInfo_8e4c4_185",credentialAction:"_credentialAction_8e4c4_193",footer:"_footer_8e4c4_199"}}]]),Ke=c({__name:"ChatView",setup(e){const t=O(),r=E(),c=Z(),h=xe(),A=ce(),S=q(),z=R(me),T=K(),j=Y(),H=k(),N=J();o((async()=>{await h.fetchConfiguredTools()}));const V=y("headerRef"),F=y("inputRef"),W=y("scrollable"),B=y("chatLayout"),P=d((()=>B.value?.$el)),G=s(!1),X=s(!1),ne=s(!1),{userCanClaimOpenAiCredits:ie,aiCreditsQuota:oe,claimCredits:de}=ge(),ue=d((()=>"string"==typeof r.params.id?r.params.id:ee())),_e=d((()=>ue.value!==r.params.id)),ye=s(!1),be=d((()=>ue.value?h.sessions.byId[ue.value]:void 0)),Ce=d((()=>be.value?.title)),Me=d((()=>!!Qe.value?.metadata.capabilities.functionCalling)),Ee=I(se(c.currentUserId??"anonymous"),!1),Fe=d((()=>(h.sessions.ids?.length??0)>0)),Oe=d((()=>!Ee.value&&!G.value&&!r.query.workflowId&&!r.query.agentId&&(h.sessionsReady?!(Fe.value||A.isChatFeatureEnabled&&Q(["global:chatUser"])):void 0))),We=I(te(c.currentUserId??"anonymous"),null,{writeDefaults:!1,shallow:!0,serializer:{read:e=>{try{return Le.parse(JSON.parse(e))}catch(t){return null}},write:e=>JSON.stringify(e)}}),Pe=d((()=>We.value?h.getAgent(We.value):void 0)),Ke=d((()=>{const e=r.query.agentId,t=r.query.workflowId,a=r.query.provider,n=r.query.model;if(!_e.value)return null;if("string"==typeof e)return h.getAgent({provider:"custom-agent",agentId:e});if("string"==typeof t)return h.getAgent({provider:"n8n",workflowId:t});if("string"==typeof a&&"string"==typeof n){const e=re.safeParse({provider:a,model:n});if(e.success)return h.getAgent(e.data)}return null})),Qe=d((()=>{if(!_e.value){const e=be.value?ke(be.value):null;return e?h.getAgent(e,{name:be.value?.agentName||be.value?.model,icon:be.value?.agentIcon}):null}return Ke.value?Ke.value:h.streaming?.sessionId===ue.value?h.streaming.agent:We.value?h.getAgent(We.value,{name:We.value.cachedDisplayName,icon:We.value.cachedIcon}):null})),Xe=d((()=>!!Qe.value&&!Ae(Qe.value.model.provider))),Ze=d((()=>"custom-agent"===Qe.value?.model.provider?Qe.value.model.agentId:void 0)),{customAgent:et}=Ve(Ze),tt=d((()=>et.value?et.value.toolIds:be.value?.toolIds?be.value.toolIds:Ke.value?[]:h.configuredTools.filter((e=>e.enabled)).map((e=>e.definition.id)))),{credentialsByProvider:at,selectCredential:nt}=He(c.currentUserId??"anonymous"),{isEnabled:lt}=ve(),it=Ye(d((()=>"n8n"===Qe.value?.model.provider&<.value?Qe.value.model.workflowId:null))),st=s(!1),rt=d((()=>"missingDynamicCredentials"===vt.value));m((()=>it.allAuthenticated.value),(e=>{e&&st.value&&(st.value=!1)}));const ot=d((()=>{const e=Qe.value?.model.provider;if(!e)return null;if(!Ae(e))return{};const t=at.value?.[e];return t?{[ae[e]]:{id:t,name:""}}:null})),ct=d((()=>!ot.value)),{chatMessages:dt,isResponding:ut,isNewSession:_t,messagingState:vt,scrollContainerRef:gt,arrivedState:pt,scrollToBottom:mt,loadSession:ft}=Ie({sessionId:ue,scrollableRef:W,isNewSession:_e,extendMessagingState:()=>h.agentsReady&&!Qe.value?"missingAgent":h.agentsReady&&ct.value?"missingCredentials":it.hasDynamicCredentials.value&&!it.allAuthenticated.value?"missingDynamicCredentials":null,shouldSkipScroll:()=>!!ye.value&&(ye.value=!1,!0)}),ht=$(gt),yt=function(e,t){const a=s(!1),n=s(0),l=d((()=>we(t.value.flatMap((e=>e.content))))),i=d((()=>{const e=l.value;return 0===e.length?null:e[Math.min(n.value,e.length-1)]})),r=d((()=>l.value.length>0&&!a.value)),o=$e("N8N_CHAT_ARTIFACT_VIEWER_WIDTH",{container:e,defaultSize:e=>.6*e,minSize:300,maxSize:e=>e-300,allowFullSize:!0});return m(l,((e,t)=>{e.length>0&&e.length!==t?.length&&(a.value=!1,n.value=e.length-1)})),{selectedIndex:n,allArtifacts:l,isViewerVisible:r,isViewerCollapsed:a,viewerSize:d((()=>o.size.value)),isViewerResizing:d((()=>o.isResizing.value)),handleOpenViewer:function(e){e&&(n.value=l.value.findIndex((t=>t.title===e))),a.value=!1},handleViewerResize:o.onResize,handleViewerResizeEnd:function(){o.isFullSize.value&&(a.value=!0),o.onResizeEnd()},handleCloseViewer:function(){a.value=!0},handleDownload:function(){const e=i.value;if(!e)return;const t=new Blob([e.content],{type:"text/plain"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=`${e.title}.${e.type}`,n.click(),URL.revokeObjectURL(a)},handleSelect:function(e){n.value=e}}}(P,dt),wt=d((()=>ht.width.value<600)),bt=s(),xt=y("messages"),Ct=s(!1),kt=je(d((()=>!(!Qe.value?.metadata.allowFileUploads||ct.value||bt.value&&"human"!==dt.value.find((e=>e.id===bt.value))?.type))),(function(e){if(!bt.value)return void F.value?.addAttachments(e);const t=dt.value.findIndex((e=>e.id===bt.value));xt.value?.[t]?.addFiles(e)}));function At(){X.value=!1}async function St(e,a){e.trim()&&!ut.value&&Qe.value&&ot.value&&(!it.hasDynamicCredentials.value||it.allAuthenticated.value)&&(Ct.value=!0,bt.value=void 0,await h.sendMessage(ue.value,e,Qe.value,ot.value,a),F.value?.reset(),_t.value&&t.push({name:fe,params:{id:ue.value}}))}async function zt(){await h.stopStreamingMessage(ue.value)}function $t(){bt.value=void 0}async function It(e,t,a){bt.value&&!ut.value&&Qe.value&&ot.value&&(!it.hasDynamicCredentials.value||it.allAuthenticated.value)&&(await h.editMessage(ue.value,bt.value,e,Qe.value,ot.value,t,a),bt.value=void 0)}async function Rt(e){if(ut.value||"ai"!==e.type||!Qe.value||!ot.value||it.hasDynamicCredentials.value&&!it.allAuthenticated.value)return;const t=e.id;bt.value=void 0,await h.regenerateMessage(ue.value,t,Qe.value,ot.value)}async function Dt(e,a){const n=a??h.getAgent(e);if(be.value)try{await h.updateSessionModel(ue.value,e,n.name)}catch(l){S.showError(l,H.baseText("chatHub.error.updateModelFailed"))}else We.value={...e,cachedDisplayName:n.name,cachedIcon:n.icon??void 0},await t.push({name:pe,force:!0})}async function Tt(e){await Dt(e.model,e)}function jt(e){ye.value=!0,h.switchAlternative(ue.value,e)}function Mt(e){V.value?.openCredentialSelector(e)}function Ht(){V.value?.openModelSelector()}function Lt(e){j.openModalWithData({name:he,data:{agentId:e,credentials:at,onCreateCustomAgent:Tt}})}function Nt(){j.openModalWithData({name:he,data:{credentials:at,onCreateCustomAgent:Tt}})}function Et(e){const a=t.resolve({name:le.WORKFLOW,params:{name:e}});window.open(a.href,"_blank")}function Vt(e){Qe.value&&N.track("User clicked chat hub suggested prompt",{...ze(Qe.value.model),source:"chat_hub"}),F.value?.setText(e),F.value?.focus()}return Je(F,{disabled:d((()=>!0===Oe.value||"idle"!==vt.value))}),m((()=>h.agents),(e=>{const t=A.moduleSettings?.["chat-hub"];if(!e||Qe.value||!_t.value||!t)return;const a=Se(e,t.providers);a&&Tt(a)}),{immediate:!0}),m([ue,_t],(async([e,a])=>{if(Ct.value=!1,bt.value=void 0,!a)try{await ft(e)}catch(n){S.showError(n,H.baseText("chatHub.error.fetchConversationFailed")),await t.push({name:pe})}}),{immediate:!0}),m([F,ue],(([e])=>{e?.focus()}),{immediate:!0}),m(Ce,(e=>{T.set(e??"Chat")}),{immediate:!0}),m(at,(e=>{e&&h.fetchAgents(e)}),{immediate:!0}),m(Pe,((e,t)=>{We.value&&e?.name&&e.name!==t?.name&&(We.value={...We.value,cachedDisplayName:e.name}),We.value&&e?.icon&&(e.icon.type!==t?.icon?.type||e.icon.value!==t.icon.value)&&(We.value={...We.value,cachedIcon:e.icon})}),{immediate:!0}),m([G,ie,vt,()=>h.agentsReady],(async([e,t,a,n])=>{t&&!ne.value&&(e||n&&"missingCredentials"===a)&&(ne.value=!0,await de("chatHubAutoClaim")&&(X.value=!0))}),{immediate:!0}),m(dt,(e=>{e.length>0&&(X.value=!1)})),m(Fe,(e=>{Ee.value=Ee.value||e}),{immediate:!0}),(e,t)=>void 0!==Oe.value?(a(),b(Ne,{key:0,ref:"chatLayout",class:p({[e.$style.chatLayout]:!0,[e.$style.isNewSession]:v(_t),[e.$style.isAgentNewSession]:v(_t)&&Xe.value,[e.$style.isExistingSession]:!v(_t),[e.$style.isMobileDevice]:v(z),[e.$style.isDraggingFile]:v(kt).isDragging.value,[e.$style.hasArtifact]:v(yt).isViewerVisible.value,[e.$style.isMainPanelNarrow]:wt.value,[e.$style.isResizing]:v(yt).isViewerResizing.value}),onDragenter:v(kt).handleDragEnter,onDragleave:v(kt).handleDragLeave,onDragover:v(kt).handleDragOver,onDrop:v(kt).handleDrop,onPaste:v(kt).handlePaste},{default:C((()=>[v(kt).isDragging.value?(a(),i("div",{key:0,class:p(e.$style.dropOverlay)},[f(v(L),{size:"large",color:"text-dark"},{default:C((()=>[n(u(v(H).baseText("chatHub.chat.dropOverlay")),1)])),_:1})],2)):_("",!0),f(v(D),{class:p(e.$style.mainContentResizer),width:v(yt).viewerSize.value,style:x({width:v(yt).isViewerVisible.value?`${v(yt).viewerSize.value}px`:st.value?"calc(100% - 340px)":"100%"}),"supported-directions":["right"],"is-resizing-enabled":!0,onResize:v(yt).handleViewerResize,onResizeend:v(yt).handleViewerResizeEnd},{default:C((()=>[l("div",{class:p(e.$style.mainContent)},[Oe.value?_("",!0):(a(),b(Ue,{key:0,ref_key:"headerRef",ref:V,"selected-model":Qe.value,credentials:v(at),"ready-to-show-model-selector":v(_t)||!!be.value,"show-artifact-icon":v(yt).allArtifacts.value.length>0&&v(yt).isViewerCollapsed.value,onSelectModel:Dt,onEditCustomAgent:Lt,onCreateCustomAgent:Nt,onSelectCredential:v(nt),onOpenWorkflow:Et,onReopenArtifact:v(yt).handleOpenViewer},null,8,["selected-model","credentials","ready-to-show-model-selector","show-artifact-icon","onSelectCredential","onReopenArtifact"])),f(v(U),{type:"scroll","enable-vertical-scroll":!0,"enable-horizontal-scroll":!1,"as-child":"",class:p(e.$style.scrollArea)},{default:C((()=>[l("div",{ref:"scrollable",class:p(e.$style.scrollable)},[v(_t)?(a(),b(Te,{key:0,class:p({[e.$style.greetingsCentered]:!Xe.value}),"selected-agent":Qe.value,loading:!v(h).agentsReady,onSelectPrompt:Vt},null,8,["class","selected-agent","loading"])):(a(),i("div",{key:1,role:"log","aria-live":"polite",class:p(e.$style.messageList)},[(a(!0),i(g,null,w(v(dt),((e,t)=>(a(),b(De,{key:e.id,ref_for:!0,ref:"messages",message:e,compact:wt.value,"is-editing":bt.value===e.id,"is-edit-submitting":v(h).streaming?.revisionOfMessageId===e.id,"has-session-streaming":v(ut),"cached-agent-display-name":Qe.value?.name??null,"cached-agent-icon":Qe.value?.icon??null,"accepted-mime-types":Qe.value?.metadata.allowedFilesMimeTypes??"","min-height":Ct.value&&"ai"===e.type&&t===v(dt).length-1&&v(gt)?v(gt).offsetHeight-30-200:void 0,onStartEdit:t=>{return a=e.id,void(bt.value=a);var a},onCancelEdit:$t,onRegenerate:Rt,onUpdate:It,onSwitchAlternative:jt,onOpenArtifact:v(yt).handleOpenViewer},null,8,["message","compact","is-editing","is-edit-submitting","has-session-streaming","cached-agent-display-name","cached-agent-icon","accepted-mime-types","min-height","onStartEdit","onOpenArtifact"])))),128))],2)),Oe.value?_("",!0):(a(),i("div",{key:2,class:p(e.$style.promptContainer)},[v(pt).bottom||v(_t)?_("",!0):(a(),b(v(M),{key:0,variant:"subtle",icon:"arrow-down",class:p(e.$style.scrollToBottomButton),title:v(H).baseText("chatHub.chat.scrollToBottom"),onClick:t[0]||(t[0]=e=>v(mt)(!0))},null,8,["class","title"])),f(Re,{ref_key:"inputRef",ref:F,"selected-model":Qe.value,"checked-tool-ids":Me.value?tt.value:[],"session-id":v(_t)?void 0:ue.value,"custom-agent-id":Ze.value,"messaging-state":v(vt),"is-tools-selectable":Me.value,"is-new-session":v(_t),"show-credits-claimed-callout":X.value,"show-dynamic-credentials-missing-callout":rt.value,"ai-credits-quota":String(v(oe)),onSubmit:St,onStop:zt,onSelectModel:Ht,onSetCredentials:Mt,onEditAgent:Lt,onDismissCreditsCallout:At,onOpenDynamicCredentials:t[1]||(t[1]=e=>st.value=!0)},null,8,["selected-model","checked-tool-ids","session-id","custom-agent-id","messaging-state","is-tools-selectable","is-new-session","show-credits-claimed-callout","show-dynamic-credentials-missing-callout","ai-credits-quota"])],2))],2)])),_:1},8,["class"]),v(_t)?(a(),b(Be,{key:1,"show-welcome-screen":Oe.value,onStartNewChat:t[2]||(t[2]=e=>{G.value=!0,F.value?.focus()})},null,8,["show-welcome-screen"])):_("",!0)],2)])),_:1},8,["class","width","style","onResize","onResizeend"]),st.value&&v(it).hasDynamicCredentials.value?(a(),b(qe,{key:1,class:p(e.$style.dynamicCredentialsDrawer),credentials:v(it).credentials.value,"connected-count":v(it).connectedCount.value,"total-count":v(it).totalCount.value,"data-testid":"dynamic-credentials-drawer",onClose:t[3]||(t[3]=e=>st.value=!1),onAuthorize:v(it).authorize,onRevoke:v(it).revoke},null,8,["class","credentials","connected-count","total-count","onAuthorize","onRevoke"])):_("",!0),v(yt).isViewerVisible.value?(a(),b(Ge,{key:ue.value,class:p(e.$style.artifactViewer),artifacts:v(yt).allArtifacts.value,"selected-index":v(yt).selectedIndex.value,onClose:v(yt).handleCloseViewer,onSelectArtifact:v(yt).handleSelect,onDownload:v(yt).handleDownload},null,8,["class","artifacts","selected-index","onClose","onSelectArtifact","onDownload"])):_("",!0)])),_:1},8,["class","onDragenter","onDragleave","onDragover","onDrop","onPaste"])):_("",!0)}}),e("default",P(Ke,[["__cssModules",{$style:{chatLayout:"_chatLayout_5crcp_125",hasArtifact:"_hasArtifact_5crcp_130",mainContent:"_mainContent_5crcp_130",mainContentResizer:"_mainContentResizer_5crcp_138",dynamicCredentialsDrawer:"_dynamicCredentialsDrawer_5crcp_151",artifactViewer:"_artifactViewer_5crcp_158",isResizing:"_isResizing_5crcp_163",scrollArea:"_scrollArea_5crcp_168",scrollable:"_scrollable_5crcp_173",isNewSession:"_isNewSession_5crcp_182",isAgentNewSession:"_isAgentNewSession_5crcp_185",greetingsCentered:"_greetingsCentered_5crcp_189",header:"_header_5crcp_196",messageList:"_messageList_5crcp_202",promptContainer:"_promptContainer_5crcp_212",isMobileDevice:"_isMobileDevice_5crcp_219",isExistingSession:"_isExistingSession_5crcp_219",isMainPanelNarrow:"_isMainPanelNarrow_5crcp_232",scrollToBottomButton:"_scrollToBottomButton_5crcp_237",isDraggingFile:"_isDraggingFile_5crcp_245",dropOverlay:"_dropOverlay_5crcp_249"}}]]))}}}));
//# sourceMappingURL=ChatView-legacy-CWxR9-mV.js.map