@browserbasehq/orca 3.2.0-preview.2 → 3.2.0-preview.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +5 -5
  2. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  3. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +5 -5
  4. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  5. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +5 -5
  6. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/tools/act.js +1 -10
  8. package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/tools/ariaTree.js +1 -12
  10. package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -1
  11. package/dist/cjs/lib/v3/agent/tools/braveSearch.js.map +1 -1
  12. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js.map +1 -1
  13. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -1
  14. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -1
  15. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  16. package/dist/cjs/lib/v3/agent/tools/extract.js +1 -10
  17. package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -1
  18. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  19. package/dist/cjs/lib/v3/agent/tools/fillform.js +1 -10
  20. package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -1
  21. package/dist/cjs/lib/v3/agent/tools/index.d.ts +2 -2
  22. package/dist/cjs/lib/v3/agent/tools/index.js +53 -5
  23. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -1
  24. package/dist/cjs/lib/v3/agent/tools/keys.d.ts +1 -1
  25. package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -1
  26. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -1
  27. package/dist/cjs/lib/v3/api.js +9 -2
  28. package/dist/cjs/lib/v3/api.js.map +1 -1
  29. package/dist/cjs/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  30. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js +30 -0
  31. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  32. package/dist/cjs/lib/v3/flowlogger/EventSink.d.ts +44 -0
  33. package/dist/cjs/lib/v3/flowlogger/EventSink.js +217 -0
  34. package/dist/cjs/lib/v3/flowlogger/EventSink.js.map +1 -0
  35. package/dist/cjs/lib/v3/flowlogger/EventStore.d.ts +26 -0
  36. package/dist/cjs/lib/v3/flowlogger/EventStore.js +135 -0
  37. package/dist/cjs/lib/v3/flowlogger/EventStore.js.map +1 -0
  38. package/dist/{esm/lib/v3/flowLogger.d.ts → cjs/lib/v3/flowlogger/FlowLogger.d.ts} +32 -31
  39. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js +591 -0
  40. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  41. package/dist/cjs/lib/v3/flowlogger/prettify.d.ts +6 -0
  42. package/dist/cjs/lib/v3/flowlogger/prettify.js +395 -0
  43. package/dist/cjs/lib/v3/flowlogger/prettify.js.map +1 -0
  44. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +26 -28
  45. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  46. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +2 -2
  47. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  48. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +3 -5
  49. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  50. package/dist/cjs/lib/v3/llm/aisdk.js +9 -9
  51. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  52. package/dist/cjs/lib/v3/types/public/options.d.ts +2 -0
  53. package/dist/cjs/lib/v3/types/public/options.js.map +1 -1
  54. package/dist/cjs/lib/v3/understudy/cdp.d.ts +1 -1
  55. package/dist/cjs/lib/v3/understudy/cdp.js +83 -43
  56. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -1
  57. package/dist/cjs/lib/v3/understudy/page.js +18 -23
  58. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  59. package/dist/cjs/lib/v3/v3.d.ts +5 -5
  60. package/dist/cjs/lib/v3/v3.js +48 -46
  61. package/dist/cjs/lib/v3/v3.js.map +1 -1
  62. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +1 -0
  63. package/dist/cjs/tests/integration/flowLogger.spec.js +714 -0
  64. package/dist/cjs/tests/integration/flowLogger.spec.js.map +1 -0
  65. package/dist/cjs/tests/integration/testUtils.d.ts +33 -0
  66. package/dist/cjs/tests/integration/testUtils.js +144 -0
  67. package/dist/cjs/tests/integration/testUtils.js.map +1 -1
  68. package/dist/cjs/tests/integration/timeouts.spec.js +112 -2
  69. package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -1
  70. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  71. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +95 -0
  72. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  73. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  74. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +43 -0
  75. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  76. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  77. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +250 -0
  78. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  79. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +1 -1
  80. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  81. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +1 -1
  82. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  83. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +1 -1
  84. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  85. package/dist/esm/lib/v3/agent/tools/act.js +1 -10
  86. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
  87. package/dist/esm/lib/v3/agent/tools/ariaTree.js +1 -12
  88. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
  89. package/dist/esm/lib/v3/agent/tools/braveSearch.js.map +1 -1
  90. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js.map +1 -1
  91. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  92. package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -1
  93. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  94. package/dist/esm/lib/v3/agent/tools/extract.js +1 -10
  95. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
  96. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  97. package/dist/esm/lib/v3/agent/tools/fillform.js +1 -10
  98. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
  99. package/dist/esm/lib/v3/agent/tools/index.d.ts +2 -2
  100. package/dist/esm/lib/v3/agent/tools/index.js +53 -5
  101. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  102. package/dist/esm/lib/v3/agent/tools/keys.d.ts +1 -1
  103. package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -1
  104. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  105. package/dist/esm/lib/v3/api.js +9 -2
  106. package/dist/esm/lib/v3/api.js.map +1 -1
  107. package/dist/esm/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  108. package/dist/esm/lib/v3/flowlogger/EventEmitter.js +26 -0
  109. package/dist/esm/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  110. package/dist/esm/lib/v3/flowlogger/EventSink.d.ts +44 -0
  111. package/dist/esm/lib/v3/flowlogger/EventSink.js +206 -0
  112. package/dist/esm/lib/v3/flowlogger/EventSink.js.map +1 -0
  113. package/dist/esm/lib/v3/flowlogger/EventStore.d.ts +26 -0
  114. package/dist/esm/lib/v3/flowlogger/EventStore.js +127 -0
  115. package/dist/esm/lib/v3/flowlogger/EventStore.js.map +1 -0
  116. package/dist/{cjs/lib/v3/flowLogger.d.ts → esm/lib/v3/flowlogger/FlowLogger.d.ts} +32 -31
  117. package/dist/esm/lib/v3/flowlogger/FlowLogger.js +583 -0
  118. package/dist/esm/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  119. package/dist/esm/lib/v3/flowlogger/prettify.d.ts +6 -0
  120. package/dist/esm/lib/v3/flowlogger/prettify.js +389 -0
  121. package/dist/esm/lib/v3/flowlogger/prettify.js.map +1 -0
  122. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +25 -27
  123. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  124. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +1 -1
  125. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  126. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +2 -4
  127. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  128. package/dist/esm/lib/v3/llm/aisdk.js +1 -1
  129. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  130. package/dist/esm/lib/v3/types/public/options.d.ts +2 -0
  131. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  132. package/dist/esm/lib/v3/understudy/cdp.d.ts +1 -1
  133. package/dist/esm/lib/v3/understudy/cdp.js +78 -38
  134. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  135. package/dist/esm/lib/v3/understudy/page.js +13 -18
  136. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  137. package/dist/esm/lib/v3/v3.d.ts +5 -5
  138. package/dist/esm/lib/v3/v3.js +43 -41
  139. package/dist/esm/lib/v3/v3.js.map +1 -1
  140. package/dist/esm/tests/integration/flowLogger.spec.d.ts +1 -0
  141. package/dist/esm/tests/integration/flowLogger.spec.js +712 -0
  142. package/dist/esm/tests/integration/flowLogger.spec.js.map +1 -0
  143. package/dist/esm/tests/integration/testUtils.d.ts +33 -0
  144. package/dist/esm/tests/integration/testUtils.js +138 -0
  145. package/dist/esm/tests/integration/testUtils.js.map +1 -1
  146. package/dist/esm/tests/integration/timeouts.spec.js +112 -2
  147. package/dist/esm/tests/integration/timeouts.spec.js.map +1 -1
  148. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  149. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +93 -0
  150. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  151. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  152. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +41 -0
  153. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  154. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  155. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +248 -0
  156. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  157. package/package.json +3 -1
  158. package/dist/cjs/lib/v3/eventStore.d.ts +0 -41
  159. package/dist/cjs/lib/v3/eventStore.js +0 -375
  160. package/dist/cjs/lib/v3/eventStore.js.map +0 -1
  161. package/dist/cjs/lib/v3/flowLogger.js +0 -470
  162. package/dist/cjs/lib/v3/flowLogger.js.map +0 -1
  163. package/dist/esm/lib/v3/eventStore.d.ts +0 -41
  164. package/dist/esm/lib/v3/eventStore.js +0 -363
  165. package/dist/esm/lib/v3/eventStore.js.map +0 -1
  166. package/dist/esm/lib/v3/flowLogger.js +0 -462
  167. package/dist/esm/lib/v3/flowLogger.js.map +0 -1
@@ -1,11 +1,12 @@
1
- import { EventEmitter } from "events";
2
1
  import { z } from "zod";
3
2
  import { InferStagehandSchema, StagehandZodSchema } from "./zodCompat.js";
4
3
  import { LLMClient } from "./llm/LLMClient.js";
5
4
  import { AgentReplayStep } from "./types/private/index.js";
6
5
  import { AgentConfig, AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, LogLine, StagehandMetrics, Action, ActOptions, ActResult, defaultExtractSchema, ExtractOptions, HistoryEntry, ObserveOptions, pageTextSchema, V3FunctionName, V3Options, AgentStreamResult } from "./types/public/index.js";
7
6
  import { V3Context } from "./understudy/context.js";
8
- import { type FlowLoggerContext } from "./flowLogger.js";
7
+ import { type FlowLoggerContext } from "./flowlogger/FlowLogger.js";
8
+ import { EventEmitterWithWildcardSupport } from "./flowlogger/EventEmitter.js";
9
+ import { EventStore } from "./flowlogger/EventStore.js";
9
10
  /**
10
11
  * V3
11
12
  *
@@ -33,7 +34,7 @@ export declare class V3 {
33
34
  * Event bus for internal communication.
34
35
  * Emits events like 'screenshot' when screenshots are captured during agent execution.
35
36
  */
36
- readonly bus: EventEmitter;
37
+ readonly bus: EventEmitterWithWildcardSupport;
37
38
  private modelName;
38
39
  private modelClientOptions;
39
40
  private llmProvider;
@@ -72,6 +73,7 @@ export declare class V3 {
72
73
  private _history;
73
74
  private readonly instanceId;
74
75
  private readonly sessionId;
76
+ readonly eventStore: EventStore;
75
77
  readonly flowLoggerContext: FlowLoggerContext;
76
78
  private static _processGuardsInstalled;
77
79
  private static _instances;
@@ -81,8 +83,6 @@ export declare class V3 {
81
83
  private apiClient;
82
84
  private keepAlive?;
83
85
  private shutdownSupervisor;
84
- private detachEventStoreListener;
85
- private withLoggingContext;
86
86
  stagehandMetrics: StagehandMetrics;
87
87
  constructor(opts: V3Options);
88
88
  /**
@@ -71,7 +71,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
71
71
  };
72
72
  Object.defineProperty(exports, "__esModule", { value: true });
73
73
  exports.V3 = void 0;
74
- const events_1 = require("events");
75
74
  const fs_1 = __importDefault(require("fs"));
76
75
  const os_1 = __importDefault(require("os"));
77
76
  const path_1 = __importDefault(require("path"));
@@ -102,8 +101,9 @@ const modelUtils_js_2 = require("../modelUtils.js");
102
101
  const api_js_1 = require("./api.js");
103
102
  const validateExperimentalFeatures_js_1 = require("./agent/utils/validateExperimentalFeatures.js");
104
103
  const variables_js_1 = require("./agent/utils/variables.js");
105
- const flowLogger_js_1 = require("./flowLogger.js");
106
- const eventStore_js_1 = require("./eventStore.js");
104
+ const FlowLogger_js_1 = require("./flowlogger/FlowLogger.js");
105
+ const EventEmitter_js_1 = require("./flowlogger/EventEmitter.js");
106
+ const EventStore_js_1 = require("./flowlogger/EventStore.js");
107
107
  const timeoutGuard_js_1 = require("./handlers/handlerUtils/timeoutGuard.js");
108
108
  const sdkErrors_js_1 = require("./types/public/sdkErrors.js");
109
109
  const DEFAULT_MODEL_NAME = "openai/gpt-4.1-mini";
@@ -151,17 +151,14 @@ let V3 = (() => {
151
151
  return class V3 {
152
152
  static {
153
153
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
154
- _act_decorators = [flowLogger_js_1.FlowLogger.wrapWithLogging({
154
+ _act_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({
155
155
  eventType: "StagehandAct",
156
- eventIdSuffix: "4",
157
156
  })];
158
- _extract_decorators = [flowLogger_js_1.FlowLogger.wrapWithLogging({
157
+ _extract_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({
159
158
  eventType: "StagehandExtract",
160
- eventIdSuffix: "4",
161
159
  })];
162
- _observe_decorators = [flowLogger_js_1.FlowLogger.wrapWithLogging({
160
+ _observe_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({
163
161
  eventType: "StagehandObserve",
164
- eventIdSuffix: "4",
165
162
  })];
166
163
  __esDecorate(this, null, _act_decorators, { kind: "method", name: "act", static: false, private: false, access: { has: obj => "act" in obj, get: obj => obj.act }, metadata: _metadata }, null, _instanceExtraInitializers);
167
164
  __esDecorate(this, null, _extract_decorators, { kind: "method", name: "extract", static: false, private: false, access: { has: obj => "extract" in obj, get: obj => obj.extract }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -179,7 +176,7 @@ let V3 = (() => {
179
176
  * Event bus for internal communication.
180
177
  * Emits events like 'screenshot' when screenshots are captured during agent execution.
181
178
  */
182
- bus = new events_1.EventEmitter();
179
+ bus = new EventEmitter_js_1.EventEmitterWithWildcardSupport();
183
180
  modelName;
184
181
  modelClientOptions;
185
182
  llmProvider;
@@ -248,6 +245,7 @@ let V3 = (() => {
248
245
  _history = [];
249
246
  instanceId;
250
247
  sessionId;
248
+ eventStore;
251
249
  flowLoggerContext;
252
250
  static _processGuardsInstalled = false;
253
251
  static _instances = new Set();
@@ -257,10 +255,6 @@ let V3 = (() => {
257
255
  apiClient = null;
258
256
  keepAlive;
259
257
  shutdownSupervisor = null;
260
- detachEventStoreListener = null;
261
- withLoggingContext(fn) {
262
- return (0, logger_js_2.withInstanceLogContext)(this.instanceId, fn);
263
- }
264
258
  stagehandMetrics = {
265
259
  actPromptTokens: 0,
266
260
  actCompletionTokens: 0,
@@ -385,9 +379,21 @@ let V3 = (() => {
385
379
  act: this.act.bind(this),
386
380
  });
387
381
  this.opts = opts;
388
- void (0, eventStore_js_1.getEventStore)().initializeSession(this.sessionId, opts);
389
- this.flowLoggerContext = flowLogger_js_1.FlowLogger.init(this.sessionId, this.bus);
390
- this.detachEventStoreListener = (0, eventStore_js_1.getEventStore)().attachBus(this.sessionId, this.bus);
382
+ // FlowLogger always gets a per-instance session context and shared event
383
+ // bus. The attached EventStore decides which sinks are active:
384
+ // `verbose: 2` or `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,
385
+ // and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.
386
+ this.eventStore = new EventStore_js_1.EventStore(this.sessionId, opts);
387
+ this.flowLoggerContext = FlowLogger_js_1.FlowLogger.init(this.sessionId, this.bus);
388
+ // Flow event pipeline:
389
+ // FlowLogger -> this.bus -> this.eventStore -> configured sinks/query history.
390
+ // V3 owns the bus for this session. EventStore is not another bus; it just
391
+ // receives already-emitted FlowEvents here, then fans them out to sinks and
392
+ // keeps the queryable per-session history used by /v4/log, parent/ancestor lookups, and tests.
393
+ // `on()` stores a strong reference to the handler, so the EventStore
394
+ // stays alive until this bus is garbage-collected with the rest of the V3
395
+ // object graph.
396
+ this.bus.on("*", this.eventStore.emit);
391
397
  // Track instance for global process guard handling
392
398
  V3._instances.add(this);
393
399
  }
@@ -594,7 +600,7 @@ let V3 = (() => {
594
600
  */
595
601
  async init() {
596
602
  try {
597
- return await this.withLoggingContext(async () => {
603
+ return await (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
598
604
  this.actHandler = new actHandler_js_1.ActHandler(this.llmClient, this.modelName, this.modelClientOptions, (model) => this.resolveLlmClient(model), this.opts.systemPrompt ?? "", this.logInferenceToFile, this.opts.selfHeal ?? true, (functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs), this.domSettleTimeoutMs);
599
605
  this.extractHandler = new extractHandler_js_1.ExtractHandler(this.llmClient, this.modelName, this.modelClientOptions, (model) => this.resolveLlmClient(model), this.opts.systemPrompt ?? "", this.logInferenceToFile, this.experimental, (functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs));
600
606
  this.observeHandler = new observeHandler_js_1.ObserveHandler(this.llmClient, this.modelName, this.modelClientOptions, (model) => this.resolveLlmClient(model), this.opts.systemPrompt ?? "", this.logInferenceToFile, this.experimental, (functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs) => this.updateMetrics(functionName, promptTokens, completionTokens, reasoningTokens, cachedInputTokens, inferenceTimeMs));
@@ -759,9 +765,13 @@ let V3 = (() => {
759
765
  const baseSessionParams = this.opts.browserbaseSessionCreateParams ?? {};
760
766
  const resolvedKeepAlive = this.keepAlive;
761
767
  const keepAlive = this.keepAlive === true;
762
- const effectiveSessionParams = resolvedKeepAlive !== undefined
763
- ? { ...baseSessionParams, keepAlive: resolvedKeepAlive }
764
- : baseSessionParams;
768
+ let effectiveSessionParams = baseSessionParams;
769
+ if (resolvedKeepAlive !== undefined) {
770
+ effectiveSessionParams = {
771
+ ...baseSessionParams,
772
+ keepAlive: resolvedKeepAlive,
773
+ };
774
+ }
765
775
  if (!this.disableAPI && !this.experimental) {
766
776
  this.apiClient = new api_js_1.StagehandAPIClient({
767
777
  apiKey,
@@ -868,13 +878,6 @@ let V3 = (() => {
868
878
  // ignore cleanup errors
869
879
  }
870
880
  }
871
- try {
872
- this.detachEventStoreListener?.();
873
- this.detachEventStoreListener = null;
874
- }
875
- catch {
876
- // ignore cleanup errors
877
- }
878
881
  throw error;
879
882
  }
880
883
  }
@@ -918,7 +921,7 @@ let V3 = (() => {
918
921
  this.browserbaseDebugUrl = undefined;
919
922
  }
920
923
  async act(input, options) {
921
- return await this.withLoggingContext(async () => {
924
+ return await (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
922
925
  if (!this.actHandler)
923
926
  throw new index_js_1.StagehandNotInitializedError("act()");
924
927
  let actResult;
@@ -1002,7 +1005,7 @@ let V3 = (() => {
1002
1005
  });
1003
1006
  }
1004
1007
  async extract(a, b, c) {
1005
- return await this.withLoggingContext(async () => {
1008
+ return await (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
1006
1009
  if (!this.extractHandler) {
1007
1010
  throw new index_js_1.StagehandNotInitializedError("extract()");
1008
1011
  }
@@ -1070,7 +1073,7 @@ let V3 = (() => {
1070
1073
  });
1071
1074
  }
1072
1075
  async observe(a, b) {
1073
- return await this.withLoggingContext(async () => {
1076
+ return await (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
1074
1077
  if (!this.observeHandler) {
1075
1078
  throw new index_js_1.StagehandNotInitializedError("observe()");
1076
1079
  }
@@ -1156,7 +1159,7 @@ let V3 = (() => {
1156
1159
  try {
1157
1160
  // Close session file logger
1158
1161
  try {
1159
- await flowLogger_js_1.FlowLogger.close(this.flowLoggerContext);
1162
+ await FlowLogger_js_1.FlowLogger.close(this.flowLoggerContext);
1160
1163
  }
1161
1164
  catch {
1162
1165
  // ignore
@@ -1193,8 +1196,7 @@ let V3 = (() => {
1193
1196
  // ignore
1194
1197
  }
1195
1198
  try {
1196
- this.detachEventStoreListener?.();
1197
- this.detachEventStoreListener = null;
1199
+ await this.eventStore.destroy();
1198
1200
  }
1199
1201
  catch {
1200
1202
  // ignore
@@ -1465,10 +1467,7 @@ let V3 = (() => {
1465
1467
  throw new index_js_1.CuaModelRequiredError(index_js_1.AVAILABLE_CUA_MODELS);
1466
1468
  }
1467
1469
  const agentConfigSignature = this.agentCache.buildConfigSignature(options);
1468
- const execute = flowLogger_js_1.FlowLogger.wrapWithLogging({
1469
- eventType: "AgentExecute",
1470
- eventIdSuffix: "3",
1471
- })(async (instructionOrOptions) => this.withLoggingContext(async () => {
1470
+ const execute = async (instructionOrOptions) => (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
1472
1471
  (0, validateExperimentalFeatures_js_1.validateExperimentalFeatures)({
1473
1472
  isExperimental: this.experimental,
1474
1473
  agentConfig: options,
@@ -1558,18 +1557,18 @@ let V3 = (() => {
1558
1557
  this.discardAgentReplayRecording();
1559
1558
  }
1560
1559
  }
1561
- }));
1560
+ });
1562
1561
  return {
1563
- execute,
1562
+ execute: FlowLogger_js_1.FlowLogger.wrapWithLogging({
1563
+ eventType: "AgentExecute",
1564
+ context: this.flowLoggerContext,
1565
+ })(execute),
1564
1566
  };
1565
1567
  }
1566
1568
  // Default: AISDK tools-based agent
1567
1569
  const agentConfigSignature = this.agentCache.buildConfigSignature(options);
1568
1570
  const isStreaming = options?.stream ?? false;
1569
- const execute = flowLogger_js_1.FlowLogger.wrapWithLogging({
1570
- eventType: "AgentExecute",
1571
- eventIdSuffix: "3",
1572
- })(async (instructionOrOptions) => this.withLoggingContext(async () => {
1571
+ const execute = async (instructionOrOptions) => (0, logger_js_2.withInstanceLogContext)(this.instanceId, async () => {
1573
1572
  (0, validateExperimentalFeatures_js_1.validateExperimentalFeatures)({
1574
1573
  isExperimental: this.experimental,
1575
1574
  agentConfig: options,
@@ -1641,9 +1640,12 @@ let V3 = (() => {
1641
1640
  this.discardAgentReplayRecording();
1642
1641
  }
1643
1642
  }
1644
- }));
1643
+ });
1645
1644
  return {
1646
- execute,
1645
+ execute: FlowLogger_js_1.FlowLogger.wrapWithLogging({
1646
+ eventType: "AgentExecute",
1647
+ context: this.flowLoggerContext,
1648
+ })(execute),
1647
1649
  };
1648
1650
  }
1649
1651
  };