@browserbasehq/orca 3.6.0-gemini-cua → 3.7.1-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 (145) 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/AgentClient.d.ts +2 -2
  5. package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -1
  6. package/dist/cjs/lib/v3/agent/AgentProvider.js +3 -0
  7. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  8. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.d.ts +4 -3
  9. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +11 -9
  10. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  11. package/dist/cjs/lib/v3/agent/GoogleCUAClient.d.ts +12 -3
  12. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +107 -22
  13. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  14. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.d.ts +2 -2
  15. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +2 -2
  16. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  17. package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +6 -3
  18. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +13 -7
  19. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  20. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.d.ts +1 -0
  21. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +43 -3
  22. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  23. package/dist/cjs/lib/v3/api.js +9 -0
  24. package/dist/cjs/lib/v3/api.js.map +1 -1
  25. package/dist/cjs/lib/v3/cache/AgentCache.js +6 -1
  26. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -1
  27. package/dist/cjs/lib/v3/external_clients/aisdk.js +2 -0
  28. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -1
  29. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +35 -11
  30. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  31. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +32 -18
  32. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  33. package/dist/cjs/lib/v3/index.d.ts +2 -1
  34. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +2 -2
  35. package/dist/cjs/lib/v3/llm/LLMProvider.js +9 -2
  36. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  37. package/dist/cjs/lib/v3/llm/aisdk.js +2 -0
  38. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  39. package/dist/cjs/lib/v3/llm/providerOptions.d.ts +7 -0
  40. package/dist/cjs/lib/v3/llm/providerOptions.js +9 -0
  41. package/dist/cjs/lib/v3/llm/providerOptions.js.map +1 -0
  42. package/dist/cjs/lib/v3/types/private/agent.d.ts +1 -1
  43. package/dist/cjs/lib/v3/types/private/agent.js +1 -0
  44. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -1
  45. package/dist/cjs/lib/v3/types/public/agent.d.ts +10 -1
  46. package/dist/cjs/lib/v3/types/public/agent.js +3 -0
  47. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  48. package/dist/cjs/lib/v3/types/public/context.d.ts +7 -0
  49. package/dist/cjs/lib/v3/types/public/context.js.map +1 -1
  50. package/dist/cjs/lib/v3/types/public/model.d.ts +7 -0
  51. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  52. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +4 -0
  53. package/dist/cjs/lib/v3/types/public/sdkErrors.js +9 -1
  54. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -1
  55. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  56. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  57. package/dist/cjs/lib/v3/understudy/cdp.d.ts +2 -0
  58. package/dist/cjs/lib/v3/understudy/cdp.js +26 -12
  59. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -1
  60. package/dist/cjs/lib/v3/understudy/context.d.ts +13 -1
  61. package/dist/cjs/lib/v3/understudy/context.js +284 -1
  62. package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
  63. package/dist/cjs/lib/v3/understudy/domainPolicy.d.ts +25 -0
  64. package/dist/cjs/lib/v3/understudy/domainPolicy.js +162 -0
  65. package/dist/cjs/lib/v3/understudy/domainPolicy.js.map +1 -0
  66. package/dist/cjs/lib/v3/v3.js +43 -4
  67. package/dist/cjs/lib/v3/v3.js.map +1 -1
  68. package/dist/cjs/lib/v3/verifier/types.d.ts +3 -2
  69. package/dist/cjs/lib/v3/verifier/types.js.map +1 -1
  70. package/dist/cjs/lib/version.d.ts +1 -1
  71. package/dist/cjs/lib/version.js +1 -1
  72. package/dist/cjs/lib/version.js.map +1 -1
  73. package/dist/esm/lib/modelUtils.d.ts +10 -0
  74. package/dist/esm/lib/modelUtils.js +9 -0
  75. package/dist/esm/lib/modelUtils.js.map +1 -1
  76. package/dist/esm/lib/v3/agent/AgentClient.d.ts +2 -2
  77. package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -1
  78. package/dist/esm/lib/v3/agent/AgentProvider.js +3 -0
  79. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  80. package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +4 -3
  81. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +11 -9
  82. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  83. package/dist/esm/lib/v3/agent/GoogleCUAClient.d.ts +12 -3
  84. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +107 -22
  85. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  86. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.d.ts +2 -2
  87. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +2 -2
  88. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  89. package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +6 -3
  90. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +13 -7
  91. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  92. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.d.ts +1 -0
  93. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +42 -3
  94. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  95. package/dist/esm/lib/v3/api.js +9 -0
  96. package/dist/esm/lib/v3/api.js.map +1 -1
  97. package/dist/esm/lib/v3/cache/AgentCache.js +6 -1
  98. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  99. package/dist/esm/lib/v3/external_clients/aisdk.js +2 -0
  100. package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -1
  101. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +35 -11
  102. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  103. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +32 -18
  104. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  105. package/dist/esm/lib/v3/index.d.ts +2 -1
  106. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +2 -2
  107. package/dist/esm/lib/v3/llm/LLMProvider.js +9 -2
  108. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  109. package/dist/esm/lib/v3/llm/aisdk.js +2 -0
  110. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  111. package/dist/esm/lib/v3/llm/providerOptions.d.ts +7 -0
  112. package/dist/esm/lib/v3/llm/providerOptions.js +6 -0
  113. package/dist/esm/lib/v3/llm/providerOptions.js.map +1 -0
  114. package/dist/esm/lib/v3/types/private/agent.d.ts +1 -1
  115. package/dist/esm/lib/v3/types/private/agent.js +1 -0
  116. package/dist/esm/lib/v3/types/private/agent.js.map +1 -1
  117. package/dist/esm/lib/v3/types/public/agent.d.ts +10 -1
  118. package/dist/esm/lib/v3/types/public/agent.js +3 -0
  119. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  120. package/dist/esm/lib/v3/types/public/context.d.ts +7 -0
  121. package/dist/esm/lib/v3/types/public/context.js.map +1 -1
  122. package/dist/esm/lib/v3/types/public/model.d.ts +7 -0
  123. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  124. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +4 -0
  125. package/dist/esm/lib/v3/types/public/sdkErrors.js +7 -0
  126. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  127. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +4 -3
  128. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -1
  129. package/dist/esm/lib/v3/understudy/cdp.d.ts +2 -0
  130. package/dist/esm/lib/v3/understudy/cdp.js +26 -12
  131. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  132. package/dist/esm/lib/v3/understudy/context.d.ts +13 -1
  133. package/dist/esm/lib/v3/understudy/context.js +285 -2
  134. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  135. package/dist/esm/lib/v3/understudy/domainPolicy.d.ts +25 -0
  136. package/dist/esm/lib/v3/understudy/domainPolicy.js +158 -0
  137. package/dist/esm/lib/v3/understudy/domainPolicy.js.map +1 -0
  138. package/dist/esm/lib/v3/v3.js +44 -5
  139. package/dist/esm/lib/v3/v3.js.map +1 -1
  140. package/dist/esm/lib/v3/verifier/types.d.ts +3 -2
  141. package/dist/esm/lib/v3/verifier/types.js.map +1 -1
  142. package/dist/esm/lib/version.d.ts +1 -1
  143. package/dist/esm/lib/version.js +1 -1
  144. package/dist/esm/lib/version.js.map +1 -1
  145. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainPolicy.js","sourceRoot":"","sources":["../../../../../lib/v3/understudy/domainPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Protocol } from \"devtools-protocol\";\nimport { StagehandInvalidArgumentError } from \"../types/public/sdkErrors.js\";\nimport type { DomainPolicy } from \"../types/public/context.js\";\n\ntype DomainRule =\n | { type: \"exact\"; hostname: string }\n | { type: \"wildcard\"; hostname: string };\n\nexport type NormalizedDomainPolicy = {\n allowedDomains: string[];\n blockedDomains: string[];\n allowedDomainRules: DomainRule[];\n blockedDomainRules: DomainRule[];\n fetchPatterns: Protocol.Fetch.RequestPattern[];\n};\n\nexport type DomainPolicyDecision =\n | { action: \"continue\" }\n | { action: \"block\"; reason: \"allowedDomains\" | \"blockedDomains\" };\n\nconst DOMAIN_LABEL_RE = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;\nconst HTTP_SCHEMES = [\"http\", \"https\"] as const;\ntype DomainPolicyKey = \"allowedDomains\" | \"blockedDomains\";\n\nfunction canonicalizeHostname(hostname: string): string {\n return hostname.toLowerCase().replace(/\\.+$/, \"\");\n}\n\nfunction validateHostname(\n hostname: string,\n original: string,\n kind: \"allowedDomains\" | \"blockedDomains\",\n): void {\n const label = kind === \"allowedDomains\" ? \"allowed\" : \"blocked\";\n\n if (!hostname || hostname.length > 253) {\n throw new StagehandInvalidArgumentError(\n `Invalid ${label} domain pattern: \"${original}\"`,\n );\n }\n\n const labels = hostname.split(\".\");\n if (\n labels.length < 2 ||\n labels.some((label) => !DOMAIN_LABEL_RE.test(label))\n ) {\n throw new StagehandInvalidArgumentError(\n `Invalid ${label} domain pattern: \"${original}\"`,\n );\n }\n}\n\nfunction normalizeDomainPattern(\n pattern: unknown,\n kind: \"allowedDomains\" | \"blockedDomains\",\n): DomainRule {\n const label = kind === \"allowedDomains\" ? \"allowed\" : \"blocked\";\n const capitalizedLabel = kind === \"allowedDomains\" ? \"Allowed\" : \"Blocked\";\n\n if (typeof pattern !== \"string\") {\n throw new StagehandInvalidArgumentError(\n `${capitalizedLabel} domain patterns must be strings`,\n );\n }\n\n const original = pattern;\n const normalized = canonicalizeHostname(pattern.trim());\n\n if (!normalized) {\n throw new StagehandInvalidArgumentError(\n `Invalid ${label} domain pattern: \"${original}\"`,\n );\n }\n\n if (\n normalized.includes(\"://\") ||\n normalized.includes(\"/\") ||\n normalized.includes(\":\") ||\n normalized.includes(\"?\") ||\n normalized.includes(\"#\")\n ) {\n throw new StagehandInvalidArgumentError(\n `${capitalizedLabel} domain patterns must be domain-only values: \"${original}\"`,\n );\n }\n\n if (normalized.startsWith(\"*.\")) {\n const hostname = normalized.slice(2);\n validateHostname(hostname, original, kind);\n return { type: \"wildcard\", hostname };\n }\n\n if (normalized.includes(\"*\")) {\n throw new StagehandInvalidArgumentError(\n `Wildcards are only supported as a leading \"*.\": \"${original}\"`,\n );\n }\n\n validateHostname(normalized, original, kind);\n return { type: \"exact\", hostname: normalized };\n}\n\nfunction normalizeDomainPatterns(\n patterns: unknown[] | undefined,\n kind: DomainPolicyKey,\n): DomainRule[] {\n if (!patterns?.length) return [];\n\n const rulesByKey = new Map<string, DomainRule>();\n for (const pattern of patterns) {\n const rule = normalizeDomainPattern(pattern, kind);\n rulesByKey.set(`${rule.type}:${rule.hostname}`, rule);\n }\n\n return Array.from(rulesByKey.values());\n}\n\nfunction getDomainPatterns(\n policy: DomainPolicy | null | undefined,\n key: DomainPolicyKey,\n): string[] {\n if (policy === null) return [];\n\n // Passing undefined usually means the caller accidentally omitted the policy\n // argument or passed through an unset variable. Clearing must be explicit.\n if (policy === undefined) {\n throw new StagehandInvalidArgumentError(\n \"Domain policy must be an object or null\",\n );\n }\n\n const patterns = policy[key];\n if (patterns === undefined) return [];\n\n // Empty arrays intentionally clear that side of the policy, but malformed\n // runtime values should fail fast rather than silently disabling interception.\n if (!Array.isArray(patterns)) {\n throw new StagehandInvalidArgumentError(\n `${key} must be an array of strings`,\n );\n }\n\n return patterns;\n}\n\nfunction patternHost(rule: DomainRule): string {\n return rule.type === \"wildcard\" ? `*.${rule.hostname}` : rule.hostname;\n}\n\nfunction fetchPatternHosts(rule: DomainRule): string[] {\n const host = patternHost(rule);\n return [host, `${host}.`];\n}\n\nfunction toBlocklistFetchPatterns(\n rules: DomainRule[],\n): Protocol.Fetch.RequestPattern[] {\n const patterns: Protocol.Fetch.RequestPattern[] = [];\n\n for (const rule of rules) {\n for (const host of fetchPatternHosts(rule)) {\n for (const scheme of HTTP_SCHEMES) {\n patterns.push({\n urlPattern: `${scheme}://${host}/*`,\n requestStage: \"Request\",\n });\n patterns.push({\n urlPattern: `${scheme}://${host}:*/*`,\n requestStage: \"Request\",\n });\n }\n }\n }\n\n return patterns;\n}\n\nfunction toAllowlistFetchPatterns(): Protocol.Fetch.RequestPattern[] {\n return HTTP_SCHEMES.map((scheme) => ({\n urlPattern: `${scheme}://*/*`,\n requestStage: \"Request\",\n }));\n}\n\nexport function normalizeDomainPolicy(\n policy: DomainPolicy | null | undefined,\n): NormalizedDomainPolicy | null {\n const allowedDomains = getDomainPatterns(policy, \"allowedDomains\");\n const blockedDomains = getDomainPatterns(policy, \"blockedDomains\");\n\n if (!allowedDomains.length && !blockedDomains.length) return null;\n\n const allowedDomainRules = normalizeDomainPatterns(\n allowedDomains,\n \"allowedDomains\",\n );\n const blockedDomainRules = normalizeDomainPatterns(\n blockedDomains,\n \"blockedDomains\",\n );\n\n return {\n allowedDomains: allowedDomainRules.map(patternHost),\n blockedDomains: blockedDomainRules.map(patternHost),\n allowedDomainRules,\n blockedDomainRules,\n fetchPatterns: allowedDomainRules.length\n ? toAllowlistFetchPatterns()\n : toBlocklistFetchPatterns(blockedDomainRules),\n };\n}\n\nfunction hostnameFromHttpUrl(url: string): string | null {\n try {\n const parsed = new URL(url);\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return null;\n }\n return canonicalizeHostname(parsed.hostname);\n } catch {\n return null;\n }\n}\n\nfunction matchesDomainRules(hostname: string, rules: DomainRule[]): boolean {\n return rules.some((rule) => {\n if (rule.type === \"exact\") {\n return hostname === rule.hostname;\n }\n return hostname.endsWith(`.${rule.hostname}`);\n });\n}\n\nexport function getDomainPolicyDecision(\n url: string,\n policy: NormalizedDomainPolicy | null,\n): DomainPolicyDecision {\n if (!policy) return { action: \"continue\" };\n\n const hostname = hostnameFromHttpUrl(url);\n if (!hostname) return { action: \"continue\" };\n\n if (matchesDomainRules(hostname, policy.blockedDomainRules)) {\n return { action: \"block\", reason: \"blockedDomains\" };\n }\n\n if (\n policy.allowedDomainRules.length &&\n !matchesDomainRules(hostname, policy.allowedDomainRules)\n ) {\n return { action: \"block\", reason: \"allowedDomains\" };\n }\n\n return { action: \"continue\" };\n}\n"]}
@@ -60,7 +60,7 @@ import { resolveTools } from "./mcp/utils.js";
60
60
  import { HYBRID_CAPABLE_MODEL_PATTERNS } from "./types/private/agent.js";
61
61
  import { AVAILABLE_CUA_MODELS, defaultExtractSchema, V3FunctionName, CuaModelRequiredError, StagehandInvalidArgumentError, StagehandNotInitializedError, MissingEnvironmentVariableError, StagehandInitError, } from "./types/public/index.js";
62
62
  import { V3Context } from "./understudy/context.js";
63
- import { resolveModel } from "../modelUtils.js";
63
+ import { AUTO_MODEL_NAME, isAutoModel, resolveModel } from "../modelUtils.js";
64
64
  import { StagehandAPIClient } from "./api.js";
65
65
  import { validateExperimentalFeatures } from "./agent/utils/validateExperimentalFeatures.js";
66
66
  import { flattenVariables } from "./agent/utils/variables.js";
@@ -69,6 +69,7 @@ import { EventEmitterWithWildcardSupport } from "./flowlogger/EventEmitter.js";
69
69
  import { EventStore } from "./flowlogger/EventStore.js";
70
70
  import { createTimeoutGuard } from "./handlers/handlerUtils/timeoutGuard.js";
71
71
  import { ActTimeoutError } from "./types/public/sdkErrors.js";
72
+ const AUTO_MODEL_API_ONLY_MESSAGE = `model: "${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.`;
72
73
  const DEFAULT_MODEL_NAME = "openai/gpt-4.1-mini";
73
74
  const DEFAULT_VIEWPORT = { width: 1288, height: 711 };
74
75
  const DEFAULT_AGENT_TOOL_TIMEOUT_MS = 45000;
@@ -310,7 +311,18 @@ let V3 = (() => {
310
311
  const baseClientOptions = clientOptions
311
312
  ? { ...clientOptions }
312
313
  : {};
313
- if (opts.llmClient) {
314
+ if (isAutoModel(this.modelName)) {
315
+ if (opts.llmClient ||
316
+ opts.env !== "BROWSERBASE" ||
317
+ this.disableAPI ||
318
+ this.experimental) {
319
+ throw new StagehandInvalidArgumentError(AUTO_MODEL_API_ONLY_MESSAGE);
320
+ }
321
+ // "auto" delegates model selection to the Stagehand API, so no local
322
+ // LLM client is created and no provider API key is required.
323
+ this.modelClientOptions = baseClientOptions;
324
+ }
325
+ else if (opts.llmClient) {
314
326
  this.llmClient = opts.llmClient;
315
327
  this.modelClientOptions = baseClientOptions;
316
328
  this.disableAPI = true;
@@ -486,6 +498,15 @@ let V3 = (() => {
486
498
  clientOptions = rest;
487
499
  perCallMiddleware = middleware;
488
500
  }
501
+ if (isAutoModel(modelName)) {
502
+ if (!this.apiClient) {
503
+ throw new StagehandInvalidArgumentError(AUTO_MODEL_API_ONLY_MESSAGE);
504
+ }
505
+ // The Stagehand API resolves "auto" server-side and intercepts every
506
+ // act/extract/observe, so the local client is never dereferenced here.
507
+ // Note it is undefined when the session's base model is also "auto".
508
+ return this.llmClient;
509
+ }
489
510
  if (modelName === this.modelName &&
490
511
  !perCallMiddleware &&
491
512
  (!clientOptions || Object.keys(clientOptions).length === 0)) {
@@ -842,6 +863,16 @@ let V3 = (() => {
842
863
  browserbaseSessionID: this.opts.browserbaseSessionID,
843
864
  });
844
865
  if (!available) {
866
+ if (isAutoModel(this.modelName)) {
867
+ // "auto" has no local fallback; end the just-created session
868
+ // best-effort before surfacing the error. Never end a
869
+ // caller-supplied (resumed) session we didn't create.
870
+ if (!this.opts.browserbaseSessionID) {
871
+ await this.apiClient.end().catch(() => { });
872
+ }
873
+ this.apiClient = null;
874
+ throw new StagehandInitError(`model: "${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.`);
875
+ }
845
876
  this.apiClient = null;
846
877
  }
847
878
  this.opts.browserbaseSessionID = sessionId;
@@ -994,7 +1025,10 @@ let V3 = (() => {
994
1025
  let actCacheContext = null;
995
1026
  const canUseCache = typeof input === "string" &&
996
1027
  !this.isAgentReplayRecording() &&
997
- this.actCache.enabled;
1028
+ this.actCache.enabled &&
1029
+ // "auto" sessions have no local LLM client for replay self-heal;
1030
+ // rely on the API (and its server-side cache) instead.
1031
+ !isAutoModel(this.modelName);
998
1032
  if (canUseCache) {
999
1033
  actCacheContext = await this.actCache.prepareContext(input, page, flattenVariables(options?.variables));
1000
1034
  if (actCacheContext) {
@@ -1478,14 +1512,19 @@ let V3 = (() => {
1478
1512
  cua: { value: isCuaMode ? "true" : "false", type: "boolean" },
1479
1513
  mode: { value: loggedMode, type: "string" },
1480
1514
  model: {
1481
- value: extractModelName(options?.model) ?? this.llmClient.modelName,
1515
+ value: extractModelName(options?.model) ??
1516
+ this.llmClient?.modelName ??
1517
+ this.modelName,
1482
1518
  type: "string",
1483
1519
  },
1484
1520
  systemPrompt: { value: options?.systemPrompt ?? "", type: "string" },
1485
1521
  tools: { value: JSON.stringify(options?.tools ?? {}), type: "object" },
1486
1522
  ...(options?.integrations && {
1487
1523
  integrations: {
1488
- value: JSON.stringify(options.integrations),
1524
+ // Integrations may contain live MCP `Client` instances (from
1525
+ // connectToMCPServer), which are circular and throw in JSON.stringify.
1526
+ // Log a safe descriptor instead: keep URL strings, summarize clients.
1527
+ value: JSON.stringify(options.integrations.map((integration) => typeof integration === "string" ? integration : "[mcp client]")),
1489
1528
  type: "object",
1490
1529
  },
1491
1530
  }),