@browserbasehq/orca 3.7.0-preview.1 → 3.7.2-preview.0

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 (127) hide show
  1. package/dist/cjs/lib/modelUtils.d.ts +10 -0
  2. package/dist/cjs/lib/modelUtils.js +11 -0
  3. package/dist/cjs/lib/modelUtils.js.map +1 -1
  4. package/dist/cjs/lib/v3/agent/AgentProvider.js +3 -0
  5. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  6. package/dist/cjs/lib/v3/agent/tools/click.js +15 -4
  7. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -1
  8. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +12 -4
  9. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  10. package/dist/cjs/lib/v3/agent/tools/type.js +12 -3
  11. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -1
  12. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +3 -1
  13. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  14. package/dist/cjs/lib/v3/api.d.ts +1 -1
  15. package/dist/cjs/lib/v3/api.js +11 -1
  16. package/dist/cjs/lib/v3/api.js.map +1 -1
  17. package/dist/cjs/lib/v3/cache/AgentCache.js +6 -1
  18. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -1
  19. package/dist/cjs/lib/v3/external_clients/aisdk.js +2 -0
  20. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -1
  21. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +20 -0
  22. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  23. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +5 -4
  24. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  25. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +32 -0
  26. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  27. package/dist/cjs/lib/v3/index.d.ts +1 -1
  28. package/dist/cjs/lib/v3/llm/LLMProvider.js +9 -2
  29. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  30. package/dist/cjs/lib/v3/llm/aisdk.js +2 -0
  31. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  32. package/dist/cjs/lib/v3/llm/providerOptions.d.ts +7 -0
  33. package/dist/cjs/lib/v3/llm/providerOptions.js +9 -0
  34. package/dist/cjs/lib/v3/llm/providerOptions.js.map +1 -0
  35. package/dist/cjs/lib/v3/types/private/agent.d.ts +1 -1
  36. package/dist/cjs/lib/v3/types/private/agent.js +1 -0
  37. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -1
  38. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  39. package/dist/cjs/lib/v3/types/public/agent.js +3 -0
  40. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  41. package/dist/cjs/lib/v3/types/public/api.d.ts +53 -0
  42. package/dist/cjs/lib/v3/types/public/api.js +8 -0
  43. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  44. package/dist/cjs/lib/v3/types/public/model.d.ts +7 -0
  45. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  46. package/dist/cjs/lib/v3/types/public/options.d.ts +13 -0
  47. package/dist/cjs/lib/v3/types/public/options.js.map +1 -1
  48. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  49. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  50. package/dist/cjs/lib/v3/understudy/locator.d.ts +12 -0
  51. package/dist/cjs/lib/v3/understudy/locator.js +44 -0
  52. package/dist/cjs/lib/v3/understudy/locator.js.map +1 -1
  53. package/dist/cjs/lib/v3/understudy/page.d.ts +15 -0
  54. package/dist/cjs/lib/v3/understudy/page.js +50 -0
  55. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  56. package/dist/cjs/lib/v3/v3.d.ts +8 -0
  57. package/dist/cjs/lib/v3/v3.js +50 -3
  58. package/dist/cjs/lib/v3/v3.js.map +1 -1
  59. package/dist/cjs/lib/v3/verifier/types.d.ts +3 -2
  60. package/dist/cjs/lib/v3/verifier/types.js.map +1 -1
  61. package/dist/cjs/lib/version.d.ts +1 -1
  62. package/dist/cjs/lib/version.js +1 -1
  63. package/dist/cjs/lib/version.js.map +1 -1
  64. package/dist/esm/lib/modelUtils.d.ts +10 -0
  65. package/dist/esm/lib/modelUtils.js +9 -0
  66. package/dist/esm/lib/modelUtils.js.map +1 -1
  67. package/dist/esm/lib/v3/agent/AgentProvider.js +3 -0
  68. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  69. package/dist/esm/lib/v3/agent/tools/click.js +15 -4
  70. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  71. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +12 -4
  72. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  73. package/dist/esm/lib/v3/agent/tools/type.js +12 -3
  74. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  75. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +3 -1
  76. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  77. package/dist/esm/lib/v3/api.d.ts +1 -1
  78. package/dist/esm/lib/v3/api.js +11 -1
  79. package/dist/esm/lib/v3/api.js.map +1 -1
  80. package/dist/esm/lib/v3/cache/AgentCache.js +6 -1
  81. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  82. package/dist/esm/lib/v3/external_clients/aisdk.js +2 -0
  83. package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -1
  84. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +20 -0
  85. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  86. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +5 -4
  87. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  88. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +32 -0
  89. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  90. package/dist/esm/lib/v3/index.d.ts +1 -1
  91. package/dist/esm/lib/v3/llm/LLMProvider.js +9 -2
  92. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  93. package/dist/esm/lib/v3/llm/aisdk.js +2 -0
  94. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  95. package/dist/esm/lib/v3/llm/providerOptions.d.ts +7 -0
  96. package/dist/esm/lib/v3/llm/providerOptions.js +6 -0
  97. package/dist/esm/lib/v3/llm/providerOptions.js.map +1 -0
  98. package/dist/esm/lib/v3/types/private/agent.d.ts +1 -1
  99. package/dist/esm/lib/v3/types/private/agent.js +1 -0
  100. package/dist/esm/lib/v3/types/private/agent.js.map +1 -1
  101. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  102. package/dist/esm/lib/v3/types/public/agent.js +3 -0
  103. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  104. package/dist/esm/lib/v3/types/public/api.d.ts +53 -0
  105. package/dist/esm/lib/v3/types/public/api.js +8 -0
  106. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  107. package/dist/esm/lib/v3/types/public/model.d.ts +7 -0
  108. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  109. package/dist/esm/lib/v3/types/public/options.d.ts +13 -0
  110. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  111. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  112. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  113. package/dist/esm/lib/v3/understudy/locator.d.ts +12 -0
  114. package/dist/esm/lib/v3/understudy/locator.js +44 -0
  115. package/dist/esm/lib/v3/understudy/locator.js.map +1 -1
  116. package/dist/esm/lib/v3/understudy/page.d.ts +15 -0
  117. package/dist/esm/lib/v3/understudy/page.js +50 -0
  118. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  119. package/dist/esm/lib/v3/v3.d.ts +8 -0
  120. package/dist/esm/lib/v3/v3.js +51 -4
  121. package/dist/esm/lib/v3/v3.js.map +1 -1
  122. package/dist/esm/lib/v3/verifier/types.d.ts +3 -2
  123. package/dist/esm/lib/v3/verifier/types.js.map +1 -1
  124. package/dist/esm/lib/version.d.ts +1 -1
  125. package/dist/esm/lib/version.js +1 -1
  126. package/dist/esm/lib/version.js.map +1 -1
  127. package/package.json +1 -1
@@ -73,6 +73,14 @@ export declare class V3 {
73
73
  * @deprecated Use `isVerified` instead. This alias will be removed in a future version.
74
74
  */
75
75
  get isAdvancedStealth(): boolean;
76
+ /**
77
+ * Whether coordinate pointer actions should actuate as touch instead of mouse.
78
+ *
79
+ * Explicit opt-in via the `useTouch` option — no session-derived or probed
80
+ * detection, so the answer is known before the first action, is stable for the
81
+ * whole run, and never surprises a caller who didn't ask for touch.
82
+ */
83
+ get usesTouch(): boolean;
76
84
  /**
77
85
  * Returns the configured viewport dimensions from launch options.
78
86
  * Falls back to default 1288x711 if not configured.
@@ -109,6 +109,7 @@ const EventEmitter_js_1 = require("./flowlogger/EventEmitter.js");
109
109
  const EventStore_js_1 = require("./flowlogger/EventStore.js");
110
110
  const timeoutGuard_js_1 = require("./handlers/handlerUtils/timeoutGuard.js");
111
111
  const sdkErrors_js_1 = require("./types/public/sdkErrors.js");
112
+ const AUTO_MODEL_API_ONLY_MESSAGE = `model: "${modelUtils_js_2.AUTO_MODEL_NAME}" is only supported when running through the Stagehand API (env: "BROWSERBASE" with disableAPI: false and experimental: false). Specify a concrete model (e.g. "openai/gpt-5") instead.`;
112
113
  const DEFAULT_MODEL_NAME = "openai/gpt-4.1-mini";
113
114
  const DEFAULT_VIEWPORT = { width: 1288, height: 711 };
114
115
  const DEFAULT_AGENT_TOOL_TIMEOUT_MS = 45000;
@@ -230,6 +231,16 @@ let V3 = (() => {
230
231
  get isAdvancedStealth() {
231
232
  return this.isVerified;
232
233
  }
234
+ /**
235
+ * Whether coordinate pointer actions should actuate as touch instead of mouse.
236
+ *
237
+ * Explicit opt-in via the `useTouch` option — no session-derived or probed
238
+ * detection, so the answer is known before the first action, is stable for the
239
+ * whole run, and never surprises a caller who didn't ask for touch.
240
+ */
241
+ get usesTouch() {
242
+ return this.opts.useTouch === true;
243
+ }
233
244
  /**
234
245
  * Returns the configured viewport dimensions from launch options.
235
246
  * Falls back to default 1288x711 if not configured.
@@ -350,7 +361,18 @@ let V3 = (() => {
350
361
  const baseClientOptions = clientOptions
351
362
  ? { ...clientOptions }
352
363
  : {};
353
- if (opts.llmClient) {
364
+ if ((0, modelUtils_js_2.isAutoModel)(this.modelName)) {
365
+ if (opts.llmClient ||
366
+ opts.env !== "BROWSERBASE" ||
367
+ this.disableAPI ||
368
+ this.experimental) {
369
+ throw new index_js_1.StagehandInvalidArgumentError(AUTO_MODEL_API_ONLY_MESSAGE);
370
+ }
371
+ // "auto" delegates model selection to the Stagehand API, so no local
372
+ // LLM client is created and no provider API key is required.
373
+ this.modelClientOptions = baseClientOptions;
374
+ }
375
+ else if (opts.llmClient) {
354
376
  this.llmClient = opts.llmClient;
355
377
  this.modelClientOptions = baseClientOptions;
356
378
  this.disableAPI = true;
@@ -526,6 +548,15 @@ let V3 = (() => {
526
548
  clientOptions = rest;
527
549
  perCallMiddleware = middleware;
528
550
  }
551
+ if ((0, modelUtils_js_2.isAutoModel)(modelName)) {
552
+ if (!this.apiClient) {
553
+ throw new index_js_1.StagehandInvalidArgumentError(AUTO_MODEL_API_ONLY_MESSAGE);
554
+ }
555
+ // The Stagehand API resolves "auto" server-side and intercepts every
556
+ // act/extract/observe, so the local client is never dereferenced here.
557
+ // Note it is undefined when the session's base model is also "auto".
558
+ return this.llmClient;
559
+ }
529
560
  if (modelName === this.modelName &&
530
561
  !perCallMiddleware &&
531
562
  (!clientOptions || Object.keys(clientOptions).length === 0)) {
@@ -878,10 +909,21 @@ let V3 = (() => {
878
909
  verbose: this.verbose,
879
910
  systemPrompt: this.opts.systemPrompt,
880
911
  selfHeal: this.opts.selfHeal,
912
+ useTouch: this.opts.useTouch,
881
913
  browserbaseSessionCreateParams: createSessionPayload,
882
914
  browserbaseSessionID: this.opts.browserbaseSessionID,
883
915
  });
884
916
  if (!available) {
917
+ if ((0, modelUtils_js_2.isAutoModel)(this.modelName)) {
918
+ // "auto" has no local fallback; end the just-created session
919
+ // best-effort before surfacing the error. Never end a
920
+ // caller-supplied (resumed) session we didn't create.
921
+ if (!this.opts.browserbaseSessionID) {
922
+ await this.apiClient.end().catch(() => { });
923
+ }
924
+ this.apiClient = null;
925
+ throw new index_js_1.StagehandInitError(`model: "${modelUtils_js_2.AUTO_MODEL_NAME}" requires the Stagehand API, but it is unavailable for this session (sessionId: ${sessionId}). Specify a concrete model (e.g. "openai/gpt-5") instead.`);
926
+ }
885
927
  this.apiClient = null;
886
928
  }
887
929
  this.opts.browserbaseSessionID = sessionId;
@@ -1034,7 +1076,10 @@ let V3 = (() => {
1034
1076
  let actCacheContext = null;
1035
1077
  const canUseCache = typeof input === "string" &&
1036
1078
  !this.isAgentReplayRecording() &&
1037
- this.actCache.enabled;
1079
+ this.actCache.enabled &&
1080
+ // "auto" sessions have no local LLM client for replay self-heal;
1081
+ // rely on the API (and its server-side cache) instead.
1082
+ !(0, modelUtils_js_2.isAutoModel)(this.modelName);
1038
1083
  if (canUseCache) {
1039
1084
  actCacheContext = await this.actCache.prepareContext(input, page, (0, variables_js_1.flattenVariables)(options?.variables));
1040
1085
  if (actCacheContext) {
@@ -1518,7 +1563,9 @@ let V3 = (() => {
1518
1563
  cua: { value: isCuaMode ? "true" : "false", type: "boolean" },
1519
1564
  mode: { value: loggedMode, type: "string" },
1520
1565
  model: {
1521
- value: (0, modelUtils_js_1.extractModelName)(options?.model) ?? this.llmClient.modelName,
1566
+ value: (0, modelUtils_js_1.extractModelName)(options?.model) ??
1567
+ this.llmClient?.modelName ??
1568
+ this.modelName,
1522
1569
  type: "string",
1523
1570
  },
1524
1571
  systemPrompt: { value: options?.systemPrompt ?? "", type: "string" },