({
resources,
resourceTemplates,
listResources,
clearResources,
listResourceTemplates,
clearResourceTemplates,
readResource,
selectedResource,
setSelectedResource,
resourceSubscriptionsSupported,
resourceSubscriptions,
subscribeToResource,
unsubscribeFromResource,
handleCompletion,
completionsSupported,
resourceContent,
nextCursor,
nextTemplateCursor,
error,
}: {
resources: Resource[];
resourceTemplates: ResourceTemplate[];
listResources: () => void;
clearResources: () => void;
listResourceTemplates: () => void;
clearResourceTemplates: () => void;
readResource: (uri: string) => void;
selectedResource: Resource | null;
setSelectedResource: (resource: Resource | null) => void;
handleCompletion: (
ref: ResourceReference | PromptReference,
argName: string,
value: string,
context?: Record<string, string>,
) => Promise<string[]>;
completionsSupported: boolean;
resourceContent: string;
nextCursor: ListResourcesResult["nextCursor"];
nextTemplateCursor: ListResourceTemplatesResult["nextCursor"];
error: string | null;
resourceSubscriptionsSupported: boolean;
resourceSubscriptions: Set<string>;
subscribeToResource: (uri: string) => void;
unsubscribeFromResource: (uri: string) => void;
})
| 20 | import IconDisplay, { WithIcons } from "./IconDisplay"; |
| 21 | |
| 22 | const ResourcesTab = ({ |
| 23 | resources, |
| 24 | resourceTemplates, |
| 25 | listResources, |
| 26 | clearResources, |
| 27 | listResourceTemplates, |
| 28 | clearResourceTemplates, |
| 29 | readResource, |
| 30 | selectedResource, |
| 31 | setSelectedResource, |
| 32 | resourceSubscriptionsSupported, |
| 33 | resourceSubscriptions, |
| 34 | subscribeToResource, |
| 35 | unsubscribeFromResource, |
| 36 | handleCompletion, |
| 37 | completionsSupported, |
| 38 | resourceContent, |
| 39 | nextCursor, |
| 40 | nextTemplateCursor, |
| 41 | error, |
| 42 | }: { |
| 43 | resources: Resource[]; |
| 44 | resourceTemplates: ResourceTemplate[]; |
| 45 | listResources: () => void; |
| 46 | clearResources: () => void; |
| 47 | listResourceTemplates: () => void; |
| 48 | clearResourceTemplates: () => void; |
| 49 | readResource: (uri: string) => void; |
| 50 | selectedResource: Resource | null; |
| 51 | setSelectedResource: (resource: Resource | null) => void; |
| 52 | handleCompletion: ( |
| 53 | ref: ResourceReference | PromptReference, |
| 54 | argName: string, |
| 55 | value: string, |
| 56 | context?: Record<string, string>, |
| 57 | ) => Promise<string[]>; |
| 58 | completionsSupported: boolean; |
| 59 | resourceContent: string; |
| 60 | nextCursor: ListResourcesResult["nextCursor"]; |
| 61 | nextTemplateCursor: ListResourceTemplatesResult["nextCursor"]; |
| 62 | error: string | null; |
| 63 | resourceSubscriptionsSupported: boolean; |
| 64 | resourceSubscriptions: Set<string>; |
| 65 | subscribeToResource: (uri: string) => void; |
| 66 | unsubscribeFromResource: (uri: string) => void; |
| 67 | }) => { |
| 68 | const [selectedTemplate, setSelectedTemplate] = |
| 69 | useState<ResourceTemplate | null>(null); |
| 70 | const [templateValues, setTemplateValues] = useState<Record<string, string>>( |
| 71 | {}, |
| 72 | ); |
| 73 | |
| 74 | const { completions, clearCompletions, requestCompletions } = |
| 75 | useCompletionState(handleCompletion, completionsSupported); |
| 76 | |
| 77 | useEffect(() => { |
| 78 | clearCompletions(); |
| 79 | }, [clearCompletions]); |
nothing calls this directly
no test coverage detected