11import { useState , useEffect } from "react" ;
2- import { Send , Bell , Terminal , Files , MessageSquare } from "lucide-react" ;
2+ import {
3+ Send ,
4+ Bell ,
5+ Terminal ,
6+ Files ,
7+ MessageSquare ,
8+ Hammer ,
9+ } from "lucide-react" ;
310import { Tabs , TabsList , TabsTrigger } from "@/components/ui/tabs" ;
411
512import ConsoleTab from "./components/ConsoleTab" ;
@@ -8,6 +15,7 @@ import RequestsTab from "./components/RequestsTabs";
815import ResourcesTab , { Resource } from "./components/ResourcesTab" ;
916import NotificationsTab from "./components/NotificationsTab" ;
1017import PromptsTab , { Prompt } from "./components/PromptsTab" ;
18+ import ToolsTab , { Tool as ToolType } from "./components/ToolsTab" ;
1119
1220const App = ( ) => {
1321 const [ socket , setSocket ] = useState < WebSocket | null > ( null ) ;
@@ -18,6 +26,8 @@ const App = () => {
1826 const [ resourceContent , setResourceContent ] = useState < string > ( "" ) ;
1927 const [ prompts , setPrompts ] = useState < Prompt [ ] > ( [ ] ) ;
2028 const [ promptContent , setPromptContent ] = useState < string > ( "" ) ;
29+ const [ tools , setTools ] = useState < ToolType [ ] > ( [ ] ) ;
30+ const [ toolResult , setToolResult ] = useState < string > ( "" ) ;
2131 const [ error , setError ] = useState < string | null > ( null ) ;
2232
2333 useEffect ( ( ) => {
@@ -44,6 +54,12 @@ const App = () => {
4454 } else if ( message . type === "prompt" ) {
4555 setPromptContent ( JSON . stringify ( message . data , null , 2 ) ) ;
4656 setError ( null ) ;
57+ } else if ( message . type === "tools" ) {
58+ setTools ( message . data . tools ) ;
59+ setError ( null ) ;
60+ } else if ( message . type === "toolResult" ) {
61+ setToolResult ( JSON . stringify ( message . data , null , 2 ) ) ;
62+ setError ( null ) ;
4763 } else if ( message . type === "error" ) {
4864 setError ( message . message ) ;
4965 }
@@ -71,6 +87,7 @@ const App = () => {
7187 null ,
7288 ) ;
7389 const [ selectedPrompt , setSelectedPrompt ] = useState < Prompt | null > ( null ) ;
90+ const [ selectedTool , setSelectedTool ] = useState < ToolType | null > ( null ) ;
7491
7592 const listResources = ( ) => {
7693 sendWebSocketMessage ( { type : "listResources" } ) ;
@@ -88,6 +105,14 @@ const App = () => {
88105 sendWebSocketMessage ( { type : "getPrompt" , name } ) ;
89106 } ;
90107
108+ const listTools = ( ) => {
109+ sendWebSocketMessage ( { type : "listTools" } ) ;
110+ } ;
111+
112+ const callTool = ( name : string , params : Record < string , unknown > ) => {
113+ sendWebSocketMessage ( { type : "callTool" , name, params } ) ;
114+ } ;
115+
91116 return (
92117 < div className = "flex h-screen bg-gray-100" >
93118 < Sidebar connectionStatus = { connectionStatus } />
@@ -96,14 +121,6 @@ const App = () => {
96121 < div className = "flex-1 overflow-auto" >
97122 < Tabs defaultValue = "requests" className = "w-full p-4" >
98123 < TabsList className = "mb-4" >
99- < TabsTrigger value = "requests" >
100- < Send className = "w-4 h-4 mr-2" />
101- Requests
102- </ TabsTrigger >
103- < TabsTrigger value = "notifications" >
104- < Bell className = "w-4 h-4 mr-2" />
105- Notifications
106- </ TabsTrigger >
107124 < TabsTrigger value = "resources" >
108125 < Files className = "w-4 h-4 mr-2" />
109126 Resources
@@ -112,7 +129,19 @@ const App = () => {
112129 < MessageSquare className = "w-4 h-4 mr-2" />
113130 Prompts
114131 </ TabsTrigger >
115- < TabsTrigger value = "console" >
132+ < TabsTrigger value = "requests" disabled >
133+ < Send className = "w-4 h-4 mr-2" />
134+ Requests
135+ </ TabsTrigger >
136+ < TabsTrigger value = "notifications" disabled >
137+ < Bell className = "w-4 h-4 mr-2" />
138+ Notifications
139+ </ TabsTrigger >
140+ < TabsTrigger value = "tools" disabled >
141+ < Hammer className = "w-4 h-4 mr-2" />
142+ Tools
143+ </ TabsTrigger >
144+ < TabsTrigger value = "console" disabled >
116145 < Terminal className = "w-4 h-4 mr-2" />
117146 Console
118147 </ TabsTrigger >
@@ -139,6 +168,15 @@ const App = () => {
139168 promptContent = { promptContent }
140169 error = { error }
141170 />
171+ < ToolsTab
172+ tools = { tools }
173+ listTools = { listTools }
174+ callTool = { callTool }
175+ selectedTool = { selectedTool }
176+ setSelectedTool = { setSelectedTool }
177+ toolResult = { toolResult }
178+ error = { error }
179+ />
142180 < ConsoleTab />
143181 </ div >
144182 </ Tabs >
0 commit comments