1
1
import { Browserbase } from "@browserbasehq/sdk" ;
2
- import { type BrowserContext , chromium } from "@playwright/test" ;
2
+ import { chromium } from "@playwright/test" ;
3
3
import { randomUUID } from "crypto" ;
4
4
import dotenv from "dotenv" ;
5
5
import fs from "fs" ;
@@ -9,7 +9,7 @@ import { z } from "zod";
9
9
import { BrowserResult } from "../types/browser" ;
10
10
import { LogLine } from "../types/log" ;
11
11
import { GotoOptions } from "../types/playwright" ;
12
- import { Page } from "../types/page" ;
12
+ import { Page , BrowserContext } from "../types/page" ;
13
13
import {
14
14
ActOptions ,
15
15
ActResult ,
@@ -303,6 +303,10 @@ async function applyStealthScripts(context: BrowserContext) {
303
303
} ) ;
304
304
}
305
305
306
+ const defaultLogger = async ( logLine : LogLine ) => {
307
+ console . log ( logLineToString ( logLine ) ) ;
308
+ } ;
309
+
306
310
export class Stagehand {
307
311
private stagehandPage ! : StagehandPage ;
308
312
private stagehandContext ! : StagehandContext ;
@@ -319,7 +323,8 @@ export class Stagehand {
319
323
private internalLogger : ( logLine : LogLine ) => void ;
320
324
private apiKey : string | undefined ;
321
325
private projectId : string | undefined ;
322
- private externalLogger ?: ( logLine : LogLine ) => void ;
326
+ // We want external logger to accept async functions
327
+ private externalLogger ?: ( logLine : LogLine ) => void | Promise < void > ;
323
328
private browserbaseSessionCreateParams ?: Browserbase . Sessions . SessionCreateParams ;
324
329
public variables : { [ key : string ] : unknown } ;
325
330
private contextPath ?: string ;
@@ -348,7 +353,7 @@ export class Stagehand {
348
353
env : "BROWSERBASE" ,
349
354
} ,
350
355
) {
351
- this . externalLogger = logger ;
356
+ this . externalLogger = logger || defaultLogger ;
352
357
this . internalLogger = this . log . bind ( this ) ;
353
358
this . enableCaching =
354
359
enableCaching ??
@@ -372,10 +377,7 @@ export class Stagehand {
372
377
373
378
public get logger ( ) : ( logLine : LogLine ) => void {
374
379
return ( logLine : LogLine ) => {
375
- this . internalLogger ( logLine ) ;
376
- if ( this . externalLogger ) {
377
- this . externalLogger ( logLine ) ;
378
- }
380
+ this . log ( logLine ) ;
379
381
} ;
380
382
}
381
383
@@ -504,9 +506,6 @@ export class Stagehand {
504
506
// Normal Logging
505
507
if ( this . externalLogger ) {
506
508
this . externalLogger ( logObj ) ;
507
- } else {
508
- const logMessage = logLineToString ( logObj ) ;
509
- console . log ( logMessage ) ;
510
509
}
511
510
512
511
// Add the logs to the browserbase session
@@ -613,3 +612,4 @@ export * from "../types/log";
613
612
export * from "../types/model" ;
614
613
export * from "../types/playwright" ;
615
614
export * from "../types/stagehand" ;
615
+ export * from "../types/page" ;
0 commit comments