UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

2 lines 28.6 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.16.1`}}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]=`a535a247-5114-46c5-94c8-3673c80dbd33`,e._sentryDebugIdIdentifier=`sentry-dbid-a535a247-5114-46c5-94c8-3673c80dbd33`)})()}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-C3C09Zii.js";import{at as x,m as S,o as C,ot as te,p as ne,v as re,y as ie}from"./core-Bz5WjPxS.js";import{A as ae,Di as oe,Ji as se,Mi as w,Qi as ce,Xi as T,Zi as E,ct as le,i as D,k as ue,lt as de,m as fe,tt as O,wt as k}from"./src-XqE2yCpG.js";import{t as A}from"./_plugin-vue_export-helper-CIL7EULb.js";import{No as pe,Pn as me,Rt as he,fr as ge,hi as _e,r as ve,si as ye,t as be}from"./users.store-xP93bV7X.js";import{Eo as xe,Gs as Se,Kr as Ce,Qc as j,Qo as we,Vr as M,Ws as Te,Yr as Ee}from"./constants-DuQbSl-q.js";import{t as De}from"./useRootStore-XEREVjMN.js";import{t as Oe}from"./settings.store-CAFiYCMH.js";import{t as ke}from"./usePageRedirectionHelper-CC6sh9o0.js";import{l as Ae}from"./canvas.utils-BkMRunJV.js";import{t as N}from"./CredentialIcon-BVAlIa2j.js";import{t as je}from"./useDynamicCredentials-DWt_uw-C.js";import{t as Me}from"./useFreeAiCredits-D27UNK6u.js";import{c as Ne,d as Pe,n as Fe,t as Ie}from"./constants-BVzsnVB6.js";import{a as P,i as F,l as I,t as Le,u as L}from"./chat.store-mz4IZJ73.js";import{T as Re,_ as ze,l as Be,u as Ve}from"./fileUtils-D6dhtxVJ.js";import{t as He}from"./useResizablePanel-CyziOv8x.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./ChatGreetings-DnhhyYq1.js";import{n as qe}from"./ToolsSelector-B0IuM6LH.js";import{t as Je}from"./ChatMarkdownChunk-4B441pzM.js";import{n as Ye,r as Xe,t as Ze}from"./ChatLayout-BF1AmRjI.js";import{n as R,t as Qe}from"./useCustomAgent-RYHrbz79.js";var $e=A(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=x(),h=Le(),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(R,{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(E),{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(w),{key:1,variant:`subtle`,size:`small`,icon:`panel-right`,onClick:a[3]||=e=>s(`reopenArtifact`)})):u(``,!0),v.value?(e(),y(d(E),{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`}}]]),et=`https://docs.n8n.io/advanced-ai/chat-hub/#chat-user-role`,tt=A(s({__name:`ChatStarter`,props:{showWelcomeScreen:{type:Boolean}},emits:[`startNewChat`],setup(i,{emit:a}){let o=a,s=ve(),f=Oe(),m=x(),{goToUpgrade:_}=ke(),v=c(()=>f.isEnterpriseFeatureEnabled[j.AdvancedPermissions]),ee=c(()=>ye([`rbac`],{rbac:{scope:`user:create`}})),S=c(()=>ee.value),C=c(()=>!v.value);function ne(){o(`startNewChat`)}function re(){s.openModalWithData({name:pe,data:{initialRole:M.ChatUser}})}function ie(){_(`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(se),{tag:`h2`,bold:``,size:`xlarge`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.header`)),1)]),_:1}),h(d(T),{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(k),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[h(d(ce),{icon:`robot`,size:`large`,color:`text-dark`}),h(d(T),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.workflowAgents.title`)),1)]),_:1})],2),h(d(T),{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(k),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[h(d(ce),{icon:`message-square`,size:`large`,color:`text-dark`}),h(d(T),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.personalAgents.title`)),1)]),_:1})],2),h(d(T),{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(k),{class:p(a.$style.card)},{default:b(()=>[n(`div`,{class:p(a.$style.cardHeader)},[n(`div`,{class:p(a.$style.providerIcons)},[h(N,{"credential-type-name":`openAiApi`,size:20}),h(N,{"credential-type-name":`anthropicApi`,size:20}),h(N,{"credential-type-name":`googlePalmApi`,size:20})],2),h(d(T),{bold:``},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.card.baseModels.title`)),1)]),_:1})],2),h(d(T),{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(E),{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}),S.value?(e(),y(d(oe),{key:0,disabled:!C.value},{content:b(()=>[h(d(te),{keypath:`chatHub.welcome.inviteUpgrade.tooltip`,scope:`global`},{link:b(()=>[h(d(O),{size:`small`,onClick:ie},{default:b(()=>[t(l(d(m).baseText(`generic.upgrade`)),1)]),_:1})]),docsLink:b(()=>[h(d(O),{size:`small`,href:et,target:`_blank`,rel:`noopener`},{default:b(()=>[t(l(d(m).baseText(`chatHub.welcome.inviteUpgrade.here`)),1)]),_:1})]),_:1})]),default:b(()=>[h(d(E),{variant:`subtle`,size:`medium`,icon:`users`,disabled:C.value,"data-test-id":`welcome-invite-chat-users`,onClick:re},{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`}}]]),z=[`srcdoc`,`title`],nt=A(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(D),{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(w),{variant:`ghost`,text:``,icon:`download`,onClick:a[1]||=e=>o(`download`)}),h(d(w),{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,z)):g.value?(e(),y(Je,{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_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`}}]]),rt=A(s({__name:`DynamicCredentialsDrawer`,props:{credentials:{},connectedCount:{},totalCount:{}},emits:[`close`,`authorize`,`revoke`],setup(i,{emit:a}){let o=a,s=x();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(T),{bold:``,size:`large`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.title`)),1)]),_:1}),h(d(w),{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(T),{bold:``},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.subtitle`)),1)]),_:1}),h(d(T),{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(T),{bold:``},{default:b(()=>[t(l(i.credentialName),1)]),_:2},1024),i.credentialStatus===`configured`?(e(),y(d(T),{key:0,size:`small`,color:`text-light`},{default:b(()=>[t(l(d(s).baseText(`chatHub.dynamicCredentials.drawer.status.connected`)),1)]),_:1})):(e(),y(d(T),{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(T),{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(ue),{key:0,size:`small`})):i.credentialStatus===`configured`?(e(),y(d(E),{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(E),{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(T),{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 it(e,t){let n=i(!1),r=i(0),a=c(()=>F(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=He(`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 at(e,t){let n=ve(),r=C(),i=c(()=>a(t?.disabled)??!1),o=c(()=>!!(i.value||n.isAnyModalOpen||r.value&&Ae(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 B(e){if(!e)return``;try{return new URL(e).searchParams.get(`resolverId`)??``}catch{return``}}function ot(e){let t=De(),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 I(t.restApiContext,i)).credentials??[]).map(e=>({credentialId:e.credentialId,credentialName:e.credentialName,credentialType:e.credentialType,credentialStatus:e.credentialStatus,resolverId:B(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 P(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 L(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 st=A(s({__name:`ChatView`,setup(a){let s=de(),g=le(),S=be(),C=Le(),te=Oe(),oe=me(),se=ie(Pe),ce=he(),E=ve(),D=x(),ue=ge();o(async()=>{await C.fetchConfiguredTools()});let O=_(`headerRef`),k=_(`inputRef`),A=_(`scrollable`),pe=_(`chatLayout`),ye=c(()=>pe.value?.$el),j=i(!1),M=i(!1),De=i(!1),{userCanClaimOpenAiCredits:ke,aiCreditsQuota:Ae,claimCredits:N}=Me(),P=c(()=>typeof g.params.id==`string`?g.params.id:xe()),F=c(()=>P.value!==g.params.id),I=i(!1),L=c(()=>P.value?C.sessions.byId[P.value]:void 0),He=c(()=>L.value?.title),Je=c(()=>!!V.value?.metadata.capabilities.functionCalling),R=re(Te(S.currentUserId??`anonymous`),!1),et=c(()=>(C.sessions.ids?.length??0)>0),z=c(()=>{if(R.value||j.value||g.query.workflowId||g.query.agentId)return!1;if(C.sessionsReady)return!et.value&&(!te.isChatFeatureEnabled||!_e([`global:chatUser`]))}),B=re(Se(S.currentUserId??`anonymous`),null,{writeDefaults:!1,shallow:!0,serializer:{read:e=>{try{return Xe.parse(JSON.parse(e))}catch{return null}},write:e=>JSON.stringify(e)}}),st=c(()=>B.value?C.getAgent(B.value):void 0),ct=c(()=>{let e=g.query.agentId,t=g.query.workflowId,n=g.query.provider,r=g.query.model;if(!F.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=Ee.safeParse({provider:n,model:r});if(e.success)return C.getAgent(e.data)}return null}),V=c(()=>{if(!F.value){let e=L.value?Re(L.value):null;return e?C.getAgent(e,{name:L.value?.agentName||L.value?.model,icon:L.value?.agentIcon}):null}return ct.value?ct.value:C.streaming?.sessionId===P.value?C.streaming.agent:B.value?C.getAgent(B.value,{name:B.value.cachedDisplayName,icon:B.value.cachedIcon}):null}),lt=c(()=>!!V.value&&!ze(V.value.model.provider)),ut=c(()=>V.value?.model.provider===`custom-agent`?V.value.model.agentId:void 0),{customAgent:dt}=Qe(ut),ft=c(()=>dt.value?dt.value.toolIds:L.value?.toolIds?L.value.toolIds:ct.value?[]:C.configuredTools.filter(e=>e.enabled).map(e=>e.definition.id)),{credentialsByProvider:H,selectCredential:pt}=Ye(S.currentUserId??`anonymous`),{isEnabled:mt}=je(),U=ot(c(()=>V.value?.model.provider===`n8n`&&mt.value?V.value.model.workflowId:null)),W=i(!1),ht=c(()=>Y.value===`missingDynamicCredentials`);m(()=>U.allAuthenticated.value,e=>{e&&W.value&&(W.value=!1)});let G=c(()=>{let e=V.value?.model.provider;if(!e)return null;if(!ze(e))return{};let t=H.value?.[e];return t?{[Ce[e]]:{id:t,name:``}}:null}),gt=c(()=>!G.value),{chatMessages:K,isResponding:q,isNewSession:J,messagingState:Y,scrollContainerRef:_t,arrivedState:vt,scrollToBottom:yt,loadSession:bt}=Ue({sessionId:P,scrollableRef:A,isNewSession:F,extendMessagingState:()=>C.agentsReady&&!V.value?`missingAgent`:C.agentsReady&&gt.value?`missingCredentials`:U.hasDynamicCredentials.value&&!U.allAuthenticated.value?`missingDynamicCredentials`:null,shouldSkipScroll:()=>I.value?(I.value=!1,!0):!1}),xt=ne(_t),X=it(ye,K),St=c(()=>xt.width.value<600),Z=i(),Ct=_(`messages`),wt=i(!1),Q=qe(c(()=>(V.value?.metadata.allowFileUploads??!1)&&!gt.value?Z.value?K.value.find(e=>e.id===Z.value)?.type===`human`:!0:!1),Bt);at(k,{disabled:c(()=>z.value===!0||Y.value!==`idle`)}),m(()=>C.agents,e=>{let t=te.moduleSettings?.[`chat-hub`];if(!e||V.value||!J.value||!t)return;let n=Be(e,t.providers);n&&$(n)},{immediate:!0}),m([P,J],async([e,t])=>{if(wt.value=!1,Z.value=void 0,!t)try{await bt(e)}catch(e){oe.showError(e,D.baseText(`chatHub.error.fetchConversationFailed`)),await s.push({name:Ne})}},{immediate:!0}),m([k,P],([e])=>{e?.focus()},{immediate:!0}),m(He,e=>{ce.set(e??`Chat`)},{immediate:!0}),m(H,e=>{e&&C.fetchAgents(e)},{immediate:!0}),m(st,(e,t)=>{B.value&&e?.name&&e.name!==t?.name&&(B.value={...B.value,cachedDisplayName:e.name}),B.value&&e?.icon&&(e.icon.type!==t?.icon?.type||e.icon.value!==t.icon.value)&&(B.value={...B.value,cachedIcon:e.icon})},{immediate:!0}),m([j,ke,Y,()=>C.agentsReady],async([e,t,n,r])=>{!t||De.value||(e||r&&n===`missingCredentials`)&&(De.value=!0,await N(`chatHubAutoClaim`)&&(M.value=!0))},{immediate:!0}),m(K,e=>{e.length>0&&(M.value=!1)}),m(et,e=>{R.value=R.value||e},{immediate:!0});function Tt(){M.value=!1}async function Et(e,t){!e.trim()||q.value||!V.value||!G.value||U.hasDynamicCredentials.value&&!U.allAuthenticated.value||(wt.value=!0,Z.value=void 0,await C.sendMessage(P.value,e,V.value,G.value,t),k.value?.reset(),J.value&&s.push({name:Fe,params:{id:P.value}}))}async function Dt(){await C.stopStreamingMessage(P.value)}function Ot(e){Z.value=e}function kt(){Z.value=void 0}async function At(e,t,n){!Z.value||q.value||!V.value||!G.value||U.hasDynamicCredentials.value&&!U.allAuthenticated.value||(await C.editMessage(P.value,Z.value,e,V.value,G.value,t,n),Z.value=void 0)}async function jt(e){if(q.value||e.type!==`ai`||!V.value||!G.value||U.hasDynamicCredentials.value&&!U.allAuthenticated.value)return;let t=e.id;Z.value=void 0,await C.regenerateMessage(P.value,t,V.value,G.value)}async function Mt(e,t){let n=t??C.getAgent(e);if(L.value)try{await C.updateSessionModel(P.value,e,n.name)}catch(e){oe.showError(e,D.baseText(`chatHub.error.updateModelFailed`))}else B.value={...e,cachedDisplayName:n.name,cachedIcon:n.icon??void 0},await s.push({name:Ne,force:!0})}async function $(e){await Mt(e.model,e)}function Nt(e){I.value=!0,C.switchAlternative(P.value,e)}function Pt(e){O.value?.openCredentialSelector(e)}function Ft(){O.value?.openModelSelector()}function It(e){E.openModalWithData({name:Ie,data:{agentId:e,credentials:H,onCreateCustomAgent:$}})}function Lt(){E.openModalWithData({name:Ie,data:{credentials:H,onCreateCustomAgent:$}})}function Rt(e){let t=s.resolve({name:we.WORKFLOW,params:{name:e}});window.open(t.href,`_blank`)}function zt(e){V.value&&ue.track(`User clicked chat hub suggested prompt`,{...Ve(V.value.model),source:`chat_hub`}),k.value?.setText(e),k.value?.focus()}function Bt(e){if(!Z.value){k.value?.addAttachments(e);return}let t=K.value.findIndex(e=>e.id===Z.value);Ct.value?.[t]?.addFiles(e)}return(i,a)=>z.value===void 0?u(``,!0):(e(),y(Ze,{key:0,ref:`chatLayout`,class:p({[i.$style.chatLayout]:!0,[i.$style.isNewSession]:d(J),[i.$style.isAgentNewSession]:d(J)&&lt.value,[i.$style.isExistingSession]:!d(J),[i.$style.isMobileDevice]:d(se),[i.$style.isDraggingFile]:d(Q).isDragging.value,[i.$style.hasArtifact]:d(X).isViewerVisible.value,[i.$style.isMainPanelNarrow]:St.value,[i.$style.isResizing]:d(X).isViewerResizing.value}),onDragenter:d(Q).handleDragEnter,onDragleave:d(Q).handleDragLeave,onDragover:d(Q).handleDragOver,onDrop:d(Q).handleDrop,onPaste:d(Q).handlePaste},{default:b(()=>[d(Q).isDragging.value?(e(),r(`div`,{key:0,class:p(i.$style.dropOverlay)},[h(d(T),{size:`large`,color:`text-dark`},{default:b(()=>[t(l(d(D).baseText(`chatHub.chat.dropOverlay`)),1)]),_:1})],2)):u(``,!0),h(d(ae),{class:p(i.$style.mainContentResizer),width:d(X).viewerSize.value,style:ee({width:d(X).isViewerVisible.value?`${d(X).viewerSize.value}px`:W.value?`calc(100% - 340px)`:`100%`}),"supported-directions":[`right`],"is-resizing-enabled":!0,onResize:d(X).handleViewerResize,onResizeend:d(X).handleViewerResizeEnd},{default:b(()=>[n(`div`,{class:p(i.$style.mainContent)},[z.value?u(``,!0):(e(),y($e,{key:0,ref_key:`headerRef`,ref:O,"selected-model":V.value,credentials:d(H),"ready-to-show-model-selector":d(J)||!!L.value,"show-artifact-icon":d(X).allArtifacts.value.length>0&&d(X).isViewerCollapsed.value,onSelectModel:Mt,onEditCustomAgent:It,onCreateCustomAgent:Lt,onSelectCredential:d(pt),onOpenWorkflow:Rt,onReopenArtifact:d(X).handleOpenViewer},null,8,[`selected-model`,`credentials`,`ready-to-show-model-selector`,`show-artifact-icon`,`onSelectCredential`,`onReopenArtifact`])),h(d(fe),{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(J)?(e(),y(Ke,{key:0,class:p({[i.$style.greetingsCentered]:!lt.value}),"selected-agent":V.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(K),(t,n)=>(e(),y(Ge,{key:t.id,ref_for:!0,ref:`messages`,message:t,compact:St.value,"is-editing":Z.value===t.id,"is-edit-submitting":d(C).streaming?.revisionOfMessageId===t.id,"has-session-streaming":d(q),"cached-agent-display-name":V.value?.name??null,"cached-agent-icon":V.value?.icon??null,"accepted-mime-types":V.value?.metadata.allowedFilesMimeTypes??``,"min-height":wt.value&&t.type===`ai`&&n===d(K).length-1&&d(_t)?d(_t).offsetHeight-30-200:void 0,onStartEdit:e=>Ot(t.id),onCancelEdit:kt,onRegenerate:jt,onUpdate:At,onSwitchAlternative:Nt,onOpenArtifact:d(X).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)),z.value?u(``,!0):(e(),r(`div`,{key:2,class:p(i.$style.promptContainer)},[!d(vt).bottom&&!d(J)?(e(),y(d(w),{key:0,variant:`subtle`,icon:`arrow-down`,class:p(i.$style.scrollToBottomButton),title:d(D).baseText(`chatHub.chat.scrollToBottom`),onClick:a[0]||=e=>d(yt)(!0)},null,8,[`class`,`title`])):u(``,!0),h(We,{ref_key:`inputRef`,ref:k,"selected-model":V.value,"checked-tool-ids":Je.value?ft.value:[],"session-id":d(J)?void 0:P.value,"custom-agent-id":ut.value,"messaging-state":d(Y),"is-tools-selectable":Je.value,"is-new-session":d(J),"show-credits-claimed-callout":M.value,"show-dynamic-credentials-missing-callout":ht.value,"ai-credits-quota":String(d(Ae)),onSubmit:Et,onStop:Dt,onSelectModel:Ft,onSetCredentials:Pt,onEditAgent:It,onDismissCreditsCallout:Tt,onOpenDynamicCredentials:a[1]||=e=>W.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(J)?(e(),y(tt,{key:1,"show-welcome-screen":z.value,onStartNewChat:a[2]||=e=>{j.value=!0,k.value?.focus()}},null,8,[`show-welcome-screen`])):u(``,!0)],2)]),_:1},8,[`class`,`width`,`style`,`onResize`,`onResizeend`]),W.value&&d(U).hasDynamicCredentials.value?(e(),y(rt,{key:1,class:p(i.$style.dynamicCredentialsDrawer),credentials:d(U).credentials.value,"connected-count":d(U).connectedCount.value,"total-count":d(U).totalCount.value,"data-testid":`dynamic-credentials-drawer`,onClose:a[3]||=e=>W.value=!1,onAuthorize:d(U).authorize,onRevoke:d(U).revoke},null,8,[`class`,`credentials`,`connected-count`,`total-count`,`onAuthorize`,`onRevoke`])):u(``,!0),d(X).isViewerVisible.value?(e(),y(nt,{key:P.value,class:p(i.$style.artifactViewer),artifacts:d(X).allArtifacts.value,"selected-index":d(X).selectedIndex.value,onClose:d(X).handleCloseViewer,onSelectArtifact:d(X).handleSelect,onDownload:d(X).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{st as default}; //# sourceMappingURL=ChatView-CSvpB7FI.js.map