@@ -250,13 +250,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
250250 return executeCommand ( parsed ) ;
251251 }
252252 case "read_output" : {
253- const parsed = ReadOutputArgsSchema . parse ( args ) ;
254253 capture ( 'server_read_output' ) ;
254+ const parsed = ReadOutputArgsSchema . parse ( args ) ;
255255 return readOutput ( parsed ) ;
256256 }
257257 case "force_terminate" : {
258- const parsed = ForceTerminateArgsSchema . parse ( args ) ;
259258 capture ( 'server_force_terminate' ) ;
259+ const parsed = ForceTerminateArgsSchema . parse ( args ) ;
260260 return forceTerminate ( parsed ) ;
261261 }
262262 case "list_sessions" :
@@ -266,25 +266,28 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
266266 capture ( 'server_list_processes' ) ;
267267 return listProcesses ( ) ;
268268 case "kill_process" : {
269- const parsed = KillProcessArgsSchema . parse ( args ) ;
270269 capture ( 'server_kill_process' ) ;
270+ const parsed = KillProcessArgsSchema . parse ( args ) ;
271271 return killProcess ( parsed ) ;
272272 }
273273 case "block_command" : {
274+ capture ( 'server_block_command' ) ;
274275 const parsed = BlockCommandArgsSchema . parse ( args ) ;
275276 const blockResult = await commandManager . blockCommand ( parsed . command ) ;
276277 return {
277278 content : [ { type : "text" , text : blockResult } ] ,
278279 } ;
279280 }
280281 case "unblock_command" : {
282+ capture ( 'server_unblock_command' ) ;
281283 const parsed = UnblockCommandArgsSchema . parse ( args ) ;
282284 const unblockResult = await commandManager . unblockCommand ( parsed . command ) ;
283285 return {
284286 content : [ { type : "text" , text : unblockResult } ] ,
285287 } ;
286288 }
287289 case "list_blocked_commands" : {
290+ capture ( 'server_list_blocked_commands' ) ;
288291 const blockedCommands = await commandManager . listBlockedCommands ( ) ;
289292 return {
290293 content : [ { type : "text" , text : blockedCommands . join ( '\n' ) } ] ,
@@ -293,71 +296,79 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
293296
294297 // Filesystem tools
295298 case "edit_block" : {
299+ capture ( 'server_edit_block' ) ;
296300 const parsed = EditBlockArgsSchema . parse ( args ) ;
297301 const { filePath, searchReplace } = await parseEditBlock ( parsed . blockContent ) ;
298- await performSearchReplace ( filePath , searchReplace ) ;
299- capture ( 'server_edit_block' ) ;
300- return {
301- content : [ { type : "text" , text : `Successfully applied edit to ${ filePath } ` } ] ,
302- } ;
302+ try {
303+ await performSearchReplace ( filePath , searchReplace ) ;
304+ return {
305+ content : [ { type : "text" , text : `Successfully applied edit to ${ filePath } ` } ] ,
306+ } ;
307+ } catch ( error ) {
308+ const errorMessage = error instanceof Error ? error . message : String ( error ) ;
309+ return {
310+ content : [ { type : "text" , text : errorMessage } ] ,
311+ } ;
312+ }
303313 }
304314 case "read_file" : {
315+ capture ( 'server_read_file' ) ;
305316 const parsed = ReadFileArgsSchema . parse ( args ) ;
306317 const content = await readFile ( parsed . path ) ;
307- capture ( 'server_read_file' ) ;
308318 return {
309319 content : [ { type : "text" , text : content } ] ,
310320 } ;
311321 }
312322 case "read_multiple_files" : {
323+ capture ( 'server_read_multiple_files' ) ;
313324 const parsed = ReadMultipleFilesArgsSchema . parse ( args ) ;
314325 const results = await readMultipleFiles ( parsed . paths ) ;
315- capture ( 'server_read_multiple_files' ) ;
316326 return {
317327 content : [ { type : "text" , text : results . join ( "\n---\n" ) } ] ,
318328 } ;
319329 }
320330 case "write_file" : {
331+ capture ( 'server_write_file' ) ;
321332 const parsed = WriteFileArgsSchema . parse ( args ) ;
322333 await writeFile ( parsed . path , parsed . content ) ;
323- capture ( 'server_write_file' ) ;
324334 return {
325335 content : [ { type : "text" , text : `Successfully wrote to ${ parsed . path } ` } ] ,
326336 } ;
327337 }
328338 case "create_directory" : {
339+ capture ( 'server_create_directory' ) ;
329340 const parsed = CreateDirectoryArgsSchema . parse ( args ) ;
330341 await createDirectory ( parsed . path ) ;
331- capture ( 'server_create_directory' ) ;
332342 return {
333343 content : [ { type : "text" , text : `Successfully created directory ${ parsed . path } ` } ] ,
334344 } ;
335345 }
336346 case "list_directory" : {
347+ capture ( 'server_list_directory' ) ;
337348 const parsed = ListDirectoryArgsSchema . parse ( args ) ;
338349 const entries = await listDirectory ( parsed . path ) ;
339- capture ( 'server_list_directory' ) ;
340350 return {
341351 content : [ { type : "text" , text : entries . join ( '\n' ) } ] ,
342352 } ;
343353 }
344354 case "move_file" : {
355+ capture ( 'server_move_file' ) ;
345356 const parsed = MoveFileArgsSchema . parse ( args ) ;
346357 await moveFile ( parsed . source , parsed . destination ) ;
347- capture ( 'server_move_file' ) ;
348358 return {
349359 content : [ { type : "text" , text : `Successfully moved ${ parsed . source } to ${ parsed . destination } ` } ] ,
350360 } ;
351361 }
352362 case "search_files" : {
363+ capture ( 'server_search_files' ) ;
353364 const parsed = SearchFilesArgsSchema . parse ( args ) ;
354365 const results = await searchFiles ( parsed . path , parsed . pattern ) ;
355- capture ( 'server_search_files' ) ;
356366 return {
357367 content : [ { type : "text" , text : results . length > 0 ? results . join ( '\n' ) : "No matches found" } ] ,
358368 } ;
359369 }
360370 case "search_code" : {
371+ capture ( 'server_search_code' ) ;
361372 const parsed = SearchCodeArgsSchema . parse ( args ) ;
362373 const results = await searchTextInFiles ( {
363374 rootPath : parsed . path ,
@@ -368,7 +379,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
368379 includeHidden : parsed . includeHidden ,
369380 contextLines : parsed . contextLines ,
370381 } ) ;
371- capture ( 'server_search_code' ) ;
372382 if ( results . length === 0 ) {
373383 return {
374384 content : [ { type : "text" , text : "No matches found" } ] ,
@@ -392,9 +402,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
392402 } ;
393403 }
394404 case "get_file_info" : {
405+ capture ( 'server_get_file_info' ) ;
395406 const parsed = GetFileInfoArgsSchema . parse ( args ) ;
396407 const info = await getFileInfo ( parsed . path ) ;
397- capture ( 'server_get_file_info' ) ;
398408 return {
399409 content : [ {
400410 type : "text" ,
@@ -416,6 +426,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest)
416426 }
417427
418428 default :
429+ capture ( 'server_unknow_tool' , {
430+ name
431+ } ) ;
419432 throw new Error ( `Unknown tool: ${ name } ` ) ;
420433 }
421434 } catch ( error ) {
0 commit comments