44 * SPDX-License-Identifier: Apache-2.0
55 */
66
7- import { createStackTraceForConsoleMessage } from './DevtoolsUtils.js' ;
8- import type { ConsoleMessageData } from './formatters/consoleFormatter.js' ;
9- import {
10- formatConsoleEventShort ,
11- formatConsoleEventVerbose ,
12- } from './formatters/consoleFormatter.js' ;
7+ import { ConsoleFormatter } from './formatters/ConsoleFormatter.js' ;
138import { IssueFormatter } from './formatters/IssueFormatter.js' ;
149import { NetworkFormatter } from './formatters/NetworkFormatter.js' ;
1510import { SnapshotFormatter } from './formatters/SnapshotFormatter.js' ;
@@ -234,7 +229,7 @@ export class McpResponse implements Response {
234229 detailedNetworkRequest = formatter ;
235230 }
236231
237- let consoleData : ConsoleMessageData | IssueFormatter | undefined ;
232+ let consoleData : ConsoleFormatter | IssueFormatter | undefined ;
238233
239234 if ( this . #attachedConsoleMessageId) {
240235 const message = context . getConsoleMessageById (
@@ -244,26 +239,11 @@ export class McpResponse implements Response {
244239 if ( 'args' in message ) {
245240 const consoleMessage = message as ConsoleMessage ;
246241 const devTools = context . getDevToolsUniverse ( ) ;
247- const stackTrace = devTools
248- ? await createStackTraceForConsoleMessage ( devTools , consoleMessage )
249- : undefined ;
250-
251- consoleData = {
252- consoleMessageStableId,
253- type : consoleMessage . type ( ) ,
254- message : consoleMessage . text ( ) ,
255- args : await Promise . all (
256- consoleMessage . args ( ) . map ( async arg => {
257- const stringArg = await arg . jsonValue ( ) . catch ( ( ) => {
258- // Ignore errors.
259- } ) ;
260- return typeof stringArg === 'object'
261- ? JSON . stringify ( stringArg )
262- : String ( stringArg ) ;
263- } ) ,
264- ) ,
265- stackTrace,
266- } ;
242+ consoleData = await ConsoleFormatter . from ( consoleMessage , {
243+ id : consoleMessageStableId ,
244+ fetchDetailedData : true ,
245+ devTools : devTools ?? undefined ,
246+ } ) ;
267247 } else if ( message instanceof DevTools . AggregatedIssue ) {
268248 const formatter = new IssueFormatter ( message , {
269249 id : consoleMessageStableId ,
@@ -277,16 +257,13 @@ export class McpResponse implements Response {
277257 }
278258 consoleData = formatter ;
279259 } else {
280- consoleData = {
281- consoleMessageStableId,
282- type : 'error' ,
283- message : ( message as Error ) . message ,
284- args : [ ] ,
285- } ;
260+ consoleData = await ConsoleFormatter . from ( message as Error , {
261+ id : consoleMessageStableId ,
262+ } ) ;
286263 }
287264 }
288265
289- let consoleListData : Array < ConsoleMessageData | IssueFormatter > | undefined ;
266+ let consoleListData : Array < ConsoleFormatter | IssueFormatter > | undefined ;
290267 if ( this . #consoleDataOptions?. include ) {
291268 let messages = context . getConsoleData (
292269 this . #consoleDataOptions. includePreservedMessages ,
@@ -308,36 +285,17 @@ export class McpResponse implements Response {
308285 consoleListData = (
309286 await Promise . all (
310287 messages . map (
311- async (
312- item ,
313- ) : Promise < ConsoleMessageData | IssueFormatter | null > => {
288+ async ( item ) : Promise < ConsoleFormatter | IssueFormatter | null > => {
314289 const consoleMessageStableId =
315290 context . getConsoleMessageStableId ( item ) ;
316291 if ( 'args' in item ) {
317292 const consoleMessage = item as ConsoleMessage ;
318293 const devTools = context . getDevToolsUniverse ( ) ;
319- const stackTrace = devTools
320- ? await createStackTraceForConsoleMessage (
321- devTools ,
322- consoleMessage ,
323- )
324- : undefined ;
325- return {
326- consoleMessageStableId,
327- type : consoleMessage . type ( ) ,
328- message : consoleMessage . text ( ) ,
329- args : await Promise . all (
330- consoleMessage . args ( ) . map ( async arg => {
331- const stringArg = await arg . jsonValue ( ) . catch ( ( ) => {
332- // Ignore errors.
333- } ) ;
334- return typeof stringArg === 'object'
335- ? JSON . stringify ( stringArg )
336- : String ( stringArg ) ;
337- } ) ,
338- ) ,
339- stackTrace,
340- } ;
294+ return await ConsoleFormatter . from ( consoleMessage , {
295+ id : consoleMessageStableId ,
296+ fetchDetailedData : true ,
297+ devTools : devTools ?? undefined ,
298+ } ) ;
341299 }
342300 if ( item instanceof DevTools . AggregatedIssue ) {
343301 const formatter = new IssueFormatter ( item , {
@@ -348,12 +306,9 @@ export class McpResponse implements Response {
348306 }
349307 return formatter ;
350308 }
351- return {
352- consoleMessageStableId,
353- type : 'error' ,
354- message : ( item as Error ) . message ,
355- args : [ ] ,
356- } ;
309+ return await ConsoleFormatter . from ( item as Error , {
310+ id : consoleMessageStableId ,
311+ } ) ;
357312 } ,
358313 ) ,
359314 )
@@ -411,8 +366,8 @@ export class McpResponse implements Response {
411366 toolName : string ,
412367 context : McpContext ,
413368 data : {
414- consoleData : ConsoleMessageData | IssueFormatter | undefined ;
415- consoleListData : Array < ConsoleMessageData | IssueFormatter > | undefined ;
369+ consoleData : ConsoleFormatter | IssueFormatter | undefined ;
370+ consoleListData : Array < ConsoleFormatter | IssueFormatter > | undefined ;
416371 snapshot : SnapshotFormatter | string | undefined ;
417372 detailedNetworkRequest ?: NetworkFormatter ;
418373 networkRequests ?: NetworkFormatter [ ] ;
@@ -551,7 +506,7 @@ Call ${handleDialog.name} to handle it before continuing.`);
551506 if ( message instanceof IssueFormatter ) {
552507 return message . toString ( ) ;
553508 }
554- return formatConsoleEventShort ( message ) ;
509+ return message . toString ( ) ;
555510 } ) ,
556511 ) ;
557512 } else {
@@ -604,7 +559,7 @@ Call ${handleDialog.name} to handle it before continuing.`);
604559
605560 #formatConsoleData(
606561 context : McpContext ,
607- data : ConsoleMessageData | IssueFormatter | undefined ,
562+ data : ConsoleFormatter | IssueFormatter | undefined ,
608563 ) : string [ ] {
609564 const response : string [ ] = [ ] ;
610565 if ( ! data ) {
@@ -614,7 +569,7 @@ Call ${handleDialog.name} to handle it before continuing.`);
614569 if ( data instanceof IssueFormatter ) {
615570 response . push ( data . toStringDetailed ( ) ) ;
616571 } else {
617- response . push ( formatConsoleEventVerbose ( data , context ) ) ;
572+ response . push ( data . toStringDetailed ( ) ) ;
618573 }
619574 return response ;
620575 }
0 commit comments