@@ -56,6 +56,7 @@ import {
5656 LocalBrowserLaunchOptions ,
5757 V3Options ,
5858 AnyPage ,
59+ PageHandle ,
5960 PatchrightPage ,
6061 PlaywrightPage ,
6162 PuppeteerPage ,
@@ -1389,6 +1390,15 @@ export class V3 {
13891390 ) ;
13901391 }
13911392
1393+ private hasTargetId ( p : unknown ) : p is PageHandle {
1394+ return (
1395+ typeof p === "object" &&
1396+ p !== null &&
1397+ typeof ( p as PageHandle ) . pageId === "string" &&
1398+ typeof ( p as PageHandle ) . targetId === "string"
1399+ ) ;
1400+ }
1401+
13921402 private isPlaywrightPage ( p : unknown ) : p is PlaywrightPage {
13931403 return (
13941404 typeof p === "object" &&
@@ -1413,6 +1423,20 @@ export class V3 {
14131423 ) ;
14141424 }
14151425
1426+ private resolvePageFromHandle ( handle : PageHandle ) : Page {
1427+ const ctx = this . ctx ;
1428+ if ( ! ctx ) {
1429+ throw new StagehandNotInitializedError ( "resolvePage()" ) ;
1430+ }
1431+ const page = ctx . resolvePageByTargetId ( handle . targetId ) ;
1432+ if ( ! page ) {
1433+ throw new StagehandInitError (
1434+ `Failed to resolve V3 Page from handle targetId=${ handle . targetId } .` ,
1435+ ) ;
1436+ }
1437+ return page ;
1438+ }
1439+
14161440 /** Resolve an external page reference or fall back to the active V3 page. */
14171441 private async resolvePage ( page ?: AnyPage ) : Promise < Page > {
14181442 if ( page ) {
@@ -1426,6 +1450,9 @@ export class V3 {
14261450 }
14271451
14281452 private async normalizeToV3Page ( input : AnyPage ) : Promise < Page > {
1453+ if ( this . hasTargetId ( input ) ) {
1454+ return this . resolvePageFromHandle ( input ) ;
1455+ }
14291456 if ( input instanceof ( await import ( "./understudy/page" ) ) . Page ) {
14301457 return input as Page ;
14311458 }
0 commit comments