@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
  /**
@@ -32,7 +32,6 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
32
32
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
33
  done = true;
34
34
  };
35
- import { EventEmitter } from "events";
36
35
  import fs from "fs";
37
36
  import os from "os";
38
37
  import path from "path";
@@ -63,8 +62,9 @@ import { resolveModel } from "../modelUtils.js";
63
62
  import { StagehandAPIClient } from "./api.js";
64
63
  import { validateExperimentalFeatures } from "./agent/utils/validateExperimentalFeatures.js";
65
64
  import { flattenVariables } from "./agent/utils/variables.js";
66
- import { FlowLogger } from "./flowLogger.js";
67
- import { getEventStore } from "./eventStore.js";
65
+ import { FlowLogger } from "./flowlogger/FlowLogger.js";
66
+ import { EventEmitterWithWildcardSupport } from "./flowlogger/EventEmitter.js";
67
+ import { EventStore } from "./flowlogger/EventStore.js";
68
68
  import { createTimeoutGuard } from "./handlers/handlerUtils/timeoutGuard.js";
69
69
  import { ActTimeoutError } from "./types/public/sdkErrors.js";
70
70
  const DEFAULT_MODEL_NAME = "openai/gpt-4.1-mini";
@@ -114,15 +114,12 @@ let V3 = (() => {
114
114
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
115
115
  _act_decorators = [FlowLogger.wrapWithLogging({
116
116
  eventType: "StagehandAct",
117
- eventIdSuffix: "4",
118
117
  })];
119
118
  _extract_decorators = [FlowLogger.wrapWithLogging({
120
119
  eventType: "StagehandExtract",
121
- eventIdSuffix: "4",
122
120
  })];
123
121
  _observe_decorators = [FlowLogger.wrapWithLogging({
124
122
  eventType: "StagehandObserve",
125
- eventIdSuffix: "4",
126
123
  })];
127
124
  __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);
128
125
  __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);
@@ -140,7 +137,7 @@ let V3 = (() => {
140
137
  * Event bus for internal communication.
141
138
  * Emits events like 'screenshot' when screenshots are captured during agent execution.
142
139
  */
143
- bus = new EventEmitter();
140
+ bus = new EventEmitterWithWildcardSupport();
144
141
  modelName;
145
142
  modelClientOptions;
146
143
  llmProvider;
@@ -209,6 +206,7 @@ let V3 = (() => {
209
206
  _history = [];
210
207
  instanceId;
211
208
  sessionId;
209
+ eventStore;
212
210
  flowLoggerContext;
213
211
  static _processGuardsInstalled = false;
214
212
  static _instances = new Set();
@@ -218,10 +216,6 @@ let V3 = (() => {
218
216
  apiClient = null;
219
217
  keepAlive;
220
218
  shutdownSupervisor = null;
221
- detachEventStoreListener = null;
222
- withLoggingContext(fn) {
223
- return withInstanceLogContext(this.instanceId, fn);
224
- }
225
219
  stagehandMetrics = {
226
220
  actPromptTokens: 0,
227
221
  actCompletionTokens: 0,
@@ -346,9 +340,21 @@ let V3 = (() => {
346
340
  act: this.act.bind(this),
347
341
  });
348
342
  this.opts = opts;
349
- void getEventStore().initializeSession(this.sessionId, opts);
343
+ // FlowLogger always gets a per-instance session context and shared event
344
+ // bus. The attached EventStore decides which sinks are active:
345
+ // `verbose: 2` or `BROWSERBASE_FLOW_LOGS=1` enables pretty stderr output,
346
+ // and `BROWSERBASE_CONFIG_DIR` enables the pretty/jsonl file sinks for this session.
347
+ this.eventStore = new EventStore(this.sessionId, opts);
350
348
  this.flowLoggerContext = FlowLogger.init(this.sessionId, this.bus);
351
- this.detachEventStoreListener = getEventStore().attachBus(this.sessionId, this.bus);
349
+ // Flow event pipeline:
350
+ // FlowLogger -> this.bus -> this.eventStore -> configured sinks/query history.
351
+ // V3 owns the bus for this session. EventStore is not another bus; it just
352
+ // receives already-emitted FlowEvents here, then fans them out to sinks and
353
+ // keeps the queryable per-session history used by /v4/log, parent/ancestor lookups, and tests.
354
+ // `on()` stores a strong reference to the handler, so the EventStore
355
+ // stays alive until this bus is garbage-collected with the rest of the V3
356
+ // object graph.
357
+ this.bus.on("*", this.eventStore.emit);
352
358
  // Track instance for global process guard handling
353
359
  V3._instances.add(this);
354
360
  }
@@ -555,7 +561,7 @@ let V3 = (() => {
555
561
  */
556
562
  async init() {
557
563
  try {
558
- return await this.withLoggingContext(async () => {
564
+ return await withInstanceLogContext(this.instanceId, async () => {
559
565
  this.actHandler = new 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);
560
566
  this.extractHandler = new 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));
561
567
  this.observeHandler = new 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));
@@ -720,9 +726,13 @@ let V3 = (() => {
720
726
  const baseSessionParams = this.opts.browserbaseSessionCreateParams ?? {};
721
727
  const resolvedKeepAlive = this.keepAlive;
722
728
  const keepAlive = this.keepAlive === true;
723
- const effectiveSessionParams = resolvedKeepAlive !== undefined
724
- ? { ...baseSessionParams, keepAlive: resolvedKeepAlive }
725
- : baseSessionParams;
729
+ let effectiveSessionParams = baseSessionParams;
730
+ if (resolvedKeepAlive !== undefined) {
731
+ effectiveSessionParams = {
732
+ ...baseSessionParams,
733
+ keepAlive: resolvedKeepAlive,
734
+ };
735
+ }
726
736
  if (!this.disableAPI && !this.experimental) {
727
737
  this.apiClient = new StagehandAPIClient({
728
738
  apiKey,
@@ -829,13 +839,6 @@ let V3 = (() => {
829
839
  // ignore cleanup errors
830
840
  }
831
841
  }
832
- try {
833
- this.detachEventStoreListener?.();
834
- this.detachEventStoreListener = null;
835
- }
836
- catch {
837
- // ignore cleanup errors
838
- }
839
842
  throw error;
840
843
  }
841
844
  }
@@ -879,7 +882,7 @@ let V3 = (() => {
879
882
  this.browserbaseDebugUrl = undefined;
880
883
  }
881
884
  async act(input, options) {
882
- return await this.withLoggingContext(async () => {
885
+ return await withInstanceLogContext(this.instanceId, async () => {
883
886
  if (!this.actHandler)
884
887
  throw new StagehandNotInitializedError("act()");
885
888
  let actResult;
@@ -963,7 +966,7 @@ let V3 = (() => {
963
966
  });
964
967
  }
965
968
  async extract(a, b, c) {
966
- return await this.withLoggingContext(async () => {
969
+ return await withInstanceLogContext(this.instanceId, async () => {
967
970
  if (!this.extractHandler) {
968
971
  throw new StagehandNotInitializedError("extract()");
969
972
  }
@@ -1031,7 +1034,7 @@ let V3 = (() => {
1031
1034
  });
1032
1035
  }
1033
1036
  async observe(a, b) {
1034
- return await this.withLoggingContext(async () => {
1037
+ return await withInstanceLogContext(this.instanceId, async () => {
1035
1038
  if (!this.observeHandler) {
1036
1039
  throw new StagehandNotInitializedError("observe()");
1037
1040
  }
@@ -1154,8 +1157,7 @@ let V3 = (() => {
1154
1157
  // ignore
1155
1158
  }
1156
1159
  try {
1157
- this.detachEventStoreListener?.();
1158
- this.detachEventStoreListener = null;
1160
+ await this.eventStore.destroy();
1159
1161
  }
1160
1162
  catch {
1161
1163
  // ignore
@@ -1426,10 +1428,7 @@ let V3 = (() => {
1426
1428
  throw new CuaModelRequiredError(AVAILABLE_CUA_MODELS);
1427
1429
  }
1428
1430
  const agentConfigSignature = this.agentCache.buildConfigSignature(options);
1429
- const execute = FlowLogger.wrapWithLogging({
1430
- eventType: "AgentExecute",
1431
- eventIdSuffix: "3",
1432
- })(async (instructionOrOptions) => this.withLoggingContext(async () => {
1431
+ const execute = async (instructionOrOptions) => withInstanceLogContext(this.instanceId, async () => {
1433
1432
  validateExperimentalFeatures({
1434
1433
  isExperimental: this.experimental,
1435
1434
  agentConfig: options,
@@ -1519,18 +1518,18 @@ let V3 = (() => {
1519
1518
  this.discardAgentReplayRecording();
1520
1519
  }
1521
1520
  }
1522
- }));
1521
+ });
1523
1522
  return {
1524
- execute,
1523
+ execute: FlowLogger.wrapWithLogging({
1524
+ eventType: "AgentExecute",
1525
+ context: this.flowLoggerContext,
1526
+ })(execute),
1525
1527
  };
1526
1528
  }
1527
1529
  // Default: AISDK tools-based agent
1528
1530
  const agentConfigSignature = this.agentCache.buildConfigSignature(options);
1529
1531
  const isStreaming = options?.stream ?? false;
1530
- const execute = FlowLogger.wrapWithLogging({
1531
- eventType: "AgentExecute",
1532
- eventIdSuffix: "3",
1533
- })(async (instructionOrOptions) => this.withLoggingContext(async () => {
1532
+ const execute = async (instructionOrOptions) => withInstanceLogContext(this.instanceId, async () => {
1534
1533
  validateExperimentalFeatures({
1535
1534
  isExperimental: this.experimental,
1536
1535
  agentConfig: options,
@@ -1602,9 +1601,12 @@ let V3 = (() => {
1602
1601
  this.discardAgentReplayRecording();
1603
1602
  }
1604
1603
  }
1605
- }));
1604
+ });
1606
1605
  return {
1607
- execute,
1606
+ execute: FlowLogger.wrapWithLogging({
1607
+ eventType: "AgentExecute",
1608
+ context: this.flowLoggerContext,
1609
+ })(execute),
1608
1610
  };
1609
1611
  }
1610
1612
  };