File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -226,31 +226,39 @@ export async function createMcpServer(
226226 logger ( `${ tool . name } request: ${ JSON . stringify ( params , null , ' ' ) } ` ) ;
227227 const context = await getContext ( ) ;
228228 logger ( `${ tool . name } context: resolved` ) ;
229- const page =
230- serverArgs . experimentalPageIdRouting &&
231- params . pageId &&
232- ! serverArgs . slim
233- ? context . getPageById ( params . pageId )
234- : context . getSelectedMcpPage ( ) ;
235- // If there is a dialog open, we will skip devtools detection
236- if ( ! page . getDialog ( ) ) {
237- await context . detectOpenDevToolsWindows ( ) ;
238- }
229+ await context . detectOpenDevToolsWindows ( ) ;
239230 const response = serverArgs . slim
240231 ? new SlimMcpResponse ( serverArgs )
241232 : new McpResponse ( serverArgs ) ;
242233
243234 response . setRedactNetworkHeaders ( serverArgs . redactNetworkHeaders ) ;
244235 if ( 'pageScoped' in tool && tool . pageScoped ) {
236+ const page =
237+ serverArgs . experimentalPageIdRouting &&
238+ params . pageId &&
239+ ! serverArgs . slim
240+ ? context . getPageById ( params . pageId )
241+ : context . getSelectedMcpPage ( ) ;
245242 response . setPage ( page ) ;
246- await tool . handler (
247- {
248- params,
249- page,
250- } ,
251- response ,
252- context ,
253- ) ;
243+ try {
244+ await tool . handler (
245+ {
246+ params,
247+ page,
248+ } ,
249+ response ,
250+ context ,
251+ ) ;
252+ } catch ( error ) {
253+ const dialog = page . getDialog ( ) ;
254+ if ( dialog ) {
255+ response . appendResponseLine (
256+ `[Blocked] Action triggered a dialog.` ,
257+ ) ;
258+ } else {
259+ throw error ;
260+ }
261+ }
254262 } else {
255263 await tool . handler (
256264 // @ts -expect-error types do not match.
Original file line number Diff line number Diff line change @@ -348,18 +348,6 @@ export function definePageTool<
348348 return {
349349 ...definition ,
350350 pageScoped : true ,
351- handler : async ( request , response , context ) => {
352- try {
353- await definition . handler ( request , response , context ) ;
354- } catch ( error ) {
355- const dialog = request . page . getDialog ( ) ;
356- if ( dialog ) {
357- response . appendResponseLine ( `[Blocked] Action triggered a dialog.` ) ;
358- return ;
359- }
360- throw error ;
361- }
362- } ,
363351 } as DefinedPageTool < Schema > ;
364352}
365353
You can’t perform that action at this time.
0 commit comments