UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

3 lines 67.1 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pushConnection.store-BMPxD7GJ.js","assets/pushConnection.store-D7Wwlyyp.js","assets/constants-DuQbSl-q.js","assets/chunk-CACdhNlC.js","assets/get-BjzKP_3k.js","assets/_MapCache-CP9ToMjk.js","assets/vue.runtime.esm-bundler-C3C09Zii.js","assets/empty-BNY-5QlZ.js","assets/merge-DFZxC2wo.js","assets/expression-runtime-stub-Vl5_1Jpv.js","assets/useRootStore-XEREVjMN.js","assets/settings.store-CAFiYCMH.js"])))=>i.map(i=>d[i]); (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]=`601f304c-54de-430b-864a-137cbee96240`,e._sentryDebugIdIdentifier=`sentry-dbid-601f304c-54de-430b-864a-137cbee96240`)})()}catch{}import{o as e}from"./chunk-CACdhNlC.js";import{$ as t,A as n,Bt as r,C as i,E as a,F as o,Ft as s,Ht as c,Mt as l,N as u,O as d,R as f,Rt as p,S as m,Sn as h,T as g,U as _,Vt as v,W as y,Wt as b,X as x,Z as S,_ as C,_n as w,bt as T,f as E,gt as D,h as O,i as k,it as A,j,jt as M,m as ee,ot as N,p as te,pt as P,q as F,rt as I,st as ne,tt as L,vn as R,w as z,yn as B,yt as V}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{D as re,at as H,c as U,g as ie,o as ae,ot as oe}from"./core-Bz5WjPxS.js";import{A as se,Di as W,Li as ce,Mi as le,Mt as G,N as K,Qi as ue,Xi as q,Zi as de,ct as fe,lt as pe,tt as me}from"./src-XqE2yCpG.js";import{d as he}from"./get-BjzKP_3k.js";import{t as J}from"./_plugin-vue_export-helper-CIL7EULb.js";import{At as ge,C as _e,Et as ve,Hr as ye,In as be,Os as xe,Ot as Se,Pn as Ce,Rt as we,ai as Te,cr as Ee,d as De,fr as Oe,gr as ke,ia as Ae,it as je,ln as Me,lr as Ne,oa as Pe,oi as Fe,p as Ie,q as Le,r as Re,ra as Y,s as ze,sr as Be,tt as Ve,ur as He,w as Ue}from"./users.store-xP93bV7X.js";import{$i as We,Eo as X,Qc as Ge,Qo as Z,ia as Ke,xc as qe}from"./constants-DuQbSl-q.js";import{t as Je}from"./useRootStore-XEREVjMN.js";import{t as Ye}from"./settings.store-CAFiYCMH.js";import{t as Xe}from"./executions.store-BkB9JOf7.js";import{a as Ze,n as Qe,o as $e,t as et,u as tt}from"./RunData-sLmjeCkz.js";import{t as nt}from"./NDVEmptyState-D9AiDj1V.js";import{t as rt}from"./canvas.eventBus-P-77EomI.js";import{S as it,_ as at,a as ot,b as st,c as Q,d as ct,f as lt,g as ut,h as dt,i as ft,l as $,m as pt,n as mt,o as ht,p as gt,r as _t,s as vt,t as yt,u as bt,v as xt,x as St,y as Ct}from"./useCanvasOperations-BAcfYmDn.js";import{t as wt}from"./NodeIcon-T2UcO71E.js";import{t as Tt}from"./useRunWorkflow-Cii0mAex.js";import{t as Et}from"./useInjectWorkflowId-BV3E4pXM.js";import{t as Dt}from"./KeyboardShortcutTooltip-D-xXdXqr.js";import{t as Ot}from"./folders.store-CNB9Lo_F.js";import{t as kt}from"./useKeybindings-HxiGjy_j.js";import{_ as At,a as jt,c as Mt,d as Nt,f as Pt,g as Ft,h as It,i as Lt,l as Rt,m as zt,n as Bt,p as Vt,r as Ht,t as Ut}from"./useLogsTreeExpand-Rhs2RNBK.js";import{t as Wt}from"./ChatFile-BWveoZV5.js";import{t as Gt}from"./useResizablePanel-CyziOv8x.js";import{t as Kt}from"./aiTemplatesStarterCollection.store-DhjVvT3h.js";import{t as qt}from"./readyToRunWorkflows.store-BZsMy9Y6.js";import{t as Jt}from"./useExecutionDebugging-BoEc6fYQ.js";function Yt(e,t){let n=H(),r=ze(),i=m(()=>r.workflowId?Pe(Y(r.workflowId)):void 0),a=ve(),o=Je(),l=_t(),u=pe(),d=Ne(),f=Ue(),{runWorkflow:p}=Tt({router:u}),h=s(!1),g=s(!1),_=m(()=>l.chatSessionMessages),v=m(()=>l.chatSessionId),y=m(()=>c(t)??v.value),b=m(()=>r.getPastChatMessages),x=m(()=>(i.value?.allNodes??[]).find(De)??null),S=e=>{let t=x.value,n=t?f.getNodeType(t.type,t.typeVersion):null;if(!t||!n)return;let r=Ke(n.properties,t.parameters,!0,!1,t,n)??{},i=r.options??{};if(e in i)return i[e];let a=n.properties.find(e=>e.name===`options`&&e.type===`collection`&&We(r,e,t,n));for(let o of a?.options??[])if(!(o.name!==e||!(`default`in o))&&We(i,o,t,n,r))return o.default},C=m(()=>S(`responseMode`)===`streaming`),w=m(()=>S(`allowFileUploads`)===!0),T=m(()=>S(`allowedFilesMimeTypes`)),E=m(()=>!(!x.value||!r.workflowId&&!r.isNewWorkflow)),O=m(()=>{if(!x.value)return``;let e=r.workflowId;return e?`${o.webhookTestUrl}/${e}/${y.value}`:``});async function k(){if(!(g.value||!x.value)){g.value=!0;try{a.setWorkflowExecutionData(null),a.setActiveExecutionId(void 0);let e={triggerNode:x.value.name,source:`RunData.ManualChatTrigger`,sessionId:y.value};r.chatPartialExecutionDestinationNode&&=(e.destinationNode={nodeName:r.chatPartialExecutionDestinationNode,mode:`inclusive`},null),await p(e),h.value=!0}finally{g.value=!1}}}let A=m(()=>({webhookUrl:O.value,webhookConfig:{method:`POST`,headers:{"Content-Type":`application/json`}},mode:`fullscreen`,showWindowCloseButton:!1,showWelcomeScreen:!1,sessionId:y.value,enableStreaming:C.value,enableMessageActions:!0,allowFileUploads:w.value,allowedFilesMimeTypes:T.value,chatInputKey:`chatInput`,chatSessionKey:`sessionId`,defaultLanguage:`en`,messageComponents:{[ut.WITH_BUTTONS]:at},messageHistory:_.value,disabled:s(e),i18n:{en:{title:n.baseText(`chat.window.title`)||`Chat`,repostButton:n.baseText(`chat.window.chat.chatMessageOptions.repostMessage`)||`Repost message`,reuseButton:n.baseText(`chat.window.chat.chatMessageOptions.reuseMessage`)||`Reuse message`,subtitle:``,footer:``,getStarted:``,inputPlaceholder:n.baseText(`chat.window.chat.placeholder`)||`Type your message...`,closeButtonTooltip:``}},beforeMessageSent:async t=>{e||(await k(),l.addChatMessage({id:X(),text:t,sender:`user`}))},afterMessageSent:(t,n)=>{if(e||!n)return;if(n.hasReceivedChunks){let e=n.message;e&&typeof e==`object`&&`text`in e&&l.addChatMessage({id:e.id,text:e.text,sender:`bot`});return}let r=n.output??n.text??n.message;l.addChatMessage({id:X(),text:typeof r==`string`?r:JSON.stringify(n),sender:`bot`})}})),j=m(()=>At(r.workflowExecutionData,n.baseText(`chat.window.chat.response.empty`),n.baseText(`chat.window.chat.response.redacted`)));function M(){a.setWorkflowExecutionData(null),d.updateNodesExecutionIssues(),l.resetChatSessionId(),l.resetMessages(),r.chatPartialExecutionDestinationNode=null,l.isOpen&&$.emit(`focusInput`)}function ee(e){let t=u.resolve({name:Z.EXECUTION_PREVIEW,params:{name:r.workflowId,executionId:e}});window.open(t.href,`_blank`)}return D(()=>r.workflowId,(e,t)=>{t&&M()}),{currentSessionId:m(()=>l.chatSessionId),messages:m(()=>e?j.value:l.chatSessionMessages),previousChatMessages:b,refreshSession:M,displayExecution:ee,chatTriggerNode:x,isStreamingEnabled:C,isFileUploadsAllowed:w,allowedFilesMimeTypes:T,isWorkflowReadyForChat:E,webhookUrl:O,chatOptions:A,registerChatWebhook:k,webhookRegistered:h,isRegistering:g}}var Xt=J(u({__name:`LogsPanelHeader`,props:{title:{},isClickable:{type:Boolean}},emits:[`click`],setup(e,{emit:r}){let o=r;function s(){e.isClickable&&o(`click`)}return(r,o)=>(t(),a(`header`,{class:w([r.$style.container,{[r.$style.clickable]:e.isClickable}]),onClick:s},[j(b(q),{class:w(r.$style.title),bold:!0,size:`small`},{default:V(()=>[A(r.$slots,`title`,{},()=>[n(h(e.title),1)])]),_:3},8,[`class`]),i(`div`,{class:w(r.$style.actions)},[A(r.$slots,`actions`)],2)],2))}}),[[`__cssModules`,{$style:{container:`_container_16vzt_125`,clickable:`_clickable_16vzt_137`,title:`_title_16vzt_145`,actions:`_actions_16vzt_153`}}]]),Zt=e(Ve(),1),Qt=J(u({__name:`LogsViewExecutionSummary`,props:{status:{},consumedTokens:{},startTime:{},timeTook:{}},setup(e){let n=H(),r=re({interval:1e3}),a=m(()=>e.status===`running`||e.status===`waiting`?n.baseText(`logs.overview.body.summaryText.for`,{interpolate:{status:(0,Zt.default)(e.status),time:n.displayTimer(Math.floor((r.value-e.startTime)/1e3)*1e3,!0)}}):e.timeTook===void 0?(0,Zt.default)(e.status):n.baseText(`logs.overview.body.summaryText.in`,{interpolate:{status:(0,Zt.default)(e.status),time:n.displayTimer(e.timeTook,!0)}}));return(n,r)=>(t(),z(b(q),{tag:`div`,color:`text-light`,size:`small`,class:w(n.$style.container)},{default:V(()=>[i(`span`,null,h(a.value),1),e.consumedTokens.totalTokens>0?(t(),z(jt,{key:0,"consumed-tokens":e.consumedTokens},null,8,[`consumed-tokens`])):g(``,!0)]),_:1},8,[`class`]))}}),[[`__cssModules`,{$style:{container:`_container_1dsxk_125`}}]]);function $t(){let e=fe(),t=Fe(),n=ze(),r=m(()=>n.workflowExecutionData),i=m(()=>n.isWorkflowRunning),a=m(()=>!!e?.meta?.readOnlyCanvas),{editableWorkflow:o}=yt(),s=Ue(),c=m(()=>t.preferences.branchReadOnly),l=m(()=>o.value.nodes.filter(e=>s.isTriggerNode(e.type)).every(e=>e.disabled));return m(()=>!a.value&&!c.value&&!i.value&&!l.value&&!!r.value)}var en=J(u({__name:`LogsOverviewPanel`,props:{isOpen:{type:Boolean},selected:{},isReadOnly:{type:Boolean},isCompact:{type:Boolean},execution:{},entries:{},flatLogEntries:{},latestNodeInfo:{},isHeaderClickable:{type:Boolean}},emits:[`clickHeader`,`select`,`clearExecutionData`,`openNdv`,`toggleExpanded`],setup(e,{emit:r}){let i=r,o=H(),s=$t(),c=m(()=>e.flatLogEntries.length===0||e.execution===void 0),l=m(()=>[{label:o.baseText(`logs.overview.header.switch.overview`),value:`overview`},{label:o.baseText(`logs.overview.header.switch.details`),value:`details`}]),u=xe()>0,d=m(()=>zt(...e.entries.map(e=>Vt(e,!1)))),f=m(()=>e.execution?.startedAt&&e.execution.stoppedAt?new Date(e.execution.stoppedAt)-+new Date(e.execution.startedAt):void 0),p=m(()=>d.value.totalTokens>0||e.entries.some(e=>Vt(e,!0).totalTokens>0));function _(t){i(`select`,t===`overview`?void 0:e.flatLogEntries[0])}return(r,m)=>(t(),a(`div`,{class:w([r.$style.container,u?r.$style.staticScrollBar:``]),"data-test-id":`logs-overview`},[j(Xt,{title:b(o).baseText(`logs.overview.header.title`),"data-test-id":`logs-overview-header`,"is-clickable":e.isHeaderClickable,onClick:m[1]||=e=>i(`clickHeader`)},{actions:V(()=>[b(s)?(t(),z(b(W),{key:0,content:b(o).baseText(`logs.overview.header.actions.clearExecution.tooltip`)},{default:V(()=>[j(b(de),{variant:`subtle`,size:`xsmall`,icon:`trash-2`,"icon-size":`medium`,"data-test-id":`clear-execution-data-button`,class:w(r.$style.clearButton),onClick:m[0]||=O(e=>i(`clearExecutionData`),[`stop`])},{default:V(()=>[n(h(b(o).baseText(`logs.overview.header.actions.clearExecution`)),1)]),_:1},8,[`class`])]),_:1},8,[`content`])):g(``,!0),A(r.$slots,`actions`)]),_:3},8,[`title`,`is-clickable`]),e.isOpen?(t(),a(`div`,{key:0,class:w([r.$style.content,c.value?r.$style.empty:``]),"data-test-id":`logs-overview-body`},[c.value||e.execution===void 0?(t(),z(b(q),{key:0,tag:`p`,size:`medium`,color:`text-base`,class:w(r.$style.emptyText),"data-test-id":`logs-overview-empty`},{default:V(()=>[n(h(b(o).baseText(`logs.overview.body.empty.message`)),1)]),_:1},8,[`class`])):(t(),a(C,{key:1},[j(Qt,{"data-test-id":`logs-overview-status`,class:w(r.$style.summary),status:e.execution.status,"consumed-tokens":d.value,"start-time":+new Date(e.execution.startedAt),"time-took":f.value},null,8,[`class`,`status`,`consumed-tokens`,`start-time`,`time-took`]),j(Ht,{"is-read-only":e.isReadOnly,selected:e.selected,"is-compact":e.isCompact,"should-show-token-count-column":p.value,"latest-node-info":e.latestNodeInfo,"flat-log-entries":e.flatLogEntries,"can-open-ndv":!0,execution:e.execution,onToggleExpanded:m[2]||=e=>i(`toggleExpanded`,e),onOpenNdv:m[3]||=e=>i(`openNdv`,e),onSelect:m[4]||=e=>i(`select`,e)},null,8,[`is-read-only`,`selected`,`is-compact`,`should-show-token-count-column`,`latest-node-info`,`flat-log-entries`,`execution`]),j(b(K),{size:`small-medium`,class:w(r.$style.switchViewButtons),"model-value":e.selected?`details`:`overview`,options:l.value,"onUpdate:modelValue":_},null,8,[`class`,`model-value`,`options`])],64))],2)):g(``,!0)],2))}}),[[`__cssModules`,{$style:{container:`_container_1qsnq_125`,clearButton:`_clearButton_1qsnq_135`,content:`_content_1qsnq_141`,empty:`_empty_1qsnq_151`,emptyText:`_emptyText_1qsnq_156`,summary:`_summary_1qsnq_161`,switchViewButtons:`_switchViewButtons_1qsnq_165`}}]]),tn={class:`chat-get-started`},nn=u({__name:`GetStarted`,setup(e){let{t:r}=st();return(e,i)=>(t(),a(`div`,tn,[j(Ct,{onClick:i[0]||=t=>e.$emit(`click:button`)},{default:V(()=>[n(h(b(r)(`getStarted`)),1)]),_:1})]))}}),rn={},an={class:`chat-powered-by`};function on(e,r){return t(),a(`div`,an,[...r[0]||=[n(` Powered by `,-1),i(`a`,{href:`https://n8n.io?utm_source=n8n-external&utm_medium=widget-powered-by`},`n8n`,-1)]])}var sn=J(rn,[[`render`,on]]),cn={class:`chat-get-started-footer`},ln={key:0},un=u({__name:`GetStartedFooter`,setup(e){let{t:n,te:r}=st();return(e,i)=>(t(),a(`div`,cn,[b(r)(`footer`)?(t(),a(`div`,ln,h(b(n)(`footer`)),1)):g(``,!0),j(sn)]))}}),dn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function fn(e,n){return t(),a(`svg`,dn,[...n[0]||=[i(`path`,{fill:`currentColor`,d:`M16.5 6v11.5a4 4 0 0 1-4 4a4 4 0 0 1-4-4V5A2.5 2.5 0 0 1 11 2.5A2.5 2.5 0 0 1 13.5 5v10.5a1 1 0 0 1-1 1a1 1 0 0 1-1-1V6H10v9.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5V5a4 4 0 0 0-4-4a4 4 0 0 0-4 4v12.5a5.5 5.5 0 0 0 5.5 5.5a5.5 5.5 0 0 0 5.5-5.5V6z`},null,-1)]])}var pn=M({name:`mdi-paperclip`,render:fn}),mn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function hn(e,n){return t(),a(`svg`,mn,[...n[0]||=[i(`path`,{fill:`currentColor`,d:`m2 21l21-9L2 3v7l15 2l-15 2z`},null,-1)]])}var gn=M({name:`mdi-send`,render:hn}),_n={class:`chat-inputs`},vn={key:0,class:`chat-input-left-panel`},yn=[`disabled`,`placeholder`],bn={class:`chat-inputs-controls`},xn=[`disabled`],Sn=[`disabled`],Cn={key:0,class:`chat-files`},wn=J(u({__name:`Input`,props:{placeholder:{default:`inputPlaceholder`}},emits:[`arrowKeyDown`],setup(e,{emit:n}){let r=e,{t:o}=st(),c=n,{options:l}=St(),u=it(),{waitingForResponse:d}=u,f=s(null),p=s(null),h=s(``),_=s(!1),v=s(null),y=s(!1),w=m(()=>u.blockUserInput.value?!0:y.value?!1:h.value===``||b(d)||l.disabled?.value===!0),D=m(()=>l.disabled?.value===!0),O=m(()=>k.value&&b(d)&&!l.disabled?.value),k=m(()=>b(l.allowFileUploads)===!0),M=m(()=>b(l.allowedFilesMimeTypes)),N=m(()=>{let e=k.value?2:1;return{"--controls-count":e}}),{open:te,reset:P,onChange:F}=ie({multiple:!0,reset:!1});F(e=>{if(!e)return;let t=new DataTransfer;if(f.value)for(let e=0;e<f.value.length;e++)t.items.add(f.value[e]);for(let n=0;n<e.length;n++)t.items.add(e[n]);f.value=t.files});function ne(e){H(e)}x(()=>{$.on(`focusInput`,R),$.on(`blurInput`,L),$.on(`setInputValue`,V),$.on(`setupWebsocket`,ne),p.value&&(v.value=new ResizeObserver(e=>{for(let t of e)t.target===p.value&&G()}),v.value.observe(p.value))}),S(()=>{$.off(`focusInput`,R),$.off(`blurInput`,L),$.off(`setInputValue`,V),$.off(`setupWebsocket`,ne),v.value&&=(v.value.disconnect(),null)});function L(){p.value&&p.value.blur()}function R(){p.value&&p.value.focus()}function V(e){h.value=e,R()}function re(){if(f.value){let e=Array.from(f.value);return P(),f.value=null,e}return[]}function H(e){if(l.webhookUrl&&u.currentSessionId.value)try{let t=bt(l.webhookUrl,e,u.currentSessionId.value,!0);u.ws=new WebSocket(t),u.ws.onmessage=e=>{if(e.data===`n8n|heartbeat`){u.ws?.send(`n8n|heartbeat-ack`);return}if(e.data===`n8n|continue`){y.value=!1,u.waitingForResponse.value=!0;return}let t=ct(e.data);u.messages.value.push(t),y.value=!0,u.waitingForResponse.value=!1,u.blockUserInput.value=lt(t)},u.ws.onclose=()=>{u.ws=null,y.value=!1,u.waitingForResponse.value=!1,u.blockUserInput.value=!1}}catch(e){console.error(`Error setting up websocket connection`,e)}}async function U(e){if(!e||e.length===0)return[];let t=e.map(async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t({name:e.name,type:e.type,data:r.result}),r.onerror=()=>n(Error(`Error reading file: ${r.error?.message??`Unknown error`}`)),r.readAsDataURL(e)}));return await Promise.all(t)}async function ae(e,t){let n={id:X(),text:t,sender:`user`,files:f.value?re():void 0};u.messages.value.push(n),e.send(JSON.stringify({sessionId:u.currentSessionId.value,action:`sendMessage`,chatInput:t,files:await U(n.files)})),u.waitingForResponse.value=!0,y.value=!1}async function oe(e){if(e.preventDefault(),w.value)return;let t=h.value;if(h.value=``,_.value=!0,u.ws&&y.value){await ae(u.ws,t),$.emit(`messageSent`);return}let n=await u.sendMessage(t,re());n?.executionId&&H(n.executionId),$.emit(`messageSent`),_.value=!1}async function se(e){e.shiftKey||e.isComposing||(await oe(e),G())}function W(e){if(!f.value)return;let t=new DataTransfer;for(let n=0;n<f.value.length;n++){let r=f.value[n];e.name!==r.name&&t.items.add(r)}P(),f.value=t.files}function ce(e){(e.key===`ArrowUp`||e.key===`ArrowDown`)&&(e.preventDefault(),c(`arrowKeyDown`,{key:e.key,currentInputValue:h.value}))}function le(){O.value||te({accept:b(M)})}function G(){let e=p.value;if(!e)return;e.style.height=`var(--chat--textarea--height)`;let t=Math.min(e.scrollHeight,480);e.style.height=`${t}px`}return(e,n)=>(t(),a(`div`,{class:`chat-input`,style:B(N.value)},[i(`div`,_n,[e.$slots.leftPanel?(t(),a(`div`,vn,[A(e.$slots,`leftPanel`,{},void 0,!0)])):g(``,!0),T(i(`textarea`,{ref_key:`chatTextArea`,ref:p,"onUpdate:modelValue":n[0]||=e=>h.value=e,"data-test-id":`chat-input`,disabled:D.value,placeholder:b(o)(r.placeholder),onKeydown:[ee(se,[`enter`]),ce],onInput:G,onMousedown:G,onFocus:G},null,40,yn),[[E,h.value]]),i(`div`,bn,[k.value?(t(),a(`button`,{key:0,disabled:O.value,class:`chat-input-file-button`,"data-test-id":`chat-attach-file-button`,onClick:le},[j(b(pn),{height:`24`,width:`24`})],8,xn)):g(``,!0),i(`button`,{disabled:w.value,class:`chat-input-send-button`,onClick:oe},[j(b(gn),{height:`24`,width:`24`})],8,Sn)])]),f.value?.length&&(!_.value||y.value)?(t(),a(`div`,Cn,[(t(!0),a(C,null,I(f.value,e=>(t(),z(Wt,{key:e.name,file:e,"is-removable":!0,"is-previewable":!0,onRemove:W},null,8,[`file`]))),128))])):g(``,!0)],4))}}),[[`__scopeId`,`data-v-7c8ff92f`]]),Tn={class:`chat-layout`},En={key:0,class:`chat-header`},Dn={key:2,class:`chat-footer`},On=u({__name:`Layout`,setup(e){let n=s(null);function r(){let e=n.value;e&&(e.scrollTop=e.scrollHeight)}return x(()=>{$.on(`scrollToBottom`,r),window.addEventListener(`resize`,r)}),F(()=>{$.off(`scrollToBottom`,r),window.removeEventListener(`resize`,r)}),(e,r)=>(t(),a(`main`,Tn,[e.$slots.header?(t(),a(`div`,En,[A(e.$slots,`header`)])):g(``,!0),e.$slots.default?(t(),a(`div`,{key:1,ref_key:`chatBodyRef`,ref:n,class:`chat-body`},[A(e.$slots,`default`)],512)):g(``,!0),e.$slots.footer?(t(),a(`div`,Dn,[A(e.$slots,`footer`)])):g(``,!0)]))}}),kn={key:0,class:`message-actions`},An=J(u({__name:`MessageActions`,props:{message:{}},setup(e){let r=e,{options:i}=St(),o=it(),{t:s}=st();async function c(){if(r.message.sender===`user`){let e=`text`in r.message&&typeof r.message.text==`string`?r.message.text:``;e.trim()&&await o.sendMessage(e,r.message.files?Array.from(r.message.files):[])}}function l(){let e=`text`in r.message&&typeof r.message?.text==`string`?r.message?.text:``;e.trim()&&$.emit(`setInputValue`,e)}return(r,o)=>b(i).enableMessageActions?(t(),a(`div`,kn,[e.message.sender===`user`?(t(),z(b(W),{key:0},{content:V(()=>[n(h(b(s)(`repostButton`)),1)]),default:V(()=>[j(b(ue),{icon:`redo-2`,size:`medium`,class:`icon`,onClick:c})]),_:1})):g(``,!0),e.message.sender===`user`?(t(),z(b(W),{key:1},{content:V(()=>[n(h(b(s)(`reuseButton`)),1)]),default:V(()=>[j(b(ue),{icon:`files`,size:`medium`,class:`icon`,onClick:l})]),_:1})):g(``,!0)])):g(``,!0)}}),[[`__scopeId`,`data-v-207aef80`]]),jn={key:0,class:`chat-message-actions`},Mn={key:2,class:`chat-message-files`},Nn=u({__name:`Message`,props:{message:{}},setup(e,{expose:n}){let{message:r}=v(e),{options:i}=St(),c=s(null),l=s({}),u=m(()=>r.value.text||`&lt;Empty response&gt;`),d=m(()=>({"chat-message-from-user":r.value.sender===`user`,"chat-message-from-bot":r.value.sender===`bot`,"chat-message-transparent":r.value.transparent===!0})),f=()=>{c.value?.scrollIntoView&&c.value.scrollIntoView({block:`start`})},p={...i?.messageComponents??{}};n({scrollToView:f});let h=async e=>await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)});return x(async()=>{if(r.value.files)for(let e of r.value.files)try{let t=await h(e);l.value[e.name]=t}catch(e){console.error(`Error reading file:`,e)}}),(e,n)=>(t(),a(`div`,{ref_key:`messageContainer`,ref:c,class:w([`chat-message`,d.value])},[e.$slots.beforeMessage||b(i)?.enableMessageActions?(t(),a(`div`,jn,[A(e.$slots,`beforeMessage`,R(o({message:b(r)}))),j(An,{message:b(r)},null,8,[`message`])])):g(``,!0),A(e.$slots,`default`,{},()=>[b(r).type===`component`&&p[b(r).key]?(t(),z(ne(p[b(r).key]),R(_({key:0},b(r).arguments)),null,16)):(t(),z(xt,{key:1,text:u.value},null,8,[`text`])),(b(r).files??[]).length>0?(t(),a(`div`,Mn,[(t(!0),a(C,null,I(b(r).files??[],e=>(t(),a(`div`,{key:e.name,class:`chat-message-file`},[j(Wt,{file:e,"is-removable":!1,"is-previewable":!0},null,8,[`file`])]))),128))])):g(``,!0)])],2))}}),Pn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Fn(e,n){return t(),a(`svg`,Pn,[...n[0]||=[i(`path`,{fill:`currentColor`,d:`M12 3c5.5 0 10 3.58 10 8s-4.5 8-10 8c-1.24 0-2.43-.18-3.53-.5C5.55 21 2 21 2 21c2.33-2.33 2.7-3.9 2.75-4.5C3.05 15.07 2 13.13 2 11c0-4.42 4.5-8 10-8`},null,-1)]])}M({name:`mdi-chat`,render:Fn});var In={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ln(e,n){return t(),a(`svg`,In,[...n[0]||=[i(`path`,{fill:`currentColor`,d:`M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6l-6-6z`},null,-1)]])}M({name:`mdi-chevron-down`,render:Ln});var Rn=u({__name:`MessageTyping`,props:{animation:{default:`bouncing`}},setup(e){let n=e,r={id:`typing`,text:``,sender:`bot`},a=s(),o=m(()=>({"chat-message-typing":!0,[`chat-message-typing-animation-${n.animation}`]:!0}));return x(()=>{a.value?.scrollToView()}),(e,n)=>(t(),z(b(Nn),{ref_key:`messageContainer`,ref:a,class:w(o.value),message:r,"data-test-id":`chat-message-typing`},{default:V(()=>[...n[0]||=[i(`div`,{class:`chat-message-typing-body`},[i(`span`,{class:`chat-message-typing-circle`}),i(`span`,{class:`chat-message-typing-circle`}),i(`span`,{class:`chat-message-typing-circle`})],-1)]]),_:1},8,[`class`]))}}),zn={key:0,class:`empty-container`},Bn={class:`empty`,"data-test-id":`chat-messages-empty`},Vn={key:1,class:`chat-messages-list`},Hn=u({__name:`MessagesList`,props:{messages:{},emptyText:{}},setup(e){let r=it(),o=s([]),{initialMessages:c,waitingForResponse:l}=r;return D(()=>o.value.length,()=>{let e=o.value[o.value.length-1];e&&e.scrollToView()}),(r,s)=>e.emptyText&&b(c).length===0&&e.messages.length===0?(t(),a(`div`,zn,[i(`div`,Bn,[j(b(ue),{icon:`message-circle`,size:`large`,class:`emptyIcon`}),j(b(q),{tag:`p`,size:`medium`,color:`text-base`},{default:V(()=>[n(h(e.emptyText),1)]),_:1})])])):(t(),a(`div`,Vn,[(t(!0),a(C,null,I(b(c),e=>(t(),z(Nn,{key:e.id,message:e},null,8,[`message`]))),128)),(t(!0),a(C,null,I(e.messages,e=>(t(),z(Nn,{key:e.id,ref_for:!0,ref_key:`messageComponents`,ref:o,message:e},{beforeMessage:V(({message:e})=>[A(r.$slots,`beforeMessage`,_({ref_for:!0},{message:e}))]),_:2},1032,[`message`]))),128)),b(l)?(t(),z(Rn,{key:0})):g(``,!0)]))}}),Un={class:`chat-heading`},Wn=[`title`],Gn={key:0},Kn=u({__name:`Chat`,setup(e){let{t:n}=st(),r=it(),{messages:o,currentSessionId:c}=r,{options:l}=St(),u=m(()=>l.mode===`window`&&l.showWindowCloseButton),d=s(-1),f=s(``),p=m(()=>o.value.filter(e=>e.sender===`user`).map(e=>`text`in e&&typeof e.text==`string`?e.text:``));function _(){r.startNewSession&&(r.startNewSession(),y(()=>{$.emit(`scrollToBottom`)}))}async function v(){r.loadPreviousSession&&(await r.loadPreviousSession(),y(()=>{$.emit(`scrollToBottom`)}))}function C(){$.emit(`close`)}function w(e){let t=p.value;if(t.length!==0){if(d.value===-1&&e.currentInputValue.length>0&&(f.value=e.currentInputValue),e.key===`ArrowUp`){if($.emit(`blurInput`),d.value<t.length-1){d.value++;let e=t[t.length-1-d.value];$.emit(`setInputValue`,e)}$.emit(`focusInput`)}else if(e.key===`ArrowDown`){if(d.value===-1)return;if($.emit(`blurInput`),d.value>0){d.value--;let e=t[t.length-1-d.value];$.emit(`setInputValue`,e)}else d.value===0&&(d.value=-1,$.emit(`setInputValue`,f.value),f.value=``);$.emit(`focusInput`)}}}let T;return x(async()=>{!o.value.length&&l.messageHistory&&(o.value=l.messageHistory.map(e=>({...e}))),await v(),!l.showWelcomeScreen&&!c.value&&_(),T=$.on(`messageSent`,()=>{d.value=-1,f.value=``})}),S(()=>{T&&T()}),(e,r)=>(t(),z(On,{class:`chat-wrapper`},{header:V(()=>[i(`div`,Un,[i(`h1`,null,h(b(n)(`title`)),1),u.value?(t(),a(`button`,{key:0,class:`chat-close-button`,title:b(n)(`closeButtonTooltip`),onClick:C},[j(b(tt),{height:`18`,width:`18`})],8,Wn)):g(``,!0)]),b(n)(`subtitle`)?(t(),a(`p`,Gn,h(b(n)(`subtitle`)),1)):g(``,!0)]),footer:V(()=>[b(c)?(t(),z(wn,{key:0,onArrowKeyDown:w})):(t(),z(un,{key:1}))]),default:V(()=>[!b(c)&&b(l).showWelcomeScreen?(t(),z(nn,{key:0,"onClick:button":_})):(t(),z(Hn,{key:1,messages:b(o)},null,8,[`messages`]))]),_:1}))}});async function qn(){return``}async function Jn(...e){let t=await qn(),n=e[1]?.body,r={...t?{authorization:`Bearer ${t}`}:{},...e[1]?.headers};n instanceof FormData?delete r[`Content-Type`]:r[`Content-Type`]=`application/json`;let i=await fetch(e[0],{...e[1],mode:`cors`,cache:`no-cache`,headers:r}),a;try{a=await i.clone().json()}catch{a=await i.text()}return a}async function Yn(e,t={},n={}){let r=e;return Object.keys(t).length>0&&(r=`${r}?${new URLSearchParams(t).toString()}`),await Jn(r,{...n,method:`GET`})}async function Xn(e,t={},n={}){return await Jn(e,{...n,method:`POST`,body:JSON.stringify(t)})}async function Zn(e,t={},n=[],r={}){let i=new FormData;for(let e in t){let n=t[e];typeof n==`object`&&n?i.append(e,JSON.stringify(n)):i.append(e,n)}for(let e of n)i.append(`files`,e);return await Jn(e,{...r,method:`POST`,body:i})}async function Qn(e,t){return await(t.webhookConfig?.method===`POST`?Xn:Yn)(`${t.webhookUrl}`,{action:`loadPreviousSession`,[t.chatSessionKey]:e,...t.metadata?{metadata:t.metadata}:{}},{headers:t.webhookConfig?.headers})}async function $n(e,t,n,r){let i;return i=t.length>0?await Zn(`${r.webhookUrl}`,{action:`sendMessage`,[r.chatSessionKey]:n,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},t,{headers:r.webhookConfig?.headers}):await(r.webhookConfig?.method===`POST`?Xn:Yn)(`${r.webhookUrl}`,{action:`sendMessage`,[r.chatSessionKey]:n,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},{headers:r.webhookConfig?.headers}),i}function er(){let e=``,t=new TextDecoder;return new TransformStream({transform(n,r){e+=t.decode(n,{stream:!0});let i=e.split(` `);e=i.pop()??``;for(let e of i)if(e.trim())try{let t=JSON.parse(e);r.enqueue(t)}catch{r.enqueue({type:`item`,content:e})}},flush(t){if(e.trim())try{let n=JSON.parse(e);t.enqueue(n)}catch{t.enqueue({type:`item`,content:e})}}})}async function tr(e,t,n,r,i){let a=await(t.length>0?nr(e,t,n,r):rr(e,n,r));if(!a.ok){let e=await a.text();throw console.error(`HTTP error response:`,a.status,e),Error(`Error while sending message. Error: ${e}`)}if(!a.body)throw Error(`Response body is not readable`);let o=a.body.pipeThrough(er()).getReader(),s=!1;try{for(;;){let{done:e,value:t}=await o.read();if(e)break;let n=t.metadata?.nodeId||`unknown`,r=t.metadata?.runIndex;switch(t.type){case`begin`:i.onBeginMessage(n,r);break;case`item`:s=!0,i.onChunk(t.content??``,n,r);break;case`end`:await i.onEndMessage(n,r);break;case`error`:s=!0,i.onChunk(`Error: ${t.content??`Unknown error`}`,n,r),await i.onEndMessage(n,r);break}}}finally{o.releaseLock()}return{hasReceivedChunks:s}}async function nr(e,t,n,r){let i=new FormData;i.append(`action`,`sendMessage`),i.append(r.chatSessionKey,n),i.append(r.chatInputKey,e),r.metadata&&i.append(`metadata`,JSON.stringify(r.metadata));for(let e of t)i.append(`files`,e);let a={Accept:`text/plain`,...r.webhookConfig?.headers};return delete a[`Content-Type`],await fetch(r.webhookUrl,{method:`POST`,headers:a,body:i})}async function rr(e,t,n){let r={action:`sendMessage`,[n.chatSessionKey]:t,[n.chatInputKey]:e,...n.metadata?{metadata:n.metadata}:{}};return await fetch(n.webhookUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/plain`,...n.webhookConfig?.headers},body:JSON.stringify(r)})}var ir=class{nodeRuns=new Map;runOrder=[];activeRuns=new Set;constructor(){}getRunKey(e,t){return t===void 0?e:`${e}-${t}`}initializeRun(e,t){let n=this.getRunKey(e,t);if(!this.nodeRuns.has(n)){let e=ar();return this.nodeRuns.set(n,{content:``,isComplete:!1,message:e}),this.runOrder.push(n),e}return this.nodeRuns.get(n).message}registerRunStart(e,t){let n=this.getRunKey(e,t);this.activeRuns.add(n)}addRunToActive(e,t){let n=this.getRunKey(e,t);return this.activeRuns.add(n),this.initializeRun(e,t)}removeRunFromActive(e,t){let n=this.getRunKey(e,t);this.activeRuns.delete(n);let r=this.nodeRuns.get(n);r&&(r.isComplete=!0)}addChunkToRun(e,t,n){let r=this.getRunKey(e,n),i=this.nodeRuns.get(r);if(i){i.content+=t;let e={...i.message,text:i.content};return i.message=e,e}return null}getRunMessage(e,t){let n=this.getRunKey(e,t);return this.nodeRuns.get(n)?.message??null}areAllRunsComplete(){return Array.from(this.nodeRuns.values()).every(e=>e.isComplete)}getRunCount(){return this.runOrder.length}getActiveRunCount(){return this.activeRuns.size}getAllMessages(){return this.runOrder.map(e=>this.nodeRuns.get(e)?.message).filter(e=>e!==void 0)}reset(){this.nodeRuns.clear(),this.runOrder=[],this.activeRuns.clear()}};function ar(e){return{id:e??X(),type:`text`,text:``,sender:`bot`}}function or(e,t,n){let r=e.findIndex(e=>e.id===t);if(r===-1)throw Error(`Can't update message. No message with id ${t} found`);e[r]=n}function sr(e,t,n,r,i,a){try{if(e===``)return;if(t){let r=n.getRunMessage(t,a);r||(r=n.addRunToActive(t,a),i.value.push(r));let o=n.addChunkToRun(t,e,a);o&&or(i.value,o.id,o)}else{r.value||(r.value=ar(),i.value.push(r.value));let t={...r.value,text:r.value.text+e};or(i.value,r.value.id,t),r.value=t}y(()=>{$.emit(`scrollToBottom`)})}catch(e){console.error(`Error handling stream chunk:`,e)}}function cr(e,t,n){try{t.registerRunStart(e,n)}catch(e){console.error(`Error handling node start:`,e)}}async function lr(e,t,n,r,i,a){try{let o=t.getRunMessage(e,n);if(t.removeRunFromActive(e,n),o&&`text`in o){let e=ct(o.text);if(e.type===`component`){let t=a.value.findIndex(e=>e.id===o.id);return t!==-1&&(e.id=o.id,a.value[t]=e),lt(e)}}i.afterMessageSent&&o&&await i.afterMessageSent(r,{message:o,hasReceivedChunks:!0})}catch(e){console.error(`Error handling node complete:`,e)}return!1}function ur(e,t=[]){return{id:X(),text:e,sender:`user`,files:t}}function dr(e){let t=e.output??e.text??e.message??``;if(typeof t==`object`&&t.type&&t.type===`text`)return t.text;if(t===``&&Object.keys(e).length>0)try{t=JSON.stringify(e,null,2)}catch{}return t}function fr(e){let{receivedMessage:t,messages:n}=e;t.value&&n.value.some(e=>e.sender===`bot`&&`text`in e&&e.text.trim().length>0)||(t.value=ar(),n.value.push(t.value)),t.value.text=`[No response received. This could happen if streaming is enabled in the trigger but disabled in agent node(s)]`}function pr(e){let{error:t,receivedMessage:n,messages:r}=e;n.value??=ar(),n.value.text=`Error: Failed to receive response`,r.value.includes(n.value)||r.value.push(n.value),console.error(`Chat API error:`,t)}async function mr(e){let{text:t,files:n,sessionId:r,options:i,messages:a,receivedMessage:o,streamingManager:s,blockUserInput:c}=e,{hasReceivedChunks:l}=await tr(t,n,r,i,{onChunk:(e,t,n)=>{sr(e,t,s,o,a,n)},onBeginMessage:(e,t)=>{cr(e,s,t)},onEndMessage:async(e,n)=>{await lr(e,s,n,t,i,a)&&(c.value=!0)}});return l||fr({receivedMessage:o,messages:a}),l}async function hr(e){let{text:t,files:n,sessionId:r,options:i}=e,a=await $n(t,n,r,i);if(a?.executionStarted)return{response:a};let o=ar();return o.text=dr(a),{response:a,botMessage:o}}var gr={install(e,t){e.provide(gt,t);let n=s([]),r=s(null),i=s(!1),a=s(!1),o=m(()=>(t.initialMessages??[]).map(e=>({id:X(),text:e,sender:`bot`})));async function c(e,o=[]){let c=ur(e,o);n.value.push(c),i.value=!0,y(()=>{$.emit(`scrollToBottom`)});let l=s(null),u=new ir;try{if(t.beforeMessageSent&&await t.beforeMessageSent(e),t?.enableStreaming){let i=await mr({text:e,files:o,sessionId:r.value,options:t,messages:n,receivedMessage:l,streamingManager:u,blockUserInput:a});t.afterMessageSent&&await t.afterMessageSent(e,{hasReceivedChunks:i,message:l.value??``})}else{let a=await hr({text:e,files:o,sessionId:r.value,options:t});if(a.response?.executionStarted)return i.value=!1,a.response;a.botMessage&&(l.value=a.botMessage,n.value.push(a.botMessage)),t.afterMessageSent&&await t.afterMessageSent(e,a.response)}}catch(e){pr({error:e,receivedMessage:l,messages:n})}finally{i.value=!1}return y(()=>{$.emit(`scrollToBottom`)}),null}async function l(){if(!t.loadPreviousSession)return;let e=t.sessionId??localStorage.getItem(dt);return e||(e=X(),localStorage.setItem(dt,e)),n.value=((await Qn(e,t))?.data||[]).map((e,t)=>({id:`${t}`,text:e.kwargs.content,sender:e.id.includes(`HumanMessage`)?`user`:`bot`})),r.value=e,localStorage.setItem(dt,e),e}async function u(){let e=localStorage.getItem(dt);e&&t.loadPreviousSession&&!t.sessionId?r.value=e:(r.value=t.sessionId??X(),localStorage.setItem(dt,r.value))}let d={initialMessages:o,messages:n,currentSessionId:r,waitingForResponse:i,blockUserInput:a,loadPreviousSession:l,startNewSession:u,sendMessage:c};e.provide(pt,d),e.config.globalProperties.$chat=d}},_r=J(u({__name:`ChatMessagesPanel`,props:{sessionId:{},showCloseButton:{type:Boolean},isOpen:{type:Boolean,default:!0},isReadOnly:{type:Boolean,default:!1},isHeaderClickable:{type:Boolean}},emits:[`displayExecution`,`refreshSession`,`close`,`clickHeader`,`hideChatPanel`],setup(e,{emit:r}){let o=e,s=r,c=H(),l=U(),u=Et(),d=Ce(),f=P(`chatContainer`),{chatTriggerNode:p,isStreamingEnabled:_,isFileUploadsAllowed:v,allowedFilesMimeTypes:C,isWorkflowReadyForChat:E,chatOptions:A}=Yt(o.isReadOnly,()=>o.sessionId),M=null,ee=m(()=>c.baseText(`chat.window.session.id`,{interpolate:{id:`${o.sessionId.slice(0,5)}...`}}));async function N(){await l.copy(o.sessionId),d.showMessage({title:c.baseText(`generic.copiedToClipboard`),message:``,type:`success`})}function F(){E.value&&f.value&&(M||(M=k(Kn),M.use(gr,A.value),M.mount(f.value)))}function I(){M&&f.value&&(M.unmount(),M=null,f.value.innerHTML=``)}return D(()=>o.isOpen,async e=>{e&&!M&&(I(),F())}),D(()=>p.value,async(e,t)=>{o.isOpen&&(e&&!t?(await y(),F()):!e&&t&&(I(),s(`hideChatPanel`)))}),D(()=>f.value,async e=>{e&&o.isOpen&&E.value&&F()}),D(u,async(e,t)=>{o.isOpen&&E.value&&e!==t&&(I(),F())}),D(()=>_.value,async(e,t)=>{o.isOpen&&E.value&&M&&e!==t&&(I(),F())}),D(()=>[v.value,C.value],async(e,t)=>{o.isOpen&&E.value&&M&&JSON.stringify(e)!==JSON.stringify(t)&&(I(),F())}),x(async()=>{o.isOpen&&(await y(),F())}),S(()=>{I()}),(r,o)=>(t(),a(`div`,{class:w([r.$style.chat,`ignore-key-press-canvas`]),"data-test-id":`workflow-lm-chat-dialog`,tabindex:`0`},[j(Xt,{"data-test-id":`chat-header`,title:b(c).baseText(`chat.window.title`),"is-clickable":e.isHeaderClickable,onClick:o[1]||=e=>s(`clickHeader`)},{actions:V(()=>[e.isReadOnly?g(``,!0):(t(),z(b(W),{key:0},{content:V(()=>[n(h(e.sessionId)+` `,1),o[2]||=i(`br`,null,null,-1),n(` `+h(b(c).baseText(`chat.window.session.id.copy`)),1)]),default:V(()=>[j(b(de),{variant:`ghost`,"data-test-id":`chat-session-id`,size:`xsmall`,class:w(r.$style.newHeaderButton),onClick:O(N,[`stop`])},{default:V(()=>[n(h(ee.value),1)]),_:1},8,[`class`])]),_:1})),e.isReadOnly?g(``,!0):(t(),z(b(W),{key:1,content:b(c).baseText(`chat.window.session.resetSession`)},{default:V(()=>[j(b(le),{variant:`ghost`,class:w(r.$style.newHeaderButton),"data-test-id":`refresh-session-button`,size:`xsmall`,"icon-size":`medium`,icon:`undo-2`,title:b(c).baseText(`chat.window.session.reset`),onClick:o[0]||=O(e=>s(`refreshSession`),[`stop`])},null,8,[`class`,`title`])]),_:1},8,[`content`]))]),_:1},8,[`title`,`is-clickable`]),T(i(`main`,{class:w(r.$style.chatSdkContainer),"data-test-id":`canvas-chat-body`},[i(`div`,{ref_key:`chatContainer`,ref:f,class:w(r.$style.chatContainer)},null,2)],2),[[te,e.isOpen&&b(p)]])],2))}}),[[`__cssModules`,{$style:{chat:`_chat_9cipi_125`,headerButton:`_headerButton_9cipi_185`,newHeaderButton:`_newHeaderButton_9cipi_190`,chatSdkContainer:`_chatSdkContainer_9cipi_195`,chatContainer:`_chatContainer_9cipi_202`}}]]),vr=J(u({__name:`LogsViewRunData`,props:{title:{},paneType:{},logEntry:{},collapsingTableColumnName:{},searchShortcut:{},showRedactedOverlay:{type:Boolean,default:!0}},emits:[`collapsingTableColumnChanged`],setup(e,{emit:r}){let a=r,o=H(),c=ke(),l=Re(),{canReveal:u,isDynamicCredentials:p,revealData:v}=$e(),y=f(qe,s()),x=s(e.paneType===`input`?`schema`:`table`),S=m(()=>e.paneType===`input`&&(e.logEntry.runData?.source.length??0)>1),C=m(()=>{if(Ft(e.logEntry)||e.paneType===`output`)return{node:e.logEntry.node,runIndex:e.logEntry.runIndex};let t=e.logEntry.runData?.source[0],n=t&&e.logEntry.workflow.getNode(t.previousNode);if(!(!t||!n))return{node:{...n,disabled:!1},runIndex:t.previousNodeRun??0,overrideOutputs:[t.previousNodeOutput??0]}}),E=m(()=>e.paneType===`output`&&(e.logEntry.runData?.executionStatus===`running`||e.logEntry.runData?.executionStatus===`waiting`));function D(){c.setActiveNodeName(e.logEntry.node.name,`logs_view`)}function O(e){x.value=e}return(r,s)=>{let c=N(`n8n-html`);return C.value?(t(),z(et,_({key:0},C.value,{key:`run-data${b(y)?`-pop-out`:``}`,class:r.$style.component,"workflow-object":e.logEntry.workflow,"workflow-execution":e.logEntry.execution,"no-data-in-branch-message":b(o).baseText(`ndv.output.noOutputDataInBranch`),"executing-message":b(o).baseText(`ndv.output.executing`),"pane-type":e.paneType,"disable-run-index-selection":!0,compact:!0,"show-actions-on-hover":!0,"disable-pin":!0,"disable-edit":!0,"disable-hover-highlight":!0,"disable-settings-hint":!0,"display-mode":x.value,"disable-ai-content":!b(Ft)(e.logEntry),"is-executing":E.value,"table-header-bg-color":`light`,"collapsing-table-column-name":e.collapsingTableColumnName,"search-shortcut":e.searchShortcut,onDisplayModeChange:O,onCollapsingTableColumnChanged:s[1]||=e=>a(`collapsingTableColumnChanged`,e)}),d({header:V(()=>[j(b(q),{class:w(r.$style.title),bold:!0,color:`text-light`,size:`small`},{default:V(()=>[n(h(e.title),1)]),_:1},8,[`class`])]),"header-end":V(e=>[j(Qe,_(e,{search:x.value===`schema`?``:e.search}),null,16,[`search`])]),"no-output-data":V(()=>[j(nt,{title:b(o).baseText(`ndv.output.noOutputData.title`)},null,8,[`title`])]),"node-waiting":V(()=>[j(nt,{title:b(o).baseText(`ndv.output.waitNodeWaiting.title`),wide:``},{default:V(()=>[T(i(`span`,null,null,512),[[c,b(_e)(e.logEntry.node,e.logEntry.workflow,e.logEntry.runData?.metadata)]])]),_:1},8,[`title`])]),_:2},[e.showRedactedOverlay?{name:`data-redacted`,fn:V(()=>[j(Ze,{title:b(o).baseText(e.paneType===`output`?`ndv.output.redacted.title`:`ndv.input.redacted.title`),"is-dynamic-credentials":b(p),"can-reveal":b(u),onOpenSettings:s[0]||=e=>b(l).openModal(b(`settings`)),onReveal:b(v)},null,8,[`title`,`is-dynamic-credentials`,`can-reveal`,`onReveal`])]),key:`0`}:void 0,S.value?{name:`content`,fn:V(()=>[]),key:`1`}:void 0,S.value?{name:`callout-message`,fn:V(()=>[j(b(oe),{keypath:`logs.details.body.multipleInputs`,scope:`global`},{button:V(()=>[j(b(me),{size:`small`,onClick:D},{default:V(()=>[n(h(b(o).baseText(`logs.details.body.multipleInputs.openingTheNode`)),1)]),_:1})]),_:1})]),key:`2`}:void 0]),1040,[`class`,`workflow-object`,`workflow-execution`,`no-data-in-branch-message`,`executing-message`,`pane-type`,`display-mode`,`disable-ai-content`,`is-executing`,`collapsing-table-column-name`,`search-shortcut`])):g(``,!0)}}}),[[`__cssModules`,{$style:{component:`_component_7mlt9_125`,title:`_title_7mlt9_129`}}]]),yr=200,br=J(u({__name:`LogDetailsPanel`,props:{isOpen:{type:Boolean},logEntry:{},window:{},latestInfo:{},panels:{},collapsingInputTableColumnName:{},collapsingOutputTableColumnName:{},isHeaderClickable:{type:Boolean}},emits:[`clickHeader`,`toggleInputOpen`,`toggleOutputOpen`,`collapsingInputTableColumnChanged`,`collapsingOutputTableColumnChanged`],setup(e,{emit:r}){let o=r,s=H(),c=Ue(),l=ke(),u=mt(),d=Re(),{isRedacted:f,canReveal:p,isDynamicCredentials:_,revealData:v}=$e(),y=m(()=>c.getNodeType(e.logEntry.node.type)),x=m(()=>Vt(e.logEntry,!1)),S=m(()=>y.value?.group.includes(`trigger`)),T=P(`container`),E=Gt(`N8N_LOGS_INPUT_PANEL_WIDTH`,{container:T,defaultSize:e=>e/2,minSize:yr,maxSize:e=>e-yr,allowCollapse:!0,allowFullSize:!0}),D=m(()=>e.panels===Q.BOTH),k=m(()=>l.isNDVOpen||u.isMapperOpen?void 0:e.panels===Q.INPUT?`input`:`output`);function M(){E.isCollapsed.value&&o(`toggleInputOpen`,!1),E.isFullSize.value&&o(`toggleOutputOpen`,!1),E.onResizeEnd()}return(r,c)=>(t(),a(`div`,{ref_key:`container`,ref:T,class:w(r.$style.container),"data-test-id":`log-details`},[j(Xt,{"data-test-id":`log-details-header`,class:w(r.$style.header),"is-clickable":e.isHeaderClickable,onClick:c[2]||=e=>o(`clickHeader`)},{title:V(()=>[i(`div`,{class:w(r.$style.title)},[j(wt,{"node-type":y.value,size:16,class:w(r.$style.icon)},null,8,[`node-type`,`class`]),j(Lt,{name:e.latestInfo?.name??e.logEntry.node.name,"is-deleted":e.latestInfo?.deleted??!1},null,8,[`name`,`is-deleted`]),e.isOpen&&e.logEntry.runData!==void 0?(t(),z(Qt,{key:0,class:w(r.$style.executionSummary),status:e.logEntry.runData.executionStatus??`unknown`,"consumed-tokens":x.value,"start-time":e.logEntry.runData.startTime,"time-took":e.logEntry.runData.executionTime},null,8,[`class`,`status`,`consumed-tokens`,`start-time`,`time-took`])):g(``,!0)],2)]),actions:V(()=>[e.isOpen&&!S.value&&!b(It)(e.logEntry)?(t(),a(`div`,{key:0,class:w(r.$style.actions)},[j(Dt,{label:b(s).baseText(`generic.shortcutHint`),shortcut:{keys:[`i`]}},{default:V(()=>[j(b(de),{variant:`subtle`,size:`xsmall`,class:w(e.panels===b(Q).OUTPUT?``:r.$style.pressed),onClick:c[0]||=O(e=>o(`toggleInputOpen`),[`stop`])},{default:V(()=>[n(h(b(s).baseText(`logs.details.header.actions.input`)),1)]),_:1},8,[`class`])]),_:1},8,[`label`]),j(Dt,{label:b(s).baseText(`generic.shortcutHint`),shortcut:{keys:[`o`]}},{default:V(()=>[j(b(de),{variant:`subtle`,size:`xsmall`,class:w(e.panels===b(Q).INPUT?``:r.$style.pressed),onClick:c[1]||=O(e=>o(`toggleOutputOpen`),[`stop`])},{default:V(()=>[n(h(b(s).baseText(`logs.details.header.actions.output`)),1)]),_:1},8,[`class`])]),_:1},8,[`label`])],2)):g(``,!0),A(r.$slots,`actions`)]),_:3},8,[`class`,`is-clickable`]),e.isOpen?(t(),a(`div`,{key:0,class:w(r.$style.content),"data-test-id":`logs-details-body`},[b(It)(e.logEntry)?(t(),a(`div`,{key:0,class:w(r.$style.placeholder)},[j(b(q),{color:`text-base`},{default:V(()=>[n(h(b(s).baseText(`ndv.output.runNodeHint`)),1)]),_:1})],2)):(t(),a(C,{key:1},[!S.value&&e.panels!==b(Q).OUTPUT?(t(),z(b(se),{key:0,class:w({[r.$style.inputResizer]:!0,[r.$style.collapsed]:b(E).isCollapsed.value,[r.$style.full]:b(E).isFullSize.value}),width:b(E).size.value,style:B(D.value?{width:`${b(E).size.value??0}px`}:void 0),"supported-directions":[`right`],"is-resizing-enabled":D.value,window:e.window,onResize:b(E).onResize,onResizeend:M},{default:V(()=>[j(vr,{"data-test-id":`log-details-input`,"pane-type":`input`,title:b(s).baseText(`logs.details.header.actions.input`),"log-entry":e.logEntry,"collapsing-table-column-name":e.collapsingInputTableColumnName,"search-shortcut":k.value===`input`?`ctrl+f`:void 0,"show-redacted-overlay":e.panels!==b(Q).BOTH,onCollapsingTableColumnChanged:c[3]||=e=>o(`collapsingInputTableColumnChanged`,e)},null,8,[`title`,`log-entry`,`collapsing-table-column-name`,`search-shortcut`,`show-redacted-overlay`])]),_:1},8,[`class`,`width`,`style`,`is-resizing-enabled`,`window`,`onResize`])):g(``,!0),S.value||e.panels!==b(Q).INPUT?(t(),z(vr,{key:1,"data-test-id":`log-details-output`,"pane-type":`output`,class:w(r.$style.outputPanel),title:b(s).baseText(`logs.details.header.actions.output`),"log-entry":e.logEntry,"collapsing-table-column-name":e.collapsingOutputTableColumnName,"search-shortcut":k.value===`output`?`ctrl+f`:void 0,"show-redacted-overlay":e.panels!==b(Q).BOTH,onCollapsingTableColumnChanged:c[4]||=e=>o(`collapsingOutputTableColumnChanged`,e)},null,8,[`class`,`title`,`log-entry`,`collapsing-table-column-name`,`search-shortcut`,`show-redacted-overlay`])):g(``,!0),b(f)&&e.panels===b(Q).BOTH?(t(),a(`div`,{key:2,class:w(r.$style.redactedOverlay)},[j(Ze,{title:b(s).baseText(`ndv.output.redacted.title`),"is-dynamic-credentials":b(_),"can-reveal":b(p),wide:``,onOpenSettings:c[5]||=e=>b(d).openModal(b(`settings`)),onReveal:b(v)},null,8,[`title`,`is-dynamic-credentials`,`can-reveal`,`onReveal`])],2)):g(``,!0)],64))],2)):g(``,!0)],2))}}),[[`__cssModules`,{$style:{container:`_container_1kqlo_125`,header:`_header_1kqlo_134`,actions:`_actions_1kqlo_138`,pressed:`_pressed_1kqlo_144`,title:`_title_1kqlo_148`,icon:`_icon_1kqlo_154`,executionSummary:`_executionSummary_1kqlo_158`,content:`_content_1kqlo_162`,outputPanel:`_outputPanel_1kqlo_171`,redactedOverlay:`_redactedOverlay_1kqlo_176`,inputResizer:`_inputResizer_1kqlo_189`,collapsed:`_collapsed_1kqlo_193`,full:`_full_1kqlo_193`,placeholder:`_placeholder_1kqlo_197`}}]]),xr=J(u({__name:`LogsPanelActions`,props:{isOpen:{type:Boolean},isSyncSelectionEnabled:{type:Boolean},showToggleButton:{type:Boolean},showPopOutButton:{type:Boolean}},emits:[`popOut`,`toggleOpen`,`toggleSyncSelection`],setup(e,{emit:n}){let r=n,i=H(),o=m(()=>i.baseText(`runData.panel.actions.popOut`)),s=m(()=>i.baseText(e.isOpen?`runData.panel.actions.collapse`:`runData.panel.actions.open`)),c=m(()=>[{id:`toggleSyncSelection`,label:i.baseText(`runData.panel.actions.sync`),checked:e.isSyncSelectionEnabled},...e.showPopOutButton?[{id:`popOut`,label:o.value}]:[]]);function l(e){switch(e){case`popOut`:r(e);return;case`toggleSyncSelection`:r(e);return}}return(n,u)=>(t(),a(`div`,{class:w(n.$style.container)},[!e.isOpen&&e.showPopOutButton?(t(),z(b(W),{key:0,content:o.value},{default:V(()=>[j(b(le),{variant:`ghost`,icon:`pop-out`,size:`small`,"icon-size":`medium`,"aria-label":o.value,onClick:u[0]||=O(e=>r(`popOut`),[`stop`])},null,8,[`aria-label`])]),_:1},8,[`content`])):g(``,!0),e.isOpen?(t(),z(b(G),{key:1,"icon-size":`small`,"activator-icon":`ellipsis`,"activator-size":`small`,items:c.value,teleported:!1,onSelect:l,onClick:u[1]||=O(()=>{},[`stop`])},null,8,[`items`])):g(``,!0),e.showToggleButton?(t(),z(Dt,{key:`tooltip-${e.isOpen}`,label:b(i).baseText(`generic.shortcutHint`),shortcut:{keys:[`l`]}},{default:V(()=>[j(b(le),{variant:`ghost`,size:`small`,"icon-size":`medium`,icon:e.isOpen?`chevron-down`:`chevron-up`,"aria-label":s.value,onClick:u[2]||=O(e=>r(`toggleOpen`),[`stop`])},null,8,[`icon`,`aria-label`])]),_:1},8,[`label`])):g(``,!0)],2))}}),[[`__cssModules`,{$style:{container:`_container_1g4ug_125`}}]]);function Sr(e,t,n,r){let i=Oe(),a=p({type:`initial`}),o=p(),s=m(()=>e.value?.stoppedAt!==void 0),c=m(()=>Rt(a.value,t.value,!s.value)),l=_t(),u=Re(),d=He(),f=ze(),h=m(()=>f.workflowId?Pe(Y(f.workflowId)):void 0);function g(e){l.isLogSelectionSyncedWithCanvas&&rt.emit(`nodes:select`,{ids:[e.node.id],panIntoView:!0})}function _(t){a.value=t===void 0?{type:`none`}:{type:`selected`,entry:t},t&&(g(t),i.track(`User selected node in log view`,{node_type:t.node.type,node_id:t.node.id,execution_id:e.value?.id,workflow_id:e.value?.workflowData.id,subworkflow_depth:Nt(t)}))}function v(){let e=n.value;if(e.length===0)return;let t=c.value?Pt(e,c.value.id,-1)??e[0]:e[e.length-1];a.value={type:`selected`,entry:t},g(t)}function y(){let e=n.value;if(e.length===0)return;let t=c.value?Pt(e,c.value.id,1)??e[e.length-1]:e[0];a.value={type:`selected`,entry:t},g(t)}return D(c,e=>{e&&l.setSubNodeSelected(Ft(e))},{immediate:!0}),D([()=>u.lastSelectedNode,()=>l.isLogSelectionSyncedWithCanvas],([e,t])=>{let n=e?(h.value?.nodesByName??{})[e]?.id:void 0;o.value=t&&!d.hasRangeSelection&&c.value?.node.id!==n?n:void 0},{immediate:!0}),D([t,o],([e,t])=>{if(t===void 0)return;let n=Mt(e=>e.node.id===t,e);if(!n)return;o.value=void 0,a.value={type:`selected`,entry:n};let i=n.parent;for(;i!==void 0;)r(i,!0),i=i.parent},{immediate:!0}),{selected:c,select:_,selectPrev:v,selectNext:y}}function Cr(e){return e instanceof HTMLStyleElement||e instanceof HTMLLinkElement&&e.rel===`stylesheet`}function wr(e,t){let n=e.document.head.querySelectorAll(`style, link[rel="stylesheet"]`);for(let r of t){for(let t of r.addedNodes)Cr(t)&&e.document.head.appendChild(t.cloneNode(!0));for(let e of r.removedNodes)if(Cr(e))for(let t of n)t.isEqualNode(e)&&t.remove()}}function Tr(e,t){let n=e.document.querySelector(`link[rel=icon]`)?.getAttribute(`href`);if(n){let e=t.document.createElement(`link`);e.setAttribute(`rel`,`icon`),e.setAttribute(`href`,n),t.document.head.appendChild(e)}}function Er({title:e,container:t,content:n,initialHeight:r,initialWidth:i,shouldPopOut:a,onRequestClose:o}){let c=s(),u=s(!1),d=m(()=>window.parent===window),f=m(()=>!!c.value),p=m(()=>f.value?n.value??void 0:void 0),h=new MutationObserver(e=>{c.value&&wr(c.value,e)}),g=we(c);h.observe(document.head,{childList:!0,subtree:!0});let _=new MutationObserver(()=>{if(c.value){let e=document.body.getAttribute(`data-theme`);e?c.value.document.body.setAttribute(`data-theme`,e):c.value.document.body.removeAttribute(`data-theme`),c.value.document.documentElement.style.colorScheme=e===`dark`?`dark`:`light`}});_.observe(document.body,{attributes:!0,attributeFilter:[`data-theme`]}),L(qe,c),ce(p);async function v(){if(!n.value)return;if(!c.value){let e=`popup=yes,width=${i},height=${r},left=100,top=100,toolbar=no,menubar=no,scrollbars=yes,resizable=yes`;c.value=window.open(``,`_blank`,e)??void 0}if(!c.value)return;Tr(window,c.value);for(let e of[...document.styleSheets])try{let t=[...e.cssRules].map(e=>e.cssText).join(``),n=document.createElement(`style`);n.textContent=t,c.value.document.head.appendChild(n)}catch{let t=document.createElement(`link`);t.rel=`stylesheet`,t.type=e.type,t.media=e.media,t.href=e.href,c.value.document.head.appendChild(t)}let e=document.body.getAttribute(`data-theme`);e&&c.value.document.body.setAttribute(`data-theme`,e),c.value.document.documentElement.style.colorScheme=e===`dark`?`dark`:`light`,c.value.document