mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-29 12:11:09 +00:00
fix: 修复 MCP 服务器禁用状态下的操作选项
- 问题 2.1: 禁用的服务器不再显示'查看工具'选项,避免用户查看空工具列表 - 问题 2.2: 禁用的服务器不再显示'重新连接'选项,保持逻辑一致性 - 改进:根据服务器状态动态生成可用操作列表 - 改进:启用/禁用选项始终显示,方便用户切换状态
This commit is contained in:
parent
d63798cc0d
commit
41bb300542
2 changed files with 1001 additions and 23 deletions
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { useState } from 'react';
|
||||
import { useState, useMemo } from 'react';
|
||||
import { Box, Text } from 'ink';
|
||||
import { theme } from '../../../semantic-colors.js';
|
||||
import { useKeypress } from '../../../hooks/useKeypress.js';
|
||||
|
|
@ -34,29 +34,45 @@ export const ServerDetailStep: React.FC<ServerDetailStepProps> = ({
|
|||
|
||||
const statusColor = server ? getStatusColor(server.status) : 'gray';
|
||||
|
||||
const actions = [
|
||||
{
|
||||
key: 'view-tools',
|
||||
get label() {
|
||||
return t('View tools');
|
||||
},
|
||||
value: 'view-tools' as const,
|
||||
},
|
||||
{
|
||||
key: 'reconnect',
|
||||
get label() {
|
||||
return t('Reconnect');
|
||||
},
|
||||
value: 'reconnect' as const,
|
||||
},
|
||||
{
|
||||
// 根据服务器状态动态生成可用操作
|
||||
const actions = useMemo(() => {
|
||||
const result: Array<{
|
||||
key: string;
|
||||
label: string;
|
||||
value: ServerAction;
|
||||
}> = [];
|
||||
|
||||
if (!server) {
|
||||
return result;
|
||||
}
|
||||
|
||||
// 只在服务器未禁用且有工具时显示"查看工具"选项
|
||||
if (!server.isDisabled && (server.toolCount ?? 0) > 0) {
|
||||
result.push({
|
||||
key: 'view-tools',
|
||||
label: t('View tools'),
|
||||
value: 'view-tools',
|
||||
});
|
||||
}
|
||||
|
||||
// 只在服务器未禁用且已断开连接时显示"重新连接"选项
|
||||
if (!server.isDisabled && server.status === 'disconnected') {
|
||||
result.push({
|
||||
key: 'reconnect',
|
||||
label: t('Reconnect'),
|
||||
value: 'reconnect',
|
||||
});
|
||||
}
|
||||
|
||||
// 始终显示启用/禁用选项
|
||||
result.push({
|
||||
key: 'toggle-disable',
|
||||
get label() {
|
||||
return server?.isDisabled ? t('Enable') : t('Disable');
|
||||
},
|
||||
value: 'toggle-disable' as const,
|
||||
},
|
||||
];
|
||||
label: server?.isDisabled ? t('Enable') : t('Disable'),
|
||||
value: 'toggle-disable',
|
||||
});
|
||||
|
||||
return result;
|
||||
}, [server]);
|
||||
|
||||
useKeypress(
|
||||
(key) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue