@dawn0608/dsh-mcp-manager 0.0.0-stage → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/client/index.js", "../src/client/i18n.js", "../src/client/page.js", "../src/client/api.js", "../src/client/controller.js", "../src/client/row.js", "../src/client/model.js", "../src/client/style.css"],
4
+ "sourcesContent": ["/**\n * Client half: the MCP settings section, its navigation icon, and the one slot\n * registration that places it beside the shipped Settings pages.\n */\n\nimport * as React from 'react';\nimport { Switch, Tag } from '@deepseek-ai/dsh-client-ui-primitives';\nimport mcpEmblem from '../../icon.svg';\nimport { createTranslator, registerLocale } from './i18n.js';\nimport { createPage } from './page.js';\nimport css from './style.css';\n\nconst h = React.createElement;\n\nfunction McpIcon({ size = 18, active = false } = {}) {\n return h('span', {\n className: 'dshmcp_navIcon',\n 'aria-hidden': true,\n 'data-active': active ? 'true' : undefined,\n style: { width: size, height: size, maskImage: `url(${JSON.stringify(mcpEmblem)})` },\n });\n}\n\nexport const inject = ['slots', 'locale'];\n\nexport function apply(ctx) {\n registerLocale(ctx);\n\n ctx.effect(() => {\n const tag = document.createElement('style');\n tag.dataset.plugin = '@dawn0608/dsh-mcp-manager';\n tag.textContent = css;\n document.head.appendChild(tag);\n return () => {\n tag.remove();\n };\n }, 'mcp-manager: styles');\n\n const translate = createTranslator(ctx);\n const subscribeLocale = listener => ctx.locale.subscribe(listener);\n const localeVersion = () => {\n try {\n const snapshot = ctx.locale.getSnapshot();\n return typeof snapshot.revision === 'number' ? snapshot.revision : 0;\n } catch (error) {\n return 0;\n }\n };\n const Page = createPage({ translate, subscribeLocale, localeVersion, Switch, Tag });\n\n ctx.slots.inject('settings.section', () => ctx.slots.register({\n name: 'settings.section',\n id: 'mcp-manager',\n order: 17,\n label: () => translate('title'),\n }, Page));\n\n ctx.slots.inject('settings.section.icon', () => ctx.slots.register({\n name: 'settings.section.icon',\n id: 'mcp-manager',\n order: 17,\n }, McpIcon));\n}\n", "/** Client dictionaries and the locale-service binding for the MCP settings page. */\n\nexport const NS = 'mcpManager';\n\nexport const DICTS = {\n zh: {\n title: 'MCP \u7BA1\u7406',\n loadFailed: '\u8BFB\u53D6\u914D\u7F6E\u5931\u8D25',\n emptyTitle: '\u8FD8\u6CA1\u6709 MCP \u670D\u52A1',\n duplicate: '\u91CD\u540D',\n duplicateHint: '\u540C\u4E00\u670D\u52A1\u540D\u51FA\u73B0\u591A\u6B21\uFF0CHarness \u53EA\u4F1A\u52A0\u8F7D\u5176\u4E2D\u4E00\u4E2A\u3002',\n readOnly: '\u53EA\u8BFB',\n readOnlyFailure: '\u8BE5\u6761\u76EE\u4E3A\u53EA\u8BFB\uFF0C\u65E0\u6CD5\u5728\u9762\u677F\u4E2D\u4FEE\u6539\u3002',\n unknownName: '\u672A\u547D\u540D\u6761\u76EE',\n readOnlyNotInsert: '\u8BE5 MCP \u6761\u76EE\u4E0D\u5728 insert \u5217\u8868\u4E2D\u3002',\n readOnlyBlockShape: '\u6240\u5728\u7684 patch \u5757\u5305\u542B\u5176\u4ED6\u5B57\u6BB5\u3002',\n readOnlyRowShape: '\u6761\u76EE\u5305\u542B\u9762\u677F\u4E0D\u652F\u6301\u7684\u5B57\u6BB5\u3002',\n readOnlyMissingId: '\u6761\u76EE\u7F3A\u5C11 id\u3002',\n readOnlyDuplicateId: '\u6761\u76EE id \u91CD\u590D\u6216\u88AB\u8986\u76D6\u3002',\n readOnlyConditional: '\u542F\u7528\u72B6\u6001\u662F\u6761\u4EF6\u8868\u8FBE\u5F0F\u3002',\n readOnlyMissingName: '\u6761\u76EE\u7F3A\u5C11 serverName\u3002',\n readOnlyConfig: '\u914D\u7F6E\u7ED3\u6784\u4E0D\u53D7\u652F\u6301\u3002',\n readOnlyConfigEnabled: '\u6761\u76EE\u5728 config \u4E2D\u4F7F\u7528\u4E86 enabled\uFF0C\u65E0\u6CD5\u5B89\u5168\u6539\u5199\u3002',\n transportStdio: 'STDIO',\n transportHttp: 'Streamable HTTP',\n switchLabel: '\u542F\u7528 {name}',\n saving: '\u6B63\u5728\u4FDD\u5B58\u2026',\n invalid: '\u8BF7\u6C42\u65E0\u6548\u3002',\n internal: '\u64CD\u4F5C\u672A\u5B8C\u6210\uFF0C\u8BF7\u67E5\u770B Harness \u65E5\u5FD7\u3002',\n conflict: '\u914D\u7F6E\u6587\u4EF6\u5DF2\u88AB\u5176\u4ED6\u7A0B\u5E8F\u4FEE\u6539\uFF0C\u5DF2\u5237\u65B0\u5217\u8868\uFF0C\u8BF7\u91CD\u8BD5\u3002',\n locked: '\u914D\u7F6E\u6587\u4EF6\u6B63\u88AB\u5176\u4ED6\u64CD\u4F5C\u5360\u7528\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002',\n profileUnavailable: '\u65E0\u6CD5\u5B9A\u4F4D\u6216\u8BFB\u5199\u5F53\u524D profile \u8865\u4E01\u6587\u4EF6\u3002',\n network: '\u65E0\u6CD5\u8FDE\u63A5 Harness\u3002',\n unauthorized: '\u5F53\u524D\u9875\u9762\u6CA1\u6709\u8BBF\u95EE Host \u7684\u6743\u9650\u3002',\n },\n};\n\nDICTS.en = {\n title: 'MCP Management',\n loadFailed: 'Could not read the configuration',\n emptyTitle: 'No MCP servers yet',\n duplicate: 'Duplicate name',\n duplicateHint: 'The same server name appears more than once; Harness loads only one of them.',\n readOnly: 'Read-only',\n readOnlyFailure: 'This entry is read-only and cannot be changed from the panel.',\n unknownName: 'Unnamed entry',\n readOnlyNotInsert: 'This MCP entry is outside an insert list.',\n readOnlyBlockShape: 'Its patch block contains other fields.',\n readOnlyRowShape: 'The entry contains fields this panel does not manage.',\n readOnlyMissingId: 'The entry has no id.',\n readOnlyDuplicateId: 'The entry id is duplicated or overridden.',\n readOnlyConditional: 'Enablement is a conditional expression.',\n readOnlyMissingName: 'The entry has no serverName.',\n readOnlyConfig: 'The configuration shape is unsupported.',\n readOnlyConfigEnabled: 'The entry uses enabled inside config and cannot be rewritten safely.',\n transportStdio: 'STDIO',\n transportHttp: 'Streamable HTTP',\n switchLabel: 'Enable {name}',\n saving: 'Saving\u2026',\n invalid: 'The request is invalid.',\n internal: 'The operation did not complete; check the Harness logs.',\n conflict: 'The configuration changed on disk. The list was refreshed; try again.',\n locked: 'The profile is being written by another operation. Try again shortly.',\n profileUnavailable: 'The profile patch for this desktop profile cannot be located or written.',\n network: 'Could not reach Harness.',\n unauthorized: 'This page is not authorized to call the Host.',\n};\n\n/** Interpolate `{name}` placeholders without depending on the locale service. */\nexport function format(template, params) {\n return String(template).replace(/\\{(\\w+)\\}/g, (match, key) =>\n params && Object.prototype.hasOwnProperty.call(params, key) ? String(params[key]) : match);\n}\n\n/** Register both dictionaries under the plugin namespace; safe when locale is unavailable. */\nexport function registerLocale(ctx) {\n return ctx.effect(() => {\n try {\n return ctx.locale.register(NS, DICTS);\n } catch (error) {\n return () => {};\n }\n }, 'mcp-manager: dictionaries');\n}\n\n/** Resolve the active language through the locale service, falling back to English. */\nexport function createTranslator(ctx) {\n let bound;\n try {\n bound = ctx.locale.bind(NS);\n } catch (error) {\n bound = null;\n }\n const fallback = () => {\n let active = 'en';\n try {\n active = ctx.locale.getSnapshot().active || 'en';\n } catch (error) {\n active = 'en';\n }\n return String(active).toLowerCase().startsWith('zh') ? DICTS.zh : DICTS.en;\n };\n return (key, params) => {\n let text;\n if (bound !== null) {\n try {\n text = bound(key, params);\n } catch (error) {\n text = undefined;\n }\n }\n if (typeof text !== 'string' || text === key) {\n const dict = fallback();\n text = format(dict[key] !== undefined ? dict[key] : DICTS.en[key], params);\n }\n return text;\n };\n}\n", "/** The MCP management page: service status and enablement. */\n\nimport * as React from 'react';\nimport { createController } from './controller.js';\nimport { ServerRow } from './row.js';\n\nconst h = React.createElement;\n\nconst CODE_KEYS = {\n conflict: 'conflict',\n locked: 'locked',\n 'profile-unavailable': 'profileUnavailable',\n network: 'network',\n unauthorized: 'unauthorized',\n 'read-only': 'readOnlyFailure',\n 'not-found': 'conflict',\n 'parse-failed': 'loadFailed',\n 'verify-failed': 'internal',\n 'write-failed': 'internal',\n invalid: 'invalid',\n internal: 'internal',\n};\n\nfunction failureText(translate, failure) {\n const key = CODE_KEYS[(failure && failure.code) || 'internal'] || 'internal';\n return translate(key, failure && failure.params ? failure.params : undefined);\n}\n\nfunction Notice({ children }) {\n return h('p', { className: 'dshmcp_notice dshmcp_notice_error', role: 'alert' }, children);\n}\n\nfunction Skeleton() {\n return h('div', { className: 'dshmcp_rows', 'aria-hidden': true },\n h('div', { className: 'dshmcp_skeletonRow' },\n h('span', { className: 'dshmcp_skeletonLine', 'data-w': '34' }),\n ),\n h('div', { className: 'dshmcp_skeletonRow' },\n h('span', { className: 'dshmcp_skeletonLine', 'data-w': '46' }),\n ),\n );\n}\n\nclass Boundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { failed: false };\n }\n\n static getDerivedStateFromError() {\n return { failed: true };\n }\n\n render() {\n if (this.state.failed) return h('p', { className: 'dshmcp_notice dshmcp_notice_error' }, this.props.fallback);\n return this.props.children;\n }\n}\n\n/**\n * @param {{translate: (key: string, params?: object) => string, subscribeLocale: (listener: () => void) => () => void, localeVersion: () => number, Switch: React.ComponentType<{className?: string, checked: boolean, label: string, disabled: boolean, onChange: (checked: boolean) => void}>, Tag: React.ComponentType<{tone: 'neutral' | 'warning', children: React.ReactNode}>, createStore?: () => ReturnType<typeof createController>}} options\n */\nexport function createPage(options) {\n const { translate, subscribeLocale, localeVersion, Switch, Tag } = options;\n const createStore = options.createStore || createController;\n\n function Page() {\n const storeRef = React.useRef(null);\n if (storeRef.current === null) storeRef.current = createStore();\n const store = storeRef.current;\n const snapshot = React.useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n React.useSyncExternalStore(subscribeLocale, localeVersion, localeVersion);\n\n const servers = snapshot.state && Array.isArray(snapshot.state.servers) ? snapshot.state.servers : [];\n const { busy, action } = snapshot;\n const loading = snapshot.state === null && snapshot.status !== 'error';\n const loadFailure = snapshot.error ? failureText(translate, snapshot.error) : null;\n const actionServer = action && servers.find(server => server.id === action.id && server.name === action.name);\n const actionFailureText = action?.error ? failureText(translate, action.error) : null;\n\n React.useEffect(() => {\n store.start();\n return () => store.stop();\n }, [store]);\n\n return h('section', {\n className: 'dshmcp_page',\n 'aria-labelledby': 'dshmcp-title',\n 'aria-busy': loading ? 'true' : undefined,\n },\n h('h2', { className: 'dshmcp_title', id: 'dshmcp-title' }, translate('title')),\n loading ? h(Skeleton) : null,\n loadFailure && snapshot.state === null\n ? h('div', { className: 'dshmcp_group dshmcp_messagePanel', role: 'alert' },\n h('p', { className: 'dshmcp_messageTitle' }, translate('loadFailed')),\n loadFailure === translate('loadFailed') ? null : h('p', { className: 'dshmcp_hint' }, loadFailure),\n )\n : null,\n snapshot.state !== null\n ? h(React.Fragment, null,\n loadFailure ? h(Notice, null, loadFailure) : null,\n actionFailureText && !actionServer ? h(Notice, null, action.name, ' \u2014 ', actionFailureText) : null,\n servers.length > 0\n ? h('ul', { className: 'dshmcp_rows', role: 'list' },\n servers.map((server, index) => h(ServerRow, {\n key: server.editable ? `service:${server.id}` : `readonly:${index}`,\n server,\n Switch,\n Tag,\n translate,\n busy,\n saving: busy && server === actionServer,\n failure: server === actionServer ? actionFailureText : null,\n onToggle: store.setEnabled,\n })),\n )\n : h('div', { className: 'dshmcp_group dshmcp_messagePanel' },\n h('p', { className: 'dshmcp_messageTitle' }, translate('emptyTitle')),\n ),\n )\n : null,\n );\n }\n\n function SafePage() {\n return h(Boundary, { fallback: translate('internal') }, h(Page));\n }\n SafePage.displayName = 'McpManagerPage';\n\n return SafePage;\n}\n", "/** Browser transport for the settings API. */\n\nconst CONNECTION_PATH = 'api/mcp-manager';\nconst PLAIN_PATH = '/plugin/mcp-manager';\n\nexport class ApiError extends Error {\n constructor(code, status) {\n super(code);\n this.name = 'ApiError';\n this.code = code;\n this.status = status;\n }\n}\n\nfunction streamOrigin() {\n const transport = globalThis.window && globalThis.window.__DSH_TRANSPORT__;\n if (!transport || typeof transport.streamBaseUrl !== 'string' || transport.streamBaseUrl === '') return undefined;\n try {\n const url = new URL(transport.streamBaseUrl, globalThis.location && globalThis.location.href);\n return `${url.protocol === 'wss:' ? 'https:' : url.protocol === 'ws:' ? 'http:' : url.protocol}//${url.host}`;\n } catch {\n return undefined;\n }\n}\n\nfunction documentBase() {\n const location = globalThis.location;\n if (!location || (location.protocol !== 'http:' && location.protocol !== 'https:')) return undefined;\n return location.origin;\n}\n\n/** Candidate URLs, most specific first. Writes stay on the authenticated channel. */\nexport function candidatesFor(method) {\n const urls = [];\n if (method !== 'POST') {\n const stream = streamOrigin();\n if (stream) urls.push(`${stream}${PLAIN_PATH}`);\n const document = documentBase();\n if (document) urls.push(`${document}${PLAIN_PATH}`);\n }\n urls.push(CONNECTION_PATH);\n if (method === 'POST') {\n const document = documentBase();\n if (document) urls.push(`${document}${PLAIN_PATH}`);\n }\n return urls.filter((value, index) => urls.indexOf(value) === index);\n}\n\nfunction isResult(payload) {\n return Boolean(payload) && typeof payload === 'object' && typeof payload.ok === 'boolean';\n}\n\n/**\n * @param {{method?: string, body?: unknown, signal?: AbortSignal, fetchImpl?: typeof fetch}} request\n * @returns {Promise<{status: number, payload: object}>}\n */\nexport async function request(input) {\n const method = input.method || 'GET';\n const fetchImpl = input.fetchImpl || globalThis.fetch;\n const headers = { accept: 'application/json' };\n let body;\n if (input.body !== undefined) {\n headers['content-type'] = 'application/json';\n headers['x-dsh-mcp-manager'] = '1';\n body = JSON.stringify(input.body);\n }\n let lastCode = 'network';\n for (const url of candidatesFor(method)) {\n let response;\n try {\n response = await fetchImpl(url, {\n method,\n headers,\n body,\n cache: 'no-store',\n credentials: 'same-origin',\n signal: input.signal,\n });\n } catch (error) {\n if (error && error.name === 'AbortError') throw new ApiError('aborted', 0);\n lastCode = 'network';\n continue;\n }\n let payload;\n try {\n payload = await response.json();\n } catch {\n payload = undefined;\n }\n if (isResult(payload)) return { status: response.status, payload };\n if (response.status === 401 || response.status === 403) {\n lastCode = 'unauthorized';\n continue;\n }\n if (response.status === 404) {\n lastCode = 'network';\n continue;\n }\n lastCode = 'network';\n }\n throw new ApiError(lastCode, 0);\n}\n", "/** Observable page state: configuration and enablement. */\n\nimport { ApiError, request } from './api.js';\n\nconst POLL_DELAY_MS = 2000;\nconst READ_TIMEOUT_MS = 8000;\n\n/**\n * @param {{fetchImpl?: typeof fetch}} [options]\n */\nexport function createController(options = {}) {\n const fetchImpl = options.fetchImpl;\n let snapshot = {\n status: 'idle',\n state: null,\n error: null,\n busy: false,\n action: null,\n };\n const listeners = new Set();\n let generation = 0;\n let pollTimer;\n let polling;\n let disposed = false;\n\n function publish(patch) {\n if (disposed) return;\n snapshot = { ...snapshot, ...patch };\n for (const listener of listeners) listener();\n }\n\n function subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n }\n\n function getSnapshot() {\n return snapshot;\n }\n\n function failure(error) {\n if (error instanceof ApiError) return { code: error.code };\n return { code: 'network' };\n }\n\n async function load(lifecycleSignal) {\n if (disposed) return;\n const current = ++generation;\n if (snapshot.status === 'idle') publish({ status: 'loading' });\n const timeout = AbortSignal.timeout(READ_TIMEOUT_MS);\n const signal = lifecycleSignal ? AbortSignal.any([lifecycleSignal, timeout]) : timeout;\n try {\n const { payload } = await request({ method: 'GET', fetchImpl, signal });\n if (current !== generation || disposed) return;\n if (payload.ok === true) {\n publish({ status: 'ready', state: payload, error: null });\n } else {\n publish({\n status: snapshot.state === null ? 'error' : 'ready',\n error: { code: payload.code || 'internal', params: payload.params },\n });\n }\n } catch (error) {\n if (current !== generation || disposed) return;\n publish({ status: snapshot.state === null ? 'error' : 'ready', error: failure(error) });\n }\n }\n\n function start() {\n if (polling || disposed) return;\n const session = new AbortController();\n polling = session;\n\n async function poll() {\n if (!snapshot.busy) await load(session.signal);\n if (!session.signal.aborted) pollTimer = setTimeout(poll, POLL_DELAY_MS);\n }\n\n void poll();\n }\n\n async function setEnabled(target, enabled) {\n if (snapshot.busy) return { ok: false, code: 'locked' };\n const action = { id: target.id, name: target.name };\n // A GET that began before this write must not restore the old switch state.\n generation += 1;\n publish({ busy: true, action });\n try {\n const { payload } = await request({\n method: 'POST',\n fetchImpl,\n body: { action: 'setEnabled', id: target.id, name: target.name, rowHash: target.rowHash, enabled },\n });\n if (payload.ok === true) {\n publish({ busy: false, action: null, status: 'ready', state: payload, error: null });\n return { ok: true };\n }\n if (payload.code === 'conflict' || payload.code === 'not-found') await load();\n const error = { code: payload.code, params: payload.params };\n publish({ busy: false, action: { ...action, error } });\n return { ok: false, ...error };\n } catch (error) {\n const details = failure(error);\n publish({ busy: false, action: { ...action, error: details } });\n return { ok: false, ...details };\n }\n }\n\n /** Stop background work without invalidating the controller (React StrictMode remounts). */\n function stop() {\n generation += 1;\n polling?.abort();\n polling = undefined;\n clearTimeout(pollTimer);\n pollTimer = undefined;\n }\n\n function dispose() {\n disposed = true;\n stop();\n listeners.clear();\n }\n\n return { subscribe, getSnapshot, load, setEnabled, start, stop, dispose };\n}\n", "/** Static service summaries with a native enablement switch. */\n\nimport * as React from 'react';\nimport { serverLabel, transportLabel } from './model.js';\n\nconst h = React.createElement;\n\nconst READ_ONLY_KEYS = {\n 'not-insert': 'readOnlyNotInsert',\n 'block-shape': 'readOnlyBlockShape',\n 'row-shape': 'readOnlyRowShape',\n 'missing-id': 'readOnlyMissingId',\n 'duplicate-id': 'readOnlyDuplicateId',\n 'conditional-disabled': 'readOnlyConditional',\n 'missing-name': 'readOnlyMissingName',\n 'config-invalid': 'readOnlyConfig',\n 'config-enabled': 'readOnlyConfigEnabled',\n};\n\nexport function ServerRow({ server, translate, busy, saving, failure, Switch, Tag, onToggle }) {\n const name = serverLabel(server, translate);\n const readOnlyText = server.editable ? null : translate(READ_ONLY_KEYS[server.readOnlyCode] || 'readOnlyConfig');\n const canToggle = server.editable && server.enabled !== null;\n return h('li', { className: 'dshmcp_row' },\n h('span', { className: 'dshmcp_identity' },\n h('span', { className: 'dshmcp_name' }, name),\n server.duplicate ? h('span', { title: translate('duplicateHint') },\n h(Tag, { tone: 'warning' }, translate('duplicate')),\n ) : null,\n readOnlyText ? h(Tag, { tone: 'neutral' }, translate('readOnly')) : null,\n ),\n h('span', { className: 'dshmcp_transport' }, transportLabel(server, translate)),\n canToggle ? h(Switch, {\n className: 'dshmcp_switch',\n checked: server.enabled === true,\n label: translate('switchLabel', { name }),\n disabled: Boolean(busy),\n onChange: enabled => onToggle(server, enabled),\n }) : null,\n saving ? h('p', { className: 'dshmcp_reason', role: 'status' }, translate('saving')) : null,\n failure ? h('p', { className: 'dshmcp_reason dshmcp_notice_error', role: 'alert' }, failure) : null,\n readOnlyText ? h('span', { className: 'dshmcp_reason' }, readOnlyText) : null,\n );\n}\n", "/** Localized labels for the service list. */\n\n/** Format servers for a compact summary line. */\nexport function serverLabel(server, translate) {\n if (server && typeof server.name === 'string' && server.name !== '') return server.name;\n if (server && typeof server.id === 'string' && server.id !== '') return server.id;\n return translate('unknownName');\n}\n\n/** Localized transport name for one server. */\nexport function transportLabel(server, translate) {\n if (server && server.transport === 'stdio') return translate('transportStdio');\n if (server && server.transport === 'streamable-http') return translate('transportHttp');\n return null;\n}\n", "/* Match the host's settings typography, controls and surfaces. */\n\n.dshmcp_navIcon {\n display: inline-block;\n flex-shrink: 0;\n background-color: currentColor;\n mask-position: center;\n mask-repeat: no-repeat;\n mask-size: 150%;\n}\n\n.dshmcp_page {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n min-width: 0;\n padding-top: 16px;\n color: var(--dsw-alias-label-primary);\n font-size: 14px;\n line-height: 22px;\n}\n\n.dshmcp_title {\n min-width: 0;\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 24px;\n overflow-wrap: anywhere;\n}\n\n.dshmcp_group {\n box-sizing: border-box;\n min-width: 0;\n margin: 0;\n border: 0.5px solid var(--dsw-alias-settings-card-stroke, var(--dsw-alias-border-l4));\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill, var(--dsw-alias-bg-layer-2));\n}\n\n.dshmcp_rows {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.dshmcp_row,\n.dshmcp_skeletonRow {\n padding-block: 10px;\n}\n\n.dshmcp_row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto minmax(36px, max-content);\n align-items: center;\n gap: 2px 12px;\n}\n\n.dshmcp_row + .dshmcp_row,\n.dshmcp_skeletonRow + .dshmcp_skeletonRow {\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.dshmcp_identity {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0 8px;\n min-width: 0;\n}\n\n.dshmcp_name {\n min-width: 0;\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n.dshmcp_transport,\n.dshmcp_reason {\n margin: 0;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n overflow-wrap: anywhere;\n}\n\n.dshmcp_transport {\n white-space: nowrap;\n}\n\n/* Composite the native off track over the same base surface as the Plugins page. */\n.dshmcp_switch[aria-checked='false'] {\n background-color: var(--dsw-alias-bg-base);\n background-image: linear-gradient(var(--dsw-alias-border-l3), var(--dsw-alias-border-l3));\n}\n\n.dshmcp_reason {\n grid-column: 1 / -1;\n}\n\n.dshmcp_notice,\n.dshmcp_hint {\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n overflow-wrap: anywhere;\n}\n\n.dshmcp_notice_error {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.dshmcp_hint {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dshmcp_messagePanel {\n display: grid;\n justify-items: start;\n gap: 6px;\n padding: 16px;\n}\n\n.dshmcp_messageTitle {\n margin: 0;\n font-weight: 500;\n}\n\n.dshmcp_skeletonRow {\n display: grid;\n align-items: center;\n min-height: 22px;\n}\n\n.dshmcp_skeletonLine {\n display: block;\n height: 12px;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-skeleton);\n}\n\n.dshmcp_skeletonLine[data-w='34'] { width: 34%; }\n.dshmcp_skeletonLine[data-w='46'] { width: 46%; }\n\n@media (prefers-reduced-motion: no-preference) {\n .dshmcp_skeletonLine {\n animation: dshmcp-pulse 1.6s ease-in-out infinite;\n }\n}\n\n@keyframes dshmcp-pulse {\n 50% { opacity: 0.55; }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "React", "document", "Switch", "Tag", "h", "Switch", "Tag", "h"]
7
+ }