fix(frontend): suppress tool-quarantine banner for baseline pending tools (Spec 032, MCP-2081)#642
fix(frontend): suppress tool-quarantine banner for baseline pending tools (Spec 032, MCP-2081)#642Dumbris wants to merge 1 commit into
Conversation
…ools (Spec 032, MCP-2081) The tool-quarantine banner + per-tool Approve UI keyed off any non-approved tool (pending OR changed), so freshly-discovered baseline `pending` tools raised a false "N tool(s) require approval" alarm, and it competed with the server-level Security Quarantine banner. Per the confirmed trust model, baseline `pending` tools are not a rug-pull — the backend promotes them to `approved` when the operator approves the server. The only tools that legitimately need per-tool attention are `changed` (rug-pull) tools. - Extract the banner-selection decision into a pure, testable helper `selectQuarantinedTools(approvals, serverQuarantined)` in utils/toolQuarantine.ts. - Surface the banner only when a `changed` tool exists; include residual `pending` tools alongside it for batch approval; never surface baseline pending alone. - Suppress the tool-quarantine banner entirely while the server-level Security Quarantine banner is showing (server.quarantined). - Unit test the three states (baseline pending → no banner; changed → banner; server quarantined → suppressed) — 5 cases. Verified: vitest (full suite 152/152, incl. new spec), npm run build (vue-tsc). The rendered banner-state Playwright sweep is left to the pre-merge QA gate (seeding a `changed`/rug-pull tool needs the rugpull test server).
Deploying mcpproxy-docs with
|
| Latest commit: |
61cf3f0
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://cd405404.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://fix-mcp-2081-tool-quarantine.mcpproxy-docs.pages.dev |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 27402323582 --repo smart-mcp-proxy/mcpproxy-go
|
|
Closing as superseded by merged PR #641 ( Both PRs implement the same change — suppress the per-server Tool-Quarantine banner for baseline
This branch ( Resolves the CodexReviewer change request on this PR. Related #641, MCP-2081. |
|
Closing as superseded by #641 ( While this PR was open and conflicting, the overlapping PR #641 ("key tool-quarantine banner off changed, suppress for baseline pending", MCP-2101) landed the identical fix. Both PRs:
A rebase of this branch onto |
Summary
Frontend half of MCP-2081 (Spec 032 tool quarantine). The tool-quarantine banner + per-tool Approve UI in
ServerDetail.vuekeyed off any non-approved tool (pendingORchanged), so:pendingtools raised a false "N tool(s) require approval" alarm, andPer the confirmed trust model, baseline
pendingtools are not a rug-pull — the backend promotes them toapprovedwhen the operator approves the server. Onlychangedtools (description / input-schema / output-schema hash drift) legitimately need per-tool attention.Changes
selectQuarantinedTools(approvals, serverQuarantined)infrontend/src/utils/toolQuarantine.ts.changedtool exists; include residualpendingtools alongside it for batch approval; never surface baselinependingalone.server.quarantined).Verification
vitest— full suite 152/152 pass, including the newtool-quarantine-banner.spec.ts(5 cases: baseline pending → no banner; changed → banner; changed+pending → batch; server quarantined → suppressed; empty/all-approved → none).npm run build(vue-tsc type-check) — pass.The rendered banner-state Playwright sweep (server quarantined → one banner; after approve → no tool banner; simulate
changed→ tool banner) is left to the pre-merge QA gate, since seeding achanged/rug-pull tool needs the rugpull test server.Related: MCP-2081 · pairs with the backend baseline auto-approve child and the merged diff-UI work (#639).