@@ -33,6 +33,7 @@ import type {
3333 LighthouseData ,
3434 Response ,
3535 SnapshotParams ,
36+ UniquePageData ,
3637} from './tools/ToolDefinition.js' ;
3738import type { InsightName , TraceResult } from './trace-processing/parse.js' ;
3839import { getInsightOutput , getTraceSummary } from './trace-processing/parse.js' ;
@@ -197,6 +198,7 @@ export class McpResponse implements Response {
197198 #listWebMcpTools?: boolean ;
198199 #devToolsData?: DevToolsData ;
199200 #tabId?: string ;
201+ #uniquePages?: UniquePageData [ ] ;
200202 #args: ParsedArguments ;
201203 #page?: McpPage ;
202204 #redactNetworkHeaders = true ;
@@ -221,6 +223,10 @@ export class McpResponse implements Response {
221223 this . #tabId = tabId ;
222224 }
223225
226+ setUniquePages ( uniquePages : UniquePageData [ ] ) : void {
227+ this . #uniquePages = uniquePages ;
228+ }
229+
224230 setIncludePages ( value : boolean ) : void {
225231 this . #includePages = value ;
226232
@@ -698,6 +704,7 @@ export class McpResponse implements Response {
698704 defaultValue ?: string ;
699705 } ;
700706 pages ?: object [ ] ;
707+ uniquePages ?: object [ ] ;
701708 pagination ?: object ;
702709 heapSnapshot ?: {
703710 stats ?: object ;
@@ -838,6 +845,30 @@ Call ${handleDialog.name} to handle it before continuing.`);
838845 structuredContent . tabId = this . #tabId;
839846 }
840847
848+ if ( this . #uniquePages) {
849+ if ( this . #uniquePages. length ) {
850+ response . push ( '## Unique Pages' ) ;
851+ for ( const page of this . #uniquePages) {
852+ const parts = [
853+ `${ page . pageId } :` ,
854+ `status=${ page . identityStatus } ` ,
855+ `tabId=${ page . tabId ?? 'null' } ` ,
856+ page . url ,
857+ ] ;
858+ if ( page . selected ) {
859+ parts . push ( '[selected]' ) ;
860+ }
861+ if ( page . error ) {
862+ parts . push ( `error="${ page . error } "` ) ;
863+ }
864+ response . push ( parts . join ( ' ' ) ) ;
865+ }
866+ } else {
867+ response . push ( 'No pages found.' ) ;
868+ }
869+ structuredContent . uniquePages = this . #uniquePages;
870+ }
871+
841872 if ( data . traceSummary ) {
842873 const summary = getTraceSummary ( data . traceSummary ) ;
843874 response . push ( summary ) ;
0 commit comments