comisai 1.0.16 → 1.0.18

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.
Files changed (90) hide show
  1. package/node_modules/@comis/agent/package.json +1 -1
  2. package/node_modules/@comis/channels/package.json +1 -1
  3. package/node_modules/@comis/cli/dist/wizard/non-interactive.js +1 -0
  4. package/node_modules/@comis/cli/dist/wizard/steps/01-detect-existing.js +2 -0
  5. package/node_modules/@comis/cli/dist/wizard/steps/07-gateway.js +9 -0
  6. package/node_modules/@comis/cli/dist/wizard/steps/10-write-config.js +2 -0
  7. package/node_modules/@comis/cli/dist/wizard/steps/12-finish.js +5 -2
  8. package/node_modules/@comis/cli/dist/wizard/types.d.ts +1 -0
  9. package/node_modules/@comis/cli/package.json +1 -1
  10. package/node_modules/@comis/core/dist/config/schema-gateway.d.ts +17 -2
  11. package/node_modules/@comis/core/dist/config/schema-gateway.js +11 -0
  12. package/node_modules/@comis/core/dist/config/schema.d.ts +60 -57
  13. package/node_modules/@comis/core/package.json +1 -1
  14. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.js +34 -6
  15. package/node_modules/@comis/daemon/package.json +1 -1
  16. package/node_modules/@comis/gateway/package.json +1 -1
  17. package/node_modules/@comis/infra/package.json +1 -1
  18. package/node_modules/@comis/memory/package.json +1 -1
  19. package/node_modules/@comis/scheduler/package.json +1 -1
  20. package/node_modules/@comis/shared/package.json +1 -1
  21. package/node_modules/@comis/skills/package.json +1 -1
  22. package/node_modules/@comis/web/dist/android-chrome-192x192.png +0 -0
  23. package/node_modules/@comis/web/dist/android-chrome-512x512.png +0 -0
  24. package/node_modules/@comis/web/dist/apple-touch-icon.png +0 -0
  25. package/node_modules/@comis/web/dist/assets/agent-detail-BG9MGWWj.js +615 -0
  26. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +2173 -0
  27. package/node_modules/@comis/web/dist/assets/agent-list-LHCJ4rw2.js +504 -0
  28. package/node_modules/@comis/web/dist/assets/approvals-q9VH_IKr.js +54 -0
  29. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +375 -0
  30. package/node_modules/@comis/web/dist/assets/channel-detail-CaInesJM.js +681 -0
  31. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +323 -0
  32. package/node_modules/@comis/web/dist/assets/chat-console-CNmzl0JW.js +943 -0
  33. package/node_modules/@comis/web/dist/assets/config-editor-DX4ITw6y.js +1374 -0
  34. package/node_modules/@comis/web/dist/assets/context-dag-browser-BwiaF5tf.js +393 -0
  35. package/node_modules/@comis/web/dist/assets/context-engine-BZ5Am6hA.js +393 -0
  36. package/node_modules/@comis/web/dist/assets/delivery-view-OfBZof-m.js +392 -0
  37. package/node_modules/@comis/web/dist/assets/diagnostics-view-YFwCxgr2.js +231 -0
  38. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +1 -0
  39. package/node_modules/@comis/web/dist/assets/extract-variables-BM5qyK-s.js +149 -0
  40. package/node_modules/@comis/web/dist/assets/ic-array-editor-B7m6x7-S.js +118 -0
  41. package/node_modules/@comis/web/dist/assets/ic-breadcrumb-CUMpp3BL.js +75 -0
  42. package/node_modules/@comis/web/dist/assets/ic-budget-segment-bar-BtJ6x5mN.js +64 -0
  43. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +352 -0
  44. package/node_modules/@comis/web/dist/assets/ic-confirm-dialog-CCDbB04e.js +110 -0
  45. package/node_modules/@comis/web/dist/assets/ic-connection-dot-CnT1b8xr.js +54 -0
  46. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +277 -0
  47. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +67 -0
  48. package/node_modules/@comis/web/dist/assets/ic-detail-panel-BF83r-if.js +116 -0
  49. package/node_modules/@comis/web/dist/assets/ic-empty-state-60l2ePhd.js +52 -0
  50. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +359 -0
  51. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +33 -0
  52. package/node_modules/@comis/web/dist/assets/ic-layer-waterfall-COvEYMg5.js +69 -0
  53. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +12 -0
  54. package/node_modules/@comis/web/dist/assets/ic-search-input-CSOxY9g7.js +92 -0
  55. package/node_modules/@comis/web/dist/assets/ic-select-Ce-Raudx.js +127 -0
  56. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +95 -0
  57. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +33 -0
  58. package/node_modules/@comis/web/dist/assets/ic-time-range-picker-CypCT68y.js +93 -0
  59. package/node_modules/@comis/web/dist/assets/ic-tool-call-7MaXSsCW.js +146 -0
  60. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +2830 -0
  61. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +1 -0
  62. package/node_modules/@comis/web/dist/assets/mcp-management-BNZPnpDn.js +582 -0
  63. package/node_modules/@comis/web/dist/assets/media-config-BBvTYxOX.js +314 -0
  64. package/node_modules/@comis/web/dist/assets/media-test-BkK3RCRK.js +496 -0
  65. package/node_modules/@comis/web/dist/assets/memory-inspector-1hDGCGat.js +1139 -0
  66. package/node_modules/@comis/web/dist/assets/message-center-CXefwsUu.js +785 -0
  67. package/node_modules/@comis/web/dist/assets/models-C1qcU_j3.js +894 -0
  68. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +1 -0
  69. package/node_modules/@comis/web/dist/assets/observe-view-C0VBhX4C.js +814 -0
  70. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +1496 -0
  71. package/node_modules/@comis/web/dist/assets/pipeline-history-DkfOQ6SW.js +317 -0
  72. package/node_modules/@comis/web/dist/assets/pipeline-history-detail-hyHgD0ai.js +287 -0
  73. package/node_modules/@comis/web/dist/assets/pipeline-list-BPW8hV-q.js +518 -0
  74. package/node_modules/@comis/web/dist/assets/pipeline-monitor-Bip16T7e.js +972 -0
  75. package/node_modules/@comis/web/dist/assets/scheduler-BGgwKd06.js +1182 -0
  76. package/node_modules/@comis/web/dist/assets/security-D15st4xx.js +1224 -0
  77. package/node_modules/@comis/web/dist/assets/session-detail-SGEYNJ0M.js +632 -0
  78. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +1 -0
  79. package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +231 -0
  80. package/node_modules/@comis/web/dist/assets/setup-wizard-nT0tz9QP.js +853 -0
  81. package/node_modules/@comis/web/dist/assets/skills-D8yVfSUy.js +1051 -0
  82. package/node_modules/@comis/web/dist/assets/subagents-HHXMeHYo.js +193 -0
  83. package/node_modules/@comis/web/dist/assets/workspace-manager-BQlr10iH.js +785 -0
  84. package/node_modules/@comis/web/dist/comis-logo.png +0 -0
  85. package/node_modules/@comis/web/dist/favicon-16x16.png +0 -0
  86. package/node_modules/@comis/web/dist/favicon-32x32.png +0 -0
  87. package/node_modules/@comis/web/dist/favicon.ico +0 -0
  88. package/node_modules/@comis/web/dist/index.html +17 -0
  89. package/node_modules/@comis/web/package.json +29 -0
  90. package/package.json +15 -13
@@ -0,0 +1 @@
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}:root{--ic-bg:#030712;--ic-surface:#111827;--ic-surface-2:#1f2937;--ic-border:#374151;--ic-text:#f9fafb;--ic-text-muted:#9ca3af;--ic-text-dim:#858d9d;--ic-accent:#3b82f6;--ic-accent-hover:#2563eb;--ic-success:#22c55e;--ic-warning:#eab308;--ic-error:#ef4444;--ic-info:#06b6d4;--ic-telegram:#26a5e4;--ic-discord:#5865f2;--ic-slack:#4a154b;--ic-whatsapp:#25d366;--ic-line:#00b900;--ic-signal:#3a76f0;--ic-imessage:#34c759;--ic-irc:#9ca3af;--ic-space-xs:4px;--ic-space-sm:8px;--ic-space-md:16px;--ic-space-lg:24px;--ic-space-xl:32px;--ic-space-2xl:48px;--ic-radius-sm:4px;--ic-radius-md:8px;--ic-radius-lg:12px;--ic-radius-xl:16px;--ic-font-mono:"JetBrains Mono", "Fira Code", monospace;--ic-font-sans:"Inter", system-ui, sans-serif;--ic-text-xs:12px;--ic-text-sm:14px;--ic-text-base:16px;--ic-text-lg:18px;--ic-text-xl:20px;--ic-text-2xl:24px;--ic-shadow-sm:0 1px 2px #0000004d;--ic-shadow-md:0 4px 6px #0000004d;--ic-shadow-lg:0 10px 15px #0000004d;--ic-transition:.15s ease;--ic-transition-slow:.3s ease}:focus-visible{outline:2px solid var(--ic-accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.min-h-screen{min-height:100vh}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.capitalize{text-transform:capitalize}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-all{-webkit-user-select:all;user-select:all}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
@@ -0,0 +1,582 @@
1
+ import{a as f,I as v,A as o,b as s,s as b,f as w,i as y,n as m,r as l,t as $}from"./index-CEcM1R_C.js";import"./ic-empty-state-60l2ePhd.js";import"./ic-confirm-dialog-CCDbB04e.js";import"./ic-tag-CPPUnDLF.js";import"./ic-relative-time-3FqpjeAI.js";import"./ic-icon-xeGTVhVG.js";var x=Object.defineProperty,S=Object.getOwnPropertyDescriptor,a=(e,t,i,c)=>{for(var r=c>1?void 0:c?S(t,i):t,p=e.length-1,d;p>=0;p--)(d=e[p])&&(r=(c?d(t,i,r):d(r))||r);return c&&r&&x(t,i,r),r};let n=class extends f{constructor(){super(...arguments),this.rpcClient=null,this.apiClient=null,this.eventDispatcher=null,this._loadState="loading",this._servers=[],this._mcpConfig=[],this._expandedServer=null,this._serverDetail=null,this._showAddForm=!1,this._disconnectTarget=null,this._deleteTarget=null,this._detailLoading=!1,this._showInstructions=!1,this._testingServer=null,this._testResult=null,this._newServerName="",this._newServerTransport="stdio",this._newServerCommand="",this._newServerUrl="",this._newServerHeaders="",this._newServerEnv="",this._rpcStatusUnsub=null}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}willUpdate(e){e.has("rpcClient")&&this.rpcClient&&this._tryLoad()}_tryLoad(){if(!this.rpcClient){this._loadState="loaded";return}this._rpcStatusUnsub?.(),this.rpcClient.status==="connected"?this._loadData():this._rpcStatusUnsub=this.rpcClient.onStatusChange(e=>{e==="connected"&&this._loadData()})}async _loadData(){if(this.rpcClient)try{const[e,t]=await Promise.all([this.rpcClient.call("mcp.list"),this.rpcClient.call("config.read")]);this._servers=e.servers??[],this._mcpConfig=t.config?.integrations?.mcp?.servers??[],this._loadState="loaded"}catch{this._loadState="error"}}async _loadServerDetail(e){if(this.rpcClient){this._detailLoading=!0;try{const t=await this.rpcClient.call("mcp.status",{name:e});this._serverDetail=t,this._expandedServer=e}catch{v.show(`Failed to load tools for ${e}`,"error"),this._expandedServer=null,this._serverDetail=null}finally{this._detailLoading=!1}}}async _patchConfig(e,t,i){if(!this.rpcClient)return!1;try{return await this.rpcClient.call("config.patch",{section:e,key:t,value:i}),!0}catch(c){const r=c instanceof Error?c.message:"Failed to update configuration";return v.show(r,"error"),!1}}_stripRedactedEnv(e){return e.map(t=>{if(!t.env||!Object.values(t.env).some(p=>p==="[REDACTED]"))return t;const{env:c,...r}=t;return r})}_requestDisconnect(e){this._disconnectTarget=e}async _confirmDisconnect(){const e=this._disconnectTarget;if(this._disconnectTarget=null,!(!e||!this.rpcClient))try{await this.rpcClient.call("mcp.disconnect",{name:e}),v.show(`Disconnected ${e}`,"success"),this._expandedServer===e&&(this._expandedServer=null,this._serverDetail=null),this._loadData()}catch{v.show(`Failed to disconnect ${e}`,"error")}}_cancelDisconnect(){this._disconnectTarget=null}async _handleReconnect(e){if(this.rpcClient)try{await this.rpcClient.call("mcp.reconnect",{name:e}),v.show(`Reconnected ${e}`,"success"),this._loadData()}catch{v.show(`Failed to reconnect ${e}`,"error")}}async _handleTest(e){if(this.rpcClient)try{const t=await this.rpcClient.call("mcp.test",{name:e});t.success?v.show(`${e}: test passed`,"success"):v.show(`${e}: test failed${t.message?" — "+t.message:""}`,"error")}catch{v.show(`Failed to test ${e}`,"error")}}_toggleTools(e){this._expandedServer===e?(this._expandedServer=null,this._serverDetail=null,this._showInstructions=!1):(this._showInstructions=!1,this._loadServerDetail(e))}async _toggleServer(e,t){const i=this._mcpConfig.map(r=>r.name===e?{...r,enabled:t}:r);await this._patchConfig("integrations","mcp.servers",this._stripRedactedEnv(i))&&(this._mcpConfig=i)}_removeServer(e){this._deleteTarget=e}async _confirmRemove(){const e=this._deleteTarget;if(this._deleteTarget=null,!e)return;const t=this._mcpConfig.filter(c=>c.name!==e);await this._patchConfig("integrations","mcp.servers",this._stripRedactedEnv(t))&&(this._mcpConfig=t,v.show(`Removed MCP server "${e}"`,"success"),this._loadData())}_cancelRemove(){this._deleteTarget=null}async _addServer(){if(!this._newServerName.trim()){v.show("Server name is required","error");return}const e=this._newServerName.trim();if(this._mcpConfig.some(d=>d.name===e)){v.show(`MCP server "${e}" already exists`,"error");return}if(this._newServerTransport==="stdio"&&!this._newServerCommand.trim()){v.show("Command is required for stdio transport","error");return}if(this._newServerTransport!=="stdio"&&!this._newServerUrl.trim()){v.show("URL is required for remote transport","error");return}const t={name:e,transport:this._newServerTransport,enabled:!0};if(this._newServerTransport==="stdio"){const d=this._newServerCommand.trim().split(/\s+/);t.command=d[0]??"",d.length>1&&(t.args=d.slice(1))}else t.url=this._newServerUrl.trim();const i=this._newServerHeaders.trim();if(i){const d={};for(const h of i.split(`
2
+ `)){const u=h.indexOf(":");if(u>0){const g=h.slice(0,u).trim(),_=h.slice(u+1).trim();g&&(d[g]=_)}}Object.keys(d).length>0&&(t.headers=d)}const c=this._newServerEnv.trim();if(c){const d={};for(const h of c.split(`
3
+ `)){const u=h.indexOf("=");u>0&&(d[h.slice(0,u).trim()]=h.slice(u+1).trim())}Object.keys(d).length>0&&(t.env=d)}const r=[...this._mcpConfig,t];await this._patchConfig("integrations","mcp.servers",this._stripRedactedEnv(r))&&(this._mcpConfig=r,this._newServerName="",this._newServerCommand="",this._newServerUrl="",this._newServerHeaders="",this._newServerEnv="",this._showAddForm=!1,v.show(`Added MCP server "${e}"`,"success"),this._loadData())}async _testServerConfig(e){if(!(!this.rpcClient||this._testingServer)){this._testingServer=e.name,this._testResult=null;try{const t={name:e.name,transport:e.transport};e.transport==="stdio"?(t.command=e.command,t.args=e.args):t.url=e.url,e.env&&Object.keys(e.env).length>0&&(t.env=e.env),e.headers&&Object.keys(e.headers).length>0&&(t.headers=e.headers);const i=await this.rpcClient.call("mcp.test",t);this._testResult={name:e.name,...i}}catch(t){const i=t instanceof Error?t.message:"Test failed",c=i==="Not connected"||i.includes("WebSocket");this._testResult={name:e.name,success:!1,error:c?"Daemon not connected -- wait for reconnection and try again":i}}finally{this._testingServer=null}}}_statusColor(e){switch(e){case"connected":return"green";case"disconnected":return"default";case"connecting":return"yellow";case"reconnecting":return"yellow";case"error":return"red";default:return"default"}}_renderAddServerForm(){return s`
4
+ <div class="add-server-form">
5
+ <div class="add-server-title">Add Server</div>
6
+ <div class="add-server-row">
7
+ <input
8
+ class="add-server-input"
9
+ type="text"
10
+ placeholder="Server name"
11
+ .value=${this._newServerName}
12
+ @input=${e=>{this._newServerName=e.target.value}}
13
+ />
14
+ <select
15
+ class="add-server-select"
16
+ .value=${this._newServerTransport}
17
+ @change=${e=>{this._newServerTransport=e.target.value}}
18
+ >
19
+ <option value="stdio">stdio</option>
20
+ <option value="sse">sse</option>
21
+ <option value="http">http</option>
22
+ </select>
23
+ </div>
24
+ ${this._newServerTransport==="stdio"?s`
25
+ <input
26
+ class="add-server-input"
27
+ type="text"
28
+ placeholder="Command (e.g., npx -y @mcp/server)"
29
+ .value=${this._newServerCommand}
30
+ @input=${e=>{this._newServerCommand=e.target.value}}
31
+ />
32
+ `:s`
33
+ <input
34
+ class="add-server-input"
35
+ type="text"
36
+ placeholder=${this._newServerTransport==="sse"?"URL (e.g., http://localhost:3001/sse)":"URL (e.g., http://localhost:3001/mcp)"}
37
+ .value=${this._newServerUrl}
38
+ @input=${e=>{this._newServerUrl=e.target.value}}
39
+ />
40
+ `}
41
+ ${this._newServerTransport!=="stdio"?s`
42
+ <textarea
43
+ class="add-server-input"
44
+ rows="2"
45
+ placeholder="Custom headers (one per line: Header-Name: value)"
46
+ .value=${this._newServerHeaders}
47
+ @input=${e=>{this._newServerHeaders=e.target.value}}
48
+ style="resize:vertical;font-family:monospace;font-size:0.85rem"
49
+ ></textarea>
50
+ `:o}
51
+ <textarea
52
+ class="add-server-input"
53
+ rows="2"
54
+ placeholder="Environment variables (one per line: KEY=VALUE)"
55
+ .value=${this._newServerEnv}
56
+ @input=${e=>{this._newServerEnv=e.target.value}}
57
+ style="resize:vertical;font-family:monospace;font-size:0.85rem"
58
+ ></textarea>
59
+ <div style="display: flex; gap: var(--ic-space-sm);">
60
+ <button class="add-server-btn" @click=${()=>this._addServer()}>Add Server</button>
61
+ <button class="cancel-btn" @click=${()=>{this._showAddForm=!1,this._newServerName="",this._newServerCommand="",this._newServerUrl="",this._newServerHeaders="",this._newServerEnv=""}}>Cancel</button>
62
+ </div>
63
+ </div>
64
+ `}_renderCapabilityBadges(e){if(!e)return o;const t=[];return e.tools&&t.push(s`<ic-tag variant="info">tools</ic-tag>`),e.resources&&t.push(s`<ic-tag variant="accent">resources</ic-tag>`),e.prompts&&t.push(s`<ic-tag variant="success">prompts</ic-tag>`),t.length===0?o:s`<span class="capability-badges">${t}</span>`}_renderServerVersion(e){return e?s`<span class="server-version">${e.name} v${e.version}</span>`:o}_renderInstructions(){return this._serverDetail?.instructions?s`
65
+ <div class="instructions-section">
66
+ <button
67
+ class="instructions-toggle"
68
+ @click=${()=>{this._showInstructions=!this._showInstructions}}
69
+ >
70
+ ${this._showInstructions?"Hide Instructions":"Show Instructions"}
71
+ </button>
72
+ ${this._showInstructions?s`<div class="instructions-content">${this._serverDetail.instructions}</div>`:o}
73
+ </div>
74
+ `:o}_renderToolList(){return this._detailLoading?s`<div class="tool-loading">Loading tools...</div>`:!this._serverDetail||!this._serverDetail.tools.length?s`<div class="tool-loading">No tools discovered</div>`:s`
75
+ <div class="tool-list">
76
+ ${this._serverDetail.tools.map(e=>s`
77
+ <div class="tool-entry">
78
+ <div class="tool-name">${e.name}</div>
79
+ <div class="tool-qualified">${e.qualifiedName}</div>
80
+ ${e.description?s`<div class="tool-desc">${e.description}</div>`:o}
81
+ </div>
82
+ `)}
83
+ </div>
84
+ ${this._renderInstructions()}
85
+ `}_renderTestResult(e){const t=this._testResult?.name===e?this._testResult:null;return t?t.success?s`<div class="server-test-result server-test-success">Connected -- ${t.toolCount} tool(s): ${t.tools?.join(", ")||"none"}</div>`:s`<div class="server-test-result server-test-error">${t.error}</div>`:o}_renderServer(e){const t=this._expandedServer===e.name,i=e.status==="connected",c=e.status==="disconnected"||e.status==="error"||e.status==="reconnecting",r=this._mcpConfig.find(p=>p.name===e.name);return s`
86
+ <div class="server-card">
87
+ <div class="server-header">
88
+ <ic-tag color=${this._statusColor(e.status)}>${e.status==="reconnecting"&&e.reconnectAttempt?`reconnecting (${e.reconnectAttempt})`:e.status}</ic-tag>
89
+ <span class="server-name">${e.name}</span>
90
+ ${r?s`
91
+ <ic-tag variant=${r.transport==="stdio"?"info":"accent"}>${r.transport}</ic-tag>
92
+ `:o}
93
+ <span class="server-tools-count">${e.toolCount} tool${e.toolCount!==1?"s":""}</span>
94
+ ${this._renderCapabilityBadges(e.capabilities)}
95
+ ${this._renderServerVersion(e.serverVersion)}
96
+ ${e.lastHealthCheck?s`
97
+ <span class="server-health">
98
+ Last check: <ic-relative-time .timestamp=${e.lastHealthCheck}></ic-relative-time>
99
+ </span>
100
+ `:o}
101
+ </div>
102
+ ${e.status==="error"&&e.error?s`
103
+ <span class="server-error">${e.error}</span>
104
+ `:o}
105
+ ${r?s`
106
+ <span class="server-command">
107
+ ${r.transport==="stdio"?`${r.command??""}${r.args?.length?" "+r.args.join(" "):""}`:r.url??""}
108
+ </span>
109
+ ${r.env&&Object.keys(r.env).length>0?s`<span class="server-env-badge" title=${Object.keys(r.env).join(", ")}>env: ${Object.keys(r.env).join(", ")}</span>`:o}
110
+ ${r.headers&&Object.keys(r.headers).length>0?s`<span class="server-env-badge" title=${Object.keys(r.headers).join(", ")}>headers: ${Object.keys(r.headers).join(", ")}</span>`:o}
111
+ `:o}
112
+ <div class="server-actions">
113
+ ${i?s`
114
+ <button class="action-btn danger" @click=${()=>this._requestDisconnect(e.name)}>Disconnect</button>
115
+ `:o}
116
+ ${c?s`
117
+ <button class="action-btn primary" @click=${()=>this._handleReconnect(e.name)}>Reconnect</button>
118
+ `:o}
119
+ <button class="action-btn" @click=${()=>this._handleTest(e.name)}>Test</button>
120
+ <button class="action-btn" @click=${()=>this._toggleTools(e.name)}>
121
+ ${t?"Hide Tools":"Tools"}
122
+ </button>
123
+ ${r?s`
124
+ <input
125
+ type="checkbox"
126
+ class="toggle-checkbox"
127
+ .checked=${r.enabled}
128
+ @change=${p=>{this._toggleServer(e.name,p.target.checked)}}
129
+ aria-label="Enable ${e.name}"
130
+ />
131
+ <button class="action-btn danger" @click=${()=>this._removeServer(e.name)}>Delete</button>
132
+ `:o}
133
+ </div>
134
+ ${this._renderTestResult(e.name)}
135
+ ${t?this._renderToolList():o}
136
+ </div>
137
+ `}_renderConfigOnlyServer(e){const t=this._testingServer===e.name;return s`
138
+ <div class="server-card">
139
+ <div class="server-header">
140
+ <ic-tag color="default">not running</ic-tag>
141
+ <span class="server-name">${e.name}</span>
142
+ <ic-tag variant=${e.transport==="stdio"?"info":"accent"}>${e.transport}</ic-tag>
143
+ </div>
144
+ <span class="server-command">
145
+ ${e.transport==="stdio"?`${e.command??""}${e.args?.length?" "+e.args.join(" "):""}`:e.url??""}
146
+ </span>
147
+ ${e.env&&Object.keys(e.env).length>0?s`<span class="server-env-badge" title=${Object.keys(e.env).join(", ")}>env: ${Object.keys(e.env).join(", ")}</span>`:o}
148
+ ${e.headers&&Object.keys(e.headers).length>0?s`<span class="server-env-badge" title=${Object.keys(e.headers).join(", ")}>headers: ${Object.keys(e.headers).join(", ")}</span>`:o}
149
+ <div class="server-actions">
150
+ <button
151
+ class="action-btn"
152
+ ?disabled=${t}
153
+ @click=${()=>this._testServerConfig(e)}
154
+ >${t?"Testing...":"Test"}</button>
155
+ <input
156
+ type="checkbox"
157
+ class="toggle-checkbox"
158
+ .checked=${e.enabled}
159
+ @change=${i=>{this._toggleServer(e.name,i.target.checked)}}
160
+ aria-label="Enable ${e.name}"
161
+ />
162
+ <button class="action-btn danger" @click=${()=>this._removeServer(e.name)}>Delete</button>
163
+ </div>
164
+ ${this._renderTestResult(e.name)}
165
+ </div>
166
+ `}render(){if(this._loadState==="loading")return s`<ic-skeleton-view variant="list"></ic-skeleton-view>`;if(this._loadState==="error")return s`
167
+ <div class="error-message">
168
+ Failed to load MCP server data
169
+ <br />
170
+ <button class="retry-btn" @click=${()=>{this._loadData()}}>Retry</button>
171
+ </div>
172
+ `;const e=this._mcpConfig.filter(i=>!this._servers.some(c=>c.name===i.name)),t=this._servers.length>0||e.length>0;return s`
173
+ ${this._showAddForm?this._renderAddServerForm():o}
174
+ ${t?s`
175
+ <div class="header-row">
176
+ <span class="header-title">${this._servers.length+e.length} server${this._servers.length+e.length!==1?"s":""}</span>
177
+ <button class="connect-btn" @click=${()=>{this._showAddForm=!0}}>Add Server</button>
178
+ </div>
179
+ <div class="server-list">
180
+ ${this._servers.map(i=>this._renderServer(i))}
181
+ ${e.map(i=>this._renderConfigOnlyServer(i))}
182
+ </div>
183
+ `:s`
184
+ <ic-empty-state message="No MCP servers configured. Add a server to extend agent capabilities.">
185
+ <button class="connect-btn" @click=${()=>{this._showAddForm=!0}}>Add Server</button>
186
+ </ic-empty-state>
187
+ `}
188
+
189
+ <ic-confirm-dialog
190
+ ?open=${this._disconnectTarget!==null}
191
+ title="Disconnect MCP Server"
192
+ message="This will disconnect the server and its tools will become unavailable."
193
+ confirmLabel="Disconnect"
194
+ variant="danger"
195
+ @confirm=${this._confirmDisconnect}
196
+ @cancel=${this._cancelDisconnect}
197
+ ></ic-confirm-dialog>
198
+
199
+ <ic-confirm-dialog
200
+ ?open=${this._deleteTarget!==null}
201
+ title="Delete MCP Server"
202
+ message="This will remove the server from configuration. The server will be disconnected if currently running."
203
+ confirmLabel="Delete"
204
+ variant="danger"
205
+ @confirm=${this._confirmRemove}
206
+ @cancel=${this._cancelRemove}
207
+ ></ic-confirm-dialog>
208
+ `}};n.styles=[b,w,y`
209
+ :host {
210
+ display: block;
211
+ }
212
+
213
+ .header-row {
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: space-between;
217
+ margin-bottom: var(--ic-space-md);
218
+ }
219
+
220
+ .header-title {
221
+ font-size: var(--ic-text-lg);
222
+ font-weight: 600;
223
+ color: var(--ic-text);
224
+ }
225
+
226
+ .connect-btn {
227
+ padding: 6px 14px;
228
+ font-size: var(--ic-text-sm);
229
+ font-weight: 500;
230
+ background: var(--ic-accent);
231
+ color: white;
232
+ border: none;
233
+ border-radius: var(--ic-radius-sm);
234
+ cursor: pointer;
235
+ font-family: inherit;
236
+ transition: background var(--ic-transition);
237
+ }
238
+
239
+ .connect-btn:hover {
240
+ background: var(--ic-accent-hover);
241
+ }
242
+
243
+ .server-list {
244
+ display: flex;
245
+ flex-direction: column;
246
+ gap: var(--ic-space-sm);
247
+ }
248
+
249
+ .server-card {
250
+ background: var(--ic-surface);
251
+ border: 1px solid var(--ic-border);
252
+ border-radius: var(--ic-radius-md);
253
+ padding: var(--ic-space-md);
254
+ }
255
+
256
+ .server-header {
257
+ display: flex;
258
+ align-items: center;
259
+ gap: var(--ic-space-sm);
260
+ flex-wrap: wrap;
261
+ }
262
+
263
+ .server-name {
264
+ font-weight: 600;
265
+ font-size: var(--ic-text-sm);
266
+ color: var(--ic-text);
267
+ }
268
+
269
+ .server-tools-count {
270
+ font-size: 0.75rem;
271
+ color: var(--ic-text-dim);
272
+ }
273
+
274
+ .server-health {
275
+ font-size: 0.75rem;
276
+ color: var(--ic-text-dim);
277
+ margin-left: auto;
278
+ display: flex;
279
+ align-items: center;
280
+ gap: 4px;
281
+ }
282
+
283
+ .server-actions {
284
+ display: flex;
285
+ gap: var(--ic-space-sm);
286
+ margin-top: var(--ic-space-sm);
287
+ flex-wrap: wrap;
288
+ align-items: center;
289
+ }
290
+
291
+ .action-btn {
292
+ padding: 4px 12px;
293
+ font-size: 0.75rem;
294
+ font-weight: 500;
295
+ border: 1px solid var(--ic-border);
296
+ border-radius: var(--ic-radius-sm);
297
+ background: transparent;
298
+ color: var(--ic-text-muted);
299
+ cursor: pointer;
300
+ font-family: inherit;
301
+ transition: background var(--ic-transition), color var(--ic-transition), border-color var(--ic-transition);
302
+ }
303
+
304
+ .action-btn:hover {
305
+ background: var(--ic-surface-2);
306
+ color: var(--ic-text);
307
+ }
308
+
309
+ .action-btn.danger {
310
+ border-color: var(--ic-error);
311
+ color: var(--ic-error);
312
+ }
313
+
314
+ .action-btn.danger:hover {
315
+ background: var(--ic-error);
316
+ color: white;
317
+ }
318
+
319
+ .action-btn.primary {
320
+ border-color: var(--ic-accent);
321
+ color: var(--ic-accent);
322
+ }
323
+
324
+ .action-btn.primary:hover {
325
+ background: var(--ic-accent);
326
+ color: white;
327
+ }
328
+
329
+ .action-btn:disabled {
330
+ opacity: 0.6;
331
+ cursor: not-allowed;
332
+ }
333
+
334
+ /* Tool list accordion */
335
+ .tool-list {
336
+ margin-top: var(--ic-space-sm);
337
+ padding-top: var(--ic-space-sm);
338
+ border-top: 1px solid var(--ic-border);
339
+ display: flex;
340
+ flex-direction: column;
341
+ gap: var(--ic-space-xs);
342
+ }
343
+
344
+ .tool-entry {
345
+ padding: var(--ic-space-xs) var(--ic-space-sm);
346
+ background: var(--ic-surface-2);
347
+ border-radius: var(--ic-radius-sm);
348
+ }
349
+
350
+ .tool-name {
351
+ font-weight: 600;
352
+ font-size: var(--ic-text-sm);
353
+ color: var(--ic-text);
354
+ }
355
+
356
+ .tool-qualified {
357
+ font-family: var(--ic-font-mono, ui-monospace, monospace);
358
+ font-size: 0.75rem;
359
+ color: var(--ic-text-dim);
360
+ }
361
+
362
+ .tool-desc {
363
+ font-size: 0.75rem;
364
+ color: var(--ic-text-muted);
365
+ margin-top: 2px;
366
+ }
367
+
368
+ .tool-loading {
369
+ font-size: 0.75rem;
370
+ color: var(--ic-text-dim);
371
+ padding: var(--ic-space-xs);
372
+ }
373
+
374
+ /* Add server form */
375
+ .add-server-form {
376
+ background: var(--ic-surface);
377
+ border: 1px solid var(--ic-border);
378
+ border-radius: var(--ic-radius-md);
379
+ padding: var(--ic-space-md);
380
+ margin-bottom: var(--ic-space-md);
381
+ display: flex;
382
+ flex-direction: column;
383
+ gap: var(--ic-space-sm);
384
+ max-width: 32rem;
385
+ }
386
+
387
+ .add-server-title {
388
+ font-size: var(--ic-text-sm);
389
+ font-weight: 600;
390
+ color: var(--ic-text-muted);
391
+ }
392
+
393
+ .add-server-row {
394
+ display: flex;
395
+ gap: var(--ic-space-sm);
396
+ flex-wrap: wrap;
397
+ }
398
+
399
+ .add-server-input {
400
+ flex: 1;
401
+ min-width: 10rem;
402
+ padding: 0.5rem 0.75rem;
403
+ background: var(--ic-surface-2);
404
+ border: 1px solid var(--ic-border);
405
+ border-radius: var(--ic-radius-md);
406
+ color: var(--ic-text);
407
+ font-family: inherit;
408
+ font-size: var(--ic-text-sm);
409
+ }
410
+
411
+ .add-server-input:focus {
412
+ outline: none;
413
+ border-color: var(--ic-accent);
414
+ }
415
+
416
+ .add-server-select {
417
+ padding: 0.5rem 0.75rem;
418
+ background: var(--ic-surface-2);
419
+ border: 1px solid var(--ic-border);
420
+ border-radius: var(--ic-radius-md);
421
+ color: var(--ic-text);
422
+ font-family: inherit;
423
+ font-size: var(--ic-text-sm);
424
+ }
425
+
426
+ .add-server-btn {
427
+ padding: 0.5rem 1rem;
428
+ background: var(--ic-accent);
429
+ color: white;
430
+ border: none;
431
+ border-radius: var(--ic-radius-md);
432
+ font-size: var(--ic-text-sm);
433
+ cursor: pointer;
434
+ white-space: nowrap;
435
+ }
436
+
437
+ .add-server-btn:hover {
438
+ opacity: 0.9;
439
+ }
440
+
441
+ .cancel-btn {
442
+ padding: 6px 14px;
443
+ font-size: var(--ic-text-sm);
444
+ font-weight: 500;
445
+ background: transparent;
446
+ color: var(--ic-text-muted);
447
+ border: 1px solid var(--ic-border);
448
+ border-radius: var(--ic-radius-sm);
449
+ cursor: pointer;
450
+ font-family: inherit;
451
+ transition: color var(--ic-transition), border-color var(--ic-transition);
452
+ }
453
+
454
+ .cancel-btn:hover {
455
+ color: var(--ic-text);
456
+ border-color: var(--ic-text-dim);
457
+ }
458
+
459
+ .error-message {
460
+ text-align: center;
461
+ padding: 2rem;
462
+ color: var(--ic-text-dim);
463
+ }
464
+
465
+ .retry-btn {
466
+ margin-top: var(--ic-space-sm);
467
+ padding: 6px 16px;
468
+ background: var(--ic-accent);
469
+ color: white;
470
+ border: none;
471
+ border-radius: var(--ic-radius-sm);
472
+ cursor: pointer;
473
+ font-family: inherit;
474
+ font-size: var(--ic-text-sm);
475
+ }
476
+
477
+ .retry-btn:hover {
478
+ background: var(--ic-accent-hover);
479
+ }
480
+
481
+ /* Config detail elements */
482
+ .server-command {
483
+ font-family: var(--ic-font-mono, ui-monospace, monospace);
484
+ font-size: 0.75rem;
485
+ color: var(--ic-text-dim);
486
+ word-break: break-all;
487
+ }
488
+
489
+ .server-error {
490
+ display: block;
491
+ color: var(--ic-color-error, #dc2626);
492
+ font-size: 0.8rem;
493
+ padding: 0.25rem 0.5rem;
494
+ margin-top: 0.25rem;
495
+ word-break: break-word;
496
+ }
497
+
498
+ .server-env-badge {
499
+ display: inline-block;
500
+ font-family: var(--ic-font-mono, ui-monospace, monospace);
501
+ font-size: 0.75rem;
502
+ color: var(--ic-text-dim);
503
+ background: rgba(147, 130, 220, 0.15);
504
+ padding: 1px 6px;
505
+ border-radius: 4px;
506
+ }
507
+
508
+ .toggle-checkbox {
509
+ cursor: pointer;
510
+ }
511
+
512
+ .config-only-label {
513
+ font-size: 0.75rem;
514
+ color: var(--ic-text-dim);
515
+ font-style: italic;
516
+ }
517
+
518
+ /* Test result display */
519
+ .server-test-result {
520
+ font-size: var(--ic-text-xs);
521
+ padding: 0.25rem 0.5rem;
522
+ border-radius: var(--ic-radius-sm);
523
+ margin-top: 0.125rem;
524
+ }
525
+
526
+ .server-test-success {
527
+ color: var(--ic-success, #22c55e);
528
+ background: rgba(34, 197, 94, 0.1);
529
+ }
530
+
531
+ .server-test-error {
532
+ color: var(--ic-error, #ef4444);
533
+ background: rgba(239, 68, 68, 0.1);
534
+ word-break: break-word;
535
+ }
536
+
537
+ /* Capability badges, version, and instructions */
538
+ .capability-badges {
539
+ display: flex;
540
+ gap: 4px;
541
+ flex-wrap: wrap;
542
+ }
543
+
544
+ .server-version {
545
+ font-size: 0.75rem;
546
+ color: var(--ic-text-dim);
547
+ font-family: var(--ic-font-mono, ui-monospace, monospace);
548
+ }
549
+
550
+ .instructions-section {
551
+ margin-top: var(--ic-space-sm);
552
+ border-top: 1px solid var(--ic-border);
553
+ padding-top: var(--ic-space-sm);
554
+ }
555
+
556
+ .instructions-toggle {
557
+ font-size: 0.75rem;
558
+ color: var(--ic-accent);
559
+ background: none;
560
+ border: none;
561
+ cursor: pointer;
562
+ padding: 0;
563
+ font-family: inherit;
564
+ }
565
+
566
+ .instructions-toggle:hover {
567
+ text-decoration: underline;
568
+ }
569
+
570
+ .instructions-content {
571
+ margin-top: var(--ic-space-xs);
572
+ padding: var(--ic-space-sm);
573
+ background: var(--ic-surface-2);
574
+ border-radius: var(--ic-radius-sm);
575
+ font-size: 0.75rem;
576
+ color: var(--ic-text-muted);
577
+ white-space: pre-wrap;
578
+ word-break: break-word;
579
+ max-height: 12rem;
580
+ overflow-y: auto;
581
+ }
582
+ `];a([m({attribute:!1})],n.prototype,"rpcClient",2);a([m({attribute:!1})],n.prototype,"apiClient",2);a([m({attribute:!1})],n.prototype,"eventDispatcher",2);a([l()],n.prototype,"_loadState",2);a([l()],n.prototype,"_servers",2);a([l()],n.prototype,"_mcpConfig",2);a([l()],n.prototype,"_expandedServer",2);a([l()],n.prototype,"_serverDetail",2);a([l()],n.prototype,"_showAddForm",2);a([l()],n.prototype,"_disconnectTarget",2);a([l()],n.prototype,"_deleteTarget",2);a([l()],n.prototype,"_detailLoading",2);a([l()],n.prototype,"_showInstructions",2);a([l()],n.prototype,"_testingServer",2);a([l()],n.prototype,"_testResult",2);a([l()],n.prototype,"_newServerName",2);a([l()],n.prototype,"_newServerTransport",2);a([l()],n.prototype,"_newServerCommand",2);a([l()],n.prototype,"_newServerUrl",2);a([l()],n.prototype,"_newServerHeaders",2);a([l()],n.prototype,"_newServerEnv",2);n=a([$("ic-mcp-management")],n);export{n as IcMcpManagement};