Skip to content

Commit 452490d

Browse files
committed
add try catch block in index.ts to handle dialog
1 parent 8173f21 commit 452490d

2 files changed

Lines changed: 26 additions & 30 deletions

File tree

src/index.ts

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff 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.

src/tools/ToolDefinition.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)