33 * Licensed under the MIT License. See License.txt in the project root for license information.
44 *--------------------------------------------------------------------------------------------*/
55
6- import { $ , addDisposableListener , disposableWindowInterval , EventType , h } from '../../../../base/browser/dom.js' ;
6+ import { $ , addDisposableListener , disposableWindowInterval , EventType } from '../../../../base/browser/dom.js' ;
77import { renderMarkdown } from '../../../../base/browser/markdownRenderer.js' ;
88import { IManagedHoverTooltipHTMLElement } from '../../../../base/browser/ui/hover/hover.js' ;
99import { Checkbox } from '../../../../base/browser/ui/toggle/toggle.js' ;
@@ -90,9 +90,9 @@ export class ListMcpServerCommand extends Action2 {
9090 ChatContextKeys . chatModeKind . isEqualTo ( ChatModeKind . Agent ) ,
9191 ChatContextKeys . lockedToCodingAgent . negate ( )
9292 ) ,
93- id : MenuId . ChatExecute ,
93+ id : MenuId . ChatInput ,
9494 group : 'navigation' ,
95- order : 2 ,
95+ order : 101 ,
9696 } ] ,
9797 } ) ;
9898 }
@@ -478,7 +478,7 @@ export class MCPServerActionRendering extends Disposable implements IWorkbenchCo
478478 }
479479 } ) ;
480480
481- this . _store . add ( actionViewItemService . register ( MenuId . ChatExecute , McpCommandIds . ListServer , ( action , options ) => {
481+ this . _store . add ( actionViewItemService . register ( MenuId . ChatInput , McpCommandIds . ListServer , ( action , options ) => {
482482 if ( ! ( action instanceof MenuItemAction ) ) {
483483 return undefined ;
484484 }
@@ -489,34 +489,30 @@ export class MCPServerActionRendering extends Disposable implements IWorkbenchCo
489489
490490 super . render ( container ) ;
491491 container . classList . add ( 'chat-mcp' ) ;
492+ container . style . position = 'relative' ;
492493
493- const action = h ( 'button.chat-mcp-action' , [ h ( 'span@icon' ) ] ) ;
494+ const stateIndicator = container . appendChild ( $ ( '.chat-mcp-state-indicator' ) ) ;
495+ stateIndicator . style . display = 'none' ;
494496
495497 this . _register ( autorun ( r => {
496498 const displayed = displayedState . read ( r ) ;
497499 const { state } = displayed ;
498- const { root, icon } = action ;
499500 this . updateTooltip ( ) ;
500- container . classList . toggle ( 'chat-mcp-has-action' , state !== DisplayedState . None ) ;
501501
502- if ( ! root . parentElement ) {
503- container . appendChild ( root ) ;
504- }
505502
506- root . ariaLabel = this . getLabelForState ( displayed ) ;
507- root . className = 'chat-mcp-action' ;
508- icon . className = '' ;
503+ stateIndicator . ariaLabel = this . getLabelForState ( displayed ) ;
504+ stateIndicator . className = 'chat-mcp-state-indicator' ;
509505 if ( state === DisplayedState . NewTools ) {
510- root . classList . add ( 'chat-mcp-action-new' ) ;
511- icon . classList . add ( ...ThemeIcon . asClassNameArray ( Codicon . refresh ) ) ;
506+ stateIndicator . style . display = 'block' ;
507+ stateIndicator . classList . add ( 'chat-mcp-state-new' , ...ThemeIcon . asClassNameArray ( Codicon . refresh ) ) ;
512508 } else if ( state === DisplayedState . Error ) {
513- root . classList . add ( 'chat-mcp-action-error' ) ;
514- icon . classList . add ( ...ThemeIcon . asClassNameArray ( Codicon . warning ) ) ;
509+ stateIndicator . style . display = 'block' ;
510+ stateIndicator . classList . add ( 'chat-mcp-state-error' , ...ThemeIcon . asClassNameArray ( Codicon . warning ) ) ;
515511 } else if ( state === DisplayedState . Refreshing ) {
516- root . classList . add ( 'chat-mcp-action-refreshing' ) ;
517- icon . classList . add ( ...ThemeIcon . asClassNameArray ( spinningLoading ) ) ;
512+ stateIndicator . style . display = 'block' ;
513+ stateIndicator . classList . add ( 'chat-mcp-state-refreshing' , ...ThemeIcon . asClassNameArray ( spinningLoading ) ) ;
518514 } else {
519- root . remove ( ) ;
515+ stateIndicator . style . display = 'none' ;
520516 }
521517 } ) ) ;
522518 }
0 commit comments