@@ -378,35 +378,56 @@ export class McpContext implements Context {
378378 return this . #pageToDevToolsPage. get ( page ) ;
379379 }
380380
381- async getDevToolsData ( ) : Promise < undefined | { requestId ?: number } > {
381+ async getDevToolsData ( ) : Promise <
382+ undefined | { requestId ?: number ; uid ?: string }
383+ > {
382384 try {
383385 const selectedPage = this . getSelectedPage ( ) ;
384386 const devtoolsPage = this . getDevToolsPage ( selectedPage ) ;
385387 if ( devtoolsPage ) {
386- const cdpRequestId = await devtoolsPage . evaluate ( async ( ) => {
387- // @ts -expect-error no types
388- const UI = await import ( '/bundled/ui/legacy/legacy.js' ) ;
389- // @ts -expect-error no types
390- const SDK = await import ( '/bundled/core/sdk/sdk.js' ) ;
391- const request = UI . Context . Context . instance ( ) . flavor (
392- SDK . NetworkRequest . NetworkRequest ,
393- ) ;
394- return request ?. requestId ( ) ;
395- } ) ;
396- if ( ! cdpRequestId ) {
397- this . logger ( 'no context request' ) ;
398- return ;
399- }
400- const request = this . #networkCollector. find ( selectedPage , request => {
401- // @ts -expect-error id is internal.
402- return request . id === cdpRequestId ;
403- } ) ;
404- if ( ! request ) {
405- this . logger ( 'no collected request for ' + cdpRequestId ) ;
388+ const { cdpRequestId, cdpBackendNodeId} = await devtoolsPage . evaluate (
389+ async ( ) => {
390+ // @ts -expect-error no types
391+ const UI = await import ( '/bundled/ui/legacy/legacy.js' ) ;
392+ // @ts -expect-error no types
393+ const SDK = await import ( '/bundled/core/sdk/sdk.js' ) ;
394+ const request = UI . Context . Context . instance ( ) . flavor (
395+ SDK . NetworkRequest . NetworkRequest ,
396+ ) ;
397+ const node = UI . Context . Context . instance ( ) . flavor (
398+ SDK . DOMModel . DOMNode ,
399+ ) ;
400+ return {
401+ cdpRequestId : request ?. requestId ( ) ,
402+ cdpBackendNodeId : node ?. backendNodeId ( ) ,
403+ } ;
404+ } ,
405+ ) ;
406+ const resolveNetworkRequestId = ( ) => {
407+ if ( ! cdpRequestId ) {
408+ this . logger ( 'no context request' ) ;
409+ return ;
410+ }
411+ const request = this . #networkCollector. find ( selectedPage , request => {
412+ // @ts -expect-error id is internal.
413+ return request . id === cdpRequestId ;
414+ } ) ;
415+ if ( ! request ) {
416+ this . logger ( 'no collected request for ' + cdpRequestId ) ;
417+ return ;
418+ }
419+ return this . #networkCollector. getIdForResource ( request ) ;
420+ } ;
421+ const resolveNodeUid = ( ) : string | undefined => {
422+ if ( ! cdpBackendNodeId ) {
423+ this . logger ( 'no cdpBackendNodeId' ) ;
424+ return ;
425+ }
406426 return ;
407- }
427+ } ;
408428 return {
409- requestId : this . #networkCollector. getIdForResource ( request ) ,
429+ requestId : resolveNetworkRequestId ( ) ,
430+ uid : resolveNodeUid ( ) ,
410431 } ;
411432 } else {
412433 this . logger ( 'no devtools page deteched' ) ;
0 commit comments