UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

14 lines 24.5 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]=`108f4df8-9372-45a9-9bc6-665b12079f99`,e._sentryDebugIdIdentifier=`sentry-dbid-108f4df8-9372-45a9-9bc6-665b12079f99`)})()}catch{}import"./chunk-CACdhNlC.js";import{$ as e,A as t,C as n,E as r,Ft as i,N as a,O as o,S as s,Sn as c,T as l,Wt as u,X as d,_n as f,bt as p,gt as m,it as h,j as g,p as _,w as v,yt as y}from"./vue.runtime.esm-bundler-C3C09Zii.js";import{at as b}from"./core-Bz5WjPxS.js";import{At as x,Di as S,E as C,F as w,G as T,It as E,J as D,Ji as O,N as k,Pi as A,Qi as j,R as M,U as ee,Xi as N,Zi as P,_ as F,ji as I,jt as L,tt as R}from"./src-XqE2yCpG.js";import{t as z}from"./_plugin-vue_export-helper-CIL7EULb.js";import{Pn as te,Rt as ne,fr as B,r as re,t as ie}from"./users.store-xP93bV7X.js";import{As as ae,Bo as V,Qo as H}from"./constants-DuQbSl-q.js";import{t as U}from"./useRootStore-XEREVjMN.js";import{t as W}from"./useClipboard-D2UtD35U.js";import{t as G}from"./TimeAgo-D3e2Vl9V.js";import{t as K}from"./router-kvSL2kqM.js";import{i as q,n as oe,r as se}from"./mcp.constants-CL3iQXDk.js";import{t as ce}from"./useMcp-TYldLbSa.js";import{t as J}from"./mcp.store-BiiU-pKy.js";import{t as Y}from"./WorkflowLocation-BhLr779x.js";var X={key:0},le={key:1},Z=[`href`],ue=z(a({__name:`MCPEmptyState`,props:{disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:[`turnOnMcp`],setup(i,{emit:a}){let o=i,s=a,d=b();return(i,a)=>(e(),r(`div`,{class:f(i.$style.container),"data-test-id":`mcp-empty-state-container`},[g(u(A),{icon:{type:`icon`,value:`mcp`},heading:u(d).baseText(`settings.mcp.actionBox.heading`),description:u(d).baseText(`settings.mcp.description`),"button-text":u(d).baseText(`settings.mcp.actionBox.button.label`),"button-disabled":o.disabled||o.loading,"button-variant":`solid`,"data-test-id":`enable-mcp-access-button`,"onClick:button":a[0]||=e=>s(`turnOnMcp`)},{disabledButtonTooltip:y(()=>[o.loading?(e(),r(`span`,X,c(u(d).baseText(`generic.loading`))+`...`,1)):o.disabled?(e(),r(`span`,le,c(u(d).baseText(`settings.mcp.toggle.disabled.tooltip`)),1)):l(``,!0)]),additionalContent:y(()=>[g(u(N),{color:`text-light`,size:`small`},{default:y(()=>[t(c(u(d).baseText(`settings.mcp.emptyState.docs.part1`))+` `,1),n(`a`,{href:u(se),class:f(i.$style[`docs-link`]),target:`_blank`,rel:`noopener noreferrer`},c(u(d).baseText(`generic.learnMore`).toLowerCase()),11,Z)]),_:1})]),_:1},8,[`heading`,`description`,`button-text`,`button-disabled`])],2))}}),[[`__cssModules`,{$style:{container:`_container_pmfp4_125`,"docs-link":`_docs-link_pmfp4_134`}}]]),de=z(a({__name:`McpAccessToggle`,props:{modelValue:{type:Boolean},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:[`disableMcpAccess`],setup(i,{emit:a}){let o=i,s=a,l=b(),d=()=>{s(`disableMcpAccess`)};return(a,s)=>(e(),r(`div`,{class:f(a.$style[`main-toggle-container`])},[n(`div`,{class:f(a.$style[`main-toggle-info`])},[g(u(N),{bold:!0,color:i.modelValue?`success`:`text-light`,size:`small`},{default:y(()=>[t(c(i.modelValue?u(l).baseText(`settings.mcp.header.toggle.enabled`):u(l).baseText(`settings.mcp.header.toggle.disabled`)),1)]),_:1},8,[`color`])],2),n(`div`,{class:f(a.$style[`main-toggle`]),"data-test-id":`mcp-toggle-container`},[g(u(S),{content:u(l).baseText(`settings.mcp.toggle.disabled.tooltip`),disabled:!o.disabled,placement:`top`},{default:y(()=>[g(u(E),{size:`large`,"data-test-id":`mcp-access-toggle`,"model-value":o.modelValue,disabled:o.disabled,loading:o.loading,"onUpdate:modelValue":d},null,8,[`model-value`,`disabled`,`loading`])]),_:1},8,[`content`,`disabled`])],2)],2))}}),[[`__cssModules`,{$style:{"main-toggle-container":`_main-toggle-container_6ezoc_125`,"main-toggle":`_main-toggle_6ezoc_125`}}]]),Q=[`for`],fe=[`id`],pe=a({__name:`ConnectionParameter`,props:{id:{},label:{},value:{},valueLoading:{type:Boolean,default:!1},infoTip:{default:void 0},allowCopy:{type:Boolean,default:!0}},emits:[`copy`],setup(i,{emit:a}){let{copy:o,copied:s,isSupported:d}=W(),p=b(),m=i,_=a,x=async e=>{await o(e),_(`copy`,e)};return(i,a)=>(e(),r(`div`,{class:f(i.$style.container)},[n(`div`,{class:f(i.$style[`label-wrapper`])},[n(`label`,{class:f(i.$style.label),for:`connection-parameter-${m.id}`},c(m.label),11,Q),m.infoTip?(e(),r(`div`,{key:0,class:f(i.$style[`info-tip`])},[g(u(D),{type:`tooltip`,size:`small`,enterable:!1},{default:y(()=>[t(c(m.infoTip),1)]),_:1})],2)):l(``,!0)],2),n(`div`,{id:`connection-parameter-${m.id}`,class:f({[i.$style[`parameter-value`]]:!0,[i.$style[`parameter-value--loading`]]:m.valueLoading}),"data-test-id":`connection-parameter-value`},[n(`div`,{class:f(i.$style[`input-wrapper`])},[m.valueLoading?(e(),v(u(L),{key:0,loading:m.valueLoading,variant:`h1`,class:f(i.$style[`parameter-skeleton`])},null,8,[`loading`,`class`])):(e(),v(u(I),{key:1,modelValue:m.value,"onUpdate:modelValue":a[0]||=e=>m.value=e,type:`text`,readonly:!0},null,8,[`modelValue`]))],2),n(`div`,{class:f(i.$style[`copy-button-wrapper`])},[h(i.$slots,`customActions`),g(u(S),{disabled:!u(d),content:u(s)?u(p).baseText(`generic.copied`):u(p).baseText(`generic.copy`),"show-after":u(100),placement:`bottom`},{default:y(()=>[m.allowCopy&&u(d)?(e(),v(u(P),{key:0,variant:`subtle`,iconOnly:``,icon:u(s)?`check`:`copy`,class:f(i.$style[`copy-button`]),disabled:m.valueLoading,onClick:a[1]||=e=>x(m.value)},null,8,[`icon`,`class`,`disabled`])):l(``,!0)]),_:1},8,[`disabled`,`content`,`show-after`])],2)],10,fe)],2))}}),me=`_container_heprf_125`,he=`_label_heprf_131`,$=z(pe,[[`__cssModules`,{$style:{container:me,"label-wrapper":`_label-wrapper_heprf_131`,"info-tip":`_info-tip_heprf_136`,label:he,"parameter-value":`_parameter-value_heprf_153`,"parameter-value--loading":`_parameter-value--loading_heprf_164`,"input-wrapper":`_input-wrapper_heprf_167`,"parameter-skeleton":`_parameter-skeleton_heprf_193`,"copy-button-wrapper":`_copy-button-wrapper_heprf_220`,"copy-button":`_copy-button_heprf_220`}}]]),ge=z(a({__name:`MCPOAuthPopoverTab`,props:{serverUrl:{}},emits:[`copy`],setup(t,{emit:n}){let i=t,a=n,o=b(),s=e=>{a(`copy`,e)};return(t,n)=>(e(),r(`div`,{class:f(t.$style.container),"data-test-id":`mcp-oauth-popover-tab`},[g($,{id:`oauth-server-url`,label:u(o).baseText(`settings.mcp.connectPopover.serverUrl`),value:i.serverUrl,onCopy:s},null,8,[`label`,`value`])],2))}}),[[`__cssModules`,{$style:{container:`_container_x8qjm_125`}}]]),_e=a({__name:`MCPAccessTokenPopoverTab`,props:{serverUrl:{}},emits:[`copy`],setup(a,{emit:o}){let p=a,m=o,h=b(),_=te(),x=J(),C=i(!0),w=i(!1),E=s(()=>x.currentUserMCPKey),{copy:D,copied:O,isSupported:k}=W(),A=s(()=>` { "mcpServers": { "n8n-mcp": { "type": "http", "url": "${p.serverUrl}", "headers": { "Authorization": "Bearer ${N.value}" } } } } `),j=s(()=>E.value?.apiKey?.includes(`******`)??!1),ee=s(()=>`\`\`\`json${A.value}\`\`\``),N=s(()=>w.value?`<${h.baseText(`generic.loading`)}...>`:j.value?`<YOUR_ACCESS_TOKEN_HERE>`:E.value?.apiKey),F=async()=>{try{C.value=!0,await x.getOrCreateApiKey()}catch(e){_.showError(e,h.baseText(`settings.mcp.error.fetching.apiKey`))}finally{setTimeout(()=>{C.value=!1},200)}},I=async()=>{try{w.value=!0,await x.generateNewApiKey()}catch(e){_.showError(e,h.baseText(`settings.mcp.error.rotating.apiKey`))}finally{setTimeout(()=>{w.value=!1},200)}},R=async()=>{await D(A.value),m(`copy`,`mcpJson`,A.value)},z=e=>{m(`copy`,`serverUrl`,e)},ne=()=>{E.value?.apiKey&&m(`copy`,`accessToken`,E.value.apiKey)};return d(async()=>{E.value?C.value=!1:await F()}),(i,a)=>(e(),r(`div`,{class:f(i.$style.container),"data-test-id":`mcp-access-token-popover-tab`},[g($,{id:`oauth-server-url`,label:u(h).baseText(`settings.mcp.connectPopover.serverUrl`),value:p.serverUrl,onCopy:z},null,8,[`label`,`value`]),C.value?(e(),r(`div`,{key:0,class:f(i.$style[`loading-container`])},[g(u(L),{loading:C.value,variant:`h1`,class:f(i.$style[`url-skeleton`])},null,8,[`loading`,`class`]),g(u(L),{loading:C.value,variant:`button`,class:f(i.$style[`code-skeleton`])},null,8,[`loading`,`class`])],2)):E.value?.apiKey?(e(),r(`div`,{key:1,class:f(i.$style[`parameters-container`])},[g($,{id:`access-token`,value:E.value.apiKey,"value-loading":w.value,label:u(h).baseText(`settings.mcp.connectPopover.tab.accessToken`),"info-tip":u(h).baseText(`settings.mcp.instructions.apiKey.tip`),"allow-copy":!j.value,onCopy:ne},{customActions:y(()=>[g(u(S),{content:u(h).baseText(`settings.mcp.instructions.rotateKey.tooltip`),"show-after":u(100)},{default:y(()=>[g(u(P),{variant:`subtle`,iconOnly:``,icon:`refresh-cw`,disabled:w.value,onClick:I},null,8,[`disabled`])]),_:1},8,[`content`,`show-after`])]),_:1},8,[`value`,`value-loading`,`label`,`info-tip`,`allow-copy`]),j.value?l(``,!0):(e(),v(u(M),{key:0},{default:y(()=>[t(c(u(h).baseText(`settings.mcp.access.token.notice`)),1)]),_:1})),n(`div`,{class:f(i.$style[`json-container`]),"data-test-id":`mcp-access-token-json`},[n(`label`,{class:f(i.$style.label),for:`mcp-json`},c(u(h).baseText(`settings.mcp.connectPopover.jsonConfig`)),3),g(u(T),{id:`mcp-json`,content:ee.value},null,8,[`content`]),g(u(S),{disabled:!u(k),content:u(O)?u(h).baseText(`generic.copied`):u(h).baseText(`generic.copy`),"show-after":u(100)},{default:y(()=>[u(k)&&!C.value&&!w.value?(e(),v(u(P),{key:0,variant:`subtle`,iconOnly:``,icon:u(O)?`check`:`copy`,class:f(i.$style[`copy-json-button`]),"data-test-id":`mcp-json-copy-button`,onClick:R},null,8,[`icon`,`class`])):l(``,!0)]),_:1},8,[`disabled`,`content`,`show-after`])],2)],2)):l(``,!0)],2))}}),ve=`_container_1jg97_125`,ye=`_label_1jg97_157`,be=z(_e,[[`__cssModules`,{$style:{container:ve,"loading-container":`_loading-container_1jg97_130`,"url-skeleton":`_url-skeleton_1jg97_136`,"code-skeleton":`_code-skeleton_1jg97_141`,"parameters-container":`_parameters-container_1jg97_146`,"json-container":`_json-container_1jg97_152`,label:ye,"copy-json-button":`_copy-json-button_1jg97_175`}}]]),xe=z(a({__name:`McpConnectPopover`,props:{disabled:{type:Boolean}},setup(a){let o=b(),s=B(),d=U(),p=J(),h=a,_={ACCESS_TOKEN:`accessToken`,OAUTH:`oauth`},x=i([{value:_.OAUTH,label:o.baseText(`settings.mcp.connectPopover.tab.oauth`)},{value:_.ACCESS_TOKEN,label:o.baseText(`settings.mcp.connectPopover.tab.accessToken`)}]),S=i(`${d.urlBaseEditor}${q}`),C=i(x.value[0].value),T=e=>{e?p.openConnectPopover():(p.closeConnectPopover(),p.resetCurrentUserMCPKey())},E=e=>{C.value=e},D=e=>{O({item:{serverUrl:`server-url`,accessToken:`access-token`,mcpJson:`mcp-json`}[e],source:`token-tab`})},O=e=>{s.track(`User copied MCP connection parameter`,{parameter:e.item,source:e.source})};return m(()=>h.disabled,e=>{e||p.openConnectPopover()}),(i,s)=>(e(),r(`div`,null,[g(u(w),{id:`mcp-connect-popover`,open:u(p).connectPopoverOpen,"content-class":i.$style.popper,"show-arrow":!1,width:`${u(460)}px`,"onUpdate:open":T},{trigger:y(()=>[g(u(P),{variant:`subtle`,"data-test-id":`mcp-connect-popover-trigger-button`,disabled:a.disabled},{default:y(()=>[t(c(u(o).baseText(`settings.mcp.connectPopover.triggerLabel`)),1)]),_:1},8,[`disabled`])]),content:y(()=>[n(`div`,{class:f(i.$style[`popper-content`]),"data-test-id":`mcp-connect-popover-content`},[n(`header`,null,[g(u(k),{"data-test-id":`mcp-connect-popover-tabs`,"model-value":C.value,options:x.value,"onUpdate:modelValue":E},null,8,[`model-value`,`options`])]),n(`main`,null,[C.value===_.OAUTH?(e(),v(ge,{key:0,"server-url":S.value,onCopy:s[0]||=e=>O({item:`server-url`,source:`oauth-tab`})},null,8,[`server-url`])):C.value===_.ACCESS_TOKEN?(e(),v(be,{key:1,"server-url":S.value,onCopy:D},null,8,[`server-url`])):l(``,!0)])],2)]),_:1},8,[`open`,`content-class`,`width`])]))}}),[[`__cssModules`,{$style:{popper:`_popper_7glv7_125`,"popper-content":`_popper-content_7glv7_129`}}]]),Se=z(a({__name:`MCPHeaderActions`,props:{toggleDisabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},accessEnabled:{type:Boolean}},emits:[`disableMcpAccess`],setup(t,{emit:n}){let i=t,a=n;return(n,o)=>(e(),r(`div`,{class:f(n.$style.container),"data-test-id":`mcp-header-actions`},[g(de,{"model-value":t.accessEnabled,disabled:i.toggleDisabled,loading:i.loading,class:f(n.$style[`mcp-access-toggle`]),onDisableMcpAccess:o[0]||=e=>a(`disableMcpAccess`)},null,8,[`model-value`,`disabled`,`loading`,`class`]),g(xe,{disabled:!t.accessEnabled},null,8,[`disabled`])],2))}}),[[`__cssModules`,{$style:{container:`_container_gl7pe_125`}}]]),Ce={key:0},we={key:1,class:`mt-s mb-xl`},Te=[`onClick`],Ee={key:0},De={key:1},Oe=a({__name:`WorkflowsTable`,props:{workflows:{},loading:{type:Boolean}},emits:[`removeMcpAccess`,`connectWorkflows`,`updateDescription`],setup(a,{emit:s}){let l=a,d=s,p=b(),m=i([{title:p.baseText(`settings.mcp.workflows.table.column.name`),key:`workflow`,width:150,disableSort:!0,value(){}},{title:p.baseText(`settings.mcp.workflows.table.column.location`),key:`location`,width:200,disableSort:!0,value(){}},{title:p.baseText(`generic.description`),key:`description`,width:350,disableSort:!0,value(){}},{title:``,key:`actions`,align:`end`,width:50,disableSort:!0,value(){}}]),h=e=>{let t=V(e.scopes);return[{label:p.baseText(`settings.mcp.workflows.table.action.removeMCPAccess`),value:`removeFromMCP`,disabled:!t.workflow.update},{label:p.baseText(`settings.mcp.workflows.table.action.updateDescription`),value:`updateDescription`,disabled:!t.workflow.update}]},_=(e,t)=>{switch(e){case`removeFromMCP`:d(`removeMcpAccess`,t);break;case`updateDescription`:d(`updateDescription`,t);break;default:break}},v=()=>{d(`connectWorkflows`)};return(i,a)=>(e(),r(`div`,{class:f(i.$style[`workflow-table-container`])},[l.loading?(e(),r(`div`,Ce,[g(u(L),{loading:l.loading,variant:`h1`,class:`mb-l`},null,8,[`loading`]),g(u(L),{loading:l.loading,variant:`p`,rows:5,"shrink-last":!1},null,8,[`loading`])])):(e(),r(`div`,we,[g(u(F),{class:f(i.$style[`workflow-table`]),"data-test-id":`mcp-workflow-table`,headers:m.value,items:l.workflows,"items-length":l.workflows.length},o({"item.workflow":y(({item:e})=>[n(`div`,{class:f(i.$style[`workflow-cell`]),"data-test-id":`mcp-workflow-cell`},[g(u(R),{"data-test-id":`mcp-workflow-name-link`,"new-window":!0,to:u(K).resolve({name:u(H).WORKFLOW,params:{name:e.id}}).fullPath,theme:`text`,class:f([i.$style[`table-link`],i.$style.truncate])},{default:y(()=>[g(u(N),{class:f(i.$style.truncate),"data-test-id":`mcp-workflow-name`},{default:y(()=>[t(c(e.name),1)]),_:2},1032,[`class`])]),_:2},1032,[`to`,`class`])],2)]),"item.location":y(({item:e})=>[n(`div`,{class:f(i.$style[`location-cell`]),"data-test-id":`mcp-workflow-location-cell`},[g(Y,{"workflow-id":e.id,"home-project":e.homeProject,"parent-folder":e.parentFolder,"as-links":!0},null,8,[`workflow-id`,`home-project`,`parent-folder`])],2)]),"item.description":y(({item:a})=>[g(u(S),{content:a.description||u(p).baseText(`settings.mcp.workflows.table.column.description.emptyTooltip`),"show-after":u(100),"popper-class":i.$style[`description-popper`]},{default:y(()=>[n(`div`,{"data-test-id":`mcp-workflow-description-cell`,class:f(i.$style[`description-cell`]),onClick:e=>d(`updateDescription`,a)},[a.description?(e(),r(`span`,Ee,[g(u(N),{"data-test-id":`mcp-workflow-description`},{default:y(()=>[t(c(a.description),1)]),_:2},1024)])):(e(),r(`span`,De,[g(u(j),{icon:`triangle-alert`,size:14,color:`warning`,class:`mr-2xs`}),g(u(N),{"data-test-id":`mcp-workflow-description-empty`},{default:y(()=>[t(c(u(p).baseText(`settings.mcp.workflows.table.column.description.emptyContent`)),1)]),_:1})]))],10,Te)]),_:2},1032,[`content`,`show-after`,`popper-class`])]),"item.actions":y(({item:e})=>[g(u(x),{class:f(i.$style[`action-toggle`]),"data-test-id":`mcp-workflow-action-toggle`,placement:`bottom`,actions:h(e),theme:`dark`,onAction:t=>_(t,e)},null,8,[`class`,`actions`,`onAction`])]),_:2},[l.workflows.length===0?{name:`cover`,fn:y(()=>[n(`div`,{class:f(i.$style[`empty-state`])},[g(u(N),{"data-test-id":`mcp-workflow-table-empty-state`,size:`large`,color:`text-base`},{default:y(()=>[t(c(u(p).baseText(`settings.mcp.workflows.table.empty.title`)),1)]),_:1}),g(u(N),{"data-test-id":`mcp-workflow-table-empty-state-description`,size:`small`,color:`text-base`},{default:y(()=>[t(c(u(p).baseText(`settings.mcp.workflows.table.empty.description`)),1)]),_:1}),g(u(P),{variant:`solid`,"data-test-id":`mcp-workflow-table-empty-state-button`,label:u(p).baseText(`settings.mcp.connectWorkflows`),onClick:v},null,8,[`label`])],2)]),key:`0`}:void 0]),1032,[`class`,`headers`,`items`,`items-length`])]))],2))}}),ke=`_header_12b5m_129`,Ae=`_truncate_12b5m_186`,je=z(Oe,[[`__cssModules`,{$style:{"workflow-table-container":`_workflow-table-container_12b5m_125`,header:ke,"workflow-table":`_workflow-table_12b5m_125`,"empty-state":`_empty-state_12b5m_139`,"workflow-cell":`_workflow-cell_12b5m_149`,"location-cell":`_location-cell_12b5m_156`,"description-cell":`_description-cell_12b5m_160`,"description-popper":`_description-popper_12b5m_178`,"table-link":`_table-link_12b5m_182`,truncate:Ae}}]]),Me={"data-test-id":`oauth-clients-table`},Ne={key:0},Pe={key:1,class:`mt-s mb-xl`},Fe=z(a({__name:`OAuthClientsTable`,props:{clients:{},loading:{type:Boolean}},emits:[`revokeClient`],setup(a,{emit:s}){let l=b(),d=J(),p=a,m=s,h=i([{title:l.baseText(`settings.mcp.oAuthClients.table.clientName`),key:`name`,width:250,disableSort:!0,value(){}},{title:l.baseText(`settings.mcp.oAuthClients.table.connectedAt`),key:`createdAt`,width:250,disableSort:!0,value(){}},{title:``,key:`actions`,align:`end`,width:50,disableSort:!0,value(){}}]),_=i([{label:l.baseText(`settings.mcp.oAuthClients.table.action.revokeAccess`),value:`revokeClient`}]),v=(e,t)=>{e===`revokeClient`&&m(`revokeClient`,t)};return(i,a)=>(e(),r(`div`,Me,[p.loading?(e(),r(`div`,Ne,[g(u(L),{loading:p.loading,variant:`h1`,class:`mb-l`},null,8,[`loading`]),g(u(L),{loading:p.loading,variant:`p`,rows:5,"shrink-last":!1},null,8,[`loading`])])):(e(),r(`div`,Pe,[g(u(F),{"data-test-id":`oauth-clients-data-table`,headers:h.value,items:p.clients,"items-length":p.clients.length},o({"item.name":y(({item:e})=>[g(u(N),{"data-test-id":`mcp-client-name`,color:`text-base`},{default:y(()=>[t(c(e.name),1)]),_:2},1024)]),"item.createdAt":y(({item:e})=>[g(u(N),{"data-test-id":`mcp-client-created-at`,color:`text-base`},{default:y(()=>[g(G,{date:String(e.createdAt)},null,8,[`date`])]),_:2},1024)]),"item.actions":y(({item:e})=>[g(u(x),{"data-test-id":`mcp-oauth-client-action-toggle`,placement:`bottom`,actions:_.value,theme:`dark`,onAction:t=>v(t,e)},null,8,[`actions`,`onAction`])]),_:2},[p.clients.length===0?{name:`cover`,fn:y(()=>[n(`div`,{class:f(i.$style[`empty-state`])},[g(u(N),{"data-test-id":`mcp-workflow-table-empty-state`,size:`large`,color:`text-base`},{default:y(()=>[t(c(u(l).baseText(`settings.mcp.oauth.table.empty.title`)),1)]),_:1}),g(u(N),{"data-test-id":`mcp-workflow-table-empty-state-description`,size:`small`,color:`text-base`},{default:y(()=>[t(c(u(l).baseText(`settings.mcp.oauth.table.empty.description`)),1)]),_:1}),g(u(P),{variant:`solid`,"data-test-id":`mcp-oauth-create-client-button`,onClick:a[0]||=e=>u(d).openConnectPopover()},{default:y(()=>[t(c(u(l).baseText(`settings.mcp.oauth.table.empty.button`)),1)]),_:1})],2)]),key:`0`}:void 0]),1032,[`headers`,`items`,`items-length`])]))]))}}),[[`__cssModules`,{$style:{header:`_header_2opcl_125`,"empty-state":`_empty-state_2opcl_131`}}]]),Ie={"data-test-id":`mcp-settings-description`},Le=a({__name:`SettingsMCPView`,setup(a){let o=b(),m=te(),h=ne(),x=ce(),w=B(),T=J(),E=ie(),D=re(),k=i(!1),A=i(`workflows`),j=i([{label:o.baseText(`settings.mcp.tabs.workflows`),value:`workflows`},{label:o.baseText(`settings.mcp.tabs.oauth`),value:`oauth`}]),M=i(!1),F=i([]),I=i(!1),L=i([]),z=s(()=>E.isInstanceOwner),V=s(()=>E.isAdmin),H=s(()=>z.value||V.value),U=s(()=>A.value===`workflows`&&F.value.length>0),W=async e=>{A.value=e,e===`workflows`&&F.value.length===0?await X():e===`oauth`&&L.value.length===0&&(await Z(),w.track(`User clicked connected clients tab`))},G=async e=>{try{k.value=!0,await T.setMcpAccessEnabled(e)?(await X(),await Z()):M.value=!1,x.trackUserToggledMcpAccess(e)}catch(e){m.showError(e,o.baseText(`settings.mcp.toggle.error`))}finally{k.value=!1,M.value=!1}},K=async(e,t)=>{try{await T.toggleWorkflowMcpAccess(e,t),t?await X():F.value=F.value.filter(t=>t.id!==e)}catch(e){throw m.showError(e,o.baseText(`workflowSettings.toggleMCP.error.title`)),e}},q=e=>{D.openModalWithData({name:ae,data:{workflowId:e.id,workflowDescription:e.description??``,onSave:t=>{let n=F.value.findIndex(t=>t.id===e.id);n!==-1&&(F.value[n]={...F.value[n],description:t??void 0})}}})},Y=async()=>{A.value===`workflows`?await X():A.value===`oauth`&&await Z()},X=async()=>{M.value=!0;try{F.value=await T.fetchWorkflowsAvailableForMCP(1,200)}catch(e){m.showError(e,o.baseText(`workflows.list.error.fetching`))}finally{setTimeout(()=>{M.value=!1},200)}},le=async()=>{await X()},Z=async()=>{try{I.value=!0,L.value=await T.getAllOAuthClients()}catch(e){m.showError(e,o.baseText(`settings.mcp.error.fetching.oAuthClients`))}finally{setTimeout(()=>{I.value=!1},200)}},de=async e=>{try{await T.removeOAuthClient(e.id),L.value=L.value.filter(t=>t.id!==e.id),m.showMessage({type:`success`,title:o.baseText(`settings.mcp.oAuthClients.revoke.success.title`),message:o.baseText(`settings.mcp.oAuthClients.revoke.success.message`,{interpolate:{name:e.name}})})}catch(e){m.showError(e,o.baseText(`settings.mcp.oAuthClients.revoke.error`))}},Q=()=>{D.openModalWithData({name:oe,data:{onEnableMcpAccess:async e=>{await K(e,!0)}}}),w.track(`User clicked connect workflows from mcp settings`)};return d(async()=>{h.set(o.baseText(`settings.mcp`)),T.mcpAccessEnabled&&await X()}),(i,a)=>(e(),r(`div`,{class:f(i.$style.container)},[n(`header`,{class:f(i.$style[`main-header`]),"data-test-id":`mcp-settings-header`},[n(`div`,{class:f(i.$style.headings)},[n(`div`,{class:f(i.$style[`heading-row`])},[g(u(O),{size:`2xlarge`},{default:y(()=>[t(c(u(o).baseText(`settings.mcp`)),1)]),_:1}),g(u(S),{content:u(o).baseText(`settings.mcp.preview.tooltip`)},{default:y(()=>[g(u(ee),{size:`medium`})]),_:1},8,[`content`])],2),p(n(`div`,Ie,[g(u(N),{size:`small`,color:`text-light`},{default:y(()=>[t(c(u(o).baseText(`settings.mcp.description`))+`. `,1)]),_:1}),g(u(R),{href:u(se),target:`_blank`,rel:`noopener noreferrer`,size:`small`,"data-test-id":`mcp-docs-link`},{default:y(()=>[t(c(u(o).baseText(`generic.learnMore`)),1)]),_:1},8,[`href`])],512),[[_,u(T).mcpAccessEnabled]])],2),g(Se,{"access-enabled":u(T).mcpAccessEnabled,"toggle-disabled":!H.value,loading:k.value,onDisableMcpAccess:a[0]||=e=>G(!u(T).mcpAccessEnabled)},null,8,[`access-enabled`,`toggle-disabled`,`loading`])],2),u(T).mcpAccessEnabled?l(``,!0):(e(),v(ue,{key:0,disabled:!H.value,loading:k.value,onTurnOnMcp:a[1]||=e=>G(!0)},null,8,[`disabled`,`loading`])),u(T).mcpAccessEnabled?(e(),r(`div`,{key:1,class:f(i.$style.container),"data-test-id":`mcp-enabled-section`},[n(`header`,{class:f(i.$style[`tabs-header`])},[g(u(C),{"model-value":A.value,options:j.value,"onUpdate:modelValue":W},null,8,[`model-value`,`options`]),n(`div`,{class:f(i.$style.actions)},[U.value?(e(),v(u(P),{key:0,variant:`solid`,label:u(o).baseText(`settings.mcp.connectWorkflows`),"data-test-id":`mcp-connect-workflows-header-button`,size:`small`,onClick:Q},null,8,[`label`])):l(``,!0),g(u(S),{content:u(o).baseText(`settings.mcp.refresh.tooltip`)},{default:y(()=>[g(u(P),{variant:`subtle`,iconOnly:``,"data-test-id":`mcp-workflows-refresh-button`,size:`small`,icon:`refresh-cw`,onClick:Y})]),_:1},8,[`content`])],2)],2),n(`main`,null,[A.value===`workflows`?(e(),v(je,{key:0,"data-test-id":`mcp-workflow-table`,workflows:F.value,loading:M.value,onRemoveMcpAccess:a[2]||=e=>K(e.id,!1),onConnectWorkflows:Q,onUpdateDescription:q,onRefresh:le},null,8,[`workflows`,`loading`])):A.value===`oauth`?(e(),v(Fe,{key:1,"data-test-id":`mcp-oauth-clients-table`,clients:L.value,loading:I.value,onRevokeClient:de,onRefresh:Y},null,8,[`clients`,`loading`])):l(``,!0)])],2)):l(``,!0)],2))}}),Re=`_container_np9hn_125`,ze=`_headings_np9hn_143`,Be=`_actions_np9hn_162`,Ve=z(Le,[[`__cssModules`,{$style:{container:Re,"main-header":`_main-header_np9hn_130`,headings:ze,"heading-row":`_heading-row_np9hn_149`,"tabs-header":`_tabs-header_np9hn_156`,actions:Be}}]]);export{Ve as default}; //# sourceMappingURL=SettingsMCPView-BIs1Pq2p.js.map