Skip to content

Commit d62af7e

Browse files
authored
chat - adjustments to the tools and server picker in input (microsoft#272475)
* chat - adjustments to the tools and server picker in input * revert accidental changes * decorate * back to & * polish
1 parent e70113b commit d62af7e

File tree

3 files changed

+35
-52
lines changed

3 files changed

+35
-52
lines changed

src/vs/workbench/contrib/chat/browser/actions/chatToolActions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ class ConfigureToolsAction extends Action2 {
122122
precondition: ChatContextKeys.chatModeKind.isEqualTo(ChatModeKind.Agent),
123123
menu: [{
124124
when: ContextKeyExpr.and(ChatContextKeys.chatModeKind.isEqualTo(ChatModeKind.Agent), ChatContextKeys.lockedToCodingAgent.negate()),
125-
id: MenuId.ChatExecute,
125+
id: MenuId.ChatInput,
126126
group: 'navigation',
127-
order: 1,
127+
order: 100,
128128
}]
129129
});
130130
}
@@ -189,7 +189,7 @@ class ConfigureToolsActionRendering implements IWorkbenchContribution {
189189
constructor(
190190
@IActionViewItemService actionViewItemService: IActionViewItemService,
191191
) {
192-
const disposable = actionViewItemService.register(MenuId.ChatExecute, ConfigureToolsAction.ID, (action, _opts, instantiationService) => {
192+
const disposable = actionViewItemService.register(MenuId.ChatInput, ConfigureToolsAction.ID, (action, _opts, instantiationService) => {
193193
if (!(action instanceof MenuItemAction)) {
194194
return undefined;
195195
}

src/vs/workbench/contrib/chat/browser/media/chat.css

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,8 +1308,8 @@ have to be updated for changes to the rules above, or to support more deeply nes
13081308

13091309
.interactive-session .chat-input-toolbars .tool-warning-indicator {
13101310
position: absolute;
1311-
bottom: 0;
1312-
right: 0;
1311+
bottom: 1px;
1312+
right: 1px;
13131313
font-size: 9px !important;
13141314
color: var(--vscode-problemsWarningIcon-foreground);
13151315
background: var(--vscode-input-background);
@@ -1599,40 +1599,27 @@ have to be updated for changes to the rules above, or to support more deeply nes
15991599
}
16001600

16011601
.action-item.chat-mcp {
1602-
display: flex !important;
1603-
1604-
&.chat-mcp-has-action .action-label {
1605-
border-top-right-radius: 0;
1606-
border-bottom-right-radius: 0;
1607-
border-right: 0;
1608-
}
16091602

1610-
.chat-mcp-action {
1611-
align-self: stretch;
1612-
padding: 0 2px;
1613-
border-radius: 0;
1614-
outline: 0;
1615-
border: 0;
1616-
border-top-right-radius: 4px;
1617-
border-bottom-right-radius: 4px;
1618-
background: var(--vscode-button-background);
1619-
cursor: pointer;
1603+
.chat-mcp-state-indicator {
1604+
position: absolute;
1605+
bottom: 1px;
1606+
right: 1px;
1607+
font-size: 9px !important;
1608+
background: var(--vscode-input-background);
1609+
width: fit-content;
1610+
height: fit-content;
1611+
border-radius: 100%;
16201612

1621-
.codicon {
1622-
width: fit-content;
1613+
&.chat-mcp-state-new {
16231614
color: var(--vscode-button-foreground);
16241615
}
16251616

1626-
.codicon::before {
1627-
font-size: 14px;
1617+
&.chat-mcp-state-error {
1618+
color: var(--vscode-problemsErrorIcon-foreground);
16281619
}
16291620

1630-
&.chat-mcp-action-error {
1631-
background: var(--vscode-activityErrorBadge-background);
1632-
1633-
.codicon {
1634-
color: var(--vscode-activityErrorBadge-foreground);
1635-
}
1621+
&.chat-mcp-state-refreshing {
1622+
color: var(--vscode-button-foreground);
16361623
}
16371624
}
16381625
}

src/vs/workbench/contrib/mcp/browser/mcpCommands.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
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';
77
import { renderMarkdown } from '../../../../base/browser/markdownRenderer.js';
88
import { IManagedHoverTooltipHTMLElement } from '../../../../base/browser/ui/hover/hover.js';
99
import { 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

Comments
 (0)