Address PR #1211 code review feedback

1. ServerCard: import ConnectionStatus and ServerType from core instead
   of inline union types
2. ResourcePreviewPanel: move ContentBlock import to top of file
3. ContentViewer: remove dead annotation mimeType check in isJsonText
4. ProgressDisplay: use Pick to exclude progressToken from params type;
   remove fake tokens from callers and stories
5. AnnotationBadge: restore human-readable priority labels (high/medium/low)
   and remove unused --inspector-annotation-* CSS vars from App.css
6. MessageBubble: add fallback rendering for resource, resource_link,
   tool_use, and tool_result content block types
7. TaskControls: import TaskStatus directly from SDK instead of via TaskCard

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
cliffhall 2026-04-18 11:48:21 -04:00
commit 3e2e44ccfc
5 changed files with 31 additions and 34 deletions

View file

@ -32,8 +32,12 @@ function formatLabel(
switch (facet) {
case "audience":
return `audience: ${(value as Role[]).join(", ")}`;
case "priority":
return `priority: ${value}`;
case "priority": {
const n = value as number;
if (n >= 0.7) return "priority: high";
if (n >= 0.4) return "priority: medium";
return "priority: low";
}
case "readOnlyHint":
return "read-only";
case "destructiveHint":

View file

@ -17,16 +17,6 @@ function formatJson(content: string): string {
function isJsonText(block: ContentBlock): boolean {
if (block.type !== "text") return false;
if (
"annotations" in block &&
block.annotations &&
"mimeType" in block.annotations
) {
return (
(block.annotations as Record<string, unknown>).mimeType ===
"application/json"
);
}
const trimmed = block.text.trimStart();
return trimmed.startsWith("{") || trimmed.startsWith("[");
}

View file

@ -51,6 +51,18 @@ function extractContent(
audioUri = buildDataUri(block.mimeType, block.data);
audioMime = block.mimeType;
break;
case "resource":
text +=
"text" in block.resource
? block.resource.text
: `[resource: ${block.resource.uri}]`;
break;
case "resource_link":
text += `[resource: ${block.uri}]`;
break;
default:
text += `[${block.type}]`;
break;
}
}

View file

@ -11,14 +11,13 @@ type Story = StoryObj<typeof ProgressDisplay>;
export const ZeroPercent: Story = {
args: {
params: { progressToken: "t1", progress: 0, total: 100 },
params: { progress: 0, total: 100 },
},
};
export const HalfComplete: Story = {
args: {
params: {
progressToken: "t2",
progress: 50,
total: 100,
message: "Processing...",
@ -29,7 +28,6 @@ export const HalfComplete: Story = {
export const NearComplete: Story = {
args: {
params: {
progressToken: "t3",
progress: 95,
total: 100,
message: "Almost done",
@ -41,7 +39,6 @@ export const NearComplete: Story = {
export const Complete: Story = {
args: {
params: {
progressToken: "t4",
progress: 100,
total: 100,
message: "Done",
@ -53,7 +50,6 @@ export const Complete: Story = {
export const WithoutTotal: Story = {
args: {
params: {
progressToken: "t5",
progress: 42,
message: "Working...",
},

View file

@ -2,7 +2,10 @@ import { Group, Progress, Stack, Text } from "@mantine/core";
import type { ProgressNotification } from "@modelcontextprotocol/sdk/types.js";
export interface ProgressDisplayProps {
params: ProgressNotification["params"];
params: Pick<
ProgressNotification["params"],
"progress" | "total" | "message"
>;
elapsed?: string;
}