diff --git a/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx b/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx index 7cad356f..2ec2bdf9 100644 --- a/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx +++ b/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx @@ -1,10 +1,10 @@ import { Alert, Button, Divider, Group, Stack, Text } from "@mantine/core"; -import type { ElicitRequest } from "@modelcontextprotocol/sdk/types.js"; +import type { ElicitRequestFormParams } from "@modelcontextprotocol/sdk/types.js"; import { SchemaForm } from "../SchemaForm/SchemaForm"; import type { JsonSchema } from "../SchemaForm/SchemaForm"; export interface ElicitationFormPanelProps { - request: ElicitRequest["params"]; + request: ElicitRequestFormParams; serverName: string; values: Record; onChange: (values: Record) => void; @@ -33,20 +33,15 @@ export function ElicitationFormPanel({ onSubmit, onCancel, }: ElicitationFormPanelProps) { - const schema = - "requestedSchema" in request ? request.requestedSchema : undefined; - return ( {formatQuoted(request.message)} - {schema && ( - - )} + {formatWarning(serverName)} diff --git a/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx b/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx index e4efd69d..521855b1 100644 --- a/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx +++ b/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx @@ -8,7 +8,10 @@ import { Stack, Text, } from "@mantine/core"; -import type { ElicitRequest } from "@modelcontextprotocol/sdk/types.js"; +import type { + ElicitRequest, + ElicitRequestFormParams, +} from "@modelcontextprotocol/sdk/types.js"; import { SchemaForm } from "../SchemaForm/SchemaForm"; import type { JsonSchema } from "../SchemaForm/SchemaForm"; @@ -49,12 +52,16 @@ const CompactButton = Button.withProps({ function isFormMode( request: ElicitRequest["params"], -): request is ElicitRequest["params"] & { - requestedSchema: Record; -} { +): request is ElicitRequestFormParams { return "requestedSchema" in request; } +function isUrlMode( + request: ElicitRequest["params"], +): request is Extract { + return "url" in request; +} + function getBadgeLabel(request: ElicitRequest["params"]): string { return isFormMode(request) ? "elicitation/create (form)" @@ -70,8 +77,6 @@ export function InlineElicitationRequest({ onSubmit, onCancel, }: InlineElicitationRequestProps) { - const formMode = isFormMode(request); - return ( @@ -82,7 +87,7 @@ export function InlineElicitationRequest({ {request.message} - {formMode && ( + {isFormMode(request) && ( )} - {!formMode && "url" in request && ( + {isUrlMode(request) && ( <> - {(request as { url: string }).url} + {request.url} {isWaiting && ( @@ -104,7 +109,7 @@ export function InlineElicitationRequest({ Cancel - {formMode && ( + {isFormMode(request) && ( diff --git a/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx index b39f1a4e..c2c6e393 100644 --- a/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx +++ b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx @@ -72,7 +72,9 @@ export function SamplingRequestPanel({ includeContext, } = request; - const hints = modelPreferences?.hints?.map((h) => h.name) ?? []; + const hints = + (modelPreferences?.hints?.map((h) => h.name).filter(Boolean) as string[]) ?? + []; return (