UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

1,185 lines 91.8 kB
;
(function () {
  System.register(["./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./empty-legacy-CA9D6itE.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./npsSurvey.store-legacy-mkSIzcGP.js", "./cloudPlan.store-legacy-U_Bztyyz.js", "./templates.store-legacy-BBcmaAs_.js", "./focusPanel.store-legacy-DdqLHRV1.js", "./retry-legacy-CTwsGM7o.js", "./executions.store-legacy-COqSks8S.js", "./usePinnedData-legacy-CfMMmXZ8.js", "./nodeCreator.store-legacy-BeEd3d8s.js", "./nodeIcon-legacy-D1wFvzkX.js", "./useClipboard-legacy-DEPZr2pv.js", "./useCanvasOperations-legacy-CXe_JeOj.js", "./folders.store-legacy-DbpbLgJq.js", "./NodeIcon-legacy-D0j2KPV5.js", "./versions.store-legacy-BtvVzXUy.js", "./banners.store-legacy-BstdBex0.js", "./dataTable.store-legacy-CZUet4xq.js", "./ProjectIcon-legacy-BKmF89ad.js", "./CredentialIcon-legacy-hdZE46El.js", "./TimeAgo-legacy-okNrPxgf.js", "./roles.store-legacy-DLKI2yRw.js", "./sso.store-legacy-Bv88fDKQ.js", "./router-legacy-jkqiJdjQ.js", "./insights.store-legacy-Ci1jdwui.js", "./insights.constants-legacy-CQF1GF20.js", "./insights.utils-legacy-3m1-63_a.js", "./mcp.constants-legacy-BkbTHrFy.js", "./constants-legacy-DjFSod4r.js", "./chat.store-legacy-2uSv5jQT.js", "./fileUtils-legacy-BbiGYBne.js", "./useRecentResources-legacy-acZiOM1Z.js", "./useMcp-legacy-DUAuzsHK.js", "./mcp.store-legacy-DtuA43Qr.js"], function (_export, _context) {
    "use strict";

    var computed, toDisplayString, createElementBlock, createCommentVNode, unref, ref, createVNode, defineComponent, createBlock, onMounted, renderSlot, normalizeStyle, withCtx, openBlock, createTextVNode, vShow, normalizeClass, createBaseVNode, withDirectives, useI18n, N8nActionBox_default, N8nNotice_default, N8nInfoTip_default, N8nButton_default, N8nInfoAccordion_default, N8nMarkdown_default, ElSwitch, N8nText_default, N8nIcon_default, N8nActionToggle_default, N8nTabs_default, N8nTooltip_default, N8nDataTableServer_default, N8nLoading_default, N8nLink_default, N8nHeading_default, __plugin_vue_export_helper_default, useDocumentTitle, useUsersStore, useWorkflowsStore, useTelemetry, useToast, VIEWS, useRootStore, useClipboard, isIconOrEmoji, ProjectIcon_default, TimeAgo_default, router_default, MCP_DOCS_PAGE_URL, LOADING_INDICATOR_TIMEOUT, useMcp, useMCPStore, __vite_style__, ConnectionParameter_vue_vue_type_script_setup_true_lang_default, container$4, ConnectionParameter_vue_vue_type_style_index_0_lang_module_default, cssModules$7, ConnectionParameter_default, _hoisted_1$2, _hoisted_2$1, _hoisted_3$1, OAuthClientsTable_vue_vue_type_script_setup_true_lang_default, header$1, OAuthClientsTable_vue_vue_type_style_index_0_lang_module_default, cssModules$6, OAuthClientsTable_default, OAuthConnectionInstructions_vue_vue_type_script_setup_true_lang_default, container$3, instructions$1, item$1, label$1, url$1, OAuthConnectionInstructions_vue_vue_type_style_index_0_lang_module_default, cssModules$5, OAuthConnectionInstructions_default, AccessTokenConnectionInstructions_vue_vue_type_script_setup_true_lang_default, container$2, instructions, item, label, url, connectionString, AccessTokenConnectionInstructions_vue_vue_type_style_index_0_lang_module_default, cssModules$4, AccessTokenConnectionInstructions_default, _hoisted_1$1, MCP_ENDPOINT, MCPConnectionInstructions_vue_vue_type_script_setup_true_lang_default, container$1, MCPConnectionInstructions_vue_vue_type_style_index_0_lang_module_default, cssModules$3, MCPConnectionInstructions_default, _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, WorkflowsTable_vue_vue_type_script_setup_true_lang_default, header, separator, ellipsis, WorkflowsTable_vue_vue_type_style_index_0_lang_module_default, cssModules$2, WorkflowsTable_default, McpAccessToggle_vue_vue_type_script_setup_true_lang_default, McpAccessToggle_vue_vue_type_style_index_0_lang_module_default, cssModules$1, McpAccessToggle_default, SettingsMCPView_vue_vue_type_script_setup_true_lang_default, container, SettingsMCPView_vue_vue_type_style_index_0_lang_module_default, cssModules, SettingsMCPView_default;
    return {
      setters: [function (_vueRuntimeEsmBundlerLegacy003Js) {
        computed = _vueRuntimeEsmBundlerLegacy003Js.C;
        toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn;
        createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D;
        createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E;
        unref = _vueRuntimeEsmBundlerLegacy003Js.Gt;
        ref = _vueRuntimeEsmBundlerLegacy003Js.It;
        createVNode = _vueRuntimeEsmBundlerLegacy003Js.M;
        defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P;
        createBlock = _vueRuntimeEsmBundlerLegacy003Js.T;
        onMounted = _vueRuntimeEsmBundlerLegacy003Js.Z;
        renderSlot = _vueRuntimeEsmBundlerLegacy003Js.at;
        normalizeStyle = _vueRuntimeEsmBundlerLegacy003Js.bn;
        withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt;
        openBlock = _vueRuntimeEsmBundlerLegacy003Js.et;
        createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j;
        vShow = _vueRuntimeEsmBundlerLegacy003Js.p;
        normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn;
        createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w;
        withDirectives = _vueRuntimeEsmBundlerLegacy003Js.xt;
      }, function (_MapCacheLegacy005Js) {
        useI18n = _MapCacheLegacy005Js.gt;
      }, function (_srcLegacy007Js) {
        N8nActionBox_default = _srcLegacy007Js.Ct;
        N8nNotice_default = _srcLegacy007Js.D;
        N8nInfoTip_default = _srcLegacy007Js.F;
        N8nButton_default = _srcLegacy007Js.Hn;
        N8nInfoAccordion_default = _srcLegacy007Js.I;
        N8nMarkdown_default = _srcLegacy007Js.M;
        ElSwitch = _srcLegacy007Js.Tt;
        N8nText_default = _srcLegacy007Js.Vn;
        N8nIcon_default = _srcLegacy007Js.Wn;
        N8nActionToggle_default = _srcLegacy007Js.et;
        N8nTabs_default = _srcLegacy007Js.g;
        N8nTooltip_default = _srcLegacy007Js.mt;
        N8nDataTableServer_default = _srcLegacy007Js.s;
        N8nLoading_default = _srcLegacy007Js.tt;
        N8nLink_default = _srcLegacy007Js.ut;
        N8nHeading_default = _srcLegacy007Js.zn;
      }, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) {
        __plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t;
      }, function (_truncateLegacy00hJs) {}, function (_iconLegacy00nJs) {}, function (_emptyLegacy00vJs) {}, function (_useTelemetryLegacy00HJs) {
        useDocumentTitle = _useTelemetryLegacy00HJs.Tn;
        useUsersStore = _useTelemetryLegacy00HJs.nr;
        useWorkflowsStore = _useTelemetryLegacy00HJs.o;
        useTelemetry = _useTelemetryLegacy00HJs.t;
      }, function (_useToastLegacy00JJs) {
        useToast = _useToastLegacy00JJs.t;
      }, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) {
        VIEWS = _constantsLegacy00TJs.Io;
      }, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) {
        useRootStore = _baseOrderByLegacy00ZJs.r;
      }, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_npsSurveyStoreLegacy01bJs) {}, function (_cloudPlanStoreLegacy01dJs) {}, function (_templatesStoreLegacy01fJs) {}, function (_focusPanelStoreLegacy01hJs) {}, function (_retryLegacy01lJs) {}, function (_executionsStoreLegacy01nJs) {}, function (_usePinnedDataLegacy01rJs) {}, function (_nodeCreatorStoreLegacy01tJs) {}, function (_nodeIconLegacy01vJs) {}, function (_useClipboardLegacy01xJs) {
        useClipboard = _useClipboardLegacy01xJs.t;
      }, function (_useCanvasOperationsLegacy01zJs) {}, function (_foldersStoreLegacy01DJs) {}, function (_NodeIconLegacy01FJs) {}, function (_versionsStoreLegacy01LJs) {}, function (_bannersStoreLegacy01PJs) {}, function (_dataTableStoreLegacy01RJs) {}, function (_ProjectIconLegacy02fJs) {
        isIconOrEmoji = _ProjectIconLegacy02fJs.n;
        ProjectIcon_default = _ProjectIconLegacy02fJs.t;
      }, function (_CredentialIconLegacy02lJs) {}, function (_TimeAgoLegacy02TJs) {
        TimeAgo_default = _TimeAgoLegacy02TJs.t;
      }, function (_rolesStoreLegacy02ZJs) {}, function (_ssoStoreLegacy039Js) {}, function (_routerLegacy03bJs) {
        router_default = _routerLegacy03bJs.t;
      }, function (_insightsStoreLegacy03dJs) {}, function (_insightsConstantsLegacy03fJs) {}, function (_insightsUtilsLegacy03hJs) {}, function (_mcpConstantsLegacy03jJs) {
        MCP_DOCS_PAGE_URL = _mcpConstantsLegacy03jJs.n;
        LOADING_INDICATOR_TIMEOUT = _mcpConstantsLegacy03jJs.t;
      }, function (_constantsLegacy03lJs) {}, function (_chatStoreLegacy03nJs) {}, function (_fileUtilsLegacy03pJs) {}, function (_useRecentResourcesLegacy03rJs) {}, function (_useMcpLegacy03JJs) {
        useMcp = _useMcpLegacy03JJs.t;
      }, function (_mcpStoreLegacy04VJs) {
        useMCPStore = _mcpStoreLegacy04VJs.t;
      }],
      execute: function () {
        __vite_style__ = document.createElement('style');
        __vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_9i963_123 {\n  display: flex;\n  align-items: stretch;\n  gap: var(--spacing--2xs);\n  background: var(--color--background--light-3);\n  border: var(--border);\n  border-radius: var(--radius);\n  font-size: var(--font-size--sm);\n  overflow: hidden;\n}\n._container_9i963_123 button {\n  border: none;\n  border-radius: 0;\n}\n._container_9i963_123 button:hover {\n  border-color: inherit;\n}\n._container_9i963_123 button + button {\n  border-left: var(--border);\n}\n@media screen and (max-width: 820px) {\n._container_9i963_123 {\n    word-wrap: break-word;\n    margin-top: var(--spacing--2xs);\n}\n}\ncode {\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: pre;\n  padding: var(--spacing--2xs) var(--spacing--3xs);\n}\n._copy-button-wrapper_9i963_157 {\n  display: flex;\n  align-items: center;\n  border-left: var(--border);\n}\n._copy-button_9i963_157 {\n  border: none;\n  border-radius: 0;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._header_yr8i2_123 {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_k3h69_123 {\n  display: flex;\n  flex-direction: column;\n  padding: var(--spacing--xs) var(--spacing--xs) 0;\n}\n._instructions_k3h69_129 {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing--xs);\n  padding-left: var(--spacing--lg);\n  margin: var(--spacing--sm);\n}\n._instructions_k3h69_129 li {\n  min-height: var(--spacing--lg);\n}\n._instructions_k3h69_129 ._item_k3h69_139 {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing--2xs);\n}\n._instructions_k3h69_129 ._item_k3h69_139 .n8n-loading div {\n  height: 32px;\n  width: 300px;\n  margin: 0;\n}\n._instructions_k3h69_129 ._label_k3h69_149 {\n  font-size: var(--font-size--sm);\n  flex: none;\n}\n._instructions_k3h69_129 ._url_k3h69_153 {\n  display: flex;\n  align-items: stretch;\n  gap: var(--spacing--2xs);\n  background: var(--color--background--light-3);\n  border: var(--border);\n  border-radius: var(--radius);\n  font-size: var(--font-size--sm);\n  overflow: hidden;\n}\n._instructions_k3h69_129 ._url_k3h69_153 code {\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: pre;\n  padding: var(--spacing--2xs) var(--spacing--3xs);\n}\n._instructions_k3h69_129 ._url_k3h69_153 ._copy-url-wrapper_k3h69_169 {\n  display: flex;\n  align-items: center;\n  border-left: var(--border);\n}\n._instructions_k3h69_129 ._url_k3h69_153 ._copy-url-button_k3h69_174 {\n  border: none;\n  border-radius: 0;\n}\n@media screen and (max-width: 820px) {\n._instructions_k3h69_129 ._url_k3h69_153 {\n    word-wrap: break-word;\n    margin-top: var(--spacing--2xs);\n}\n}\n._clients-table_k3h69_185 {\n  padding: 0 var(--spacing--lg);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_1r8bk_123 {\n  display: flex;\n  flex-direction: column;\n  padding: var(--spacing--xs);\n}\n._instructions-container_1r8bk_129 .notice {\n  margin: var(--spacing--sm) var(--spacing--lg) var(--spacing--md);\n}\n._instructions_1r8bk_129 {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing--xs);\n  padding-left: var(--spacing--lg);\n  margin: var(--spacing--sm);\n}\n._instructions_1r8bk_129 li {\n  min-height: var(--spacing--lg);\n}\n._instructions_1r8bk_129 ._item_1r8bk_143 {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing--2xs);\n}\n._instructions_1r8bk_129 ._item_1r8bk_143 .n8n-loading div {\n  height: 32px;\n  width: 300px;\n  margin: 0;\n}\n._instructions_1r8bk_129 ._label_1r8bk_153 {\n  font-size: var(--font-size--sm);\n  flex: none;\n}\n._instructions_1r8bk_129 ._url_1r8bk_157 {\n  display: flex;\n  align-items: stretch;\n  gap: var(--spacing--2xs);\n  background: var(--color--background--light-3);\n  border: var(--border);\n  border-radius: var(--radius);\n  font-size: var(--font-size--sm);\n  overflow: hidden;\n}\n._instructions_1r8bk_129 ._url_1r8bk_157 code {\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: pre;\n  padding: var(--spacing--2xs) var(--spacing--3xs);\n}\n._instructions_1r8bk_129 ._url_1r8bk_157 ._copy-url-wrapper_1r8bk_173 {\n  display: flex;\n  align-items: center;\n  border-left: var(--border);\n}\n._instructions_1r8bk_129 ._url_1r8bk_157 ._copy-url-button_1r8bk_178 {\n  border: none;\n  border-radius: 0;\n}\n@media screen and (max-width: 820px) {\n._instructions_1r8bk_129 ._url_1r8bk_157 {\n    word-wrap: break-word;\n    margin-top: var(--spacing--2xs);\n}\n}\n._connectionString_1r8bk_189 {\n  flex-grow: 1;\n  position: relative;\n  padding: 0 var(--spacing--lg);\n  margin-bottom: var(--spacing--sm);\n}\n._connectionString_1r8bk_189 .n8n-markdown {\n  width: 100%;\n}\n._connectionString_1r8bk_189 code {\n  font-size: var(--font-size--xs);\n  tab-size: 1;\n}\n._connectionString_1r8bk_189:hover ._copy-json-button_1r8bk_202 {\n  display: flex;\n}\n._copy-json-button_1r8bk_202 {\n  position: absolute;\n  top: var(--spacing--xl);\n  right: var(--spacing--2xl);\n  display: none;\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_1n2r0_123 {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing--md);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._workflow-table-container_1c109_123 .table-pagination {\n  display: none;\n}\n._header_1c109_127 {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n._workflow-table_1c109_123 tr:last-child {\n  border-bottom: none !important;\n}\n._workflow-cell_1c109_137,\n._parent-folder_1c109_138 {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing--4xs);\n}\n._workflow-cell_1c109_137 ._separator_1c109_143,\n._workflow-cell_1c109_137 ._ellipsis_1c109_144,\n._parent-folder_1c109_138 ._separator_1c109_143,\n._parent-folder_1c109_138 ._ellipsis_1c109_144 {\n  padding-bottom: 1px;\n  color: var(--color--text--tint-1);\n}\n._description-cell_1c109_151 {\n  display: -webkit-inline-box;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp: 3;\n  line-clamp: 3;\n  overflow: hidden;\n  font-style: italic;\n}\n._description-popper_1c109_160 {\n  min-width: 300px;\n}\n._table-link_1c109_164 {\n  color: var(--color--text);\n}\n._table-link_1c109_164 .n8n-text {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing--3xs);\n}\n._table-link_1c109_164 .n8n-text ._link-icon_1c109_172 {\n  display: none;\n}\n._table-link_1c109_164 .n8n-text:hover ._link-icon_1c109_172 {\n  display: inline-flex;\n}\n._table-link_1c109_164._project-link_1c109_178 .n8n-text {\n  gap: 0;\n}\n._table-link_1c109_164._project-link_1c109_178 ._link-icon_1c109_172 {\n  margin-left: var(--spacing--3xs);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._mcp-access-toggle_p4msq_123 {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing--sm);\n  width: 100%;\n}\n._main-toggle-container_p4msq_130 {\n  display: flex;\n  align-items: center;\n  padding: var(--spacing--sm);\n  justify-content: space-between;\n  flex-shrink: 0;\n  border-radius: var(--radius);\n  border: var(--border);\n}\n._main-toggle-info_p4msq_140 {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: flex-start;\n}\n._main-toggle_p4msq_130 {\n  display: flex;\n  justify-content: flex-end;\n  align-items: center;\n  flex-shrink: 0;\n}\n._toggle-notice_p4msq_154 {\n  display: flex;\n  align-items: center;\n  gap: var(--spacing--4xs);\n}/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n  --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n._container_727ie_123 {\n  display: flex;\n  flex-direction: column;\n  gap: var(--spacing--lg);\n}/*$vite$:1*/";
        document.head.appendChild(__vite_style__);
        //#region src/features/ai/mcpAccess/components/connectionInstructions/ConnectionParameter.vue?vue&type=script&setup=true&lang.ts
        ConnectionParameter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "ConnectionParameter",
          props: {
            value: {},
            allowCopy: {
              type: Boolean,
              default: true
            },
            maxWidth: {
              default: void 0
            }
          },
          emits: ["copy"],
          setup(__props, {
            emit: __emit
          }) {
            const {
              copy,
              copied,
              isSupported
            } = useClipboard();
            const i18n = useI18n();
            const props = __props;
            const emit = __emit;
            const handleCopy = async value => {
              await copy(value);
              emit("copy", value);
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style.container),
                style: normalizeStyle({
                  maxWidth: props.maxWidth ? props.maxWidth + "px" : "none"
                })
              }, [createBaseVNode("code", null, toDisplayString(props.value), 1), createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["copy-button-wrapper"])
              }, [renderSlot(_ctx.$slots, "customActions"), createVNode(unref(N8nTooltip_default), {
                disables: !unref(isSupported),
                content: unref(copied) ? unref(i18n).baseText("generic.copied") : unref(i18n).baseText("generic.copy"),
                placement: "right"
              }, {
                default: withCtx(() => [props.allowCopy && unref(isSupported) ? (openBlock(), createBlock(unref(N8nButton_default), {
                  key: 0,
                  type: "tertiary",
                  icon: unref(copied) ? "clipboard-check" : "clipboard",
                  square: true,
                  class: normalizeClass(_ctx.$style["copy-button"]),
                  onClick: _cache[0] || (_cache[0] = $event => handleCopy(props.value))
                }, null, 8, ["icon", "class"])) : createCommentVNode("", true)]),
                _: 1
              }, 8, ["disables", "content"])], 2)], 6);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/ConnectionParameter.vue?vue&type=style&index=0&lang.module.scss
        container$4 = "_container_9i963_123";
        ConnectionParameter_vue_vue_type_style_index_0_lang_module_default = {
          container: container$4,
          "copy-button-wrapper": "_copy-button-wrapper_9i963_157",
          "copy-button": "_copy-button_9i963_157"
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/ConnectionParameter.vue
        cssModules$7 = {
          "$style": ConnectionParameter_vue_vue_type_style_index_0_lang_module_default
        };
        ConnectionParameter_default = /* @__PURE__ */__plugin_vue_export_helper_default(ConnectionParameter_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$7]]); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthClientsTable.vue?vue&type=script&setup=true&lang.ts
        _hoisted_1$2 = {
          "data-test-id": "oauth-clients-table"
        };
        _hoisted_2$1 = {
          key: 0
        };
        _hoisted_3$1 = {
          key: 1,
          class: "mt-s mb-xl"
        };
        OAuthClientsTable_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "OAuthClientsTable",
          props: {
            clients: {},
            loading: {
              type: Boolean
            }
          },
          emits: ["revokeClient", "refresh"],
          setup(__props, {
            emit: __emit
          }) {
            const i18n = useI18n();
            const props = __props;
            const emit = __emit;
            const tableHeaders = ref([{
              title: i18n.baseText("settings.mcp.oAuthClients.table.clientName"),
              key: "name",
              width: 250,
              disableSort: true,
              value(client) {
                return client.name;
              }
            }, {
              title: i18n.baseText("settings.mcp.oAuthClients.table.connectedAt"),
              key: "createdAt",
              width: 250,
              disableSort: true,
              value() {}
            }, {
              title: "",
              key: "actions",
              align: "end",
              width: 50,
              disableSort: true,
              value() {}
            }]);
            const tableActions = ref([{
              label: i18n.baseText("settings.mcp.oAuthClients.table.action.revokeAccess"),
              value: "revokeClient"
            }]);
            const onTableAction = (action, item$2) => {
              if (action === "revokeClient") emit("revokeClient", item$2);
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", _hoisted_1$2, [props.loading ? (openBlock(), createElementBlock("div", _hoisted_2$1, [createVNode(unref(N8nLoading_default), {
                loading: props.loading,
                variant: "h1",
                class: "mb-l"
              }, null, 8, ["loading"]), createVNode(unref(N8nLoading_default), {
                loading: props.loading,
                variant: "p",
                rows: 5,
                "shrink-last": false
              }, null, 8, ["loading"])])) : (openBlock(), createElementBlock("div", _hoisted_3$1, [createBaseVNode("div", {
                class: normalizeClass([_ctx.$style.header, "mb-s"])
              }, [createVNode(unref(N8nHeading_default), {
                size: "medium",
                bold: true
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.oAuthClients.heading")) + " (" + toDisplayString(props.clients.length) + ") ", 1)]),
                _: 1
              }), createVNode(unref(N8nTooltip_default), {
                content: unref(i18n).baseText("settings.mcp.refresh.tooltip")
              }, {
                default: withCtx(() => [createVNode(unref(N8nButton_default), {
                  "data-test-id": "mcp-oauth-clients-refresh-button",
                  size: "small",
                  type: "tertiary",
                  icon: "refresh-cw",
                  square: true,
                  onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit("refresh"))
                })]),
                _: 1
              }, 8, ["content"])], 2), props.clients.length === 0 ? (openBlock(), createBlock(unref(N8nActionBox_default), {
                key: 0,
                "data-test-id": "empty-oauth-clients-list-box",
                heading: unref(i18n).baseText("settings.mcp.oAuthClients.table.empty.title")
              }, null, 8, ["heading"])) : (openBlock(), createBlock(unref(N8nDataTableServer_default), {
                key: 1,
                "data-test-id": "oauth-clients-data-table",
                headers: tableHeaders.value,
                items: props.clients,
                "items-length": props.clients.length
              }, {
                [`item.createdAt`]: withCtx(({
                  item: item$2
                }) => [createVNode(unref(N8nText_default), {
                  "data-test-id": "mcp-client-created-at"
                }, {
                  default: withCtx(() => [createVNode(TimeAgo_default, {
                    date: String(item$2.createdAt)
                  }, null, 8, ["date"])]),
                  _: 2
                }, 1024)]),
                [`item.actions`]: withCtx(({
                  item: item$2
                }) => [createVNode(unref(N8nActionToggle_default), {
                  "data-test-id": "mcp-oauth-client-action-toggle",
                  placement: "bottom",
                  actions: tableActions.value,
                  theme: "dark",
                  onAction: $event => onTableAction($event, item$2)
                }, null, 8, ["actions", "onAction"])]),
                _: 2
              }, 1032, ["headers", "items", "items-length"]))]))]);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthClientsTable.vue?vue&type=style&index=0&lang.module.scss
        header$1 = "_header_yr8i2_123";
        OAuthClientsTable_vue_vue_type_style_index_0_lang_module_default = {
          header: header$1
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthClientsTable.vue
        cssModules$6 = {
          "$style": OAuthClientsTable_vue_vue_type_style_index_0_lang_module_default
        };
        OAuthClientsTable_default = /* @__PURE__ */__plugin_vue_export_helper_default(OAuthClientsTable_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$6]]); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthConnectionInstructions.vue?vue&type=script&setup=true&lang.ts
        OAuthConnectionInstructions_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "OAuthConnectionInstructions",
          props: {
            serverUrl: {},
            clients: {},
            clientsLoading: {
              type: Boolean
            }
          },
          emits: ["revokeClient", "refresh", "urlCopied"],
          setup(__props, {
            emit: __emit
          }) {
            const props = __props;
            const emit = __emit;
            const i18n = useI18n();
            const onRefreshOAuthClients = () => {
              emit("refresh");
            };
            const onRevokeClientAccess = client => {
              emit("revokeClient", client);
            };
            const onUrlCopied = url$2 => {
              emit("urlCopied", url$2);
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style.container)
              }, [createBaseVNode("ol", {
                class: normalizeClass(_ctx.$style.instructions)
              }, [createBaseVNode("li", null, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.item)
              }, [createBaseVNode("span", {
                class: normalizeClass(_ctx.$style.label)
              }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.enableAccess")), 3)], 2)]), createBaseVNode("li", null, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.item)
              }, [createBaseVNode("span", {
                class: normalizeClass(_ctx.$style.label)
              }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.serverUrl")) + ": ", 3), createVNode(ConnectionParameter_default, {
                value: props.serverUrl,
                onCopy: onUrlCopied
              }, null, 8, ["value"])], 2)])], 2), createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["clients-table"])
              }, [createVNode(OAuthClientsTable_default, {
                "data-test-id": "mcp-oauth-clients-table",
                clients: props.clients,
                loading: props.clientsLoading,
                onRevokeClient: onRevokeClientAccess,
                onRefresh: onRefreshOAuthClients
              }, null, 8, ["clients", "loading"])], 2)], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthConnectionInstructions.vue?vue&type=style&index=0&lang.module.scss
        container$3 = "_container_k3h69_123";
        instructions$1 = "_instructions_k3h69_129";
        item$1 = "_item_k3h69_139";
        label$1 = "_label_k3h69_149";
        url$1 = "_url_k3h69_153";
        OAuthConnectionInstructions_vue_vue_type_style_index_0_lang_module_default = {
          container: container$3,
          instructions: instructions$1,
          item: item$1,
          label: label$1,
          url: url$1,
          "copy-url-wrapper": "_copy-url-wrapper_k3h69_169",
          "copy-url-button": "_copy-url-button_k3h69_174",
          "clients-table": "_clients-table_k3h69_185"
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/OAuthConnectionInstructions.vue
        cssModules$5 = {
          "$style": OAuthConnectionInstructions_vue_vue_type_style_index_0_lang_module_default
        };
        OAuthConnectionInstructions_default = /* @__PURE__ */__plugin_vue_export_helper_default(OAuthConnectionInstructions_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$5]]); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/AccessTokenConnectionInstructions.vue?vue&type=script&setup=true&lang.ts
        AccessTokenConnectionInstructions_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "AccessTokenConnectionInstructions",
          props: {
            serverUrl: {},
            apiKey: {},
            loadingApiKey: {
              type: Boolean
            }
          },
          emits: ["rotateKey", "urlCopied", "accessTokenCopied", "connectionStringCopied"],
          setup(__props, {
            emit: __emit
          }) {
            const props = __props;
            const emit = __emit;
            const {
              copy,
              copied,
              isSupported
            } = useClipboard();
            const i18n = useI18n();
            const connectionString$1 = computed(() => {
              return `
{
  "mcpServers": {
    "n8n-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "supergateway",
        "--streamableHttp",
        "${props.serverUrl}",
        "--header",
        "authorization:Bearer ${apiKeyText.value}"
      ]
    }
  }
}
`;
            });
            const isKeyRedacted = computed(() => {
              return props.apiKey.apiKey.includes("******");
            });
            const connectionCode = computed(() => {
              return `\`\`\`json${connectionString$1.value}\`\`\``;
            });
            const apiKeyText = computed(() => {
              if (props.loadingApiKey) return `<${i18n.baseText("generic.loading")}...>`;
              return isKeyRedacted.value ? "<YOUR_ACCESS_TOKEN_HERE>" : props.apiKey.apiKey;
            });
            const handleConnectionStringCopy = async () => {
              await copy(connectionString$1.value);
              emit("connectionStringCopied");
            };
            const handleUrlCopy = url$2 => {
              emit("urlCopied", url$2);
            };
            const handleAccessTokenCopy = () => {
              emit("accessTokenCopied");
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style.container)
              }, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["instructions-container"])
              }, [createBaseVNode("ol", {
                class: normalizeClass(_ctx.$style.instructions)
              }, [createBaseVNode("li", null, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.item)
              }, [createBaseVNode("span", {
                class: normalizeClass(_ctx.$style.label)
              }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.enableAccess")), 3)], 2)]), createBaseVNode("li", null, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.item)
              }, [createBaseVNode("span", {
                class: normalizeClass(_ctx.$style.label)
              }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.serverUrl")) + ": ", 3), createVNode(ConnectionParameter_default, {
                value: props.serverUrl,
                onCopy: handleUrlCopy
              }, null, 8, ["value"])], 2)]), createBaseVNode("li", null, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.item)
              }, [createBaseVNode("span", {
                class: normalizeClass(_ctx.$style.label)
              }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.apiKey.label")) + ": ", 3), props.loadingApiKey ? (openBlock(), createBlock(unref(N8nLoading_default), {
                key: 0,
                loading: props.loadingApiKey,
                class: normalizeClass(_ctx.$style["api-key-loader"])
              }, null, 8, ["loading", "class"])) : (openBlock(), createBlock(ConnectionParameter_default, {
                key: 1,
                value: props.apiKey.apiKey,
                "max-width": 400,
                "allow-copy": !isKeyRedacted.value,
                onCopy: handleAccessTokenCopy
              }, {
                customActions: withCtx(() => [createVNode(unref(N8nTooltip_default), {
                  content: unref(i18n).baseText("settings.mcp.instructions.rotateKey.tooltip")
                }, {
                  default: withCtx(() => [createVNode(unref(N8nButton_default), {
                    type: "tertiary",
                    icon: "refresh-cw",
                    square: true,
                    onClick: _cache[0] || (_cache[0] = $event => emit("rotateKey"))
                  })]),
                  _: 1
                }, 8, ["content"])]),
                _: 1
              }, 8, ["value", "allow-copy"])), !props.loadingApiKey ? (openBlock(), createBlock(unref(N8nInfoTip_default), {
                key: 2,
                type: "tooltip",
                "tooltip-placement": "right"
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.instructions.apiKey.tip")), 1)]),
                _: 1
              })) : createCommentVNode("", true)], 2)])], 2), !isKeyRedacted.value && !props.loadingApiKey ? (openBlock(), createBlock(unref(N8nNotice_default), {
                key: 0,
                theme: "warning",
                class: normalizeClass(_ctx.$style["copy-key-notice"]),
                content: unref(i18n).baseText("settings.mcp.newKey.notice")
              }, null, 8, ["class", "content"])) : createCommentVNode("", true)], 2), createBaseVNode("div", {
                class: normalizeClass(_ctx.$style.connectionString)
              }, [createVNode(unref(N8nInfoAccordion_default), {
                title: unref(i18n).baseText("settings.mcp.instructions.json")
              }, {
                customContent: withCtx(() => [createVNode(unref(N8nMarkdown_default), {
                  content: connectionCode.value
                }, null, 8, ["content"]), createVNode(unref(N8nTooltip_default), {
                  disabled: !unref(isSupported),
                  content: unref(copied) ? unref(i18n).baseText("generic.copied") : unref(i18n).baseText("generic.copy")
                }, {
                  default: withCtx(() => [unref(isSupported) && !props.loadingApiKey ? (openBlock(), createBlock(unref(N8nButton_default), {
                    key: 0,
                    type: "tertiary",
                    icon: unref(copied) ? "clipboard-check" : "clipboard",
                    square: true,
                    class: normalizeClass(_ctx.$style["copy-json-button"]),
                    onClick: handleConnectionStringCopy
                  }, null, 8, ["icon", "class"])) : createCommentVNode("", true)]),
                  _: 1
                }, 8, ["disabled", "content"])]),
                _: 1
              }, 8, ["title"])], 2)], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/AccessTokenConnectionInstructions.vue?vue&type=style&index=0&lang.module.scss
        container$2 = "_container_1r8bk_123";
        instructions = "_instructions_1r8bk_129";
        item = "_item_1r8bk_143";
        label = "_label_1r8bk_153";
        url = "_url_1r8bk_157";
        connectionString = "_connectionString_1r8bk_189";
        AccessTokenConnectionInstructions_vue_vue_type_style_index_0_lang_module_default = {
          container: container$2,
          "instructions-container": "_instructions-container_1r8bk_129",
          instructions,
          item,
          label,
          url,
          "copy-url-wrapper": "_copy-url-wrapper_1r8bk_173",
          "copy-url-button": "_copy-url-button_1r8bk_178",
          connectionString,
          "copy-json-button": "_copy-json-button_1r8bk_202"
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/connectionInstructions/AccessTokenConnectionInstructions.vue
        cssModules$4 = {
          "$style": AccessTokenConnectionInstructions_vue_vue_type_style_index_0_lang_module_default
        };
        AccessTokenConnectionInstructions_default = /* @__PURE__ */__plugin_vue_export_helper_default(AccessTokenConnectionInstructions_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$4]]); //#endregion
        //#region src/features/ai/mcpAccess/components/MCPConnectionInstructions.vue?vue&type=script&setup=true&lang.ts
        _hoisted_1$1 = ["href"];
        MCP_ENDPOINT = "mcp-server/http";
        MCPConnectionInstructions_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "MCPConnectionInstructions",
          props: {
            baseUrl: {},
            apiKey: {},
            loadingApiKey: {
              type: Boolean
            },
            oAuthClients: {},
            loadingOAuthClients: {
              type: Boolean
            }
          },
          emits: ["rotateKey", "revokeClient", "refreshClientList"],
          setup(__props, {
            emit: __emit
          }) {
            const props = __props;
            const emit = __emit;
            const i18n = useI18n();
            const telemetry = useTelemetry();
            const selectedTab = ref("oauth");
            const tabs = ref([{
              label: i18n.baseText("settings.mcp.instructions.tabs.oauth"),
              value: "oauth"
            }, {
              label: i18n.baseText("settings.mcp.instructions.tabs.apiKey"),
              value: "token"
            }]);
            const onTabSelected = tab => {
              selectedTab.value = tab;
            };
            const onClientRevoked = client => {
              emit("revokeClient", client);
              telemetry.track("User revoked access for MCP OAuth client", {
                client_name: client.name
              });
            };
            const trackCopyEvent = payload => {
              telemetry.track("User copied MCP connection parameter", {
                parameter: payload.item,
                source: payload.source
              });
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style.container)
              }, [createVNode(unref(N8nHeading_default), {
                size: "medium",
                bold: true
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.connection.info.heading")), 1)]),
                _: 1
              }), createBaseVNode("div", null, [createVNode(unref(N8nTabs_default), {
                "model-value": selectedTab.value,
                options: tabs.value,
                "onUpdate:modelValue": onTabSelected
              }, null, 8, ["model-value", "options"]), withDirectives(createVNode(OAuthConnectionInstructions_default, {
                "server-url": `${props.baseUrl}${MCP_ENDPOINT}`,
                clients: props.oAuthClients,
                "clients-loading": props.loadingOAuthClients,
                onRevokeClient: onClientRevoked,
                onRefresh: _cache[0] || (_cache[0] = $event => emit("refreshClientList")),
                onUrlCopied: _cache[1] || (_cache[1] = $event => trackCopyEvent({
                  item: "server-url",
                  source: "oauth-tab"
                }))
              }, null, 8, ["server-url", "clients", "clients-loading"]), [[vShow, selectedTab.value === "oauth"]]), withDirectives(createVNode(AccessTokenConnectionInstructions_default, {
                "server-url": `${props.baseUrl}${MCP_ENDPOINT}`,
                "api-key": props.apiKey,
                "loading-api-key": props.loadingApiKey,
                onRotateKey: _cache[2] || (_cache[2] = $event => emit("rotateKey")),
                onConnectionStringCopied: _cache[3] || (_cache[3] = $event => trackCopyEvent({
                  item: "mcp-json",
                  source: "token-tab"
                })),
                onAccessTokenCopied: _cache[4] || (_cache[4] = $event => trackCopyEvent({
                  item: "access-token",
                  source: "token-tab"
                })),
                onUrlCopied: _cache[5] || (_cache[5] = $event => trackCopyEvent({
                  item: "server-url",
                  source: "token-tab"
                }))
              }, null, 8, ["server-url", "api-key", "loading-api-key"]), [[vShow, selectedTab.value === "token"]]), createVNode(unref(N8nText_default), {
                size: "small",
                "data-test-id": "mcp-connection-instructions-docs-text"
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.instructions.docs.part1")) + " ", 1), createBaseVNode("a", {
                  href: unref(MCP_DOCS_PAGE_URL),
                  target: "_blank"
                }, toDisplayString(unref(i18n).baseText("settings.mcp.instructions.docs.part2")), 9, _hoisted_1$1)]),
                _: 1
              })])], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/MCPConnectionInstructions.vue?vue&type=style&index=0&lang.module.scss
        container$1 = "_container_1n2r0_123";
        MCPConnectionInstructions_vue_vue_type_style_index_0_lang_module_default = {
          container: container$1
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/MCPConnectionInstructions.vue
        cssModules$3 = {
          "$style": MCPConnectionInstructions_vue_vue_type_style_index_0_lang_module_default
        };
        MCPConnectionInstructions_default = /* @__PURE__ */__plugin_vue_export_helper_default(MCPConnectionInstructions_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$3]]); //#endregion
        //#region src/features/ai/mcpAccess/components/WorkflowsTable.vue?vue&type=script&setup=true&lang.ts
        _hoisted_1 = {
          key: 0
        };
        _hoisted_2 = {
          key: 1,
          class: "mt-s mb-xl"
        };
        _hoisted_3 = {
          key: 1
        };
        _hoisted_4 = {
          key: 0
        };
        WorkflowsTable_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "WorkflowsTable",
          props: {
            workflows: {},
            loading: {
              type: Boolean
            }
          },
          emits: ["removeMcpAccess", "refresh"],
          setup(__props, {
            emit: __emit
          }) {
            const props = __props;
            const emit = __emit;
            const i18n = useI18n();
            const tableHeaders = ref([{
              title: i18n.baseText("generic.project"),
              key: "homeProject",
              width: 150,
              disableSort: true,
              value() {}
            }, {
              title: i18n.baseText("settings.mcp.workflowsTable.workflow"),
              key: "workflow",
              width: 200,
              disableSort: true,
              value() {}
            }, {
              title: i18n.baseText("generic.description"),
              key: "description",
              width: 350,
              disableSort: true,
              value() {}
            }, {
              title: "",
              key: "actions",
              align: "end",
              width: 50,
              disableSort: true,
              value() {}
            }]);
            const tableActions = ref([{
              label: i18n.baseText("settings.mcp.workflows.table.action.removeMCPAccess"),
              value: "removeFromMCP"
            }]);
            const getProjectIcon = workflow => {
              if (workflow.homeProject?.type === "personal") return {
                type: "icon",
                value: "user"
              };else if (workflow.homeProject?.name) return isIconOrEmoji(workflow.homeProject.icon) ? workflow.homeProject.icon : {
                type: "icon",
                value: "layers"
              };else return {
                type: "icon",
                value: "house"
              };
            };
            const getProjectName = workflow => {
              if (workflow.homeProject?.type === "personal") return i18n.baseText("projects.menu.personal");
              return workflow.homeProject?.name ?? "";
            };
            const onWorkflowAction = (action, workflow) => {
              switch (action) {
                case "removeFromMCP":
                  emit("removeMcpAccess", workflow);
                  break;
                default:
                  break;
              }
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style["workflow-table-container"])
              }, [props.loading ? (openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(N8nLoading_default), {
                loading: props.loading,
                variant: "h1",
                class: "mb-l"
              }, null, 8, ["loading"]), createVNode(unref(N8nLoading_default), {
                loading: props.loading,
                variant: "p",
                rows: 5,
                "shrink-last": false
              }, null, 8, ["loading"])])) : (openBlock(), createElementBlock("div", _hoisted_2, [createBaseVNode("div", {
                class: normalizeClass([_ctx.$style.header, "mb-s"])
              }, [createVNode(unref(N8nHeading_default), {
                size: "medium",
                bold: true
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.available.workflows.heading")) + " (" + toDisplayString(props.workflows.length) + ") ", 1)]),
                _: 1
              }), createVNode(unref(N8nTooltip_default), {
                content: unref(i18n).baseText("settings.mcp.refresh.tooltip")
              }, {
                default: withCtx(() => [createVNode(unref(N8nButton_default), {
                  "data-test-id": "mcp-workflows-refresh-button",
                  size: "small",
                  type: "tertiary",
                  icon: "refresh-cw",
                  square: true,
                  onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit("refresh"))
                })]),
                _: 1
              }, 8, ["content"])], 2), props.workflows.length === 0 ? (openBlock(), createBlock(unref(N8nActionBox_default), {
                key: 0,
                "data-test-id": "empty-workflow-list-box",
                heading: unref(i18n).baseText("settings.mcp.empty.title"),
                description: unref(i18n).baseText("settings.mcp.empty.description")
              }, null, 8, ["heading", "description"])) : (openBlock(), createBlock(unref(N8nDataTableServer_default), {
                key: 1,
                class: normalizeClass(_ctx.$style["workflow-table"]),
                "data-test-id": "mcp-workflow-table",
                headers: tableHeaders.value,
                items: props.workflows,
                "items-length": props.workflows.length
              }, {
                [`item.workflow`]: withCtx(({
                  item: item$2
                }) => [createBaseVNode("div", {
                  class: normalizeClass(_ctx.$style["workflow-cell"]),
                  "data-test-id": "mcp-workflow-cell"
                }, [item$2.parentFolder?.parentFolderId ? (openBlock(), createElementBlock("span", {
                  key: 0,
                  class: normalizeClass(_ctx.$style["parent-folder"]),
                  "data-test-id": "mcp-workflow-grandparent-folder"
                }, [createBaseVNode("span", {
                  class: normalizeClass(_ctx.$style.ellipsis)
                }, "...", 2), createBaseVNode("span", {
                  class: normalizeClass(_ctx.$style.separator),
                  "data-test-id": "mcp-workflow-ellipsis-separator"
                }, "/", 2)], 2)) : createCommentVNode("", true), item$2.parentFolder ? (openBlock(), createElementBlock("span", {
                  key: 1,
                  class: normalizeClass(_ctx.$style["parent-folder"])
                }, [item$2.homeProject ? (openBlock(), createBlock(unref(N8nLink_default), {
                  key: 0,
                  "data-test-id": "mcp-workflow-folder-link",
                  to: `/projects/${item$2.homeProject.id}/folders/${item$2.parentFolder.id}/workflows`,
                  theme: "text",
                  class: normalizeClass(_ctx.$style["table-link"]),
                  "new-window": true
                }, {
                  default: withCtx(() => [createVNode(unref(N8nText_default), {
                    "data-test-id": "mcp-workflow-folder-name"
                  }, {
                    default: withCtx(() => [createTextVNode(toDisplayString(item$2.parentFolder.name), 1)]),
                    _: 2
                  }, 1024)]),
                  _: 2
                }, 1032, ["to", "class"])) : (openBlock(), createElementBlock("span", _hoisted_3, [item$2.parentFolder ? (openBlock(), createBlock(unref(N8nIcon_default), {
                  key: 0,
                  icon: "folder",
                  size: 16,
                  color: "text-light"
                })) : createCommentVNode("", true), createVNode(unref(N8nText_default), {
                  "data-test-id": "mcp-workflow-folder-name"
                }, {
                  default: withCtx(() => [createTextVNode(toDisplayString(item$2.parentFolder.name), 1)]),
                  _: 2
                }, 1024)]))], 2)) : createCommentVNode("", true), item$2.parentFolder ? (openBlock(), createElementBlock("span", {
                  key: 2,
                  class: normalizeClass(_ctx.$style["separator"]),
                  "data-test-id": "mcp-workflow-folder-separator"
                }, "/", 2)) : createCommentVNode("", true), createVNode(unref(N8nLink_default), {
                  "data-test-id": "mcp-workflow-name-link",
                  "new-window": true,
                  to: unref(router_default).resolve({
                    name: unref(VIEWS).WORKFLOW,
                    params: {
                      name: item$2.id
                    }
                  }).fullPath,
                  theme: "text",
                  class: normalizeClass(_ctx.$style["table-link"])
                }, {
                  default: withCtx(() => [createVNode(unref(N8nText_default), {
                    "data-test-id": "mcp-workflow-name"
                  }, {
                    default: withCtx(() => [createTextVNode(toDisplayString(item$2.name), 1)]),
                    _: 2
                  }, 1024)]),
                  _: 2
                }, 1032, ["to", "class"])], 2)]),
                [`item.description`]: withCtx(({
                  item: item$2
                }) => [createVNode(unref(N8nTooltip_default), {
                  content: item$2.description,
                  disabled: !item$2.description,
                  "popper-class": _ctx.$style["description-popper"]
                }, {
                  default: withCtx(() => [createBaseVNode("div", {
                    class: normalizeClass(_ctx.$style["description-cell"])
                  }, [createVNode(unref(N8nText_default), {
                    "data-test-id": "mcp-workflow-description"
                  }, {
                    default: withCtx(() => [createTextVNode(toDisplayString(item$2.description || ""), 1)]),
                    _: 2
                  }, 1024)], 2)]),
                  _: 2
                }, 1032, ["content", "disabled", "popper-class"])]),
                [`item.homeProject`]: withCtx(({
                  item: item$2
                }) => [item$2.homeProject ? (openBlock(), createElementBlock("span", _hoisted_4, [createVNode(unref(N8nLink_default), {
                  "data-test-id": "mcp-workflow-project-link",
                  to: unref(router_default).resolve({
                    name: unref(VIEWS).PROJECTS_WORKFLOWS,
                    params: {
                      projectId: item$2.homeProject.id
                    }
                  }).fullPath,
                  theme: "text",
                  class: normalizeClass([_ctx.$style["table-link"], _ctx.$style["project-link"]]),
                  "new-window": true
                }, {
                  default: withCtx(() => [item$2.homeProject ? (openBlock(), createBlock(ProjectIcon_default, {
                    key: 0,
                    icon: getProjectIcon(item$2),
                    "border-less": true
                  }, null, 8, ["icon"])) : createCommentVNode("", true), createVNode(unref(N8nText_default), {
                    "data-test-id": "mcp-workflow-project-name"
                  }, {
                    default: withCtx(() => [createTextVNode(toDisplayString(getProjectName(item$2)), 1)]),
                    _: 2
                  }, 1024), createVNode(unref(N8nIcon_default), {
                    icon: "external-link",
                    class: normalizeClass(_ctx.$style["link-icon"]),
                    color: "text-light"
                  }, null, 8, ["class"])]),
                  _: 2
                }, 1032, ["to", "class"])])) : (openBlock(), createBlock(unref(N8nText_default), {
                  key: 1,
                  "data-test-id": "mcp-workflow-no-project"
                }, {
                  default: withCtx(() => _cache[1] || (_cache[1] = [createTextVNode("-")])),
                  _: 1
                }))]),
                [`item.actions`]: withCtx(({
                  item: item$2
                }) => [createVNode(unref(N8nActionToggle_default), {
                  "data-test-id": "mcp-workflow-action-toggle",
                  placement: "bottom",
                  actions: tableActions.value,
                  theme: "dark",
                  onAction: $event => onWorkflowAction($event, item$2)
                }, null, 8, ["actions", "onAction"])]),
                _: 2
              }, 1032, ["class", "headers", "items", "items-length"]))]))], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/WorkflowsTable.vue?vue&type=style&index=0&lang.module.scss
        header = "_header_1c109_127";
        separator = "_separator_1c109_143";
        ellipsis = "_ellipsis_1c109_144";
        WorkflowsTable_vue_vue_type_style_index_0_lang_module_default = {
          "workflow-table-container": "_workflow-table-container_1c109_123",
          header,
          "workflow-table": "_workflow-table_1c109_123",
          "workflow-cell": "_workflow-cell_1c109_137",
          "parent-folder": "_parent-folder_1c109_138",
          separator,
          ellipsis,
          "description-cell": "_description-cell_1c109_151",
          "description-popper": "_description-popper_1c109_160",
          "table-link": "_table-link_1c109_164",
          "link-icon": "_link-icon_1c109_172",
          "project-link": "_project-link_1c109_178"
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/WorkflowsTable.vue
        cssModules$2 = {
          "$style": WorkflowsTable_vue_vue_type_style_index_0_lang_module_default
        };
        WorkflowsTable_default = /* @__PURE__ */__plugin_vue_export_helper_default(WorkflowsTable_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$2]]); //#endregion
        //#region src/features/ai/mcpAccess/components/McpAccessToggle.vue?vue&type=script&setup=true&lang.ts
        McpAccessToggle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "McpAccessToggle",
          props: {
            modelValue: {
              type: Boolean
            },
            disabled: {
              type: Boolean,
              default: false
            },
            loading: {
              type: Boolean,
              default: false
            }
          },
          emits: ["toggleMcpAccess"],
          setup(__props, {
            emit: __emit
          }) {
            const props = __props;
            const emit = __emit;
            const i18n = useI18n();
            const onUpdateMCPEnabled = value => {
              emit("toggleMcpAccess", typeof value === "boolean" ? value : Boolean(value));
            };
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style["mcp-access-toggle"])
              }, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["main-toggle-container"])
              }, [createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["main-toggle-info"])
              }, [createVNode(unref(N8nText_default), {
                bold: true
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.toggle.label")), 1)]),
                _: 1
              }), createVNode(unref(N8nText_default), {
                size: "small",
                color: "text-light"
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.toggle.description")), 1)]),
                _: 1
              })], 2), createBaseVNode("div", {
                class: normalizeClass(_ctx.$style["main-toggle"]),
                "data-test-id": "mcp-toggle-container"
              }, [createVNode(unref(N8nTooltip_default), {
                content: unref(i18n).baseText("settings.mcp.toggle.disabled.tooltip"),
                disabled: !props.disabled,
                placement: "top"
              }, {
                default: withCtx(() => [createVNode(unref(ElSwitch), {
                  size: "large",
                  "data-test-id": "mcp-access-toggle",
                  "model-value": props.modelValue,
                  disabled: props.disabled,
                  loading: props.loading,
                  "onUpdate:modelValue": onUpdateMCPEnabled
                }, null, 8, ["model-value", "disabled", "loading"])]),
                _: 1
              }, 8, ["content", "disabled"])], 2)], 2), !props.modelValue ? (openBlock(), createElementBlock("div", {
                key: 0,
                class: normalizeClass(_ctx.$style["toggle-notice"])
              }, [createVNode(unref(N8nText_default), {
                color: "text-base",
                "data-test-id": "mcp-toggle-disabled-notice"
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp.toggle.disabled.notice")), 1)]),
                _: 1
              }), createVNode(unref(N8nLink_default), {
                to: unref(MCP_DOCS_PAGE_URL),
                "new-window": true
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("generic.learnMore")), 1)]),
                _: 1
              }, 8, ["to"])], 2)) : createCommentVNode("", true)], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/components/McpAccessToggle.vue?vue&type=style&index=0&lang.module.scss
        McpAccessToggle_vue_vue_type_style_index_0_lang_module_default = {
          "mcp-access-toggle": "_mcp-access-toggle_p4msq_123",
          "main-toggle-container": "_main-toggle-container_p4msq_130",
          "main-toggle-info": "_main-toggle-info_p4msq_140",
          "main-toggle": "_main-toggle_p4msq_130",
          "toggle-notice": "_toggle-notice_p4msq_154"
        }; //#endregion
        //#region src/features/ai/mcpAccess/components/McpAccessToggle.vue
        cssModules$1 = {
          "$style": McpAccessToggle_vue_vue_type_style_index_0_lang_module_default
        };
        McpAccessToggle_default = /* @__PURE__ */__plugin_vue_export_helper_default(McpAccessToggle_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules$1]]); //#endregion
        //#region src/features/ai/mcpAccess/SettingsMCPView.vue?vue&type=script&setup=true&lang.ts
        SettingsMCPView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({
          __name: "SettingsMCPView",
          setup(__props) {
            const i18n = useI18n();
            const toast = useToast();
            const documentTitle = useDocumentTitle();
            const mcp = useMcp();
            const workflowsStore = useWorkflowsStore();
            const mcpStore = useMCPStore();
            const usersStore = useUsersStore();
            const rootStore = useRootStore();
            const mcpStatusLoading = ref(false);
            const workflowsLoading = ref(false);
            const mcpKeyLoading = ref(false);
            const oAuthClientsLoading = ref(false);
            const availableWorkflows = ref([]);
            const apiKey = computed(() => mcpStore.currentUserMCPKey);
            const connectedOAuthClients = ref([]);
            const isOwner = computed(() => usersStore.isInstanceOwner);
            const isAdmin = computed(() => usersStore.isAdmin);
            const canToggleMCP = computed(() => isOwner.value || isAdmin.value);
            const onToggleMCPAccess = async enabled => {
              try {
                mcpStatusLoading.value = true;
                if (await mcpStore.setMcpAccessEnabled(enabled)) {
                  await fetchAvailableWorkflows();
                  await fetchApiKey();
                  await fetchoAuthCLients();
                } else workflowsLoading.value = false;
                mcp.trackUserToggledMcpAccess(enabled);
              } catch (error) {
                toast.showError(error, i18n.baseText("settings.mcp.toggle.error"));
              } finally {
                mcpStatusLoading.value = false;
                workflowsLoading.value = false;
              }
            };
            const onRemoveMCPAccess = async workflow => {
              try {
                await workflowsStore.updateWorkflowSetting(workflow.id, "availableInMCP", false);
                availableWorkflows.value = availableWorkflows.value.filter(w => w.id !== workflow.id);
              } catch (error) {
                toast.showError(error, i18n.baseText("workflowSettings.toggleMCP.error.title"));
              }
            };
            const fetchAvailableWorkflows = async () => {
              workflowsLoading.value = true;
              try {
                availableWorkflows.value = await mcpStore.fetchWorkflowsAvailableForMCP(1, 200);
              } catch (error) {
                toast.showError(error, i18n.baseText("workflows.list.error.fetching"));
              } finally {
                setTimeout(() => {
                  workflowsLoading.value = false;
                }, 200);
              }
            };
            const fetchApiKey = async () => {
              try {
                mcpKeyLoading.value = true;
                await mcpStore.getOrCreateApiKey();
              } catch (error) {
                toast.showError(error, i18n.baseText("settings.mcp.error.fetching.apiKey"));
              } finally {
                setTimeout(() => {
                  mcpKeyLoading.value = false;
                }, 200);
              }
            };
            const rotateKey = async () => {
              try {
                mcpKeyLoading.value = true;
                await mcpStore.generateNewApiKey();
              } catch (error) {
                toast.showError(error, i18n.baseText("settings.mcp.error.rotating.apiKey"));
              } finally {
                setTimeout(() => {
                  mcpKeyLoading.value = false;
                }, 200);
              }
            };
            const fetchoAuthCLients = async () => {
              try {
                oAuthClientsLoading.value = true;
                connectedOAuthClients.value = await mcpStore.getAllOAuthClients();
              } catch (error) {
                toast.showError(error, i18n.baseText("settings.mcp.error.fetching.oAuthClients"));
              } finally {
                setTimeout(() => {
                  oAuthClientsLoading.value = false;
                }, 200);
              }
            };
            const revokeClientAccess = async client => {
              try {
                await mcpStore.removeOAuthClient(client.id);
                connectedOAuthClients.value = connectedOAuthClients.value.filter(c => c.id !== client.id);
                toast.showMessage({
                  type: "success",
                  title: i18n.baseText("settings.mcp.oAuthClients.revoke.success.title"),
                  message: i18n.baseText("settings.mcp.oAuthClients.revoke.success.message", {
                    interpolate: {
                      name: client.name
                    }
                  })
                });
              } catch (error) {
                toast.showError(error, i18n.baseText("settings.mcp.oAuthClients.revoke.error"));
              }
            };
            const onRefreshOAuthClients = async () => {
              await fetchoAuthCLients();
            };
            const onRefreshWorkflows = async () => {
              await fetchAvailableWorkflows();
            };
            onMounted(async () => {
              documentTitle.set(i18n.baseText("settings.mcp"));
              if (!mcpStore.mcpAccessEnabled) return;
              await fetchAvailableWorkflows();
              await fetchApiKey();
              await fetchoAuthCLients();
            });
            return (_ctx, _cache) => {
              return openBlock(), createElementBlock("div", {
                class: normalizeClass(_ctx.$style.container)
              }, [createVNode(unref(N8nHeading_default), {
                size: "2xlarge",
                class: "mb-2xs"
              }, {
                default: withCtx(() => [createTextVNode(toDisplayString(unref(i18n).baseText("settings.mcp")), 1)]),
                _: 1
              }), createVNode(McpAccessToggle_default, {
                "data-test-id": "mcp-toggle-section",
                "model-value": unref(mcpStore).mcpAccessEnabled,
                disabled: !canToggleMCP.value,
                loading: mcpStatusLoading.value,
                onToggleMcpAccess: onToggleMCPAccess
              }, null, 8, ["model-value", "disabled", "loading"]), unref(mcpStore).mcpAccessEnabled ? (openBlock(), createElementBlock("div", {
                key: 0,
                class: normalizeClass(_ctx.$style.container),
                "data-test-id": "mcp-enabled-section"
              }, [apiKey.value ? (openBlock(), createBlock(MCPConnectionInstructions_default, {
                key: 0,
                "loading-api-key": mcpKeyLoading.value,
                "base-url": unref(rootStore).urlBaseEditor,
                "api-key": apiKey.value,
                "o-auth-clients": connectedOAuthClients.value,
                "loading-o-auth-clients": oAuthClientsLoading.value,
                onRotateKey: rotateKey,
                onRevokeClient: revokeClientAccess,
                onRefreshClientList: onRefreshOAuthClients
              }, null, 8, ["loading-api-key", "base-url", "api-key", "o-auth-clients", "loading-o-auth-clients"])) : createCommentVNode("", true), createVNode(WorkflowsTable_default, {
                "data-test-id": "mcp-workflow-table",
                workflows: availableWorkflows.value,
                loading: workflowsLoading.value,
                onRemoveMcpAccess: onRemoveMCPAccess,
                onRefresh: onRefreshWorkflows
              }, null, 8, ["workflows", "loading"])], 2)) : createCommentVNode("", true)], 2);
            };
          }
        }); //#endregion
        //#region src/features/ai/mcpAccess/SettingsMCPView.vue?vue&type=style&index=0&lang.module.scss
        container = "_container_727ie_123";
        SettingsMCPView_vue_vue_type_style_index_0_lang_module_default = {
          container
        }; //#endregion
        //#region src/features/ai/mcpAccess/SettingsMCPView.vue
        cssModules = {
          "$style": SettingsMCPView_vue_vue_type_style_index_0_lang_module_default
        };
        _export("default", SettingsMCPView_default = /* @__PURE__ */__plugin_vue_export_helper_default(SettingsMCPView_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion
      }
    };
  });
})();