fix: hide unverified capability placeholders
The tool environment page always displayed an unverified capability-dependency state even though it had no Skill or MCP evidence behind it. The page now shows only actual interpreter and companion-tool diagnostics; capability dependency status remains reserved for capability details with real validation results. Release note: 工具执行环境页不再显示没有实际验证依据的能力依赖占位状态。
This commit is contained in:
@@ -130,7 +130,10 @@ Python、虚拟环境或 Conda 环境时,也不能被 GoodBuddy 静默替换
|
|||||||
|
|
||||||
### FR-6 状态与诊断
|
### FR-6 状态与诊断
|
||||||
|
|
||||||
- 分别显示“工具环境状态”和“能力依赖状态”。
|
- 工具执行环境页只显示有真实诊断结果的解释器和配套工具状态,不显示固定的能力依赖占位
|
||||||
|
状态。
|
||||||
|
- 具体 SKILL/MCP 只有在其实际入口及第三方依赖通过验证后,才在对应能力详情中显示能力
|
||||||
|
依赖状态。
|
||||||
- Node 诊断覆盖 Node、npm、npx、标准库和子进程。
|
- Node 诊断覆盖 Node、npm、npx、标准库和子进程。
|
||||||
- Python 诊断覆盖 Python 3、架构、标准库、SSL、pip 和 venv。
|
- Python 诊断覆盖 Python 3、架构、标准库、SSL、pip 和 venv。
|
||||||
- 诊断使用临时目录并在结束后清理。
|
- 诊断使用临时目录并在结束后清理。
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ Windows ARM64、macOS 和 Linux 工件仍需原生 CI 验证,第三方许可
|
|||||||
对应工具卡内显示。
|
对应工具卡内显示。
|
||||||
- [x] “能力与工具”统一入口及三个水平 Tab,MCP 原内层页签保持不变。
|
- [x] “能力与工具”统一入口及三个水平 Tab,MCP 原内层页签保持不变。
|
||||||
- [x] 工具下载源、Node.js、Python、候选、诊断、安装进度、取消和删除界面。
|
- [x] 工具下载源、Node.js、Python、候选、诊断、安装进度、取消和删除界面。
|
||||||
|
- [x] 工具卡只展示真实工具诊断;未接入具体能力证据前不显示固定的能力依赖占位状态。
|
||||||
- [x] 使用 `PageTabs`、应用通知、就地操作错误、删除确认和具名进度条。
|
- [x] 使用 `PageTabs`、应用通知、就地操作错误、删除确认和具名进度条。
|
||||||
|
|
||||||
### 托管 Node 与进程注入
|
### 托管 Node 与进程注入
|
||||||
|
|||||||
@@ -239,6 +239,9 @@ SKILL/MCP 的能力详情展示能力依赖状态:
|
|||||||
- 缺少第三方包
|
- 缺少第三方包
|
||||||
- 入口不可用
|
- 入口不可用
|
||||||
|
|
||||||
|
工具执行环境页不掌握具体 SKILL/MCP 的验证证据,因此不显示固定的“依赖未验证”占位
|
||||||
|
区块。只有对应能力产生真实验证结果后,才在该能力详情中展示上述状态。
|
||||||
|
|
||||||
不得把工具卡的“已就绪”复用为某个 SKILL 或 MCP 的“完全可用”。
|
不得把工具卡的“已就绪”复用为某个 SKILL 或 MCP 的“完全可用”。
|
||||||
|
|
||||||
## 9. 生效与刷新
|
## 9. 生效与刷新
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ describe('ToolEnvironmentSettingsSection', () => {
|
|||||||
).toBeVisible()
|
).toBeVisible()
|
||||||
expect(screen.getAllByText('工具状态')).toHaveLength(2)
|
expect(screen.getAllByText('工具状态')).toHaveLength(2)
|
||||||
expect(screen.getAllByText('工具链/配套工具状态')).toHaveLength(2)
|
expect(screen.getAllByText('工具链/配套工具状态')).toHaveLength(2)
|
||||||
expect(screen.getAllByText('能力依赖状态')).toHaveLength(2)
|
expect(screen.queryByText('能力依赖状态')).not.toBeInTheDocument()
|
||||||
expect(
|
expect(
|
||||||
screen.getByRole('button', {
|
screen.getByRole('button', {
|
||||||
name: /C:\\Tools\\node\.exe/u
|
name: /C:\\Tools\\node\.exe/u
|
||||||
|
|||||||
@@ -564,11 +564,6 @@ export function ToolEnvironmentSettingsSection({
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="tool-environment-status">
|
|
||||||
<h4>{t('toolEnvironment.capabilityDependencyStatus')}</h4>
|
|
||||||
<p>{t('toolEnvironment.capabilityDependenciesUnverified')}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{kind === 'python' && selection.source === 'managed' && (
|
{kind === 'python' && selection.source === 'managed' && (
|
||||||
<div className="tool-environment-python">
|
<div className="tool-environment-python">
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -784,9 +784,6 @@ export const settingsSections = {
|
|||||||
'No valid candidates were found. Scan user/system PATH, Conda, virtual environments, and common install locations, or choose another executable.',
|
'No valid candidates were found. Scan user/system PATH, Conda, virtual environments, and common install locations, or choose another executable.',
|
||||||
toolStatus: 'Tool status',
|
toolStatus: 'Tool status',
|
||||||
companionStatus: 'Toolchain/companion status',
|
companionStatus: 'Toolchain/companion status',
|
||||||
capabilityDependencyStatus: 'Capability dependency status',
|
|
||||||
capabilityDependenciesUnverified:
|
|
||||||
'Capability dependencies are unverified because no capability evidence is available.',
|
|
||||||
status: 'Status',
|
status: 'Status',
|
||||||
available: 'Available',
|
available: 'Available',
|
||||||
unavailable: 'Unavailable',
|
unavailable: 'Unavailable',
|
||||||
|
|||||||
@@ -734,9 +734,6 @@ export const settingsSections = {
|
|||||||
'未发现有效候选。可扫描用户/系统 PATH、Conda、虚拟环境和常见安装位置,或选择其他可执行文件。',
|
'未发现有效候选。可扫描用户/系统 PATH、Conda、虚拟环境和常见安装位置,或选择其他可执行文件。',
|
||||||
toolStatus: '工具状态',
|
toolStatus: '工具状态',
|
||||||
companionStatus: '工具链/配套工具状态',
|
companionStatus: '工具链/配套工具状态',
|
||||||
capabilityDependencyStatus: '能力依赖状态',
|
|
||||||
capabilityDependenciesUnverified:
|
|
||||||
'尚未获得具体能力的依赖验证证据。',
|
|
||||||
status: '状态',
|
status: '状态',
|
||||||
available: '可用',
|
available: '可用',
|
||||||
unavailable: '不可用',
|
unavailable: '不可用',
|
||||||
|
|||||||
Reference in New Issue
Block a user