UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 28.9 kB
(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]=`0eb908d1-0b02-4b58-8b26-a9e48605cdac`,e._sentryDebugIdIdentifier=`sentry-dbid-0eb908d1-0b02-4b58-8b26-a9e48605cdac`)})()}catch{}import{$ as e,A as t,C as n,E as r,Ft as i,Ht as a,K as o,N as s,S as c,Sn as l,T as u,Wt as d,_ as f,_n as p,gt as m,j as h,n as g,pt as _,rt as v,w as y,yn as ee,yt as b}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{D as te,M as x,N as ne,O as S,b as C,bt as w,xt as re}from"./_MapCache-CUJwh2qp.js";import{$i as T,Ii as E,Mi as ie,Nt as D,Qi as O,R as k,Yi as ae,Zi as A,_t as oe,gt as se,i as j,lt as M,m as ce,z as le}from"./src-wni2AGA3.js";import{t as N}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import{As as ue,Po as de,Tr as fe,en as pe,gr as me,r as he,t as ge,vn as _e,wr as ve}from"./users.store-BHWXXawf.js";import{Uo as ye,ac as be,fi as xe,ii as P,li as Se,ms as Ce,oc as we,pl as F}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import{r as Te}from"./_baseOrderBy-CaKruttV.js";import"./dateformat-CYfyw486.js";import"./useDebounce-CTeIt-cH.js";import"./versions.store-CNV-esbv.js";import{t as Ee}from"./usePageRedirectionHelper-Dxb_B6-R.js";import"./useClipboard-D72kaMkX.js";import"./nodeIcon-BFJyt77y.js";import{l as De}from"./canvas.utils-BMxgA7cX.js";import{t as I}from"./CredentialIcon-BKhP7Biv.js";import{t as Oe}from"./useDynamicCredentials-C74iW7Qx.js";import"./NodeIcon-0naEDfOR.js";import"./pushConnection.store-L5aofOKN.js";import{t as ke}from"./useFreeAiCredits-oLq3Ynnl.js";import"./dist-DG6crvT0.js";import{h as Ae,l as je,n as Me,t as Ne}from"./constants-B7scOakb.js";import{O as L,S as Pe,c as Fe,h as Ie,i as Le,k as Re,l as ze,t as Be,w as R}from"./chat.store-Bg89IR0u.js";import"./ChatAgentAvatar-Dxv-BN__.js";import{t as Ve}from"./useResizablePanel-CFn0Gfyi.js";import{a as He,i as Ue,n as We,r as Ge,t as Ke}from"./ChatGreetings-BawDM94-.js";import{n as qe}from"./ToolsSelector-C3Jxpxix.js";import{n as Je,r as Ye,t as Xe}from"./ChatLayout-C5PLneyp.js";import{n as z,t as Ze}from"./useCustomAgent-CI-guKOt.js";var Qe=N(s({__name:`ChatConversationHeader`,props:{selectedModel:{},credentials:{},readyToShowModelSelector:{type:Boolean},showArtifactIcon:{type:Boolean}},emits:[`selectModel`,`renameConversation`,`editCustomAgent`,`createCustomAgent`,`selectCredential`,`openWorkflow`,`reopenArtifact`],setup(t,{expose:a,emit:o}){let s=o,l=_(`modelSelectorRef`),f=w(),h=Be(),g=i(!1),v=c(()=>t.selectedModel?.model.provider===`n8n`&&t.selectedModel.metadata.scopes?.includes(`workflow:read`));function ee(){t.selectedModel?.model.provider===`n8n`&&s(`openWorkflow`,t.selectedModel.model.workflowId)}function b(e){s(`selectModel`,e)}return m(()=>t.credentials,async e=>{if(e){g.value=!0;try{await h.fetchAgents(e)}finally{g.value=!1}}},{immediate:!0}),a({openModelSelector:()=>l.value?.open(),openCredentialSelector:e=>l.value?.openCredentialSelector(e)}),(i,a)=>(e(),r(`div`,{class:p(i.$style.component)},[n(`div`,{class:p(i.$style.grow)},[t.readyToShowModelSelector?(e(),y(z,{key:0,ref_key:`modelSelectorRef`,ref:l,"selected-agent":t.selectedModel,credentials:t.credentials,text:``,agents:d(h).agents,"is-loading":g.value,onChange:b,onCreateCustomAgent:a[0]||=e=>s(`createCustomAgent`),onSelectCredential:a[1]||=(e,t)=>s(`selectCredential`,e,t)},null,8,[`selected-agent`,`credentials`,`agents`,`is-loading`])):u(``,!0)],2),n(`div`,{class:p(i.$style.buttons)},[t.selectedModel?.model.provider===`custom-agent`?(e(),y(d(O),{key:0,variant:`subtle`,size:`small`,icon:`settings`,label:d(f).baseText(`chatHub.chat.header.button.editAgent`),onClick:a[2]||=e=>s(`editCustomAgent`,t.selectedModel.model.agentId)},null,8,[`label`])):u(``,!0),t.showArtifactIcon?(e(),y(d(E),{key:1,variant:`subtle`,size:`small`,icon:`panel-right`,onClick:a[3]||=e=>s(`reopenArtifact`)})):u(``,!0),v.value?(e(),y(d(O),{key:2,variant:`subtle`,size:`small`,icon:`settings`,label:d(f).baseText(`chatHub.chat.header.button.openWorkflow`),onClick:ee},null,8,[`label`])):u(``,!0)],2)],2))}}),[[`__cssModules`,{$style:{component:`_component_1hi6t_125`,menuButton:`_menuButton_1hi6t_136`,grow:`_grow_1hi6t_140`,title:`_title_1hi6t_147`,buttons:`_buttons_1hi6t_151`}}]]),$e=`https://docs.n8n.io/advanced-ai/chat-hub/#chat-user-role`,et=N(s({__name:`ChatStarter`,props:{showWelcomeScreen:{type:Boolean}},emits:[`startNewChat`],setup(i,{emit:a}){let o=a,s=he(),f=ue(),m=w(),{goToUpgrade:_}=Ee(),v=c(()=>f.isEnterpriseFeatureEnabled[F.AdvancedPermissions]),ee=c(()=>me([`rbac`],{rbac:{scope:`user:create`}})),te=c(()=>ee.value),x=c(()=>!v.value);function ne(){o(`startNewChat`)}function S(){s.openModalWithData({name:de,data:{initialRole:P.ChatUser}})}function C(){_(`chat-hub`,`upgrade-advanced-permissions`)}return(a,o)=>(e(),y(g,{name:`welcome-fade`,mode:`out-in`},{default:b(()=>[i.showWelcomeScreen?(e(),r(`div`,{key:`welcome`,class:p(a.$style.welcomeContent)},[n(`div`,{class:p(a.$style.header)},[h(d(ae),{tag:`h2`,bold:``,size:`xlarge`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.header`)),1)]),_:1}),h(d(A),{size:`large`,color:`text-light`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.subtitle`)),1)]),_:1})],2),n(`div`,{class:p(a.$style.cardGrid)},[n(`div`,{"data-test-id":`welcome-card-workflow-agents`,class:p([a.$style.cardWrapper,a.$style.cardFirst])},[h(d(D),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[h(d(T),{icon:`robot`,size:`large`,color:`text-dark`}),h(d(A),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.workflowAgents.title`)),1)]),_:1})],2),h(d(A),{size:`small`,color:`text-light`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.workflowAgents.description`)),1)]),_:1})]),_:1},8,[`class`])],2),n(`div`,{class:p([a.$style.cardWrapper,a.$style.cardMiddle]),"data-test-id":`welcome-card-personal-agents`},[h(d(D),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[h(d(T),{icon:`message-square`,size:`large`,color:`text-dark`}),h(d(A),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.personalAgents.title`)),1)]),_:1})],2),h(d(A),{size:`small`,color:`text-light`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.personalAgents.description`)),1)]),_:1})]),_:1},8,[`class`])],2),n(`div`,{class:p([a.$style.cardWrapper,a.$style.cardLast]),"data-test-id":`welcome-card-base-models`},[h(d(D),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[n(`div`,{class:p(a.$style.providerIcons)},[h(I,{"credential-type-name":`openAiApi`,size:20}),h(I,{"credential-type-name":`anthropicApi`,size:20}),h(I,{"credential-type-name":`googlePalmApi`,size:20})],2),h(d(A),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.baseModels.title`)),1)]),_:1})],2),h(d(A),{size:`small`,color:`text-light`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.baseModels.description`)),1)]),_:1})]),_:1},8,[`class`])],2)],2),n(`div`,{class:p(a.$style.buttonGroup)},[h(d(O),{variant:`solid`,size:`medium`,icon:`plus`,"data-test-id":`welcome-start-new-chat`,onClick:ne},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.button.startNewChat`)),1)]),_:1}),te.value?(e(),y(d(ie),{key:0,disabled:!x.value},{content:b(()=>[h(d(re),{keypath:`chatHub.welcome.inviteUpgrade.tooltip`,scope:`global`},{link:b(()=>[h(d(M),{size:`small`,onClick:C},{default:b(()=>[t(l(d(m).baseText(`generic.upgrade`)),1)]),_:1})]),docsLink:b(()=>[h(d(M),{size:`small`,href:$e,target:`_blank`,rel:`noopener`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.inviteUpgrade.here`)),1)]),_:1})]),_:1})]),default:b(()=>[h(d(O),{variant:`subtle`,size:`medium`,icon:`users`,disabled:x.value,"data-test-id":`welcome-invite-chat-users`,onClick:S},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.button.inviteChatUsers`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`disabled`])):u(``,!0)],2)],2)):u(``,!0)]),_:1}))}}),[[`__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`}}]]),B=[`srcdoc`,`title`],tt=N(s({__name:`ChatArtifactViewer`,props:{artifacts:{},selectedIndex:{}},emits:[`close`,`selectArtifact`,`download`],setup(t,{emit:i}){let a=t,o=i,s=c(()=>a.artifacts[a.selectedIndex]??a.artifacts[0]),l=c(()=>a.artifacts.map((e,t)=>({value:t,label:e.title}))),f=c(()=>s.value?.type===`html`),m=c(()=>s.value?.type===`md`),g=c(()=>({type:`text`,content:m.value?s.value?.content:`\`\`\`${s.value?.type}\n${s.value?.content}\n\`\`\``}));return(i,a)=>(e(),r(`div`,{class:p(i.$style.container)},[n(`div`,{class:p(i.$style.viewer)},[n(`div`,{class:p(i.$style.header)},[(e(),y(d(j),{key:s.value?.title??``,"model-value":t.selectedIndex,size:`medium`,variant:`ghost`,items:l.value,class:p(i.$style.title),"onUpdate:modelValue":a[0]||=e=>o(`selectArtifact`,e)},null,8,[`model-value`,`items`,`class`])),n(`div`,{class:p(i.$style.headerActions)},[h(d(E),{variant:`ghost`,text:``,icon:`download`,onClick:a[1]||=e=>o(`download`)}),h(d(E),{variant:`ghost`,text:``,icon:`x`,onClick:a[2]||=e=>o(`close`)})],2)],2),n(`div`,{class:p(i.$style.content)},[f.value?(e(),r(`iframe`,{key:0,srcdoc:s.value?.content,class:p(i.$style.iframe),sandbox:``,title:s.value?.title},null,10,B)):g.value?(e(),y(Ue,{key:1,ref:`markdownChunk`,class:p(m.value?i.$style.markdown:``),"single-pre":!m.value,source:g.value,"footnote-style":`normal`},null,8,[`class`,`single-pre`,`source`])):u(``,!0)],2)],2)],2))}}),[[`__cssModules`,{$style:{container:`_container_1w6pd_125`,viewer:`_viewer_1w6pd_135`,header:`_header_1w6pd_142`,markdown:`_markdown_1w6pd_156`,title:`_title_1w6pd_160`,headerActions:`_headerActions_1w6pd_169`,type:`_type_1w6pd_176`,content:`_content_1w6pd_181`,iframe:`_iframe_1w6pd_186`}}]]),nt=N(s({__name:`DynamicCredentialsDrawer`,props:{credentials:{},connectedCount:{},totalCount:{}},emits:[`close`,`authorize`,`revoke`],setup(i,{emit:a}){let o=a,s=w();return(a,c)=>(e(),r(`div`,{class:p(a.$style.container)},[n(`div`,{class:p(a.$style.panel)},[n(`div`,{class:p(a.$style.header)},[h(d(A),{bold:``,size:`large`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.title`)),1)]),_:1}),h(d(E),{type:`tertiary`,text:``,icon:`x`,"data-testid":`dynamic-credentials-drawer-close`,onClick:c[0]||=e=>o(`close`)})],2),n(`div`,{class:p(a.$style.body)},[n(`div`,{class:p(a.$style.subtitle)},[h(d(A),{bold:``},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.subtitle`)),1)]),_:1}),h(d(A),{size:`small`,color:`text-light`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.description`)),1)]),_:1})],2),n(`ul`,{class:p(a.$style.credentialList)},[(e(!0),r(f,null,v(i.credentials,i=>(e(),r(`li`,{key:i.credentialId,class:p(a.$style.credentialRow),"data-testid":`dynamic-credential-row`},[n(`div`,{class:p(a.$style.credentialInfo)},[h(d(A),{bold:``},{default:b(()=>[t(l(i.credentialName),1)]),_:2},1024),i.credentialStatus===`configured`?(e(),y(d(A),{key:0,size:`small`,color:`text-light`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.status.connected`)),1)]),_:1})):(e(),y(d(A),{key:1,size:`small`,color:`text-light`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.status.notConnected`)),1)]),_:1})),i.error?(e(),y(d(A),{key:2,size:`small`,color:`danger`},{default:b(()=>[t(l(i.error),1)]),_:2},1024)):u(``,!0)],2),n(`div`,{class:p(a.$style.credentialAction)},[i.isConnecting?(e(),y(d(k),{key:0,size:`small`})):i.credentialStatus===`configured`?(e(),y(d(O),{key:1,type:`tertiary`,size:`small`,"data-testid":`dynamic-credential-disconnect`,onClick:e=>o(`revoke`,i.credentialId)},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.disconnect`)),1)]),_:1},8,[`onClick`])):(e(),y(d(O),{key:2,type:`secondary`,size:`small`,"data-testid":`dynamic-credential-connect`,onClick:e=>o(`authorize`,i.credentialId)},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.connect`)),1)]),_:1},8,[`onClick`]))],2)],2))),128))],2)],2),n(`div`,{class:p(a.$style.footer)},[h(d(A),{size:`small`,color:`text-light`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.footer`,{interpolate:{connected:String(i.connectedCount),total:String(i.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`}}]]);function rt(e,t){let n=i(!1),r=i(0),a=c(()=>Le(t.value.flatMap(e=>e.content))),o=c(()=>{let e=a.value;return e.length===0?null:e[Math.min(r.value,e.length-1)]}),s=c(()=>a.value.length>0&&!n.value),l=Ve(`N8N_CHAT_ARTIFACT_VIEWER_WIDTH`,{container:e,defaultSize:e=>e*.6,minSize:300,maxSize:e=>e-300,allowFullSize:!0});m(a,(e,t)=>{e.length>0&&e.length!==t?.length&&(n.value=!1,r.value=e.length-1)});function u(){l.isFullSize.value&&(n.value=!0),l.onResizeEnd()}function d(){n.value=!0}function f(e){r.value=e}function p(e){e&&(r.value=a.value.findIndex(t=>t.title===e)),n.value=!1}function h(){let e=o.value;if(!e)return;let t=new Blob([e.content],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e.title}.${e.type}`,r.click(),URL.revokeObjectURL(n)}return{selectedIndex:r,allArtifacts:a,isViewerVisible:s,isViewerCollapsed:n,viewerSize:c(()=>l.size.value),isViewerResizing:c(()=>l.isResizing.value),handleOpenViewer:p,handleViewerResize:l.onResize,handleViewerResizeEnd:u,handleCloseViewer:d,handleDownload:h,handleSelect:f}}function it(e,t){let n=he(),r=C(),i=c(()=>a(t?.disabled)??!1),o=c(()=>!!(i.value||n.isAnyModalOpen||r.value&&De(r.value))),s=[`[`],l=e=>e.key.length===1,u=e=>s.includes(e.key),d=e=>e.ctrlKey||e.metaKey||e.altKey;S(document,`keydown`,t=>{if(o.value||t.isComposing||t.repeat||d(t)||!l(t)||u(t))return;let n=e.value;n&&(t.preventDefault(),n.appendText(t.key),n.focus())})}function V(e){if(!e)return``;try{return new URL(e).searchParams.get(`resolverId`)??``}catch{return``}}function at(e){let t=Te(),n=i([]),r=i(!1),a=c(()=>n.value.length>0),o=c(()=>a.value&&n.value.every(e=>e.credentialStatus===`configured`)),s=c(()=>n.value.filter(e=>e.credentialStatus===`configured`).length),l=c(()=>n.value.length);async function u(){let i=e.value;if(!i){n.value=[];return}r.value=!0;try{n.value=((await L(t.restApiContext,i)).credentials??[]).map(e=>({credentialId:e.credentialId,credentialName:e.credentialName,credentialType:e.credentialType,credentialStatus:e.credentialStatus,resolverId:V(e.authorizationUrl),isConnecting:!1,error:null}))}catch{n.value=[]}finally{r.value=!1}}async function d(e,t=10,r=1e3){for(let i=0;i<t;i++){if(await u(),n.value.find(t=>t.credentialId===e)?.credentialStatus===`configured`)return;await new Promise(e=>setTimeout(e,r))}}async function f(e){let r=n.value.find(t=>t.credentialId===e);if(r){r.isConnecting=!0,r.error=null;try{let n=await R(t.restApiContext,e,r.resolverId),i=[`http:`,`https:`];try{let e=new URL(n);if(!i.includes(e.protocol)){r.error=`Invalid authorization URL`,r.isConnecting=!1;return}}catch{r.error=`Invalid authorization URL`,r.isConnecting=!1;return}let a=window.open(n,`OAuth Authorization`,`scrollbars=no,resizable=yes,status=no,titlebar=no,location=no,toolbar=no,menubar=no,width=500,height=700`),o=new BroadcastChannel(`oauth-callback`),s=!1,c=async()=>{s||(s=!0,o.close(),clearInterval(l),await d(e),r.isConnecting=!1)};o.addEventListener(`message`,async e=>{e.data===`success`&&(a&&a.close(),await c())});let l=setInterval(()=>{a?.closed&&c()},500)}catch{r.error=`Failed to start authorization`,r.isConnecting=!1}}}async function p(e){let r=n.value.find(t=>t.credentialId===e);if(r){r.isConnecting=!0,r.error=null;try{await Re(t.restApiContext,e,r.resolverId),await u()}catch{r.error=`Failed to disconnect credential`}finally{r.isConnecting=!1}}}return m(e,e=>{e?u():n.value=[]},{immediate:!0}),{credentials:n,hasDynamicCredentials:a,allAuthenticated:o,connectedCount:s,totalCount:l,isLoading:r,fetchStatus:u,authorize:f,revoke:p}}var ot=N(s({__name:`ChatView`,setup(a){let s=oe(),g=se(),S=ge(),C=Be(),re=ue(),T=fe(),ie=ne(Ae),D=_e(),O=he(),k=w(),ae=pe();o(async()=>{await C.fetchConfiguredTools()});let j=_(`headerRef`),M=_(`inputRef`),N=_(`scrollable`),de=_(`chatLayout`),me=c(()=>de.value?.$el),P=i(!1),F=i(!1),Te=i(!1),{userCanClaimOpenAiCredits:Ee,aiCreditsQuota:De,claimCredits:I}=ke(),L=c(()=>typeof g.params.id==`string`?g.params.id:ye()),Le=c(()=>L.value!==g.params.id),Re=i(!1),R=c(()=>L.value?C.sessions.byId[L.value]:void 0),Ve=c(()=>R.value?.title),Ue=c(()=>!!H.value?.metadata.capabilities.functionCalling),z=x(be(S.currentUserId??`anonymous`),!1),$e=c(()=>(C.sessions.ids?.length??0)>0),B=c(()=>{if(z.value||P.value||g.query.workflowId||g.query.agentId)return!1;if(C.sessionsReady)return!$e.value&&(!re.isChatFeatureEnabled||!ve([`global:chatUser`]))}),V=x(we(S.currentUserId??`anonymous`),null,{writeDefaults:!1,shallow:!0,serializer:{read:e=>{try{return Ye.parse(JSON.parse(e))}catch{return null}},write:e=>JSON.stringify(e)}}),ot=c(()=>V.value?C.getAgent(V.value):void 0),st=c(()=>{let e=g.query.agentId,t=g.query.workflowId,n=g.query.provider,r=g.query.model;if(!Le.value)return null;if(typeof e==`string`)return C.getAgent({provider:`custom-agent`,agentId:e});if(typeof t==`string`)return C.getAgent({provider:`n8n`,workflowId:t});if(typeof n==`string`&&typeof r==`string`){let e=xe.safeParse({provider:n,model:r});if(e.success)return C.getAgent(e.data)}return null}),H=c(()=>{if(!Le.value){let e=R.value?Pe(R.value):null;return e?C.getAgent(e,{name:R.value?.agentName||R.value?.model,icon:R.value?.agentIcon}):null}return st.value?st.value:C.streaming?.sessionId===L.value?C.streaming.agent:V.value?C.getAgent(V.value,{name:V.value.cachedDisplayName,icon:V.value.cachedIcon}):null}),ct=c(()=>!!H.value&&!Ie(H.value.model.provider)),lt=c(()=>H.value?.model.provider===`custom-agent`?H.value.model.agentId:void 0),{customAgent:ut}=Ze(lt),dt=c(()=>ut.value?ut.value.toolIds:R.value?.toolIds?R.value.toolIds:st.value?[]:C.configuredTools.filter(e=>e.enabled).map(e=>e.definition.id)),{credentialsByProvider:U,selectCredential:ft}=Je(S.currentUserId??`anonymous`),{isEnabled:pt}=Oe(),W=at(c(()=>H.value?.model.provider===`n8n`&&pt.value?H.value.model.workflowId:null)),G=i(!1),mt=c(()=>X.value===`missingDynamicCredentials`);m(()=>W.allAuthenticated.value,e=>{e&&G.value&&(G.value=!1)});let K=c(()=>{let e=H.value?.model.provider;if(!e)return null;if(!Ie(e))return{};let t=U.value?.[e];return t?{[Se[e]]:{id:t,name:``}}:null}),ht=c(()=>!K.value),{chatMessages:q,isResponding:J,isNewSession:Y,messagingState:X,scrollContainerRef:gt,arrivedState:_t,scrollToBottom:vt,loadSession:yt}=He({sessionId:L,scrollableRef:N,isNewSession:Le,extendMessagingState:()=>C.agentsReady&&!H.value?`missingAgent`:C.agentsReady&&ht.value?`missingCredentials`:W.hasDynamicCredentials.value&&!W.allAuthenticated.value?`missingDynamicCredentials`:null,shouldSkipScroll:()=>Re.value?(Re.value=!1,!0):!1}),bt=te(gt),Z=rt(me,q),xt=c(()=>bt.width.value<600),Q=i(),St=_(`messages`),Ct=i(!1),$=qe(c(()=>(H.value?.metadata.allowFileUploads??!1)&&!ht.value?Q.value?q.value.find(e=>e.id===Q.value)?.type===`human`:!0:!1),Bt);it(M,{disabled:c(()=>B.value===!0||X.value!==`idle`)}),m(()=>C.agents,e=>{let t=re.moduleSettings?.[`chat-hub`];if(!e||H.value||!Y.value||!t)return;let n=Fe(e,t.providers);n&&Mt(n)},{immediate:!0}),m([L,Y],async([e,t])=>{if(Ct.value=!1,Q.value=void 0,!t)try{await yt(e)}catch(e){T.showError(e,k.baseText(`chatHub.error.fetchConversationFailed`)),await s.push({name:je})}},{immediate:!0}),m([M,L],([e])=>{e?.focus()},{immediate:!0}),m(Ve,e=>{D.set(e??`Chat`)},{immediate:!0}),m(U,e=>{e&&C.fetchAgents(e)},{immediate:!0}),m(ot,(e,t)=>{V.value&&e?.name&&e.name!==t?.name&&(V.value={...V.value,cachedDisplayName:e.name}),V.value&&e?.icon&&(e.icon.type!==t?.icon?.type||e.icon.value!==t.icon.value)&&(V.value={...V.value,cachedIcon:e.icon})},{immediate:!0}),m([P,Ee,X,()=>C.agentsReady],async([e,t,n,r])=>{!t||Te.value||(e||r&&n===`missingCredentials`)&&(Te.value=!0,await I(`chatHubAutoClaim`)&&(F.value=!0))},{immediate:!0}),m(q,e=>{e.length>0&&(F.value=!1)}),m($e,e=>{z.value=z.value||e},{immediate:!0});function wt(){F.value=!1}async function Tt(e,t){!e.trim()||J.value||!H.value||!K.value||W.hasDynamicCredentials.value&&!W.allAuthenticated.value||(Ct.value=!0,Q.value=void 0,await C.sendMessage(L.value,e,H.value,K.value,t),M.value?.reset(),Y.value&&s.push({name:Me,params:{id:L.value}}))}async function Et(){await C.stopStreamingMessage(L.value)}function Dt(e){Q.value=e}function Ot(){Q.value=void 0}async function kt(e,t,n){!Q.value||J.value||!H.value||!K.value||W.hasDynamicCredentials.value&&!W.allAuthenticated.value||(await C.editMessage(L.value,Q.value,e,H.value,K.value,t,n),Q.value=void 0)}async function At(e){if(J.value||e.type!==`ai`||!H.value||!K.value||W.hasDynamicCredentials.value&&!W.allAuthenticated.value)return;let t=e.id;Q.value=void 0,await C.regenerateMessage(L.value,t,H.value,K.value)}async function jt(e,t){let n=t??C.getAgent(e);if(R.value)try{await C.updateSessionModel(L.value,e,n.name)}catch(e){T.showError(e,k.baseText(`chatHub.error.updateModelFailed`))}else V.value={...e,cachedDisplayName:n.name,cachedIcon:n.icon??void 0},await s.push({name:je,force:!0})}async function Mt(e){await jt(e.model,e)}function Nt(e){Re.value=!0,C.switchAlternative(L.value,e)}function Pt(e){j.value?.openCredentialSelector(e)}function Ft(){j.value?.openModelSelector()}function It(e){O.openModalWithData({name:Ne,data:{agentId:e,credentials:U,onCreateCustomAgent:Mt}})}function Lt(){O.openModalWithData({name:Ne,data:{credentials:U,onCreateCustomAgent:Mt}})}function Rt(e){let t=s.resolve({name:Ce.WORKFLOW,params:{name:e}});window.open(t.href,`_blank`)}function zt(e){H.value&&ae.track(`User clicked chat hub suggested prompt`,{...ze(H.value.model),source:`chat_hub`}),M.value?.setText(e),M.value?.focus()}function Bt(e){if(!Q.value){M.value?.addAttachments(e);return}let t=q.value.findIndex(e=>e.id===Q.value);St.value?.[t]?.addFiles(e)}return(i,a)=>B.value===void 0?u(``,!0):(e(),y(Xe,{key:0,ref:`chatLayout`,class:p({[i.$style.chatLayout]:!0,[i.$style.isNewSession]:d(Y),[i.$style.isAgentNewSession]:d(Y)&&ct.value,[i.$style.isExistingSession]:!d(Y),[i.$style.isMobileDevice]:d(ie),[i.$style.isDraggingFile]:d($).isDragging.value,[i.$style.hasArtifact]:d(Z).isViewerVisible.value,[i.$style.isMainPanelNarrow]:xt.value,[i.$style.isResizing]:d(Z).isViewerResizing.value}),onDragenter:d($).handleDragEnter,onDragleave:d($).handleDragLeave,onDragover:d($).handleDragOver,onDrop:d($).handleDrop,onPaste:d($).handlePaste},{default:b(()=>[d($).isDragging.value?(e(),r(`div`,{key:0,class:p(i.$style.dropOverlay)},[h(d(A),{size:`large`,color:`text-dark`},{default:b(()=>[t(l(d(k).baseText(`chatHub.chat.dropOverlay`)),1)]),_:1})],2)):u(``,!0),h(d(le),{class:p(i.$style.mainContentResizer),width:d(Z).viewerSize.value,style:ee({width:d(Z).isViewerVisible.value?`${d(Z).viewerSize.value}px`:G.value?`calc(100% - 340px)`:`100%`}),"supported-directions":[`right`],"is-resizing-enabled":!0,onResize:d(Z).handleViewerResize,onResizeend:d(Z).handleViewerResizeEnd},{default:b(()=>[n(`div`,{class:p(i.$style.mainContent)},[B.value?u(``,!0):(e(),y(Qe,{key:0,ref_key:`headerRef`,ref:j,"selected-model":H.value,credentials:d(U),"ready-to-show-model-selector":d(Y)||!!R.value,"show-artifact-icon":d(Z).allArtifacts.value.length>0&&d(Z).isViewerCollapsed.value,onSelectModel:jt,onEditCustomAgent:It,onCreateCustomAgent:Lt,onSelectCredential:d(ft),onOpenWorkflow:Rt,onReopenArtifact:d(Z).handleOpenViewer},null,8,[`selected-model`,`credentials`,`ready-to-show-model-selector`,`show-artifact-icon`,`onSelectCredential`,`onReopenArtifact`])),h(d(ce),{type:`scroll`,"enable-vertical-scroll":!0,"enable-horizontal-scroll":!1,"as-child":``,class:p(i.$style.scrollArea)},{default:b(()=>[n(`div`,{ref:`scrollable`,class:p(i.$style.scrollable)},[d(Y)?(e(),y(Ke,{key:0,class:p({[i.$style.greetingsCentered]:!ct.value}),"selected-agent":H.value,loading:!d(C).agentsReady,onSelectPrompt:zt},null,8,[`class`,`selected-agent`,`loading`])):(e(),r(`div`,{key:1,role:`log`,"aria-live":`polite`,class:p(i.$style.messageList)},[(e(!0),r(f,null,v(d(q),(t,n)=>(e(),y(Ge,{key:t.id,ref_for:!0,ref:`messages`,message:t,compact:xt.value,"is-editing":Q.value===t.id,"is-edit-submitting":d(C).streaming?.revisionOfMessageId===t.id,"has-session-streaming":d(J),"cached-agent-display-name":H.value?.name??null,"cached-agent-icon":H.value?.icon??null,"accepted-mime-types":H.value?.metadata.allowedFilesMimeTypes??``,"min-height":Ct.value&&t.type===`ai`&&n===d(q).length-1&&d(gt)?d(gt).offsetHeight-30-200:void 0,onStartEdit:e=>Dt(t.id),onCancelEdit:Ot,onRegenerate:At,onUpdate:kt,onSwitchAlternative:Nt,onOpenArtifact:d(Z).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)),B.value?u(``,!0):(e(),r(`div`,{key:2,class:p(i.$style.promptContainer)},[!d(_t).bottom&&!d(Y)?(e(),y(d(E),{key:0,variant:`subtle`,icon:`arrow-down`,class:p(i.$style.scrollToBottomButton),title:d(k).baseText(`chatHub.chat.scrollToBottom`),onClick:a[0]||=e=>d(vt)(!0)},null,8,[`class`,`title`])):u(``,!0),h(We,{ref_key:`inputRef`,ref:M,"selected-model":H.value,"checked-tool-ids":Ue.value?dt.value:[],"session-id":d(Y)?void 0:L.value,"custom-agent-id":lt.value,"messaging-state":d(X),"is-tools-selectable":Ue.value,"is-new-session":d(Y),"show-credits-claimed-callout":F.value,"show-dynamic-credentials-missing-callout":mt.value,"ai-credits-quota":String(d(De)),onSubmit:Tt,onStop:Et,onSelectModel:Ft,onSetCredentials:Pt,onEditAgent:It,onDismissCreditsCallout:wt,onOpenDynamicCredentials:a[1]||=e=>G.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`]),d(Y)?(e(),y(et,{key:1,"show-welcome-screen":B.value,onStartNewChat:a[2]||=e=>{P.value=!0,M.value?.focus()}},null,8,[`show-welcome-screen`])):u(``,!0)],2)]),_:1},8,[`class`,`width`,`style`,`onResize`,`onResizeend`]),G.value&&d(W).hasDynamicCredentials.value?(e(),y(nt,{key:1,class:p(i.$style.dynamicCredentialsDrawer),credentials:d(W).credentials.value,"connected-count":d(W).connectedCount.value,"total-count":d(W).totalCount.value,"data-testid":`dynamic-credentials-drawer`,onClose:a[3]||=e=>G.value=!1,onAuthorize:d(W).authorize,onRevoke:d(W).revoke},null,8,[`class`,`credentials`,`connected-count`,`total-count`,`onAuthorize`,`onRevoke`])):u(``,!0),d(Z).isViewerVisible.value?(e(),y(tt,{key:L.value,class:p(i.$style.artifactViewer),artifacts:d(Z).allArtifacts.value,"selected-index":d(Z).selectedIndex.value,onClose:d(Z).handleCloseViewer,onSelectArtifact:d(Z).handleSelect,onDownload:d(Z).handleDownload},null,8,[`class`,`artifacts`,`selected-index`,`onClose`,`onSelectArtifact`,`onDownload`])):u(``,!0)]),_:1},8,[`class`,`onDragenter`,`onDragleave`,`onDragover`,`onDrop`,`onPaste`]))}}),[[`__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`}}]]);export{ot as default}; //# sourceMappingURL=ChatView-0mW4yz1r.js.map