n8n-editor-ui
Version:
Workflow Editor UI for n8n
14 lines • 25.2 kB
JavaScript
(function(){try{var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{};e.SENTRY_RELEASE={id:`n8n@2.13.4`}}catch{}})();try{(function(){var e=typeof window<`u`?window:typeof global<`u`?global:typeof globalThis<`u`?globalThis:typeof self<`u`?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]=`a476fcf4-2d47-4189-8669-d9578c9a21fc`,e._sentryDebugIdIdentifier=`sentry-dbid-a476fcf4-2d47-4189-8669-d9578c9a21fc`)})()}catch{}import{o as e}from"./chunk-DxpFCn6T.js";import{$ as t,A as n,C as r,E as i,Ft as a,N as o,O as s,S as c,Sn as l,T as u,Wt as d,X as f,_n as p,bt as m,gt as h,it as g,j as _,p as v,w as y,yt as b}from"./vue.runtime.esm-bundler-D9KLAxvJ.js";import{bt as x}from"./_MapCache-CUJwh2qp.js";import{$i as S,F as C,Fi as w,H as T,K as E,Mi as D,Q as O,Qi as k,Ri as A,Rt as j,W as M,Wt as N,Yi as P,Zi as F,_ as I,lt as L,tt as R,zt as z}from"./src-wni2AGA3.js";import{t as B}from"./_plugin-vue_export-helper-Dm3nT7Ps.js";import"./sanitize-html-my1ogl5v.js";import{Tr as ee,en as V,r as te,t as ne,vn as re}from"./users.store-BHWXXawf.js";import{Gs as ie,is as H,ms as U}from"./constants-CIP7tKq1.js";import"./merge-BqvKZ38d.js";import{r as W}from"./_baseOrderBy-CaKruttV.js";import"./banners.store-D1XIK6Qv.js";import"./dateformat-CYfyw486.js";import"./useDebounce-CTeIt-cH.js";import"./versions.store-CNV-esbv.js";import"./dataTable.store-DzRmkvR8.js";import{t as G}from"./useClipboard-D72kaMkX.js";import"./executions.store-CZbPSd3l.js";import"./usePinnedData-bxdhY-Ce.js";import"./nodeIcon-BFJyt77y.js";import"./canvas.utils-BMxgA7cX.js";import"./canvas.eventBus-C-z2MFNA.js";import"./useCanvasOperations-CI7Ylcwf.js";import"./setupPanel.store-D0Kh-_X7.js";import"./nodeTransforms-DgA3LbBA.js";import"./templateTransforms-Bcjcx-gt.js";import"./useDynamicCredentials-C74iW7Qx.js";import"./NodeIcon-0naEDfOR.js";import{t as K}from"./TimeAgo-B5--ltV7.js";import"./roles.store-B4WtqADh.js";import"./dist-DG6crvT0.js";import"./sso.store-DmM4R1YZ.js";import{t as q}from"./router-B4sCyKhY.js";import"./insights.store-DoHmMCwa.js";import"./insights.constants-BWd0PYhd.js";import"./insights.utils-BGXnT8rV.js";import{a as J,i as ae,l as oe,n as Y,o as se,r as X}from"./mcp.constants-1YI8b9Rg.js";import{t as ce}from"./useMcp-D0Wazsp1.js";import{t as Z}from"./mcp.store-C36HSxV6.js";import{t as le}from"./WorkflowLocation-SK_uqFiN.js";var Q={key:0},ue={key:1},de=[`href`],fe=B(o({__name:`MCPEmptyState`,props:{disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:[`turnOnMcp`],setup(e,{emit:a}){let o=e,s=a,c=x();return(e,a)=>(t(),i(`div`,{class:p(e.$style.container),"data-test-id":`mcp-empty-state-container`},[_(d(A),{icon:{type:`icon`,value:`mcp`},heading:d(c).baseText(`settings.mcp.actionBox.heading`),description:d(c).baseText(`settings.mcp.description`),"button-text":d(c).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:b(()=>[o.loading?(t(),i(`span`,Q,l(d(c).baseText(`generic.loading`))+`...`,1)):o.disabled?(t(),i(`span`,ue,l(d(c).baseText(`settings.mcp.toggle.disabled.tooltip`)),1)):u(``,!0)]),additionalContent:b(()=>[_(d(F),{color:`text-light`,size:`small`},{default:b(()=>[n(l(d(c).baseText(`settings.mcp.emptyState.docs.part1`))+` `,1),r(`a`,{href:d(J),class:p(e.$style[`docs-link`]),target:`_blank`,rel:`noopener noreferrer`},l(d(c).baseText(`generic.learnMore`).toLowerCase()),11,de)]),_:1})]),_:1},8,[`heading`,`description`,`button-text`,`button-disabled`])],2))}}),[[`__cssModules`,{$style:{container:`_container_pmfp4_125`,"docs-link":`_docs-link_pmfp4_134`}}]]),pe=B(o({__name:`McpAccessToggle`,props:{modelValue:{type:Boolean},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:[`disableMcpAccess`],setup(e,{emit:a}){let o=e,s=a,c=x(),u=()=>{s(`disableMcpAccess`)};return(a,s)=>(t(),i(`div`,{class:p(a.$style[`main-toggle-container`])},[r(`div`,{class:p(a.$style[`main-toggle-info`])},[_(d(F),{bold:!0,color:e.modelValue?`success`:`text-light`,size:`small`},{default:b(()=>[n(l(e.modelValue?d(c).baseText(`settings.mcp.header.toggle.enabled`):d(c).baseText(`settings.mcp.header.toggle.disabled`)),1)]),_:1},8,[`color`])],2),r(`div`,{class:p(a.$style[`main-toggle`]),"data-test-id":`mcp-toggle-container`},[_(d(D),{content:d(c).baseText(`settings.mcp.toggle.disabled.tooltip`),disabled:!o.disabled,placement:`top`},{default:b(()=>[_(d(N),{size:`large`,"data-test-id":`mcp-access-toggle`,"model-value":o.modelValue,disabled:o.disabled,loading:o.loading,"onUpdate:modelValue":u},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`}}]]),me=[`for`],he=[`id`],$=B(o({__name:`ConnectionParameter`,props:{id:{},label:{},value:{},valueLoading:{type:Boolean,default:!1},infoTip:{default:void 0},allowCopy:{type:Boolean,default:!0}},emits:[`copy`],setup(e,{emit:a}){let{copy:o,copied:s,isSupported:c}=G(),f=x(),m=e,h=a,v=async e=>{await o(e),h(`copy`,e)};return(e,a)=>(t(),i(`div`,{class:p(e.$style.container)},[r(`div`,{class:p(e.$style[`label-wrapper`])},[r(`label`,{class:p(e.$style.label),for:`connection-parameter-${m.id}`},l(m.label),11,me),m.infoTip?(t(),i(`div`,{key:0,class:p(e.$style[`info-tip`])},[_(d(R),{type:`tooltip`,size:`small`,enterable:!1},{default:b(()=>[n(l(m.infoTip),1)]),_:1})],2)):u(``,!0)],2),r(`div`,{id:`connection-parameter-${m.id}`,class:p({[e.$style[`parameter-value`]]:!0,[e.$style[`parameter-value--loading`]]:m.valueLoading}),"data-test-id":`connection-parameter-value`},[r(`div`,{class:p(e.$style[`input-wrapper`])},[m.valueLoading?(t(),y(d(z),{key:0,loading:m.valueLoading,variant:`h1`,class:p(e.$style[`parameter-skeleton`])},null,8,[`loading`,`class`])):(t(),y(d(w),{key:1,modelValue:m.value,"onUpdate:modelValue":a[0]||=e=>m.value=e,type:`text`,readonly:!0},null,8,[`modelValue`]))],2),r(`div`,{class:p(e.$style[`copy-button-wrapper`])},[g(e.$slots,`customActions`),_(d(D),{disabled:!d(c),content:d(s)?d(f).baseText(`generic.copied`):d(f).baseText(`generic.copy`),"show-after":d(100),placement:`bottom`},{default:b(()=>[m.allowCopy&&d(c)?(t(),y(d(k),{key:0,variant:`subtle`,iconOnly:``,icon:d(s)?`check`:`copy`,class:p(e.$style[`copy-button`]),disabled:m.valueLoading,onClick:a[1]||=e=>v(m.value)},null,8,[`icon`,`class`,`disabled`])):u(``,!0)]),_:1},8,[`disabled`,`content`,`show-after`])],2)],10,he)],2))}}),[[`__cssModules`,{$style:{container:`_container_heprf_125`,"label-wrapper":`_label-wrapper_heprf_131`,"info-tip":`_info-tip_heprf_136`,label:`_label_heprf_131`,"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=B(o({__name:`MCPOAuthPopoverTab`,props:{serverUrl:{}},emits:[`copy`],setup(e,{emit:n}){let r=e,a=n,o=x(),s=e=>{a(`copy`,e)};return(e,n)=>(t(),i(`div`,{class:p(e.$style.container),"data-test-id":`mcp-oauth-popover-tab`},[_($,{id:`oauth-server-url`,label:d(o).baseText(`settings.mcp.connectPopover.serverUrl`),value:r.serverUrl,onCopy:s},null,8,[`label`,`value`])],2))}}),[[`__cssModules`,{$style:{container:`_container_x8qjm_125`}}]]),_e=B(o({__name:`MCPAccessTokenPopoverTab`,props:{serverUrl:{}},emits:[`copy`],setup(e,{emit:o}){let s=e,m=o,h=x(),g=ee(),v=Z(),S=a(!0),C=a(!1),w=c(()=>v.currentUserMCPKey),{copy:T,copied:A,isSupported:j}=G(),M=c(()=>`
{
"mcpServers": {
"n8n-mcp": {
"type": "http",
"url": "${s.serverUrl}",
"headers": {
"Authorization": "Bearer ${F.value}"
}
}
}
}
`),N=c(()=>w.value?.apiKey?.includes(`******`)??!1),P=c(()=>`\`\`\`json${M.value}\`\`\``),F=c(()=>C.value?`<${h.baseText(`generic.loading`)}...>`:N.value?`<YOUR_ACCESS_TOKEN_HERE>`:w.value?.apiKey),I=async()=>{try{S.value=!0,await v.getOrCreateApiKey()}catch(e){g.showError(e,h.baseText(`settings.mcp.error.fetching.apiKey`))}finally{setTimeout(()=>{S.value=!1},200)}},L=async()=>{try{C.value=!0,await v.generateNewApiKey()}catch(e){g.showError(e,h.baseText(`settings.mcp.error.rotating.apiKey`))}finally{setTimeout(()=>{C.value=!1},200)}},R=async()=>{await T(M.value),m(`copy`,`mcpJson`,M.value)},B=e=>{m(`copy`,`serverUrl`,e)},V=()=>{w.value?.apiKey&&m(`copy`,`accessToken`,w.value.apiKey)};return f(async()=>{w.value?S.value=!1:await I()}),(e,a)=>(t(),i(`div`,{class:p(e.$style.container),"data-test-id":`mcp-access-token-popover-tab`},[_($,{id:`oauth-server-url`,label:d(h).baseText(`settings.mcp.connectPopover.serverUrl`),value:s.serverUrl,onCopy:B},null,8,[`label`,`value`]),S.value?(t(),i(`div`,{key:0,class:p(e.$style[`loading-container`])},[_(d(z),{loading:S.value,variant:`h1`,class:p(e.$style[`url-skeleton`])},null,8,[`loading`,`class`]),_(d(z),{loading:S.value,variant:`button`,class:p(e.$style[`code-skeleton`])},null,8,[`loading`,`class`])],2)):w.value?.apiKey?(t(),i(`div`,{key:1,class:p(e.$style[`parameters-container`])},[_($,{id:`access-token`,value:w.value.apiKey,"value-loading":C.value,label:d(h).baseText(`settings.mcp.connectPopover.tab.accessToken`),"info-tip":d(h).baseText(`settings.mcp.instructions.apiKey.tip`),"allow-copy":!N.value,onCopy:V},{customActions:b(()=>[_(d(D),{content:d(h).baseText(`settings.mcp.instructions.rotateKey.tooltip`),"show-after":d(100)},{default:b(()=>[_(d(k),{variant:`subtle`,iconOnly:``,icon:`refresh-cw`,disabled:C.value,onClick:L},null,8,[`disabled`])]),_:1},8,[`content`,`show-after`])]),_:1},8,[`value`,`value-loading`,`label`,`info-tip`,`allow-copy`]),N.value?u(``,!0):(t(),y(d(E),{key:0},{default:b(()=>[n(l(d(h).baseText(`settings.mcp.access.token.notice`)),1)]),_:1})),r(`div`,{class:p(e.$style[`json-container`]),"data-test-id":`mcp-access-token-json`},[r(`label`,{class:p(e.$style.label),for:`mcp-json`},l(d(h).baseText(`settings.mcp.connectPopover.jsonConfig`)),3),_(d(O),{id:`mcp-json`,content:P.value},null,8,[`content`]),_(d(D),{disabled:!d(j),content:d(A)?d(h).baseText(`generic.copied`):d(h).baseText(`generic.copy`),"show-after":d(100)},{default:b(()=>[d(j)&&!S.value&&!C.value?(t(),y(d(k),{key:0,variant:`subtle`,iconOnly:``,icon:d(A)?`check`:`copy`,class:p(e.$style[`copy-json-button`]),"data-test-id":`mcp-json-copy-button`,onClick:R},null,8,[`icon`,`class`])):u(``,!0)]),_:1},8,[`disabled`,`content`,`show-after`])],2)],2)):u(``,!0)],2))}}),[[`__cssModules`,{$style:{container:`_container_1jg97_125`,"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:`_label_1jg97_157`,"copy-json-button":`_copy-json-button_1jg97_175`}}]]),ve=B(o({__name:`McpConnectPopover`,props:{disabled:{type:Boolean}},setup(e){let o=x(),s=V(),c=W(),f=Z(),m=e,g={ACCESS_TOKEN:`accessToken`,OAUTH:`oauth`},v=a([{value:g.OAUTH,label:o.baseText(`settings.mcp.connectPopover.tab.oauth`)},{value:g.ACCESS_TOKEN,label:o.baseText(`settings.mcp.connectPopover.tab.accessToken`)}]),S=a(`${c.urlBaseEditor}${se}`),C=a(v.value[0].value),w=e=>{e?f.openConnectPopover():(f.closeConnectPopover(),f.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 h(()=>m.disabled,e=>{e||f.openConnectPopover()}),(a,s)=>(t(),i(`div`,null,[_(d(M),{id:`mcp-connect-popover`,open:d(f).connectPopoverOpen,"content-class":a.$style.popper,"show-arrow":!1,width:`${d(460)}px`,"onUpdate:open":w},{trigger:b(()=>[_(d(k),{variant:`subtle`,"data-test-id":`mcp-connect-popover-trigger-button`,disabled:e.disabled},{default:b(()=>[n(l(d(o).baseText(`settings.mcp.connectPopover.triggerLabel`)),1)]),_:1},8,[`disabled`])]),content:b(()=>[r(`div`,{class:p(a.$style[`popper-content`]),"data-test-id":`mcp-connect-popover-content`},[r(`header`,null,[_(d(T),{"data-test-id":`mcp-connect-popover-tabs`,"model-value":C.value,options:v.value,"onUpdate:modelValue":E},null,8,[`model-value`,`options`])]),r(`main`,null,[C.value===g.OAUTH?(t(),y(ge,{key:0,"server-url":S.value,onCopy:s[0]||=e=>O({item:`server-url`,source:`oauth-tab`})},null,8,[`server-url`])):C.value===g.ACCESS_TOKEN?(t(),y(_e,{key:1,"server-url":S.value,onCopy:D},null,8,[`server-url`])):u(``,!0)])],2)]),_:1},8,[`open`,`content-class`,`width`])]))}}),[[`__cssModules`,{$style:{popper:`_popper_7glv7_125`,"popper-content":`_popper-content_7glv7_129`}}]]),ye=B(o({__name:`MCPHeaderActions`,props:{toggleDisabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},accessEnabled:{type:Boolean}},emits:[`disableMcpAccess`],setup(e,{emit:n}){let r=e,a=n;return(n,o)=>(t(),i(`div`,{class:p(n.$style.container),"data-test-id":`mcp-header-actions`},[_(pe,{"model-value":e.accessEnabled,disabled:r.toggleDisabled,loading:r.loading,class:p(n.$style[`mcp-access-toggle`]),onDisableMcpAccess:o[0]||=e=>a(`disableMcpAccess`)},null,8,[`model-value`,`disabled`,`loading`,`class`]),_(ve,{disabled:!e.accessEnabled},null,8,[`disabled`])],2))}}),[[`__cssModules`,{$style:{container:`_container_gl7pe_125`}}]]),be={key:0},xe={key:1,class:`mt-s mb-xl`},Se=[`onClick`],Ce={key:0},we={key:1},Te=B(o({__name:`WorkflowsTable`,props:{workflows:{},loading:{type:Boolean}},emits:[`removeMcpAccess`,`connectWorkflows`,`updateDescription`],setup(e,{emit:o}){let c=e,u=o,f=x(),m=a([{title:f.baseText(`settings.mcp.workflows.table.column.name`),key:`workflow`,width:150,disableSort:!0,value(){}},{title:f.baseText(`settings.mcp.workflows.table.column.location`),key:`location`,width:200,disableSort:!0,value(){}},{title:f.baseText(`generic.description`),key:`description`,width:350,disableSort:!0,value(){}},{title:``,key:`actions`,align:`end`,width:50,disableSort:!0,value(){}}]),h=e=>{let t=H(e.scopes);return[{label:f.baseText(`settings.mcp.workflows.table.action.removeMCPAccess`),value:`removeFromMCP`,disabled:!t.workflow.update},{label:f.baseText(`settings.mcp.workflows.table.action.updateDescription`),value:`updateDescription`,disabled:!t.workflow.update}]},g=(e,t)=>{switch(e){case`removeFromMCP`:u(`removeMcpAccess`,t);break;case`updateDescription`:u(`updateDescription`,t);break;default:break}},v=()=>{u(`connectWorkflows`)};return(e,a)=>(t(),i(`div`,{class:p(e.$style[`workflow-table-container`])},[c.loading?(t(),i(`div`,be,[_(d(z),{loading:c.loading,variant:`h1`,class:`mb-l`},null,8,[`loading`]),_(d(z),{loading:c.loading,variant:`p`,rows:5,"shrink-last":!1},null,8,[`loading`])])):(t(),i(`div`,xe,[_(d(I),{class:p(e.$style[`workflow-table`]),"data-test-id":`mcp-workflow-table`,headers:m.value,items:c.workflows,"items-length":c.workflows.length},s({"item.workflow":b(({item:t})=>[r(`div`,{class:p(e.$style[`workflow-cell`]),"data-test-id":`mcp-workflow-cell`},[_(d(L),{"data-test-id":`mcp-workflow-name-link`,"new-window":!0,to:d(q).resolve({name:d(U).WORKFLOW,params:{name:t.id}}).fullPath,theme:`text`,class:p([e.$style[`table-link`],e.$style.truncate])},{default:b(()=>[_(d(F),{class:p(e.$style.truncate),"data-test-id":`mcp-workflow-name`},{default:b(()=>[n(l(t.name),1)]),_:2},1032,[`class`])]),_:2},1032,[`to`,`class`])],2)]),"item.location":b(({item:t})=>[r(`div`,{class:p(e.$style[`location-cell`]),"data-test-id":`mcp-workflow-location-cell`},[_(le,{"workflow-id":t.id,"home-project":t.homeProject,"parent-folder":t.parentFolder,"as-links":!0},null,8,[`workflow-id`,`home-project`,`parent-folder`])],2)]),"item.description":b(({item:a})=>[_(d(D),{content:a.description||d(f).baseText(`settings.mcp.workflows.table.column.description.emptyTooltip`),"show-after":d(100),"popper-class":e.$style[`description-popper`]},{default:b(()=>[r(`div`,{"data-test-id":`mcp-workflow-description-cell`,class:p(e.$style[`description-cell`]),onClick:e=>u(`updateDescription`,a)},[a.description?(t(),i(`span`,Ce,[_(d(F),{"data-test-id":`mcp-workflow-description`},{default:b(()=>[n(l(a.description),1)]),_:2},1024)])):(t(),i(`span`,we,[_(d(S),{icon:`triangle-alert`,size:14,color:`warning`,class:`mr-2xs`}),_(d(F),{"data-test-id":`mcp-workflow-description-empty`},{default:b(()=>[n(l(d(f).baseText(`settings.mcp.workflows.table.column.description.emptyContent`)),1)]),_:1})]))],10,Se)]),_:2},1032,[`content`,`show-after`,`popper-class`])]),"item.actions":b(({item:t})=>[_(d(j),{class:p(e.$style[`action-toggle`]),"data-test-id":`mcp-workflow-action-toggle`,placement:`bottom`,actions:h(t),theme:`dark`,onAction:e=>g(e,t)},null,8,[`class`,`actions`,`onAction`])]),_:2},[c.workflows.length===0?{name:`cover`,fn:b(()=>[r(`div`,{class:p(e.$style[`empty-state`])},[_(d(F),{"data-test-id":`mcp-workflow-table-empty-state`,size:`large`,color:`text-base`},{default:b(()=>[n(l(d(f).baseText(`settings.mcp.workflows.table.empty.title`)),1)]),_:1}),_(d(F),{"data-test-id":`mcp-workflow-table-empty-state-description`,size:`small`,color:`text-base`},{default:b(()=>[n(l(d(f).baseText(`settings.mcp.workflows.table.empty.description`)),1)]),_:1}),_(d(k),{variant:`solid`,"data-test-id":`mcp-workflow-table-empty-state-button`,label:d(f).baseText(`settings.mcp.connectWorkflows`),onClick:v},null,8,[`label`])],2)]),key:`0`}:void 0]),1032,[`class`,`headers`,`items`,`items-length`])]))],2))}}),[[`__cssModules`,{$style:{"workflow-table-container":`_workflow-table-container_12b5m_125`,header:`_header_12b5m_129`,"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:`_truncate_12b5m_186`}}]]),Ee={"data-test-id":`oauth-clients-table`},De={key:0},Oe={key:1,class:`mt-s mb-xl`},ke=B(o({__name:`OAuthClientsTable`,props:{clients:{},loading:{type:Boolean}},emits:[`revokeClient`],setup(e,{emit:o}){let c=x(),u=Z(),f=e,m=o,h=a([{title:c.baseText(`settings.mcp.oAuthClients.table.clientName`),key:`name`,width:250,disableSort:!0,value(){}},{title:c.baseText(`settings.mcp.oAuthClients.table.connectedAt`),key:`createdAt`,width:250,disableSort:!0,value(){}},{title:``,key:`actions`,align:`end`,width:50,disableSort:!0,value(){}}]),g=a([{label:c.baseText(`settings.mcp.oAuthClients.table.action.revokeAccess`),value:`revokeClient`}]),v=(e,t)=>{e===`revokeClient`&&m(`revokeClient`,t)};return(e,a)=>(t(),i(`div`,Ee,[f.loading?(t(),i(`div`,De,[_(d(z),{loading:f.loading,variant:`h1`,class:`mb-l`},null,8,[`loading`]),_(d(z),{loading:f.loading,variant:`p`,rows:5,"shrink-last":!1},null,8,[`loading`])])):(t(),i(`div`,Oe,[_(d(I),{"data-test-id":`oauth-clients-data-table`,headers:h.value,items:f.clients,"items-length":f.clients.length},s({"item.name":b(({item:e})=>[_(d(F),{"data-test-id":`mcp-client-name`,color:`text-base`},{default:b(()=>[n(l(e.name),1)]),_:2},1024)]),"item.createdAt":b(({item:e})=>[_(d(F),{"data-test-id":`mcp-client-created-at`,color:`text-base`},{default:b(()=>[_(K,{date:String(e.createdAt)},null,8,[`date`])]),_:2},1024)]),"item.actions":b(({item:e})=>[_(d(j),{"data-test-id":`mcp-oauth-client-action-toggle`,placement:`bottom`,actions:g.value,theme:`dark`,onAction:t=>v(t,e)},null,8,[`actions`,`onAction`])]),_:2},[f.clients.length===0?{name:`cover`,fn:b(()=>[r(`div`,{class:p(e.$style[`empty-state`])},[_(d(F),{"data-test-id":`mcp-workflow-table-empty-state`,size:`large`,color:`text-base`},{default:b(()=>[n(l(d(c).baseText(`settings.mcp.oauth.table.empty.title`)),1)]),_:1}),_(d(F),{"data-test-id":`mcp-workflow-table-empty-state-description`,size:`small`,color:`text-base`},{default:b(()=>[n(l(d(c).baseText(`settings.mcp.oauth.table.empty.description`)),1)]),_:1}),_(d(k),{variant:`solid`,"data-test-id":`mcp-oauth-create-client-button`,onClick:a[0]||=e=>d(u).openConnectPopover()},{default:b(()=>[n(l(d(c).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`}}]]),Ae={"data-test-id":`mcp-settings-description`},je=B(o({__name:`SettingsMCPView`,setup(e){let o=x(),s=ee(),h=re(),g=ce(),S=V(),w=Z(),T=ne(),E=te(),O=a(!1),A=a(`workflows`),j=a([{label:o.baseText(`settings.mcp.tabs.workflows`),value:`workflows`},{label:o.baseText(`settings.mcp.tabs.oauth`),value:`oauth`}]),M=a(!1),N=a([]),I=a(!1),R=a([]),z=c(()=>T.isInstanceOwner),B=c(()=>T.isAdmin),H=c(()=>z.value||B.value),U=c(()=>A.value===`workflows`&&N.value.length>0),W=async e=>{A.value=e,e===`workflows`&&N.value.length===0?await Y():e===`oauth`&&R.value.length===0&&(await X(),S.track(`User clicked connected clients tab`))},G=async e=>{try{O.value=!0,await w.setMcpAccessEnabled(e)?(await Y(),await X()):M.value=!1,g.trackUserToggledMcpAccess(e)}catch(e){s.showError(e,o.baseText(`settings.mcp.toggle.error`))}finally{O.value=!1,M.value=!1}},K=async(e,t)=>{try{await w.toggleWorkflowMcpAccess(e,t),t?await Y():N.value=N.value.filter(t=>t.id!==e)}catch(e){throw s.showError(e,o.baseText(`workflowSettings.toggleMCP.error.title`)),e}},q=e=>{E.openModalWithData({name:ie,data:{workflowId:e.id,workflowDescription:e.description??``,onSave:t=>{let n=N.value.findIndex(t=>t.id===e.id);n!==-1&&(N.value[n]={...N.value[n],description:t??void 0})}}})},oe=async()=>{A.value===`workflows`?await Y():A.value===`oauth`&&await X()},Y=async()=>{M.value=!0;try{N.value=await w.fetchWorkflowsAvailableForMCP(1,200)}catch(e){s.showError(e,o.baseText(`workflows.list.error.fetching`))}finally{setTimeout(()=>{M.value=!1},200)}},se=async()=>{await Y()},X=async()=>{try{I.value=!0,R.value=await w.getAllOAuthClients()}catch(e){s.showError(e,o.baseText(`settings.mcp.error.fetching.oAuthClients`))}finally{setTimeout(()=>{I.value=!1},200)}},le=async e=>{try{await w.removeOAuthClient(e.id),R.value=R.value.filter(t=>t.id!==e.id),s.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){s.showError(e,o.baseText(`settings.mcp.oAuthClients.revoke.error`))}},Q=()=>{E.openModalWithData({name:ae,data:{onEnableMcpAccess:async e=>{await K(e,!0)}}}),S.track(`User clicked connect workflows from mcp settings`)};return f(async()=>{h.set(o.baseText(`settings.mcp`)),w.mcpAccessEnabled&&await Y()}),(e,a)=>(t(),i(`div`,{class:p(e.$style.container)},[r(`header`,{class:p(e.$style[`main-header`]),"data-test-id":`mcp-settings-header`},[r(`div`,{class:p(e.$style.headings)},[_(d(P),{size:`2xlarge`,class:`mb-2xs`},{default:b(()=>[n(l(d(o).baseText(`settings.mcp`)),1)]),_:1}),m(r(`div`,Ae,[_(d(F),{size:`small`,color:`text-light`},{default:b(()=>[n(l(d(o).baseText(`settings.mcp.description`))+`. `,1)]),_:1}),_(d(L),{href:d(J),target:`_blank`,rel:`noopener noreferrer`,size:`small`,"data-test-id":`mcp-docs-link`},{default:b(()=>[n(l(d(o).baseText(`generic.learnMore`)),1)]),_:1},8,[`href`])],512),[[v,d(w).mcpAccessEnabled]])],2),_(ye,{"access-enabled":d(w).mcpAccessEnabled,"toggle-disabled":!H.value,loading:O.value,onDisableMcpAccess:a[0]||=e=>G(!d(w).mcpAccessEnabled)},null,8,[`access-enabled`,`toggle-disabled`,`loading`])],2),d(w).mcpAccessEnabled?u(``,!0):(t(),y(fe,{key:0,disabled:!H.value,loading:O.value,onTurnOnMcp:a[1]||=e=>G(!0)},null,8,[`disabled`,`loading`])),d(w).mcpAccessEnabled?(t(),i(`div`,{key:1,class:p(e.$style.container),"data-test-id":`mcp-enabled-section`},[r(`header`,{class:p(e.$style[`tabs-header`])},[_(d(C),{"model-value":A.value,options:j.value,"onUpdate:modelValue":W},null,8,[`model-value`,`options`]),r(`div`,{class:p(e.$style.actions)},[U.value?(t(),y(d(k),{key:0,variant:`solid`,label:d(o).baseText(`settings.mcp.connectWorkflows`),"data-test-id":`mcp-connect-workflows-header-button`,size:`small`,onClick:Q},null,8,[`label`])):u(``,!0),_(d(D),{content:d(o).baseText(`settings.mcp.refresh.tooltip`)},{default:b(()=>[_(d(k),{variant:`subtle`,iconOnly:``,"data-test-id":`mcp-workflows-refresh-button`,size:`small`,icon:`refresh-cw`,onClick:oe})]),_:1},8,[`content`])],2)],2),r(`main`,null,[A.value===`workflows`?(t(),y(Te,{key:0,"data-test-id":`mcp-workflow-table`,workflows:N.value,loading:M.value,onRemoveMcpAccess:a[2]||=e=>K(e.id,!1),onConnectWorkflows:Q,onUpdateDescription:q,onRefresh:se},null,8,[`workflows`,`loading`])):A.value===`oauth`?(t(),y(ke,{key:1,"data-test-id":`mcp-oauth-clients-table`,clients:R.value,loading:I.value,onRevokeClient:le,onRefresh:oe},null,8,[`clients`,`loading`])):u(``,!0)])],2)):u(``,!0)],2))}}),[[`__cssModules`,{$style:{container:`_container_aryh2_125`,"main-header":`_main-header_aryh2_130`,headings:`_headings_aryh2_143`,"tabs-header":`_tabs-header_aryh2_149`,actions:`_actions_aryh2_155`}}]]);export{je as default};
//# sourceMappingURL=SettingsMCPView-Cpv7iCL7.js.map