Skip to content

Commit 50640bc

Browse files
authored
Merge pull request #98 from heuperman/add-button-to-clear-items
Add button to clear loaded items
2 parents 9452991 + cc17ba8 commit 50640bc

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

client/src/App.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,10 +525,18 @@ const App = () => {
525525
clearError("resources");
526526
listResources();
527527
}}
528+
clearResources={() => {
529+
setResources([]);
530+
setNextResourceCursor(undefined);
531+
}}
528532
listResourceTemplates={() => {
529533
clearError("resources");
530534
listResourceTemplates();
531535
}}
536+
clearResourceTemplates={() => {
537+
setResourceTemplates([]);
538+
setNextResourceTemplateCursor(undefined);
539+
}}
532540
readResource={(uri) => {
533541
clearError("resources");
534542
readResource(uri);
@@ -549,6 +557,10 @@ const App = () => {
549557
clearError("prompts");
550558
listPrompts();
551559
}}
560+
clearPrompts={() => {
561+
setPrompts([]);
562+
setNextPromptCursor(undefined);
563+
}}
552564
getPrompt={(name, args) => {
553565
clearError("prompts");
554566
getPrompt(name, args);
@@ -568,6 +580,10 @@ const App = () => {
568580
clearError("tools");
569581
listTools();
570582
}}
583+
clearTools={() => {
584+
setTools([]);
585+
setNextToolCursor(undefined);
586+
}}
571587
callTool={(name, params) => {
572588
clearError("tools");
573589
callTool(name, params);

client/src/components/ListPane.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Button } from "./ui/button";
33
type ListPaneProps<T> = {
44
items: T[];
55
listItems: () => void;
6+
clearItems: () => void;
67
setSelectedItem: (item: T) => void;
78
renderItem: (item: T) => React.ReactNode;
89
title: string;
@@ -13,6 +14,7 @@ type ListPaneProps<T> = {
1314
const ListPane = <T extends object>({
1415
items,
1516
listItems,
17+
clearItems,
1618
setSelectedItem,
1719
renderItem,
1820
title,
@@ -32,6 +34,14 @@ const ListPane = <T extends object>({
3234
>
3335
{buttonText}
3436
</Button>
37+
<Button
38+
variant="outline"
39+
className="w-full mb-4"
40+
onClick={clearItems}
41+
disabled={items.length === 0}
42+
>
43+
Clear
44+
</Button>
3545
<div className="space-y-2 overflow-y-auto max-h-96">
3646
{items.map((item, index) => (
3747
<div

client/src/components/PromptsTab.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export type Prompt = {
2222
const PromptsTab = ({
2323
prompts,
2424
listPrompts,
25+
clearPrompts,
2526
getPrompt,
2627
selectedPrompt,
2728
setSelectedPrompt,
@@ -31,6 +32,7 @@ const PromptsTab = ({
3132
}: {
3233
prompts: Prompt[];
3334
listPrompts: () => void;
35+
clearPrompts: () => void;
3436
getPrompt: (name: string, args: Record<string, string>) => void;
3537
selectedPrompt: Prompt | null;
3638
setSelectedPrompt: (prompt: Prompt) => void;
@@ -55,6 +57,7 @@ const PromptsTab = ({
5557
<ListPane
5658
items={prompts}
5759
listItems={listPrompts}
60+
clearItems={clearPrompts}
5861
setSelectedItem={(prompt) => {
5962
setSelectedPrompt(prompt);
6063
setPromptArgs({});

client/src/components/ResourcesTab.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ const ResourcesTab = ({
1616
resources,
1717
resourceTemplates,
1818
listResources,
19+
clearResources,
1920
listResourceTemplates,
21+
clearResourceTemplates,
2022
readResource,
2123
selectedResource,
2224
setSelectedResource,
@@ -28,7 +30,9 @@ const ResourcesTab = ({
2830
resources: Resource[];
2931
resourceTemplates: ResourceTemplate[];
3032
listResources: () => void;
33+
clearResources: () => void;
3134
listResourceTemplates: () => void;
35+
clearResourceTemplates: () => void;
3236
readResource: (uri: string) => void;
3337
selectedResource: Resource | null;
3438
setSelectedResource: (resource: Resource | null) => void;
@@ -68,6 +72,7 @@ const ResourcesTab = ({
6872
<ListPane
6973
items={resources}
7074
listItems={listResources}
75+
clearItems={clearResources}
7176
setSelectedItem={(resource) => {
7277
setSelectedResource(resource);
7378
readResource(resource.uri);
@@ -90,6 +95,7 @@ const ResourcesTab = ({
9095
<ListPane
9196
items={resourceTemplates}
9297
listItems={listResourceTemplates}
98+
clearItems={clearResourceTemplates}
9399
setSelectedItem={(template) => {
94100
setSelectedTemplate(template);
95101
setSelectedResource(null);

client/src/components/ToolsTab.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { CompatibilityCallToolResult } from "@modelcontextprotocol/sdk/types.js"
1818
const ToolsTab = ({
1919
tools,
2020
listTools,
21+
clearTools,
2122
callTool,
2223
selectedTool,
2324
setSelectedTool,
@@ -27,6 +28,7 @@ const ToolsTab = ({
2728
}: {
2829
tools: Tool[];
2930
listTools: () => void;
31+
clearTools: () => void;
3032
callTool: (name: string, params: Record<string, unknown>) => void;
3133
selectedTool: Tool | null;
3234
setSelectedTool: (tool: Tool) => void;
@@ -50,7 +52,7 @@ const ToolsTab = ({
5052
</pre>
5153
<h4 className="font-semibold mb-2">Errors:</h4>
5254
{parsedResult.error.errors.map((error, idx) => (
53-
<pre
55+
<pre
5456
key={idx}
5557
className="bg-gray-50 dark:bg-gray-800 dark:text-gray-100 p-4 rounded text-sm overflow-auto max-h-64"
5658
>
@@ -108,6 +110,7 @@ const ToolsTab = ({
108110
<ListPane
109111
items={tools}
110112
listItems={listTools}
113+
clearItems={clearTools}
111114
setSelectedItem={setSelectedTool}
112115
renderItem={(tool) => (
113116
<>

0 commit comments

Comments
 (0)