{"version":3,"file":"index.mjs","names":["isObject","isObjectCustom","mapObjectSkip","_mapObject","mapObject","#maxSize","#maxAge","#onEviction","#oldCache","#deleteIfExpired","#getOrDeleteIfExpired","#getItemValue","#cache","#size","#emitEvictions","#set","#entriesAscending","#moveToRecent","#peek","QuickLru","isObject","mapObject","map","protocolPackageJson.version","LocalBrowserLaunchOptionsSchema","WebMCPToolsOptionsSchema","WebMCPInvokeOptionsSchema","WebMCPResultOptionsSchema","MAX_INPUT_FILE_BYTES","#rpcClient","#descriptor","#rpcClient","#pageId","#terminalResult","asError","ProtocolSchemas.WebMCPResultOptionsSchema","packageJson.version"],"sources":["../../protocol/json-rpc/schemas.ts","../../../node_modules/.pnpm/map-obj@6.0.0/node_modules/map-obj/index.js","../../../node_modules/.pnpm/camelcase@9.0.0/node_modules/camelcase/index.js","../../../node_modules/.pnpm/quick-lru@7.3.0/node_modules/quick-lru/index.js","../../../node_modules/.pnpm/camelcase-keys@10.0.2/node_modules/camelcase-keys/index.js","../../../node_modules/.pnpm/map-obj@5.0.2/node_modules/map-obj/index.js","../../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js","../../../node_modules/.pnpm/snakecase-keys@9.0.2/node_modules/snakecase-keys/index.js","../../protocol/json-rpc/wire-casing.ts","../../protocol/package.json","../../protocol/protocol-version.ts","../../protocol/schemas.ts","../../protocol/schema-registry.ts","../src/browserClipboard.ts","../src/base64.ts","../src/fileUpload.ts","../src/locator.ts","../src/pageScripts.ts","../src/response.ts","../src/webmcp.ts","../src/page.ts","../src/browserContext.ts","../src/runtimeCompatibility.ts","../src/abort.ts","../src/cdpClient.ts","../src/rpcClient.ts","../src/clientLocatorOptions.ts","../src/browser/index.ts","../src/clientSchemas.ts","../package.json","../src/version.ts","../src/sdkIdentity.ts","../src/extensionAssets.ts","../src/browserbaseExtension.ts","../src/browser/browserbaseSession.ts","../src/browser/browserbaseServices.ts","../src/browser/localBrowser.ts","../src/timeouts.ts","../src/browser/factories.ts","../src/stagehand.ts"],"sourcesContent":["import { z } from \"zod/v4\";\nimport type { WireCasingOptions } from \"./wire-casing.ts\";\n\n// JSON-RPC 2.0: https://www.jsonrpc.org/specification\n\nexport const JSONRPCErrorCodes = {\n  parseError: -32700,\n  invalidRequest: -32600,\n  methodNotFound: -32601,\n  invalidParams: -32602,\n  internalError: -32603,\n} as const;\n\nconst JSONRPCParamsSchema = z\n  .union([z.array(z.json()), z.record(z.string(), z.json())])\n  .meta({ id: \"JSONRPCParams\" });\nexport const JSONRPCRequestIdSchema = z.int().nonnegative().meta({ id: \"JSONRPCRequestId\" });\nconst JSONRPCErrorResponseIdSchema = z\n  .union([JSONRPCRequestIdSchema, z.null()])\n  .meta({ id: \"JSONRPCErrorResponseId\" });\n\nexport const JSONRPCErrorObjectSchema = z\n  .strictObject({\n    code: z.int(),\n    message: z.string(),\n    data: z.json().optional(),\n  })\n  .meta({ id: \"JSONRPCErrorObject\" });\n\nexport const JSONRPCRequestSchema = z\n  .strictObject({\n    jsonrpc: z.literal(\"2.0\"),\n    id: JSONRPCRequestIdSchema,\n    method: z.string(),\n    params: JSONRPCParamsSchema.optional(),\n    traceparent: z.string().optional(),\n    tracestate: z.string().optional(),\n  })\n  .meta({ id: \"JSONRPCRequest\" });\n\nexport const JSONRPCNotificationSchema = z\n  .strictObject({\n    jsonrpc: z.literal(\"2.0\"),\n    method: z.string(),\n    params: JSONRPCParamsSchema.optional(),\n  })\n  .meta({ id: \"JSONRPCNotification\" });\n\nexport const JSONRPCSuccessResponseSchema = z\n  .strictObject({\n    jsonrpc: z.literal(\"2.0\"),\n    result: z.json(),\n    id: JSONRPCRequestIdSchema,\n  })\n  .meta({ id: \"JSONRPCSuccessResponse\" });\n\nexport const JSONRPCErrorResponseSchema = z\n  .strictObject({\n    jsonrpc: z.literal(\"2.0\"),\n    error: JSONRPCErrorObjectSchema,\n    id: JSONRPCErrorResponseIdSchema,\n  })\n  .meta({ id: \"JSONRPCErrorResponse\" });\n\nexport const JSONRPCResponseSchema = z\n  .union([JSONRPCSuccessResponseSchema, JSONRPCErrorResponseSchema])\n  .meta({ id: \"JSONRPCResponse\" });\n\nexport const JSONRPCMessageSchema = z\n  .union([JSONRPCRequestSchema, JSONRPCNotificationSchema, JSONRPCResponseSchema])\n  .meta({ id: \"JSONRPCMessage\" });\n\nexport const JSONRPCWireInputSchema = z\n  .unknown()\n  .transform((input, context) => {\n    if (typeof input !== \"string\") return input;\n\n    try {\n      return JSON.parse(input) as unknown;\n    } catch {\n      context.addIssue({ code: \"custom\", message: \"Invalid JSON\" });\n      return z.NEVER;\n    }\n  })\n  .meta({ id: \"JSONRPCWireInput\" });\n\nexport const JSONRPCEnvelopeSchema = z\n  .record(z.string(), z.unknown())\n  .meta({ id: \"JSONRPCEnvelope\" });\n\nexport type RPCMethod = {\n  name: string;\n  params: z.ZodType;\n  result: z.ZodType;\n  paramsWire?: WireCasingOptions;\n  resultWire?: WireCasingOptions;\n};\n\nexport type RPCNotification = {\n  name: string;\n  params: z.ZodType;\n  paramsWire?: WireCasingOptions;\n};\n","const isObject = value => typeof value === 'object' && value !== null;\n\n// Check if a value is a plain object that should be recursed into\nconst isObjectCustom = value => {\n\tif (!isObject(value)) {\n\t\treturn false;\n\t}\n\n\t// Exclude built-in objects\n\tif (\n\t\tvalue instanceof RegExp\n\t\t|| value instanceof Error\n\t\t|| value instanceof Date\n\t\t|| value instanceof Map\n\t\t|| value instanceof Set\n\t\t|| value instanceof WeakMap\n\t\t|| value instanceof WeakSet\n\t\t|| value instanceof Promise\n\t\t|| value instanceof ArrayBuffer\n\t\t|| value instanceof DataView\n\t\t|| ArrayBuffer.isView(value) // Typed arrays\n\t\t|| (globalThis.Blob && value instanceof globalThis.Blob)\n\t) {\n\t\treturn false;\n\t}\n\n\t// Exclude Jest matchers\n\tif (typeof value.$$typeof === 'symbol' || typeof value.asymmetricMatch === 'function') {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nexport const mapObjectSkip = Symbol('mapObjectSkip');\n\nconst getEnumerableKeys = (object, includeSymbols) => {\n\tif (includeSymbols) {\n\t\tconst stringKeys = Object.keys(object);\n\t\tconst symbolKeys = Object.getOwnPropertySymbols(object).filter(symbol => Object.getOwnPropertyDescriptor(object, symbol)?.enumerable);\n\t\treturn [...stringKeys, ...symbolKeys];\n\t}\n\n\treturn Object.keys(object);\n};\n\nconst _mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\tconst {\n\t\ttarget = {},\n\t\t...processOptions\n\t} = {\n\t\tdeep: false,\n\t\tincludeSymbols: false,\n\t\t...options,\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, target);\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? _mapObject(element, mapper, processOptions, isSeen) : element);\n\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const key of getEnumerableKeys(object, processOptions.includeSymbols)) {\n\t\tconst value = object[key];\n\t\tconst mapResult = mapper(key, value);\n\n\t\tif (mapResult === mapObjectSkip) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!Array.isArray(mapResult)) {\n\t\t\tthrow new TypeError(`Mapper must return an array or mapObjectSkip, got ${mapResult === null ? 'null' : typeof mapResult}`);\n\t\t}\n\n\t\tif (mapResult.length < 2) {\n\t\t\tthrow new TypeError(`Mapper must return an array with at least 2 elements [key, value], got ${mapResult.length} elements`);\n\t\t}\n\n\t\tlet [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;\n\n\t\t// Drop `__proto__` keys.\n\t\tif (newKey === '__proto__') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (processOptions.deep && shouldRecurse && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue)\n\t\t\t\t? mapArray(newValue)\n\t\t\t\t: _mapObject(newValue, mapper, processOptions, isSeen);\n\t\t}\n\n\t\ttry {\n\t\t\ttarget[newKey] = newValue;\n\t\t} catch (error) {\n\t\t\tif (error.name === 'TypeError' && error.message.includes('read only')) {\n\t\t\t\t// Skip non-configurable properties\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\treturn target;\n};\n\nexport default function mapObject(object, mapper, options) {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\tif (Array.isArray(object)) {\n\t\tthrow new TypeError('Expected an object, got an array');\n\t}\n\n\t// Ensure the third mapper argument is always the original input object\n\tconst mapperWithRoot = (key, value) => mapper(key, value, object);\n\n\treturn _mapObject(object, mapperWithRoot, options);\n}\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\n// The |$ alternative allows matching at end-of-string, capturing empty string\n// This enables NUMBERS_AND_IDENTIFIER to match digits at string end (e.g., \"test123\")\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp(String.raw`\\d+` + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\n\t\t// Was the character 3 positions back inserted as a separator?\n\t\t// Prevents excessive separators by checking if we recently inserted one\n\t\t// index - 3 accounts for: current character, inserted separator, previous character\n\t\t// Default true for early positions activates the preserveConsecutiveUppercase guard\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\t// FooBar → Foo-Bar (insert separator before uppercase)\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (\n\t\t\tisLastCharUpper\n\t\t\t&& isLastLastCharUpper\n\t\t\t&& LOWERCASE.test(character)\n\t\t\t&& (!isLastLastCharPreserved || preserveConsecutiveUppercase)\n\t\t) {\n\t\t\t// FOOBar → FOO-Bar\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower\n\t\t\t\t= toLowerCase(character) === character\n\t\t\t\t\t&& toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper\n\t\t\t\t= toUpperCase(character) === character\n\t\t\t\t\t&& toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => input.replace(LEADING_CAPITAL, match => toLowerCase(match));\n\nconst processWithCasePreservation = (input, toLowerCase, preserveConsecutiveUppercase) => {\n\tlet result = '';\n\tlet previousWasNumber = false;\n\tlet previousWasUppercase = false;\n\n\t// Convert input to array for lookahead capability\n\tconst characters = [...input];\n\n\tfor (let index = 0; index < characters.length; index++) {\n\t\tconst character = characters[index];\n\t\tconst isUpperCase = UPPERCASE.test(character);\n\t\tconst nextCharIsUpperCase = index + 1 < characters.length && UPPERCASE.test(characters[index + 1]);\n\n\t\tif (previousWasNumber && /[\\p{Alpha}]/u.test(character)) {\n\t\t\t// Letter after number - preserve original case\n\t\t\tresult += character;\n\t\t\tpreviousWasNumber = false;\n\t\t\tpreviousWasUppercase = isUpperCase;\n\t\t} else if (preserveConsecutiveUppercase && isUpperCase && (previousWasUppercase || nextCharIsUpperCase)) {\n\t\t\t// Part of consecutive uppercase sequence when preserveConsecutiveUppercase is true - keep it\n\t\t\tresult += character;\n\t\t\tpreviousWasUppercase = true;\n\t\t} else if (/\\d/.test(character)) {\n\t\t\t// Number - keep as-is and track it\n\t\t\tresult += character;\n\t\t\tpreviousWasNumber = true;\n\t\t\tpreviousWasUppercase = false;\n\t\t} else if (SEPARATORS.test(character)) {\n\t\t\t// Separator - keep as-is and maintain previousWasNumber state\n\t\t\tresult += character;\n\t\t\tpreviousWasUppercase = false;\n\t\t} else {\n\t\t\t// Regular character - lowercase it\n\t\t\tresult += toLowerCase(character);\n\t\t\tpreviousWasNumber = false;\n\t\t\tpreviousWasUppercase = false;\n\t\t}\n\t}\n\n\treturn result;\n};\n\n/**\nCore post-processing:\n- Collapses separators and uppercases the following identifier character.\n- Optionally uppercases the identifier following a numeric sequence.\n\nTwo-pass strategy prevents conflicts:\n1. NUMBERS_AND_IDENTIFIER: handles digit-to-letter transitions\n2. SEPARATORS_AND_IDENTIFIER: handles separator-to-identifier transitions\n\nExample: \"b2b_registration\" with capitalizeAfterNumber: true\n- Pass 1: \"2b\" matches, next char is \"_\" (separator), so don't capitalize → \"b2b_registration\"\n- Pass 2: \"_r\" matches, replace with \"R\" → \"b2bRegistration\"\n*/\nconst postProcess = (input, toUpperCase, {capitalizeAfterNumber}) => {\n\tconst transformNumericIdentifier = capitalizeAfterNumber\n\t\t? (match, identifier, offset, string) => {\n\t\t\tconst nextCharacter = string.charAt(offset + match.length);\n\n\t\t\t// If the numeric+identifier run is immediately followed by a separator,\n\t\t\t// treat it as a continued token and do not force a new word.\n\t\t\tif (SEPARATORS.test(nextCharacter)) {\n\t\t\t\treturn match;\n\t\t\t}\n\n\t\t\t// Only uppercase the identifier part (not the digits) for efficiency\n\t\t\treturn identifier ? match.slice(0, -identifier.length) + toUpperCase(identifier) : match;\n\t\t}\n\t\t// When false: numbers do not create a word boundary.\n\t\t: match => match;\n\n\treturn input\n\t\t.replaceAll(NUMBERS_AND_IDENTIFIER, transformNumericIdentifier)\n\t\t.replaceAll(\n\t\t\tSEPARATORS_AND_IDENTIFIER,\n\t\t\t(_, identifier) => toUpperCase(identifier),\n\t\t);\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\tcapitalizeAfterNumber: true,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input\n\t\t\t.map(element => element.trim())\n\t\t\t.filter(element => element.length > 0)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\t// Preserve leading _ and $ as they have semantic meaning\n\tconst leadingPrefix = input.match(/^[_$]*/)[0];\n\tinput = input.slice(leadingPrefix.length);\n\n\tif (input.length === 0) {\n\t\treturn leadingPrefix;\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn leadingPrefix;\n\t\t}\n\n\t\treturn leadingPrefix + (options.pascalCase\n\t\t\t? toUpperCase(input)\n\t\t\t: toLowerCase(input));\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(\n\t\t\tinput,\n\t\t\ttoLowerCase,\n\t\t\ttoUpperCase,\n\t\t\toptions.preserveConsecutiveUppercase,\n\t\t);\n\t}\n\n\t// Strip leading separators eagerly so they do not affect word detection\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\t// Normalize base casing while preserving intended consecutive uppers\n\tif (options.capitalizeAfterNumber) {\n\t\t// Standard behavior - lowercase everything (or preserve consecutive uppercase)\n\t\tinput = options.preserveConsecutiveUppercase\n\t\t\t? preserveConsecutiveUppercase(input, toLowerCase)\n\t\t\t: toLowerCase(input);\n\t} else {\n\t\t// Preserve case after numbers (processWithCasePreservation handles preserveConsecutiveUppercase internally)\n\t\tinput = processWithCasePreservation(input, toLowerCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tif (options.pascalCase && input.length > 0) {\n\t\tinput = toUpperCase(input[0]) + input.slice(1);\n\t}\n\n\treturn leadingPrefix + postProcess(input, toUpperCase, options);\n}\n","export default class QuickLRU extends Map {\n\t#size = 0;\n\t#cache = new Map();\n\t#oldCache = new Map();\n\t#maxSize;\n\t#maxAge;\n\t#onEviction;\n\n\tconstructor(options = {}) {\n\t\tsuper();\n\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tif (typeof options.maxAge === 'number' && options.maxAge === 0) {\n\t\t\tthrow new TypeError('`maxAge` must be a number greater than 0');\n\t\t}\n\n\t\tthis.#maxSize = options.maxSize;\n\t\tthis.#maxAge = options.maxAge || Number.POSITIVE_INFINITY;\n\t\tthis.#onEviction = options.onEviction;\n\t}\n\n\t// For tests.\n\tget __oldCache() {\n\t\treturn this.#oldCache;\n\t}\n\n\t#emitEvictions(cache) {\n\t\tif (typeof this.#onEviction !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [key, item] of cache) {\n\t\t\tthis.#onEviction(key, item.value);\n\t\t}\n\t}\n\n\t#deleteIfExpired(key, item) {\n\t\tif (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n\t\t\tif (typeof this.#onEviction === 'function') {\n\t\t\t\tthis.#onEviction(key, item.value);\n\t\t\t}\n\n\t\t\treturn this.delete(key);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#getOrDeleteIfExpired(key, item) {\n\t\tconst deleted = this.#deleteIfExpired(key, item);\n\t\tif (deleted === false) {\n\t\t\treturn item.value;\n\t\t}\n\t}\n\n\t#getItemValue(key, item) {\n\t\treturn item.expiry ? this.#getOrDeleteIfExpired(key, item) : item.value;\n\t}\n\n\t#peek(key, cache) {\n\t\tconst item = cache.get(key);\n\t\treturn this.#getItemValue(key, item);\n\t}\n\n\t#set(key, value) {\n\t\tthis.#cache.set(key, value);\n\t\tthis.#size++;\n\n\t\tif (this.#size >= this.#maxSize) {\n\t\t\tthis.#size = 0;\n\t\t\tthis.#emitEvictions(this.#oldCache);\n\t\t\tthis.#oldCache = this.#cache;\n\t\t\tthis.#cache = new Map();\n\t\t}\n\t}\n\n\t#moveToRecent(key, item) {\n\t\tthis.#oldCache.delete(key);\n\t\tthis.#set(key, item);\n\t}\n\n\t* #entriesAscending() {\n\t\tfor (const item of this.#oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.#cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\tconst item = this.#cache.get(key);\n\t\t\treturn this.#getItemValue(key, item);\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\tconst item = this.#oldCache.get(key);\n\t\t\tif (this.#deleteIfExpired(key, item) === false) {\n\t\t\t\tthis.#moveToRecent(key, item);\n\t\t\t\treturn item.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key, value, {maxAge = this.#maxAge} = {}) {\n\t\tconst expiry = typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY\n\t\t\t? (Date.now() + maxAge)\n\t\t\t: undefined;\n\n\t\tif (this.#cache.has(key)) {\n\t\t\tthis.#cache.set(key, {\n\t\t\t\tvalue,\n\t\t\t\texpiry,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.#set(key, {value, expiry});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\treturn !this.#deleteIfExpired(key, this.#cache.get(key));\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\treturn !this.#deleteIfExpired(key, this.#oldCache.get(key));\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpeek(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\treturn this.#peek(key, this.#cache);\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\treturn this.#peek(key, this.#oldCache);\n\t\t}\n\t}\n\n\texpiresIn(key) {\n\t\tconst item = this.#cache.get(key) ?? this.#oldCache.get(key);\n\t\tif (item) {\n\t\t\treturn item.expiry ? item.expiry - Date.now() : Number.POSITIVE_INFINITY;\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.#cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis.#size--;\n\t\t}\n\n\t\treturn this.#oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.#cache.clear();\n\t\tthis.#oldCache.clear();\n\t\tthis.#size = 0;\n\t}\n\n\tresize(newSize) {\n\t\tif (!(newSize && newSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tconst items = [...this.#entriesAscending()];\n\t\tconst removeCount = items.length - newSize;\n\t\tif (removeCount < 0) {\n\t\t\tthis.#cache = new Map(items);\n\t\t\tthis.#oldCache = new Map();\n\t\t\tthis.#size = items.length;\n\t\t} else {\n\t\t\tif (removeCount > 0) {\n\t\t\t\tthis.#emitEvictions(items.slice(0, removeCount));\n\t\t\t}\n\n\t\t\tthis.#oldCache = new Map(items.slice(removeCount));\n\t\t\tthis.#cache = new Map();\n\t\t\tthis.#size = 0;\n\t\t}\n\n\t\tthis.#maxSize = newSize;\n\t}\n\n\tevict(count = 1) {\n\t\tconst requested = Number(count);\n\t\tif (!requested || requested <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = [...this.#entriesAscending()];\n\t\tconst evictCount = Math.trunc(Math.min(requested, Math.max(items.length - 1, 0)));\n\t\tif (evictCount <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#emitEvictions(items.slice(0, evictCount));\n\t\tthis.#oldCache = new Map(items.slice(evictCount));\n\t\tthis.#cache = new Map();\n\t\tthis.#size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.#cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.#oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesDescending() {\n\t\tlet items = [...this.#cache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\titems = [...this.#oldCache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesAscending() {\n\t\tfor (const [key, value] of this.#entriesAscending()) {\n\t\t\tyield [key, value.value];\n\t\t}\n\t}\n\n\tget size() {\n\t\tif (!this.#size) {\n\t\t\treturn this.#oldCache.size;\n\t\t}\n\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.#oldCache.keys()) {\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this.#size + oldCacheSize, this.#maxSize);\n\t}\n\n\tget maxSize() {\n\t\treturn this.#maxSize;\n\t}\n\n\tget maxAge() {\n\t\treturn this.#maxAge;\n\t}\n\n\tentries() {\n\t\treturn this.entriesAscending();\n\t}\n\n\tforEach(callbackFunction, thisArgument = this) {\n\t\tfor (const [key, value] of this.entriesAscending()) {\n\t\t\tcallbackFunction.call(thisArgument, value, key, this);\n\t\t}\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'QuickLRU';\n\t}\n\n\ttoString() {\n\t\treturn `QuickLRU(${this.size}/${this.maxSize})`;\n\t}\n\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn this.toString();\n\t}\n}\n","import mapObject from 'map-obj';\nimport camelCase from 'camelcase';\nimport QuickLru from 'quick-lru';\n\nconst has = (array, key) => array.some(element => {\n\tif (typeof element === 'string') {\n\t\treturn element === key;\n\t}\n\n\telement.lastIndex = 0;\n\n\treturn element.test(key);\n});\n\n// Preserve numeric keys. The trim check excludes empty/whitespace strings,\n// which Number() would incorrectly convert to 0.\nconst isNumericKey = key => key.trim() !== '' && !Number.isNaN(Number(key));\n\nconst cache = new QuickLru({maxSize: 100_000});\n\nconst isBuiltIn = value =>\n\tArrayBuffer.isView(value)\n\t// Check for known built-in types\n\t|| value instanceof Date\n\t|| value instanceof RegExp\n\t|| value instanceof Error\n\t|| value instanceof Map\n\t|| value instanceof Set\n\t|| value instanceof WeakMap\n\t|| value instanceof WeakSet\n\t|| value instanceof Promise;\n\n// Reproduces behavior from `map-obj`.\nconst isObject = value =>\n\ttypeof value === 'object'\n\t&& value !== null\n\t&& !isBuiltIn(value);\n\nconst transform = (input, options = {}, isSeen = new WeakMap(), parentPath) => {\n\tif (!isObject(input)) {\n\t\treturn input;\n\t}\n\n\t// Check for circular references\n\tif (isSeen.has(input)) {\n\t\treturn isSeen.get(input);\n\t}\n\n\tconst {\n\t\texclude,\n\t\tpascalCase = false,\n\t\tstopPaths,\n\t\tdeep = false,\n\t\tpreserveConsecutiveUppercase = false,\n\t} = options;\n\n\tconst stopPathsSet = new Set(stopPaths);\n\n\t// Handle arrays directly\n\tif (Array.isArray(input)) {\n\t\tconst result = [];\n\t\tisSeen.set(input, result);\n\n\t\tfor (const item of input) {\n\t\t\tresult.push(isObject(item) ? transform(item, options, isSeen, parentPath) : item);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Pre-allocate the result object for circular reference handling\n\tconst result = {};\n\tisSeen.set(input, result);\n\n\tconst makeMapper = currentParentPath => (key, value) => {\n\t\t// Handle deep transformation\n\t\tif (deep && isObject(value)) {\n\t\t\tconst path = currentParentPath === undefined ? key : `${currentParentPath}.${key}`;\n\n\t\t\tif (!stopPathsSet.has(path)) {\n\t\t\t\t// Handle arrays and objects recursively\n\t\t\t\tvalue = Array.isArray(value)\n\t\t\t\t\t? value.map(item => isObject(item) ? transform(item, options, isSeen, path) : item)\n\t\t\t\t\t: transform(value, options, isSeen, path);\n\t\t\t}\n\t\t}\n\n\t\t// Skip transformation for excluded keys, numeric keys\n\t\t// Only transform string keys (preserve symbols and numbers)\n\t\tif (typeof key === 'string' && !isNumericKey(key) && !(exclude && has(exclude, key))) {\n\t\t\tconst cacheKey = pascalCase ? `${key}_` : key;\n\n\t\t\tif (cache.has(cacheKey)) {\n\t\t\t\tkey = cache.get(cacheKey);\n\t\t\t} else {\n\t\t\t\tkey = camelCase(key, {pascalCase, locale: false, preserveConsecutiveUppercase});\n\n\t\t\t\t// Only cache reasonable length keys to prevent memory abuse\n\t\t\t\tif (key.length < 100) {\n\t\t\t\t\tcache.set(cacheKey, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [key, value];\n\t};\n\n\tconst mappedResult = mapObject(input, makeMapper(parentPath), {deep: false});\n\n\t// Copy properties to the pre-allocated result for circular reference handling\n\tObject.assign(result, mappedResult);\n\n\t// Preserve symbol keys (mapObject doesn't handle them)\n\tconst symbols = Object.getOwnPropertySymbols(input);\n\tfor (const symbol of symbols) {\n\t\tresult[symbol] = deep && isObject(input[symbol])\n\t\t\t? transform(input[symbol], options, isSeen, parentPath)\n\t\t\t: input[symbol];\n\t}\n\n\treturn result;\n};\n\nexport default function camelcaseKeys(input, options) {\n\tconst isSeen = new WeakMap();\n\n\tif (Array.isArray(input)) {\n\t\t// More efficient array handling - directly map the array\n\t\treturn input.map(item =>\n\t\t\tisObject(item)\n\t\t\t\t? transform(item, options, isSeen, undefined)\n\t\t\t\t: item);\n\t}\n\n\treturn transform(input, options, isSeen);\n}\n","const isObject = value => typeof value === 'object' && value !== null;\n\n// Customized for this use-case\nconst isObjectCustom = value =>\n\tisObject(value)\n\t&& !(value instanceof RegExp)\n\t&& !(value instanceof Error)\n\t&& !(value instanceof Date)\n\t&& !(globalThis.Blob && value instanceof globalThis.Blob);\n\nexport const mapObjectSkip = Symbol('mapObjectSkip');\n\nconst _mapObject = (object, mapper, options, isSeen = new WeakMap()) => {\n\toptions = {\n\t\tdeep: false,\n\t\ttarget: {},\n\t\t...options,\n\t};\n\n\tif (isSeen.has(object)) {\n\t\treturn isSeen.get(object);\n\t}\n\n\tisSeen.set(object, options.target);\n\n\tconst {target} = options;\n\tdelete options.target;\n\n\tconst mapArray = array => array.map(element => isObjectCustom(element) ? _mapObject(element, mapper, options, isSeen) : element);\n\tif (Array.isArray(object)) {\n\t\treturn mapArray(object);\n\t}\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tconst mapResult = mapper(key, value, object);\n\n\t\tif (mapResult === mapObjectSkip) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [newKey, newValue, {shouldRecurse = true} = {}] = mapResult;\n\n\t\t// Drop `__proto__` keys.\n\t\tif (newKey === '__proto__') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (options.deep && shouldRecurse && isObjectCustom(newValue)) {\n\t\t\tnewValue = Array.isArray(newValue)\n\t\t\t\t? mapArray(newValue)\n\t\t\t\t: _mapObject(newValue, mapper, options, isSeen);\n\t\t}\n\n\t\ttarget[newKey] = newValue;\n\t}\n\n\treturn target;\n};\n\nexport default function mapObject(object, mapper, options) {\n\tif (!isObject(object)) {\n\t\tthrow new TypeError(`Expected an object, got \\`${object}\\` (${typeof object})`);\n\t}\n\n\tif (Array.isArray(object)) {\n\t\tthrow new TypeError('Expected an object, got an array');\n\t}\n\n\treturn _mapObject(object, mapper, options);\n}\n","// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n    let result = value.trim();\n    result = result\n        .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n        .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n    result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n    let start = 0;\n    let end = result.length;\n    // Trim the delimiter from around the output string.\n    while (result.charAt(start) === \"\\0\")\n        start++;\n    if (start === end)\n        return [];\n    while (result.charAt(end - 1) === \"\\0\")\n        end--;\n    return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n    const words = split(value);\n    for (let i = 0; i < words.length; i++) {\n        const word = words[i];\n        const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n        if (match) {\n            const offset = match.index + (match[1] ?? match[2]).length;\n            words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n        }\n    }\n    return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    return (prefix +\n        words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n        suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    const lower = lowerFactory(options?.locale);\n    const upper = upperFactory(options?.locale);\n    const transform = options?.mergeAmbiguousCharacters\n        ? capitalCaseTransformFactory(lower, upper)\n        : pascalCaseTransformFactory(lower, upper);\n    return (prefix +\n        words\n            .map((word, index) => {\n            if (index === 0)\n                return lower(word);\n            return transform(word, index);\n        })\n            .join(options?.delimiter ?? \"\") +\n        suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    const lower = lowerFactory(options?.locale);\n    const upper = upperFactory(options?.locale);\n    const transform = options?.mergeAmbiguousCharacters\n        ? capitalCaseTransformFactory(lower, upper)\n        : pascalCaseTransformFactory(lower, upper);\n    return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n    return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    const lower = lowerFactory(options?.locale);\n    const upper = upperFactory(options?.locale);\n    return (prefix +\n        words\n            .map(capitalCaseTransformFactory(lower, upper))\n            .join(options?.delimiter ?? \" \") +\n        suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    return (prefix +\n        words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n        suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n    return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n    return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n    return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n    const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n    const lower = lowerFactory(options?.locale);\n    const upper = upperFactory(options?.locale);\n    const transform = capitalCaseTransformFactory(lower, upper);\n    return (prefix +\n        words\n            .map((word, index) => {\n            if (index === 0)\n                return transform(word);\n            return lower(word);\n        })\n            .join(options?.delimiter ?? \" \") +\n        suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n    return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n    return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n    return locale === false\n        ? (input) => input.toLowerCase()\n        : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n    return locale === false\n        ? (input) => input.toUpperCase()\n        : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n    return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n    return (word, index) => {\n        const char0 = word[0];\n        const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n        return initial + lower(word.slice(1));\n    };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n    const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n    const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n    const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n    let prefixIndex = 0;\n    let suffixIndex = input.length;\n    while (prefixIndex < input.length) {\n        const char = input.charAt(prefixIndex);\n        if (!prefixCharacters.includes(char))\n            break;\n        prefixIndex++;\n    }\n    while (suffixIndex > prefixIndex) {\n        const index = suffixIndex - 1;\n        const char = input.charAt(index);\n        if (!suffixCharacters.includes(char))\n            break;\n        suffixIndex = index;\n    }\n    return [\n        input.slice(0, prefixIndex),\n        splitFn(input.slice(prefixIndex, suffixIndex)),\n        input.slice(suffixIndex),\n    ];\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\nimport map from 'map-obj'\nimport { snakeCase } from 'change-case'\n\nconst PlainObjectConstructor = {}.constructor\n\nfunction snakecaseKeys (obj, options) {\n  if (Array.isArray(obj)) {\n    if (obj.some(item => item.constructor !== PlainObjectConstructor)) {\n      throw new Error('obj must be array of plain objects')\n    }\n\n    options = { deep: true, exclude: [], parsingOptions: {}, ...options }\n    const convertCase = options.snakeCase || ((key) => snakeCase(key, options.parsingOptions))\n\n    // Handle arrays by mapping each element\n    return obj.map(item => {\n      return map(item, (key, val) => {\n        return [\n          matches(options.exclude, key) ? key : convertCase(key),\n          val,\n          mapperOptions(key, val, options)\n        ]\n      }, options)\n    })\n  } else {\n    if (obj.constructor !== PlainObjectConstructor) {\n      throw new Error('obj must be an plain object')\n    }\n  }\n\n  options = { deep: true, exclude: [], parsingOptions: {}, ...options }\n\n  const convertCase = options.snakeCase || ((key) => snakeCase(key, options.parsingOptions))\n\n  return map(obj, (key, val) => {\n    return [\n      matches(options.exclude, key) ? key : convertCase(key),\n      val,\n      mapperOptions(key, val, options)\n    ]\n  }, options)\n}\n\nfunction matches (patterns, value) {\n  return patterns.some(pattern => {\n    return typeof pattern === 'string'\n      ? pattern === value\n      : pattern.test(value)\n  })\n}\n\nfunction mapperOptions (key, val, options) {\n  return options.shouldRecurse\n    ? { shouldRecurse: options.shouldRecurse(key, val) }\n    : undefined\n}\n\nexport default snakecaseKeys\n","import camelcaseKeys from \"camelcase-keys\";\nimport snakecaseKeys from \"snakecase-keys\";\nimport { z } from \"zod/v4\";\n\n// Values under these keys are user-controlled maps or JSON, so casing conversion\n// must rename the container but preserve every key inside it.\nconst defaultOpaqueKeys = new Set([\n  \"headers\",\n  \"variables\",\n  \"attributes\",\n  \"body\",\n  \"data\",\n  \"userMetadata\",\n]);\n\nexport type WireCasingOptions = {\n  /** API-side container keys whose nested, user-controlled keys must retain their casing. */\n  readonly opaqueKeys?: readonly string[];\n  /**\n   * API-side container keys whose nested fields use normal protocol casing,\n   * even when the key is opaque by default.\n   */\n  readonly transformKeys?: readonly string[];\n};\n\nexport function wireSchema<TSchema extends z.ZodType>(\n  schema: TSchema,\n  options: WireCasingOptions = {},\n): z.ZodType<z.output<TSchema>, unknown> {\n  return z.preprocess(\n    (value) =>\n      isCaseable(value)\n        ? camelcaseKeys(preserveApiAcronyms(value, options.opaqueKeys), {\n            deep: true,\n            preserveConsecutiveUppercase: true,\n            stopPaths: findOpaquePaths(value, options),\n          })\n        : value,\n    schema,\n  );\n}\n\nexport function encodeWireValue(value: unknown, options: WireCasingOptions = {}) {\n  const opaqueKeys = resolveOpaqueKeys(options);\n  return z.json().parse(\n    isCaseable(value)\n      ? snakecaseKeys(value, {\n          deep: true,\n          shouldRecurse: (key) => !opaqueKeys.has(String(key)),\n        })\n      : value,\n  );\n}\n\nexport function toWireJsonSchema(\n  value: unknown,\n  preservedPropertyNames: ReadonlySet<string> = new Set(),\n): unknown {\n  if (Array.isArray(value)) {\n    return value.map((entry) => toWireJsonSchema(entry, preservedPropertyNames));\n  }\n  if (!isRecord(value)) return value;\n\n  const renamed = Object.fromEntries(\n    Object.entries(value).map(([key, entry]) => [\n      key,\n      toWireJsonSchema(entry, preservedPropertyNames),\n    ]),\n  );\n  const properties = value.properties;\n\n  if (isRecord(properties)) {\n    renamed.properties = Object.fromEntries(\n      Object.entries(properties).map(([key, entry]) => [\n        preservedPropertyNames.has(key) ? key : toWirePropertyName(key),\n        toWireJsonSchema(entry, preservedPropertyNames),\n      ]),\n    );\n  }\n\n  if (Array.isArray(value.required)) {\n    renamed.required = value.required\n      .filter((key): key is string => typeof key === \"string\")\n      .map((key) => (preservedPropertyNames.has(key) ? key : toWirePropertyName(key)));\n  }\n\n  return renamed;\n}\n\nfunction toWirePropertyName(key: string): string {\n  if (key.startsWith(\"$\") || key.startsWith(\"_\")) return key;\n  return Object.keys(snakecaseKeys({ [key]: null }, { deep: false }))[0] ?? key;\n}\n\nfunction findOpaquePaths(value: unknown, options: WireCasingOptions = {}): string[] {\n  const paths: string[] = [];\n  const opaqueKeys = new Set(\n    Object.keys(\n      snakecaseKeys(Object.fromEntries([...resolveOpaqueKeys(options)].map((key) => [key, null]))),\n    ),\n  );\n\n  function visit(entry: unknown, path: string): void {\n    if (Array.isArray(entry)) {\n      entry.forEach((item) => visit(item, path));\n      return;\n    }\n    if (!isRecord(entry)) return;\n\n    for (const [key, child] of Object.entries(entry)) {\n      const childPath = path ? `${path}.${key}` : key;\n      if (opaqueKeys.has(key)) {\n        paths.push(childPath);\n      } else {\n        visit(child, childPath);\n      }\n    }\n  }\n\n  visit(value, \"\");\n  return paths;\n}\n\nfunction resolveOpaqueKeys(options: WireCasingOptions): Set<string> {\n  const opaqueKeys = new Set([...defaultOpaqueKeys, ...(options.opaqueKeys ?? [])]);\n  for (const key of options.transformKeys ?? []) {\n    opaqueKeys.delete(key);\n  }\n  return opaqueKeys;\n}\n\nfunction preserveApiAcronyms(\n  value: Record<string, unknown> | Record<string, unknown>[],\n  additionalOpaqueKeys: readonly string[] = [],\n): Record<string, unknown> | Record<string, unknown>[] {\n  const opaqueKeys = new Set(\n    Object.keys(\n      snakecaseKeys(\n        Object.fromEntries(\n          [...defaultOpaqueKeys, ...additionalOpaqueKeys].map((key) => [key, null]),\n        ),\n      ),\n    ),\n  );\n\n  function visit(entry: unknown): unknown {\n    if (Array.isArray(entry)) return entry.map(visit);\n    if (!isRecord(entry)) return entry;\n    return Object.fromEntries(\n      Object.entries(entry).map(([key, child]) => [\n        key === \"base_url\" ? \"base_URL\" : key,\n        opaqueKeys.has(key) ? child : visit(child),\n      ]),\n    );\n  }\n\n  return visit(value) as Record<string, unknown> | Record<string, unknown>[];\n}\n\nfunction isCaseable(value: unknown): value is Record<string, unknown> | Record<string, unknown>[] {\n  return isRecord(value) || (Array.isArray(value) && value.every(isRecord));\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","","import { z } from \"zod/v4\";\nimport protocolPackageJson from \"./package.json\" with { type: \"json\" };\n\n// SemVer 2.0.0, adapted from the expression published at semver.org.\nexport const STAGEHAND_SEMVER_PATTERN =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$/u;\n\nexport const StagehandProtocolVersionSchema = z\n  .string()\n  .regex(STAGEHAND_SEMVER_PATTERN, \"Expected a SemVer 2.0.0 version\");\n\nexport const STAGEHAND_PROTOCOL_VERSION = StagehandProtocolVersionSchema.parse(\n  protocolPackageJson.version,\n);\n\ntype ParsedProtocolVersion = {\n  major: bigint;\n  minor: bigint;\n  prerelease?: string;\n};\n\nexport type ProtocolIncompatibilityReason =\n  | \"protocol-invalid-version\"\n  | \"protocol-major-mismatch\"\n  | \"protocol-server-too-old\"\n  | \"protocol-prerelease-mismatch\";\n\nexport type ProtocolCompatibility =\n  | { compatible: true }\n  | {\n      compatible: false;\n      reason: ProtocolIncompatibilityReason;\n    };\n\n/**\n * Stable protocol releases are compatible when their majors match and the\n * server minor is at least the client minor. Patch differences are compatible.\n * Prerelease protocol versions must match exactly.\n */\nexport function checkProtocolCompatibility(\n  clientVersion: string,\n  serverVersion: string,\n): ProtocolCompatibility {\n  const client = parseProtocolVersion(clientVersion);\n  const server = parseProtocolVersion(serverVersion);\n\n  if (client === undefined || server === undefined) {\n    return { compatible: false, reason: \"protocol-invalid-version\" };\n  }\n\n  if (client.prerelease !== undefined || server.prerelease !== undefined) {\n    return clientVersion === serverVersion\n      ? { compatible: true }\n      : { compatible: false, reason: \"protocol-prerelease-mismatch\" };\n  }\n  if (client.major !== server.major) {\n    return { compatible: false, reason: \"protocol-major-mismatch\" };\n  }\n  if (server.minor < client.minor) {\n    return { compatible: false, reason: \"protocol-server-too-old\" };\n  }\n  return { compatible: true };\n}\n\nfunction parseProtocolVersion(version: string): ParsedProtocolVersion | undefined {\n  const match = STAGEHAND_SEMVER_PATTERN.exec(version);\n  if (!match) return undefined;\n  return {\n    major: BigInt(match[1]),\n    minor: BigInt(match[2]),\n    ...(match[4] === undefined ? {} : { prerelease: match[4] }),\n  };\n}\n","import { z } from \"zod/v4\";\nimport { StagehandProtocolVersionSchema } from \"./protocol-version.ts\";\n\nexport { STAGEHAND_PROTOCOL_VERSION } from \"./protocol-version.ts\";\n\n// Seeded from the explicit model IDs in Vercel AI SDK's provider packages.\n// Stagehand owns these allowlists: changes are reviewed and maintained here\n// rather than inherited automatically from the SDK.\nexport const OpenAIModelIdSchema = z\n  .enum([\n    \"gpt-4.1\",\n    \"gpt-4.1-2025-04-14\",\n    \"gpt-4.1-mini\",\n    \"gpt-4.1-mini-2025-04-14\",\n    \"gpt-4.1-nano\",\n    \"gpt-4.1-nano-2025-04-14\",\n    \"gpt-4o\",\n    \"gpt-4o-2024-05-13\",\n    \"gpt-4o-2024-08-06\",\n    \"gpt-4o-2024-11-20\",\n    \"gpt-4o-audio-preview\",\n    \"gpt-4o-audio-preview-2024-12-17\",\n    \"gpt-4o-search-preview\",\n    \"gpt-4o-search-preview-2025-03-11\",\n    \"gpt-4o-mini-search-preview\",\n    \"gpt-4o-mini-search-preview-2025-03-11\",\n    \"gpt-4o-mini\",\n    \"gpt-4o-mini-2024-07-18\",\n    \"gpt-3.5-turbo-0125\",\n    \"gpt-3.5-turbo\",\n    \"gpt-3.5-turbo-1106\",\n    \"gpt-5-chat-latest\",\n    \"o1\",\n    \"o1-2024-12-17\",\n    \"o3\",\n    \"o3-2025-04-16\",\n    \"o3-mini\",\n    \"o3-mini-2025-01-31\",\n    \"o4-mini\",\n    \"o4-mini-2025-04-16\",\n    \"gpt-5\",\n    \"gpt-5-2025-08-07\",\n    \"gpt-5-codex\",\n    \"gpt-5-mini\",\n    \"gpt-5-mini-2025-08-07\",\n    \"gpt-5-nano\",\n    \"gpt-5-nano-2025-08-07\",\n    \"gpt-5-pro\",\n    \"gpt-5-pro-2025-10-06\",\n    \"gpt-5.1\",\n    \"gpt-5.1-chat-latest\",\n    \"gpt-5.1-codex-mini\",\n    \"gpt-5.1-codex\",\n    \"gpt-5.1-codex-max\",\n    \"gpt-5.2\",\n    \"gpt-5.2-chat-latest\",\n    \"gpt-5.2-pro\",\n    \"gpt-5.2-codex\",\n    \"gpt-5.3-chat-latest\",\n    \"gpt-5.3-codex\",\n    \"gpt-5.4\",\n    \"gpt-5.4-2026-03-05\",\n    \"gpt-5.4-mini\",\n    \"gpt-5.4-mini-2026-03-17\",\n    \"gpt-5.4-nano\",\n    \"gpt-5.4-nano-2026-03-17\",\n    \"gpt-5.4-pro\",\n    \"gpt-5.4-pro-2026-03-05\",\n    \"gpt-5.5\",\n    \"gpt-5.5-2026-04-23\",\n    \"gpt-5.6\",\n    \"gpt-5.6-luna\",\n    \"gpt-5.6-sol\",\n    \"gpt-5.6-terra\",\n  ])\n  .meta({ id: \"OpenAIModelId\" });\n\nexport const AnthropicModelIdSchema = z\n  .enum([\n    \"claude-3-haiku-20240307\",\n    \"claude-haiku-4-5-20251001\",\n    \"claude-haiku-4-5\",\n    \"claude-opus-4-0\",\n    \"claude-opus-4-20250514\",\n    \"claude-opus-4-1-20250805\",\n    \"claude-opus-4-1\",\n    \"claude-opus-4-5\",\n    \"claude-opus-4-5-20251101\",\n    \"claude-sonnet-4-0\",\n    \"claude-sonnet-4-20250514\",\n    \"claude-sonnet-4-5-20250929\",\n    \"claude-sonnet-4-5\",\n    \"claude-sonnet-4-6\",\n    \"claude-opus-4-6\",\n    \"claude-opus-4-7\",\n    \"claude-opus-4-8\",\n    \"claude-fable-5\",\n    \"claude-sonnet-5\",\n  ])\n  .meta({ id: \"AnthropicModelId\" });\n\nexport const GoogleModelIdSchema = z\n  .enum([\n    \"gemini-2.0-flash\",\n    \"gemini-2.0-flash-001\",\n    \"gemini-2.0-flash-lite\",\n    \"gemini-2.0-flash-lite-001\",\n    \"gemini-2.5-pro\",\n    \"gemini-2.5-flash\",\n    \"gemini-2.5-flash-image\",\n    \"gemini-2.5-flash-lite\",\n    \"gemini-2.5-flash-preview-tts\",\n    \"gemini-2.5-pro-preview-tts\",\n    \"gemini-2.5-flash-native-audio-latest\",\n    \"gemini-2.5-flash-native-audio-preview-09-2025\",\n    \"gemini-2.5-flash-native-audio-preview-12-2025\",\n    \"gemini-2.5-computer-use-preview-10-2025\",\n    \"gemini-3-pro-preview\",\n    \"gemini-3-pro-image-preview\",\n    \"gemini-3-flash-preview\",\n    \"gemini-3.1-pro-preview\",\n    \"gemini-3.1-pro-preview-customtools\",\n    \"gemini-3.1-flash-image-preview\",\n    \"gemini-3.1-flash-lite-preview\",\n    \"gemini-3.1-flash-tts-preview\",\n    \"gemini-3.5-flash\",\n    \"gemini-3.6-flash\",\n    \"gemini-pro-latest\",\n    \"gemini-flash-latest\",\n    \"gemini-flash-lite-latest\",\n    \"deep-research-pro-preview-12-2025\",\n    \"deep-research-max-preview-04-2026\",\n    \"deep-research-preview-04-2026\",\n    \"nano-banana-pro-preview\",\n    \"aqa\",\n    \"gemini-robotics-er-1.5-preview\",\n    \"gemma-3-1b-it\",\n    \"gemma-3-4b-it\",\n    \"gemma-3n-e4b-it\",\n    \"gemma-3n-e2b-it\",\n    \"gemma-3-12b-it\",\n    \"gemma-3-27b-it\",\n  ])\n  .meta({ id: \"GoogleModelId\" });\n\nexport const GroqModelIdSchema = z\n  .enum([\n    \"gemma2-9b-it\",\n    \"llama-3.1-8b-instant\",\n    \"llama-3.3-70b-versatile\",\n    \"meta-llama/llama-guard-4-12b\",\n    \"openai/gpt-oss-120b\",\n    \"openai/gpt-oss-20b\",\n    \"deepseek-r1-distill-llama-70b\",\n    \"meta-llama/llama-4-maverick-17b-128e-instruct\",\n    \"meta-llama/llama-4-scout-17b-16e-instruct\",\n    \"meta-llama/llama-prompt-guard-2-22m\",\n    \"meta-llama/llama-prompt-guard-2-86m\",\n    \"moonshotai/kimi-k2-instruct-0905\",\n    \"qwen/qwen3-32b\",\n    \"llama-guard-3-8b\",\n    \"llama3-70b-8192\",\n    \"llama3-8b-8192\",\n    \"mixtral-8x7b-32768\",\n    \"qwen-qwq-32b\",\n    \"qwen-2.5-32b\",\n    \"deepseek-r1-distill-qwen-32b\",\n  ])\n  .meta({ id: \"GroqModelId\" });\n\nexport const CerebrasModelIdSchema = z\n  .enum([\n    \"llama3.1-8b\",\n    \"gpt-oss-120b\",\n    \"qwen-3-235b-a22b-instruct-2507\",\n    \"qwen-3-235b-a22b-thinking-2507\",\n    \"zai-glm-4.6\",\n    \"zai-glm-4.7\",\n  ])\n  .meta({ id: \"CerebrasModelId\" });\n\nexport const ModelProviderSchema = z\n  .enum([\"openai\", \"anthropic\", \"google\", \"groq\", \"cerebras\"])\n  .meta({ id: \"ModelProvider\" });\n\nexport const OpenAIModelNameSchema = z\n  .templateLiteral([\"openai/\", OpenAIModelIdSchema])\n  .meta({ id: \"OpenAIModelName\" });\nexport const AnthropicModelNameSchema = z\n  .templateLiteral([\"anthropic/\", AnthropicModelIdSchema])\n  .meta({ id: \"AnthropicModelName\" });\nexport const GoogleModelNameSchema = z\n  .templateLiteral([\"google/\", GoogleModelIdSchema])\n  .meta({ id: \"GoogleModelName\" });\nexport const GroqModelNameSchema = z\n  .templateLiteral([\"groq/\", GroqModelIdSchema])\n  .meta({ id: \"GroqModelName\" });\nexport const CerebrasModelNameSchema = z\n  .templateLiteral([\"cerebras/\", CerebrasModelIdSchema])\n  .meta({ id: \"CerebrasModelName\" });\n\nexport const ModelNameSchema = z\n  .union([\n    OpenAIModelNameSchema,\n    AnthropicModelNameSchema,\n    GoogleModelNameSchema,\n    GroqModelNameSchema,\n    CerebrasModelNameSchema,\n  ])\n  .meta({\n    id: \"ModelName\",\n    description: \"An explicitly supported model name with its provider prefix\",\n  });\n\nexport const CookieSchema = z\n  .strictObject({\n    name: z.string(),\n    value: z.string(),\n    domain: z.string(),\n    path: z.string(),\n    expires: z.number(),\n    httpOnly: z.boolean(),\n    secure: z.boolean(),\n    sameSite: z.enum([\"Strict\", \"Lax\", \"None\"]),\n  })\n  .meta({ id: \"Cookie\" });\n\nexport const CookieParamSchema = z\n  .strictObject({\n    name: z.string(),\n    value: z.string(),\n    url: z.string().optional(),\n    domain: z.string().optional(),\n    path: z.string().optional(),\n    expires: z.number().optional(),\n    httpOnly: z.boolean().optional(),\n    secure: z.boolean().optional(),\n    sameSite: z.enum([\"Strict\", \"Lax\", \"None\"]).optional(),\n  })\n  .superRefine((cookie, context) => {\n    let parsedUrl: URL | undefined;\n    let invalidUrl = false;\n\n    if (!cookie.url && !(cookie.domain && cookie.path)) {\n      context.addIssue({\n        code: \"custom\",\n        path: [\"url\"],\n        message: `Cookie \"${cookie.name}\" must have a url or a domain/path pair`,\n      });\n    }\n\n    if (cookie.url && cookie.domain) {\n      context.addIssue({\n        code: \"custom\",\n        path: [\"url\"],\n        message: `Cookie \"${cookie.name}\" should have either url or domain, not both`,\n      });\n    }\n\n    if (cookie.url && cookie.path) {\n      context.addIssue({\n        code: \"custom\",\n        path: [\"url\"],\n        message: `Cookie \"${cookie.name}\" should have either url or path, not both`,\n      });\n    }\n\n    if (cookie.expires !== undefined && cookie.expires < 0 && cookie.expires !== -1) {\n      context.addIssue({\n        code: \"custom\",\n        path: [\"expires\"],\n        message: `Cookie \"${cookie.name}\" has an invalid expires value; use -1 for session cookies or a positive unix timestamp`,\n      });\n    }\n\n    if (cookie.url === \"about:blank\") {\n      invalidUrl = true;\n      context.addIssue({\n        code: \"custom\",\n        path: [\"url\"],\n        message: `Blank page cannot have cookie \"${cookie.name}\"`,\n      });\n    } else if (cookie.url?.startsWith(\"data:\")) {\n      invalidUrl = true;\n      context.addIssue({\n        code: \"custom\",\n        path: [\"url\"],\n        message: `Data URL page cannot have cookie \"${cookie.name}\"`,\n      });\n    } else if (cookie.url) {\n      try {\n        parsedUrl = new URL(cookie.url);\n      } catch {\n        invalidUrl = true;\n        context.addIssue({\n          code: \"custom\",\n          path: [\"url\"],\n          message: `Cookie \"${cookie.name}\" has an invalid url: \"${cookie.url}\"`,\n        });\n      }\n    }\n\n    const effectivelySecure = cookie.url\n      ? parsedUrl?.protocol === \"https:\"\n      : cookie.secure === true;\n    if (cookie.sameSite === \"None\" && !invalidUrl && !effectivelySecure) {\n      context.addIssue({\n        code: \"custom\",\n        path: [\"secure\"],\n        message:\n          `Cookie \"${cookie.name}\" has sameSite: \"None\" without secure: true. ` +\n          `Browsers require secure: true when sameSite is \"None\".`,\n      });\n    }\n  })\n  .meta({ id: \"CookieParam\" });\n\nexport const CookieRegexSchema = z\n  .strictObject({\n    source: z.string(),\n    flags: z\n      .string()\n      .regex(/^[dgimsuvy]*$/)\n      .optional(),\n  })\n  .superRefine(({ source, flags }, context) => {\n    try {\n      new RegExp(source, flags);\n    } catch {\n      context.addIssue({\n        code: \"custom\",\n        message: \"Invalid cookie filter regular expression\",\n      });\n    }\n  })\n  .meta({ id: \"CookieRegex\" });\n\nexport const CookieFilterSchema = z\n  .union([z.string(), CookieRegexSchema])\n  .meta({ id: \"CookieFilter\" });\n\nexport const ClearCookieOptionsSchema = z\n  .strictObject({\n    name: CookieFilterSchema.optional(),\n    domain: CookieFilterSchema.optional(),\n    path: CookieFilterSchema.optional(),\n  })\n  .meta({ id: \"ClearCookieOptions\" });\n\nexport const DomainPolicySchema = z\n  .strictObject({\n    allowedDomains: z.array(z.string()).optional(),\n    blockedDomains: z.array(z.string()).optional(),\n  })\n  .meta({ id: \"DomainPolicy\" });\n\n// These schemas follow the MCP createMessage message and content shapes, with\n// Stagehand's structured-output contract layered on top.\nexport const LLMRoleSchema = z.enum([\"user\", \"assistant\"]).meta({ id: \"LLMRole\" });\n\nexport const LLMAnnotationsSchema = z\n  .strictObject({\n    audience: z.array(LLMRoleSchema).optional(),\n    priority: z.number().min(0).max(1).optional(),\n    lastModified: z.string().optional(),\n  })\n  .meta({ id: \"LLMAnnotations\" });\n\nexport const LLMTextContentSchema = z\n  .strictObject({\n    type: z.literal(\"text\"),\n    text: z.string(),\n    annotations: LLMAnnotationsSchema.optional(),\n  })\n  .meta({ id: \"LLMTextContent\" });\n\nexport const LLMImageContentSchema = z\n  .strictObject({\n    type: z.literal(\"image\"),\n    data: z.base64().meta({ format: \"byte\" }),\n    mimeType: z.string(),\n    annotations: LLMAnnotationsSchema.optional(),\n  })\n  .meta({ id: \"LLMImageContent\" });\n\nexport const LLMToolUseContentSchema = z\n  .strictObject({\n    type: z.literal(\"tool_use\"),\n    id: z.string(),\n    name: z.string(),\n    input: z.record(z.string(), z.json()),\n  })\n  .meta({ id: \"LLMToolUseContent\" });\n\nconst LLMToolResultContentBlockSchema = z\n  .discriminatedUnion(\"type\", [LLMTextContentSchema, LLMImageContentSchema])\n  .meta({ id: \"LLMToolResultContentBlock\" });\n\nexport const LLMToolResultContentSchema = z\n  .strictObject({\n    type: z.literal(\"tool_result\"),\n    toolUseId: z.string(),\n    content: z.array(LLMToolResultContentBlockSchema),\n    structuredContent: z.record(z.string(), z.json()).optional(),\n    isError: z.boolean().optional(),\n  })\n  .meta({ id: \"LLMToolResultContent\" });\n\nexport const LLMMessageContentBlockSchema = z\n  .discriminatedUnion(\"type\", [\n    LLMTextContentSchema,\n    LLMImageContentSchema,\n    LLMToolUseContentSchema,\n    LLMToolResultContentSchema,\n  ])\n  .meta({ id: \"LLMMessageContentBlock\" });\n\nexport const LLMMessageSchema = z\n  .strictObject({\n    role: LLMRoleSchema,\n    content: z.union([LLMMessageContentBlockSchema, z.array(LLMMessageContentBlockSchema)]),\n  })\n  .meta({ id: \"LLMMessage\" });\n\nexport const LLMToolAnnotationsSchema = z\n  .strictObject({\n    title: z.string().optional(),\n    readOnlyHint: z.boolean().optional(),\n    destructiveHint: z.boolean().optional(),\n    idempotentHint: z.boolean().optional(),\n    openWorldHint: z.boolean().optional(),\n  })\n  .meta({ id: \"LLMToolAnnotations\" });\n\nexport const LLMToolExecutionSchema = z\n  .strictObject({\n    taskSupport: z.enum([\"forbidden\", \"optional\", \"required\"]).optional(),\n  })\n  .meta({ id: \"LLMToolExecution\" });\n\nexport const LLMToolIconSchema = z\n  .strictObject({\n    src: z.url(),\n    mimeType: z.string().optional(),\n    sizes: z.array(z.string()).optional(),\n    theme: z.enum([\"light\", \"dark\"]).optional(),\n  })\n  .meta({ id: \"LLMToolIcon\" });\n\nconst LLMToolJsonSchema = z\n  .strictObject({\n    $schema: z.string().optional(),\n    type: z.literal(\"object\"),\n    properties: z.record(z.string(), z.record(z.string(), z.json())).optional(),\n    required: z.array(z.string()).optional(),\n  })\n  .meta({ id: \"LLMToolJson\" });\n\nexport const LLMToolSchema = z\n  .strictObject({\n    type: z.literal(\"function\"),\n    name: z.string(),\n    description: z.string(),\n    parameters: z.record(z.string(), z.unknown()),\n  })\n  .required()\n  .meta({ id: \"LLMTool\" });\n\nexport const LLMClientToolSchema = z\n  .strictObject({\n    name: z.string(),\n    title: z.string().optional(),\n    icons: z.array(LLMToolIconSchema).optional(),\n    description: z.string().optional(),\n    inputSchema: LLMToolJsonSchema,\n    execution: LLMToolExecutionSchema.optional(),\n    outputSchema: LLMToolJsonSchema.optional(),\n    annotations: LLMToolAnnotationsSchema.optional(),\n  })\n  .meta({ id: \"LLMClientTool\" });\n\nexport const LLMToolChoiceSchema = z\n  .strictObject({\n    mode: z.enum([\"auto\", \"required\", \"none\"]).optional(),\n  })\n  .meta({ id: \"LLMToolChoice\" });\n\nexport const LLMTextResponseFormatSchema = z\n  .strictObject({\n    type: z.literal(\"text\"),\n  })\n  .meta({ id: \"LLMTextResponseFormat\" });\n\nexport const LLMJsonSchemaResponseFormatSchema = z\n  .strictObject({\n    type: z.literal(\"json_schema\"),\n    name: z.string(),\n    description: z.string().optional(),\n    schema: z.json(),\n  })\n  .meta({ id: \"LLMJsonSchemaResponseFormat\" });\n\nexport const LLMResponseFormatSchema = z\n  .discriminatedUnion(\"type\", [LLMTextResponseFormatSchema, LLMJsonSchemaResponseFormatSchema])\n  .meta({ id: \"LLMResponseFormat\" });\n\nconst LLMGenerateBaseParamsSchema = z\n  .strictObject({\n    messages: z.array(LLMMessageSchema),\n    systemPrompt: z.string().optional(),\n    temperature: z.number().optional(),\n    stopSequences: z.array(z.string()).optional(),\n  })\n  .meta({ id: \"LLMGenerateBaseParams\" });\n\nexport const LLMMessageGenerateParamsSchema = LLMGenerateBaseParamsSchema.extend({\n  tools: z.array(LLMClientToolSchema).optional(),\n  toolChoice: LLMToolChoiceSchema.optional(),\n  responseFormat: LLMTextResponseFormatSchema.optional(),\n}).meta({ id: \"LLMMessageGenerateParams\" });\n\nexport const LLMStructuredGenerateParamsSchema = LLMGenerateBaseParamsSchema.extend({\n  responseFormat: LLMJsonSchemaResponseFormatSchema,\n}).meta({ id: \"LLMStructuredGenerateParams\" });\n\nexport const LLMGenerateParamsSchema = z\n  .union([LLMStructuredGenerateParamsSchema, LLMMessageGenerateParamsSchema])\n  .meta({ id: \"LLMGenerateParams\" });\n\nexport const LLMUsageSchema = z\n  .strictObject({\n    inputTokens: z.number().int().nonnegative(),\n    outputTokens: z.number().int().nonnegative(),\n    totalTokens: z.number().int().nonnegative(),\n    reasoningTokens: z.number().int().nonnegative().optional(),\n    cachedInputTokens: z.number().int().nonnegative().optional(),\n  })\n  .meta({ id: \"LLMUsage\" });\n\nconst LLMGenerateBaseResultSchema = z\n  .strictObject({\n    role: LLMRoleSchema,\n    content: z.union([LLMMessageContentBlockSchema, z.array(LLMMessageContentBlockSchema)]),\n    stopReason: z.string().optional(),\n    usage: LLMUsageSchema.optional(),\n  })\n  .meta({ id: \"LLMGenerateBaseResult\" });\n\nexport const LLMMessageGenerateResultSchema = LLMGenerateBaseResultSchema.extend({\n  outputFormat: z.literal(\"text\"),\n}).meta({ id: \"LLMMessageGenerateResult\" });\n\nexport const LLMStructuredGenerateResultSchema = LLMGenerateBaseResultSchema.extend({\n  outputFormat: z.literal(\"json_schema\"),\n  structuredContent: z.json(),\n}).meta({ id: \"LLMStructuredGenerateResult\" });\n\nexport const LLMGenerateResultSchema = z\n  .discriminatedUnion(\"outputFormat\", [\n    LLMMessageGenerateResultSchema,\n    LLMStructuredGenerateResultSchema,\n  ])\n  .meta({ id: \"LLMGenerateResult\" });\n\n/**\n * Builds the result validator for a particular llm.generate request.\n *\n * Prefer the original in-memory Zod schema. When only the wire JSON Schema is\n * available, Zod can recreate an equivalent validator.\n */\nexport function createLLMGenerateResultSchema(\n  params: z.output<typeof LLMGenerateParamsSchema>,\n  originalStructuredContentSchema?: z.ZodType,\n) {\n  if (params.responseFormat?.type !== \"json_schema\") {\n    return LLMMessageGenerateResultSchema;\n  }\n\n  const structuredContentSchema =\n    originalStructuredContentSchema ??\n    z.fromJSONSchema(params.responseFormat.schema as Parameters<typeof z.fromJSONSchema>[0]);\n\n  return LLMGenerateBaseResultSchema.extend({\n    outputFormat: z.literal(\"json_schema\"),\n    structuredContent: structuredContentSchema,\n  });\n}\n\nexport const VariablePrimitiveSchema = z\n  .union([z.string(), z.number(), z.boolean()])\n  .meta({ id: \"VariablePrimitive\" });\n\nexport const VariableValueSchema = z\n  .union([\n    VariablePrimitiveSchema,\n    z\n      .strictObject({\n        value: VariablePrimitiveSchema,\n        description: z.string().optional(),\n      })\n      .meta({ id: \"DescribedVariableValue\" }),\n  ])\n  .meta({ id: \"VariableValue\" });\n\nexport const VariablesSchema = z.record(z.string(), VariableValueSchema).meta({ id: \"Variables\" });\n\nexport const PageLocatorSchema = z\n  .strictObject({\n    pageIdx: z.number().int().nonnegative().nullable().optional(),\n    url: z.string().nullable().optional(),\n    title: z.string().nullable().optional(),\n    active: z.boolean().nullable().optional(),\n    targetId: z.string().nullable().optional(),\n    tabId: z.number().int().nonnegative().nullable().optional(),\n    frameId: z.string().nullable().optional(),\n  })\n  .meta({ id: \"PageLocator\" });\n\nexport const LocatorSchema = z\n  .strictObject({\n    selector: z.string().min(1),\n    nth: z.number().int().nonnegative().optional(),\n  })\n  .meta({ id: \"Locator\" });\n\nexport const StagehandMetricsSchema = z\n  .strictObject({\n    actPromptTokens: z.number(),\n    actCompletionTokens: z.number(),\n    actReasoningTokens: z.number(),\n    actCachedInputTokens: z.number(),\n    actInferenceTimeMs: z.number(),\n    extractPromptTokens: z.number(),\n    extractCompletionTokens: z.number(),\n    extractReasoningTokens: z.number(),\n    extractCachedInputTokens: z.number(),\n    extractInferenceTimeMs: z.number(),\n    observePromptTokens: z.number(),\n    observeCompletionTokens: z.number(),\n    observeReasoningTokens: z.number(),\n    observeCachedInputTokens: z.number(),\n    observeInferenceTimeMs: z.number(),\n    totalPromptTokens: z.number(),\n    totalCompletionTokens: z.number(),\n    totalReasoningTokens: z.number(),\n    totalCachedInputTokens: z.number(),\n    totalInferenceTimeMs: z.number(),\n  })\n  .meta({ id: \"StagehandMetrics\" });\n\n// Chromium clamps timer delays to a signed 32-bit integer. Reserve the SDK's\n// 10-second RPC response grace period so both timers remain within that limit.\nexport const MAX_CALLBACK_BATCH_TIMEOUT_MS = 2_147_483_647 - 10_000;\n\nexport const CallbackBatchOptionsSchema = z\n  .strictObject({\n    pageId: z.string().min(1).optional(),\n    timeout: z.number().int().positive().max(MAX_CALLBACK_BATCH_TIMEOUT_MS).default(30_000),\n  })\n  .meta({ id: \"CallbackBatchOptions\" });\n\nexport const CallbackBatchParamsSchema = z\n  .strictObject({\n    callbackSource: z.string().min(1),\n    input: z.json().optional(),\n    options: CallbackBatchOptionsSchema,\n  })\n  .meta({ id: \"CallbackBatchParams\" });\n\nexport const CallbackBatchResultSchema = z\n  .strictObject({\n    value: z.json().optional(),\n  })\n  .meta({ id: \"CallbackBatchResult\" });\n\nexport const CacheStatusSchema = z.enum([\"HIT\", \"MISS\", \"DISABLED\"]).meta({ id: \"CacheStatus\" });\n\n/** Server-side caching configuration: a boolean toggle, or an object enabling\n * caching with an optional hit-count threshold (how many identical results\n * must be seen before the cache serves a hit; overrides the project's\n * configured threshold). */\nexport const CachingSchema = z\n  .union([\n    z.boolean(),\n    z.strictObject({\n      threshold: z.number().int().positive().optional(),\n    }),\n  ])\n  .meta({ id: \"Caching\" });\n\nexport const ApiKeyAuthSchema = z\n  .strictObject({\n    type: z.literal(\"apiKey\"),\n    apiKey: z.string().min(1),\n  })\n  .meta({ id: \"ApiKeyAuth\" });\n\n/** Detailed model configuration object */\nexport const GoogleServiceAccountCredentialsSchema = z\n  .strictObject({\n    type: z.literal(\"service_account\").optional(),\n    projectId: z.string().optional(),\n    privateKeyId: z.string().optional(),\n    privateKey: z.string(),\n    clientEmail: z.string(),\n    clientId: z.string().optional(),\n    authUri: z.url().optional(),\n    tokenUri: z.url().optional(),\n    authProviderX509CertUrl: z.url().optional(),\n    clientX509CertUrl: z.url().optional(),\n    universeDomain: z.string().optional(),\n  })\n  .meta({ id: \"GoogleServiceAccountCredentials\" });\n\nexport const GoogleServiceAccountAuthSchema = z\n  .strictObject({\n    type: z.literal(\"googleServiceAccount\").meta({\n      description:\n        \"Use inline Google Cloud service account credentials for provider authentication\",\n    }),\n    credentials: GoogleServiceAccountCredentialsSchema.meta({\n      description: \"Google Cloud service account credentials\",\n    }),\n    scopes: z\n      .union([z.string(), z.array(z.string())])\n      .optional()\n      .meta({\n        description: \"Google auth scopes for the desired API request\",\n      }),\n    projectId: z.string().optional().meta({\n      description: \"Google Cloud project ID used by google-auth-library\",\n    }),\n    universeDomain: z.string().optional().meta({\n      description: \"Google Cloud universe domain\",\n    }),\n  })\n  .meta({ id: \"GoogleServiceAccountAuth\" });\n\nexport const AzureEntraIdAuthSchema = z\n  .strictObject({\n    type: z.literal(\"azureEntraId\").meta({\n      description: \"Use a Microsoft Entra ID bearer token for authentication\",\n    }),\n    token: z.string().min(1).meta({\n      description: \"Microsoft Entra ID bearer token for Azure OpenAI\",\n    }),\n  })\n  .meta({ id: \"AzureEntraIdAuth\" });\n\nexport const VertexProviderOptionsSchema = z\n  .strictObject({\n    project: z.string().meta({\n      description: \"Google Cloud project ID for Vertex AI models\",\n      example: \"my-gcp-project\",\n    }),\n    location: z.string().meta({\n      description: \"Google Cloud location for Vertex AI models\",\n      example: \"us-central1\",\n    }),\n    baseURL: z.url().optional().meta({\n      description: \"Base URL for the Vertex AI provider\",\n    }),\n    headers: z.record(z.string(), z.string()).optional().meta({\n      description: \"Custom headers sent with every request to the Vertex AI provider\",\n    }),\n  })\n  .meta({ id: \"VertexProviderOptions\" });\n\nexport const AzureProviderOptionsSchema = z\n  .strictObject({\n    resourceName: z.string().optional().meta({\n      description: \"Azure OpenAI resource name\",\n      example: \"my-azure-openai-resource\",\n    }),\n    baseURL: z.url().optional().meta({\n      description: \"Base URL for the Azure OpenAI provider\",\n    }),\n    apiVersion: z.string().optional().meta({\n      description: \"Azure OpenAI API version\",\n      example: \"2024-10-01-preview\",\n    }),\n    useDeploymentBasedUrls: z.boolean().optional().meta({\n      description: \"Whether to use deployment-based Azure OpenAI URLs\",\n    }),\n    headers: z.record(z.string(), z.string()).optional().meta({\n      description: \"Custom headers sent with every request to the Azure OpenAI provider\",\n    }),\n  })\n  .meta({ id: \"AzureProviderOptions\" });\n\nexport const VertexModelProviderOptionsSchema = z\n  .strictObject({\n    type: z.literal(\"vertex\"),\n    options: VertexProviderOptionsSchema.meta({\n      description: \"Vertex AI provider-specific settings\",\n    }),\n  })\n  .meta({ id: \"VertexModelProviderOptions\" });\n\nexport const AzureModelProviderOptionsSchema = z\n  .strictObject({\n    type: z.literal(\"azure\"),\n    options: AzureProviderOptionsSchema.meta({\n      description: \"Azure OpenAI provider-specific settings\",\n    }),\n  })\n  .meta({ id: \"AzureModelProviderOptions\" });\n\nexport const ThinkingEffortSchema = z\n  .enum([\"none\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"])\n  .meta({ id: \"ThinkingEffort\" });\n\nexport const ModelAuthSchema = z\n  .discriminatedUnion(\"type\", [\n    ApiKeyAuthSchema,\n    GoogleServiceAccountAuthSchema,\n    AzureEntraIdAuthSchema,\n  ])\n  .meta({ id: \"ModelAuth\" });\n\nexport const ModelProviderOptionsSchema = z\n  .discriminatedUnion(\"type\", [VertexModelProviderOptionsSchema, AzureModelProviderOptionsSchema])\n  .meta({ id: \"ModelProviderOptions\" });\n\nexport const ClientOptionsBaseSchema = z\n  .strictObject({\n    provider: ModelProviderSchema.optional(),\n    auth: ModelAuthSchema.optional(),\n    providerOptions: ModelProviderOptionsSchema.optional(),\n    baseURL: z.string().optional(),\n    organization: z.string().optional(),\n    thinkingBudget: z.number().optional(),\n    thinkingEffort: ThinkingEffortSchema.optional(),\n    headers: z.record(z.string(), z.string()).optional(),\n    reasoningEffort: z.string().optional(),\n  })\n  .meta({ id: \"ClientOptionsBase\" });\n\nexport const ClientOptionsSchema = ClientOptionsBaseSchema.default({}).meta({\n  id: \"ClientOptions\",\n});\n\nconst ModelConnectionSchema = z\n  .strictObject({\n    apiKey: z.string().min(1).optional().meta({\n      description: \"API key for the model provider\",\n      example: \"sk-some-openai-api-key\",\n    }),\n    headers: z.record(z.string(), z.string()).optional().meta({\n      description: \"Custom headers sent with every request to the model provider\",\n    }),\n  })\n  .meta({ id: \"ModelConnection\" });\n\nexport const ModelConfigSchema = ModelConnectionSchema.extend({\n  modelName: ModelNameSchema.meta({\n    description: \"An explicitly supported model name with its provider prefix\",\n    example: \"openai/gpt-5.4-mini\",\n  }),\n}).meta({ id: \"ModelConfig\" });\n\n/** Serializable reference to an LLM implemented by the connected Stagehand client. */\nexport const ClientModelReferenceSchema = z\n  .strictObject({\n    source: z.literal(\"client\"),\n  })\n  .meta({ id: \"ClientModelReference\" });\n\n/** Browserbase viewport configuration. */\nexport const BrowserbaseViewportSchema = z\n  .strictObject({\n    width: z.number().optional(),\n    height: z.number().optional(),\n  })\n  .meta({ id: \"BrowserbaseViewport\" });\n\n/** Browserbase fingerprint screen configuration. */\nexport const BrowserbaseFingerprintScreenSchema = z\n  .strictObject({\n    maxHeight: z.number().optional(),\n    maxWidth: z.number().optional(),\n    minHeight: z.number().optional(),\n    minWidth: z.number().optional(),\n  })\n  .meta({ id: \"BrowserbaseFingerprintScreen\" });\n\n/** Browserbase fingerprint configuration for stealth mode. */\nexport const BrowserbaseFingerprintSchema = z\n  .strictObject({\n    browsers: z.array(z.enum([\"chrome\", \"edge\", \"firefox\", \"safari\"])).optional(),\n    devices: z.array(z.enum([\"desktop\", \"mobile\"])).optional(),\n    httpVersion: z.enum([\"1\", \"2\"]).optional(),\n    locales: z.array(z.string()).optional(),\n    operatingSystems: z.array(z.enum([\"android\", \"ios\", \"linux\", \"macos\", \"windows\"])).optional(),\n    screen: BrowserbaseFingerprintScreenSchema.optional(),\n  })\n  .meta({ id: \"BrowserbaseFingerprint\" });\n\n/** Browserbase context configuration for session persistence. */\nexport const BrowserbaseContextSchema = z\n  .strictObject({\n    id: z.string(),\n    persist: z.boolean().optional(),\n  })\n  .meta({ id: \"BrowserbaseContext\" });\n\n/** Browserbase browser settings for session creation. */\nexport const BrowserbaseBrowserSettingsSchema = z\n  .strictObject({\n    advancedStealth: z.boolean().optional(),\n    blockAds: z.boolean().optional(),\n    captchaImageSelector: z.string().optional(),\n    captchaInputSelector: z.string().optional(),\n    context: BrowserbaseContextSchema.optional(),\n    extensionId: z.string().optional(),\n    fingerprint: BrowserbaseFingerprintSchema.optional(),\n    logSession: z.boolean().optional(),\n    os: z.enum([\"windows\", \"mac\", \"linux\", \"mobile\", \"tablet\"]).optional(),\n    recordSession: z.boolean().optional(),\n    solveCaptchas: z.boolean().optional(),\n    verified: z.boolean().optional(),\n    viewport: BrowserbaseViewportSchema.optional(),\n  })\n  .meta({ id: \"BrowserbaseBrowserSettings\" });\n\n/** Browserbase managed proxy geolocation configuration. */\nexport const BrowserbaseProxyGeolocationSchema = z\n  .strictObject({\n    country: z.string(),\n    city: z.string().optional(),\n    state: z.string().optional(),\n  })\n  .meta({ id: \"BrowserbaseProxyGeolocation\" });\n\n/** Browserbase managed proxy configuration. */\nexport const BrowserbaseProxyConfigSchema = z\n  .strictObject({\n    type: z.literal(\"browserbase\"),\n    domainPattern: z.string().optional(),\n    geolocation: BrowserbaseProxyGeolocationSchema.optional(),\n  })\n  .meta({ id: \"BrowserbaseProxyConfig\" });\n\n/** External proxy configuration. */\nexport const ExternalProxyConfigSchema = z\n  .strictObject({\n    type: z.literal(\"external\"),\n    server: z.string(),\n    domainPattern: z.string().optional(),\n    username: z.string().optional(),\n    password: z.string().optional(),\n  })\n  .meta({ id: \"ExternalProxyConfig\" });\n\n/** Browserbase session proxy configuration. */\nexport const ProxyConfigSchema = z\n  .discriminatedUnion(\"type\", [BrowserbaseProxyConfigSchema, ExternalProxyConfigSchema])\n  .meta({ id: \"ProxyConfig\" });\n\n/** Browserbase region identifier for multi-region support. */\nexport const BrowserbaseRegionSchema = z\n  .enum([\"us-west-2\", \"us-east-1\", \"eu-central-1\", \"ap-southeast-1\"])\n  .meta({ id: \"BrowserbaseRegion\" });\n\n/** Browserbase session creation parameters. */\nexport const BrowserbaseSessionCreateParamsSchema = z\n  .strictObject({\n    browserSettings: BrowserbaseBrowserSettingsSchema.optional(),\n    extensionId: z.string().optional(),\n    keepAlive: z.boolean().optional(),\n    proxies: z.union([z.boolean(), z.array(ProxyConfigSchema)]).optional(),\n    region: BrowserbaseRegionSchema.optional(),\n    timeout: z.number().optional(),\n    userMetadata: z.record(z.string(), z.unknown()).optional(),\n  })\n  .meta({ id: \"BrowserbaseSessionCreateParams\" });\n\n/** Browser session metadata used by provider-independent worker services. */\nexport const BrowserSessionMetadataSchema = z\n  .strictObject({\n    sessionId: z.string().min(1),\n    region: BrowserbaseRegionSchema.optional(),\n  })\n  .meta({ id: \"BrowserSessionMetadata\" });\n\n/** Browser launch options for local browsers. */\nexport const LocalBrowserLaunchOptionsSchema = z\n  .strictObject({\n    args: z.array(z.string()).optional(),\n    executablePath: z.string().optional(),\n    port: z.number().optional(),\n    userDataDir: z.string().optional(),\n    preserveUserDataDir: z.boolean().optional(),\n    headless: z.boolean().optional(),\n    devtools: z.boolean().optional(),\n    chromiumSandbox: z.boolean().optional(),\n    ignoreDefaultArgs: z.union([z.boolean(), z.array(z.string())]).optional(),\n    proxy: z\n      .strictObject({\n        server: z.string(),\n        bypass: z.string().optional(),\n        username: z.string().optional(),\n        password: z.string().optional(),\n      })\n      .optional(),\n    locale: z.string().optional(),\n    viewport: z.strictObject({ width: z.number(), height: z.number() }).optional(),\n    deviceScaleFactor: z.number().optional(),\n    hasTouch: z.boolean().optional(),\n    ignoreHTTPSErrors: z.boolean().optional(),\n    downloadsPath: z.string().optional(),\n    acceptDownloads: z.boolean().optional(),\n    keepAlive: z.boolean().optional(),\n  })\n  .meta({ id: \"LocalBrowserLaunchOptions\" });\n\n/** Action object returned by observe and used by act */\nexport const ActionSchema = z\n  .strictObject({\n    selector: z.string().meta({\n      description: \"CSS selector or XPath for the element\",\n      example: \"[data-testid='submit-button']\",\n    }),\n    description: z.string().meta({\n      description: \"Human-readable description of the action\",\n      example: \"Click the submit button\",\n    }),\n    method: z.string().optional().meta({\n      description: \"The method to execute (click, fill, etc.)\",\n      example: \"click\",\n    }),\n    arguments: z\n      .array(z.string())\n      .optional()\n      .meta({\n        description: \"Arguments to pass to the method\",\n        example: [\"Hello World\"],\n      }),\n  })\n  .meta({\n    id: \"Action\",\n    description: \"Action object returned by observe and used by act\",\n  });\n\n// =============================================================================\n// Act\n// =============================================================================\n\nexport const StagehandResultUsageSchema = z\n  .strictObject({\n    inputTokens: z.number().int().nonnegative().default(0).meta({\n      description: \"Input tokens consumed by all LLM calls made for this operation\",\n    }),\n    outputTokens: z.number().int().nonnegative().default(0).meta({\n      description: \"Output tokens consumed by all LLM calls made for this operation\",\n    }),\n    reasoningTokens: z.number().int().nonnegative().default(0).meta({\n      description: \"Reasoning tokens consumed by all LLM calls made for this operation\",\n    }),\n    cachedInputTokens: z.number().int().nonnegative().default(0).meta({\n      description: \"Cached input tokens used by all LLM calls made for this operation\",\n    }),\n    inferenceTimeMs: z.number().int().nonnegative().default(0).meta({\n      description: \"Total time spent waiting for LLM inference during this operation\",\n    }),\n  })\n  .meta({\n    id: \"StagehandResultUsage\",\n    description: \"Aggregate LLM usage for one Stagehand operation\",\n  });\n\n/** LLM tokens avoided by serving a request from the cache. */\nexport const CacheTokenSavingsSchema = z\n  .strictObject({\n    inputTokens: z.number().int().nonnegative().default(0),\n    outputTokens: z.number().int().nonnegative().default(0),\n    totalTokens: z.number().int().nonnegative().default(0),\n  })\n  .meta({ id: \"CacheTokenSavings\" });\n\n/**\n * Cache observability for one act/observe/extract call. Always present, like\n * `usage`: DISABLED says no lookup ran, and otherwise it is self-explaining —\n * a miss carries why it missed, a hit carries how established the entry is.\n */\nexport const CacheMetadataSchema = z\n  .strictObject({\n    status: CacheStatusSchema.meta({\n      description:\n        \"Whether server-side caching served this result, computed it, or was not consulted\",\n    }),\n    count: z.number().int().nonnegative().optional().meta({\n      description:\n        \"Times this cache key has been seen, including this request; compare with threshold to see how close the key is to being served\",\n    }),\n    threshold: z.number().int().positive().optional().meta({\n      description: \"Hit-count threshold in effect for this key\",\n    }),\n    missReason: z.string().optional().meta({\n      description:\n        'Why the cache did not serve this request; misses only. Reported by the server: \"not_found\", \"threshold\", \"empty_array\", \"timeout\", \"error\", \"bypass\", \"screenshot\", \"not_enabled\", \"no_cache_key\". Reported locally: \"read_failed\" (the cache request itself failed) and \"replay_failed\" (a cached value was found but could not be applied)',\n    }),\n    tokensSaved: CacheTokenSavingsSchema.optional().meta({\n      description: \"LLM tokens avoided by serving this request from cache; hits only\",\n    }),\n  })\n  .meta({ id: \"CacheMetadata\" });\n\nexport const StagehandResultMetadataSchema = z\n  .strictObject({\n    actionId: z.string().optional().meta({\n      description: \"Action ID for tracking\",\n    }),\n    cache: CacheMetadataSchema.meta({\n      description:\n        \"Cache observability for this result; status is DISABLED when no cache lookup ran\",\n    }),\n    usage: StagehandResultUsageSchema.meta({\n      description:\n        \"Aggregate LLM usage for this operation; zeroed when the operation did not run inference\",\n    }),\n  })\n  .meta({ id: \"StagehandResultMetadata\" });\n\nexport const ActOptionsSchema = z\n  .strictObject({\n    model: ModelConfigSchema.optional().meta({\n      description:\n        \"Complete model configuration for this call; when omitted, the initialized Stagehand model is used, or Browserbase selects one automatically when no initialized model exists\",\n    }),\n    variables: VariablesSchema.optional().meta({\n      description:\n        \"Variables to substitute in the action instruction. Accepts flat primitives or { value, description? } objects.\",\n      example: {\n        username: \"john_doe\",\n        password: {\n          value: \"secret123\",\n          description: \"The login password\",\n        },\n      },\n    }),\n    timeout: z.number().optional().meta({\n      description: \"Timeout in ms for the action\",\n      example: 30000,\n    }),\n    locator: LocatorSchema.optional().meta({\n      description: \"Serializable element locator for the action target\",\n    }),\n    ignoreLocators: z\n      .array(LocatorSchema)\n      .optional()\n      .meta({\n        description:\n          \"Locators for elements and subtrees that should be excluded from action planning\",\n        example: [\n          { selector: \"nav\" },\n          { selector: \".cookie-banner\" },\n          { selector: \"#sidebar-ads\" },\n        ],\n      }),\n    cache: CachingSchema.optional().meta({\n      description: \"Override the instance-level cache setting for this request\",\n    }),\n  })\n  .meta({ id: \"ActOptions\" });\n\n/** Inner act result data */\nexport const ActResultDataSchema = z\n  .strictObject({\n    success: z.boolean().meta({\n      description: \"Whether the action completed successfully\",\n      example: true,\n    }),\n    message: z.string().meta({\n      description: \"Human-readable result message\",\n      example: \"Successfully clicked the login button\",\n    }),\n    actionDescription: z.string().meta({\n      description: \"Description of the action that was performed\",\n      example: \"Clicked button with text 'Login'\",\n    }),\n    actions: z.array(ActionSchema).meta({\n      description: \"List of actions that were executed\",\n    }),\n  })\n  .meta({ id: \"ActResultData\" });\n\nexport const ActResultSchema = z\n  .strictObject({\n    data: ActResultDataSchema,\n    metadata: StagehandResultMetadataSchema,\n  })\n  .meta({ id: \"ActResult\" });\n\n// =============================================================================\n// Extract\n// =============================================================================\n\nexport const ExtractOptionsSchema = z\n  .strictObject({\n    model: ModelConfigSchema.optional().meta({\n      description:\n        \"Complete model configuration for this call; when omitted, the initialized Stagehand model is used, or Browserbase selects one automatically when no initialized model exists\",\n    }),\n    timeout: z.number().optional().meta({\n      description: \"Timeout in ms for the extraction\",\n      example: 30000,\n    }),\n    locator: LocatorSchema.optional().meta({\n      description: \"Locator that scopes extraction to a specific element\",\n    }),\n    ignoreLocators: z\n      .array(LocatorSchema)\n      .optional()\n      .meta({\n        description: \"Locators for elements and subtrees that should be excluded from extraction\",\n        example: [\n          { selector: \"nav\" },\n          { selector: \".cookie-banner\" },\n          { selector: \"#sidebar-ads\" },\n        ],\n      }),\n    screenshot: z.boolean().optional().meta({\n      description:\n        \"When true, include a screenshot of the current viewport in the extraction LLM call. Defaults to false.\",\n      example: false,\n    }),\n    cache: CachingSchema.optional().meta({\n      description: \"Override the instance-level cache setting for this request\",\n    }),\n  })\n  .meta({ id: \"ExtractOptions\" });\n\nexport const ExtractResultSchema = z\n  .strictObject({\n    data: z.json().meta({\n      description: \"Extracted data matching the requested schema\",\n    }),\n    metadata: StagehandResultMetadataSchema,\n  })\n  .meta({ id: \"ExtractResult\" });\n\n// =============================================================================\n// Observe\n// =============================================================================\n\nexport const ObserveOptionsSchema = z\n  .strictObject({\n    model: ModelConfigSchema.optional().meta({\n      description:\n        \"Complete model configuration for this call; when omitted, the initialized Stagehand model is used, or Browserbase selects one automatically when no initialized model exists\",\n    }),\n    variables: VariablesSchema.optional().meta({\n      description:\n        \"Variables whose names are exposed to the model so observe() returns %variableName% placeholders in suggested action arguments instead of literal values. Accepts flat primitives or { value, description? } objects.\",\n      example: {\n        username: {\n          value: \"john@example.com\",\n          description: \"The login email\",\n        },\n        rememberMe: true,\n      },\n    }),\n    timeout: z.number().optional().meta({\n      description: \"Timeout in ms for the observation\",\n      example: 30000,\n    }),\n    locator: LocatorSchema.optional().meta({\n      description: \"Locator that scopes observation to a specific element\",\n    }),\n    ignoreLocators: z\n      .array(LocatorSchema)\n      .optional()\n      .meta({\n        description: \"Locators for elements and subtrees that should be excluded from observation\",\n        example: [\n          { selector: \"nav\" },\n          { selector: \".cookie-banner\" },\n          { selector: \"#sidebar-ads\" },\n        ],\n      }),\n    cache: CachingSchema.optional().meta({\n      description: \"Override the instance-level cache setting for this request\",\n    }),\n  })\n  .meta({ id: \"ObserveOptions\" });\n\nexport const ObserveResultSchema = z\n  .strictObject({\n    data: z.array(ActionSchema),\n    metadata: StagehandResultMetadataSchema,\n  })\n  .meta({ id: \"ObserveResult\" });\n\nexport const EmptyParamsSchema = z.strictObject({}).meta({ id: \"EmptyParams\" });\n\nexport const LoadStateSchema = z\n  .enum([\"load\", \"domcontentloaded\", \"networkidle\"])\n  .meta({ id: \"LoadState\" });\n\nconst pageNavigationUrlSchema = z.string().min(1);\n\nexport const PageNavigationOptionsSchema = z\n  .strictObject({\n    waitUntil: LoadStateSchema.optional(),\n    timeout: z.number().int().positive().optional(),\n  })\n  .meta({ id: \"PageNavigationOptions\" });\n\nexport const PageVoidResultSchema = z\n  .strictObject({\n    ok: z.literal(true),\n  })\n  .meta({ id: \"PageVoidResult\" });\n\nexport const ContextVoidResultSchema = z\n  .strictObject({\n    ok: z.literal(true),\n  })\n  .meta({ id: \"ContextVoidResult\" });\n\nexport const PageScreenshotClipSchema = z\n  .strictObject({\n    x: z.number(),\n    y: z.number(),\n    width: z.number().positive(),\n    height: z.number().positive(),\n  })\n  .meta({ id: \"PageScreenshotClip\" });\n\nexport const SnapshotResultSchema = z\n  .strictObject({\n    formattedTree: z.string(),\n    xpathMap: z.record(z.string(), z.string()),\n    urlMap: z.record(z.string(), z.string()),\n  })\n  .meta({ id: \"SnapshotResult\" });\n\nexport const PageSnapshotOptionsSchema = z\n  .strictObject({\n    includeIframes: z.boolean().optional(),\n  })\n  .meta({ id: \"PageSnapshotOptions\" });\n\nexport const PageRefSchema = z\n  .strictObject({\n    pageId: z.string(),\n    url: z.string().optional(),\n    title: z.string().optional(),\n  })\n  .meta({ id: \"PageRef\" });\n\nexport const NavigationHeaderSchema = z\n  .strictObject({\n    name: z.string(),\n    value: z.string(),\n  })\n  .meta({ id: \"NavigationHeader\" });\n\nexport const NavigationSecurityDetailsSchema = z\n  .strictObject({\n    issuer: z.string(),\n    protocol: z.string(),\n    subjectName: z.string(),\n    validFrom: z.number(),\n    validTo: z.number(),\n  })\n  .meta({ id: \"NavigationSecurityDetails\" });\n\nexport const NavigationServerAddrSchema = z\n  .strictObject({\n    ipAddress: z.string(),\n    port: z.number().int().min(0).max(65_535),\n  })\n  .meta({ id: \"NavigationServerAddr\" });\n\nexport const NavigationFinishedErrorSchema = z\n  .strictObject({\n    message: z.string(),\n  })\n  .meta({ id: \"NavigationFinishedError\" });\n\nexport const NavigationResponseDescriptorSchema = z\n  .strictObject({\n    responseId: z.string().min(1),\n    url: z.string(),\n    status: z.number().int().nonnegative(),\n    statusText: z.string(),\n    headers: z.record(z.string(), z.string()),\n    fromServiceWorker: z.boolean(),\n  })\n  .meta({ id: \"NavigationResponseDescriptor\" });\n\nexport const PageNavigationResultSchema = z\n  .strictObject({\n    page: PageRefSchema,\n    response: NavigationResponseDescriptorSchema.nullable(),\n  })\n  .meta({ id: \"PageNavigationResult\" });\n\nexport const ResponseIdParamsSchema = z\n  .strictObject({\n    responseId: z.string().min(1),\n  })\n  .meta({ id: \"ResponseIdParams\" });\n\nexport const ResponseBodyResultSchema = z\n  .strictObject({\n    body: z.string(),\n    base64Encoded: z.literal(true),\n  })\n  .meta({ id: \"ResponseBodyResult\" });\n\nexport const ResponseAllHeadersResultSchema = z\n  .strictObject({\n    headers: z.record(z.string(), z.string()),\n  })\n  .meta({ id: \"ResponseAllHeadersResult\" });\n\nexport const ResponseHeadersArrayResultSchema = z\n  .strictObject({\n    headers: z.array(NavigationHeaderSchema),\n  })\n  .meta({ id: \"ResponseHeadersArrayResult\" });\n\nexport const ResponseSecurityDetailsResultSchema = z\n  .strictObject({\n    value: NavigationSecurityDetailsSchema.nullable(),\n  })\n  .meta({ id: \"ResponseSecurityDetailsResult\" });\n\nexport const ResponseServerAddrResultSchema = z\n  .strictObject({\n    value: NavigationServerAddrSchema.nullable(),\n  })\n  .meta({ id: \"ResponseServerAddrResult\" });\n\nexport const ResponseFinishedResultSchema = z\n  .strictObject({\n    error: NavigationFinishedErrorSchema.nullable(),\n  })\n  .meta({ id: \"ResponseFinishedResult\" });\n\nexport const PageEventNameSchema = z.enum([\"console\"]).meta({ id: \"PageEventName\" });\n\nexport const PageCDPEventParamsSchema = z\n  .record(z.string(), z.json())\n  .meta({ id: \"PageCDPEventParams\" });\n\nexport const PageCDPEventSchema = z\n  .strictObject({\n    pageId: z.string().min(1),\n    method: z.enum([\"Runtime.consoleAPICalled\"]),\n    params: PageCDPEventParamsSchema,\n    sessionId: z.string().min(1),\n    targetId: z.string().min(1),\n  })\n  .meta({ id: \"PageCDPEvent\" });\n\nexport const PageCDPEventNotificationSchema = z\n  .strictObject({\n    subscriptionId: z.string().min(1),\n    event: PageCDPEventSchema,\n  })\n  .meta({ id: \"PageCDPEventNotification\" });\n\nexport const WebMCPAnnotationSchema = z\n  .strictObject({\n    readOnly: z.boolean().optional(),\n    untrustedContent: z.boolean().optional(),\n    autosubmit: z.boolean().optional(),\n  })\n  .meta({ id: \"WebMCPAnnotation\" });\n\nconst WebMCPJsonValueSchema = z.json().meta({ id: \"WebMCPJsonValue\" });\n\nexport const WebMCPToolDescriptorSchema = z\n  .strictObject({\n    name: z.string().min(1),\n    description: z.string(),\n    inputSchema: z.record(z.string(), WebMCPJsonValueSchema).optional(),\n    annotations: WebMCPAnnotationSchema.optional(),\n    frameId: z.string().min(1),\n    backendNodeId: z.number().int().nonnegative().optional(),\n  })\n  .meta({ id: \"WebMCPToolDescriptor\" });\n\nexport const WebMCPToolsOptionsSchema = z\n  .strictObject({\n    timeout: z.number().nonnegative().default(1_000),\n  })\n  .meta({ id: \"WebMCPToolsOptions\" });\n\nexport const WebMCPInvokeOptionsSchema = z\n  .strictObject({\n    input: z.record(z.string(), WebMCPJsonValueSchema).default({}),\n  })\n  .meta({ id: \"WebMCPInvokeOptions\" });\n\nexport const WebMCPResultOptionsSchema = z\n  .strictObject({\n    timeout: z.number().nonnegative().optional(),\n  })\n  .meta({ id: \"WebMCPResultOptions\" });\n\nexport const WebMCPInvocationDescriptorSchema = z\n  .strictObject({\n    invocationId: z.string().min(1),\n    toolName: z.string().min(1),\n    frameId: z.string().min(1),\n    input: z.record(z.string(), WebMCPJsonValueSchema),\n  })\n  .meta({ id: \"WebMCPInvocationDescriptor\" });\n\nexport const WebMCPInvocationStatusSchema = z\n  .enum([\"Completed\", \"Canceled\", \"Error\"])\n  .meta({ id: \"WebMCPInvocationStatus\" });\n\nexport const WebMCPRemoteObjectSchema = z\n  .record(z.string(), WebMCPJsonValueSchema)\n  .meta({ id: \"WebMCPRemoteObject\" });\n\nexport const WebMCPToolResponseSchema = z\n  .strictObject({\n    invocationId: z.string().min(1),\n    status: WebMCPInvocationStatusSchema,\n    output: WebMCPJsonValueSchema.optional(),\n    errorText: z.string().optional(),\n    exception: WebMCPRemoteObjectSchema.optional(),\n  })\n  .meta({ id: \"WebMCPToolResponse\" });\n\nexport const LocatorDescriptorSchema = z\n  .strictObject({\n    pageId: z.string(),\n    ...LocatorSchema.shape,\n  })\n  .meta({ id: \"LocatorDescriptor\" });\n\nexport const DEFAULT_TELEMETRY_CONFIG = {\n  traces: {\n    endpoint: \"https://example.com/v1/traces\", // TODO: Replace with the Browserbase OTLP traces ingestion endpoint.\n    headers: {},\n  },\n};\n\nexport const ImplementationInfoSchema = z\n  .strictObject({\n    name: z.string().min(1),\n    version: z.string().min(1),\n  })\n  .meta({ id: \"ImplementationInfo\" });\n\nexport const RuntimeDescriptorSchema = z\n  .strictObject({\n    protocolVersion: StagehandProtocolVersionSchema,\n    serverInfo: ImplementationInfoSchema.extend({\n      name: z.literal(\"stagehand\"),\n    }),\n  })\n  .meta({ id: \"RuntimeDescriptor\" });\n\nexport const TelemetryConfigSchema = z\n  .strictObject({\n    traces: z\n      .strictObject({\n        endpoint: z.url().refine((value) => new URL(value).pathname.endsWith(\"/v1/traces\"), {\n          message: \"OTLP trace endpoint must end with /v1/traces\",\n        }),\n        headers: z.record(z.string(), z.string()).default({}),\n      })\n      .meta({ id: \"TelemetryTraces\" }),\n  })\n  .meta({ id: \"TelemetryConfig\" });\n\nexport const StagehandInitParamsSchema = z\n  .strictObject({\n    protocolVersion: StagehandProtocolVersionSchema,\n    clientInfo: ImplementationInfoSchema,\n    browserCdpUrl: z.string().min(1).optional(),\n    apiKey: z.string().min(1).optional(),\n    apiUrl: z\n      .url()\n      .refine(\n        (value) => !value.includes(\"?\") && !value.includes(\"#\"),\n        \"Stagehand apiUrl must not include a query string or fragment\",\n      )\n      .refine((value) => !new URL(value).pathname.replace(/\\/+$/, \"\").endsWith(\"/v1\"), {\n        message: \"Stagehand apiUrl must be a service origin without /v1\",\n      })\n      .optional()\n      .meta({\n        description:\n          \"Stagehand API base URL override for managed services such as Model Gateway and server-side caching\",\n      }),\n    browser: BrowserSessionMetadataSchema.optional(),\n    model: z.union([ModelConfigSchema, ClientModelReferenceSchema]).optional().meta({\n      description:\n        \"Default model configuration; when omitted and a Browserbase Model Gateway session is available, Browserbase selects a model automatically for inference calls\",\n    }),\n    telemetry: TelemetryConfigSchema.default(DEFAULT_TELEMETRY_CONFIG),\n    logLevel: z.enum([\"off\", \"error\", \"warn\", \"info\", \"debug\"]).default(\"info\"),\n    systemPrompt: z.string().optional(),\n    selfHeal: z.boolean().optional(),\n    domSettleTimeoutMs: z.number().int().positive().optional(),\n    cache: CachingSchema.optional().meta({\n      description:\n        \"Server-side caching of act/observe/extract results for this instance: a boolean toggle, or an object with an optional hit-count threshold. Requires a Browserbase apiKey and browser sessionId. Can be overridden per request via options.cache.\",\n    }),\n  })\n  .meta({ id: \"StagehandInitParams\" });\n\nexport const StagehandActParamsSchema = z\n  .strictObject({\n    pageId: z.string().min(1),\n    instruction: z.union([z.string().min(1), ActionSchema]),\n    options: ActOptionsSchema.optional(),\n  })\n  .meta({ id: \"StagehandActParams\" });\n\nexport const StagehandObserveParamsSchema = z\n  .strictObject({\n    pageId: z.string().min(1),\n    instruction: z.string().optional(),\n    options: ObserveOptionsSchema.optional(),\n  })\n  .meta({ id: \"StagehandObserveParams\" });\n\nexport const DefaultExtractDataSchema = z\n  .strictObject({\n    extraction: z.string(),\n  })\n  .meta({ id: \"DefaultExtractData\" });\n\nexport const DEFAULT_EXTRACT_JSON_SCHEMA = z.json().parse(z.toJSONSchema(DefaultExtractDataSchema));\n\nexport const StagehandExtractParamsSchema = z\n  .strictObject({\n    pageId: z.string().min(1),\n    instruction: z.string().min(1),\n    schema: z.json().default(DEFAULT_EXTRACT_JSON_SCHEMA),\n    options: ExtractOptionsSchema.optional(),\n  })\n  .meta({ id: \"StagehandExtractParams\" });\n\nexport const ContextNewPageParamsSchema = z\n  .strictObject({\n    url: pageNavigationUrlSchema.optional(),\n  })\n  .meta({ id: \"ContextNewPageParams\" });\n\nexport const ContextSetActivePageParamsSchema = z\n  .strictObject({\n    pageId: z.string(),\n  })\n  .meta({ id: \"ContextSetActivePageParams\" });\n\nexport const ContextAddInitScriptParamsSchema = z\n  .strictObject({\n    source: z.string(),\n  })\n  .meta({ id: \"ContextAddInitScriptParams\" });\n\nexport const ContextSetExtraHTTPHeadersParamsSchema = z\n  .strictObject({\n    headers: z.record(z.string(), z.string()),\n  })\n  .meta({ id: \"ContextSetExtraHTTPHeadersParams\" });\n\nexport const ContextSetDomainPolicyParamsSchema = z\n  .strictObject({\n    policy: DomainPolicySchema.nullable(),\n  })\n  .meta({ id: \"ContextSetDomainPolicyParams\" });\n\nexport const ContextCookiesParamsSchema = z\n  .strictObject({\n    urls: z.union([z.string(), z.array(z.string())]).optional(),\n  })\n  .meta({ id: \"ContextCookiesParams\" });\n\nexport const ContextAddCookiesParamsSchema = z\n  .strictObject({\n    cookies: z.array(CookieParamSchema),\n  })\n  .meta({ id: \"ContextAddCookiesParams\" });\n\nexport const ContextClearCookiesParamsSchema = z\n  .strictObject({\n    options: ClearCookieOptionsSchema.optional(),\n  })\n  .meta({ id: \"ContextClearCookiesParams\" });\n\nexport const ContextClipboardTargetSchema = z\n  .strictObject({\n    pageId: z.string().optional(),\n  })\n  .meta({ id: \"ContextClipboardTarget\" });\n\nexport const ContextClipboardReadTextParamsSchema = ContextClipboardTargetSchema;\n\nexport const ContextClipboardWriteTextParamsSchema = ContextClipboardTargetSchema.extend({\n  text: z.string(),\n}).meta({ id: \"ContextClipboardWriteTextParams\" });\n\nexport const ContextClipboardClearParamsSchema = ContextClipboardTargetSchema;\n\nexport const ContextClipboardPasteParamsSchema = ContextClipboardTargetSchema.extend({\n  shortcut: z.enum([\"ControlOrMeta+V\", \"Meta+V\", \"Control+V\"]).optional(),\n}).meta({ id: \"ContextClipboardPasteParams\" });\n\nexport const ContextClipboardCopyParamsSchema = ContextClipboardTargetSchema;\n\nexport const ContextClipboardCutParamsSchema = ContextClipboardTargetSchema;\n\nexport const PageGotoParamsSchema = z\n  .strictObject({\n    pageId: z.string(),\n    url: pageNavigationUrlSchema,\n    options: PageNavigationOptionsSchema.optional(),\n  })\n  .meta({ id: \"PageGotoParams\" });\n\nexport const PageIdParamsSchema = z\n  .strictObject({\n    pageId: z.string(),\n  })\n  .meta({ id: \"PageIdParams\" });\n\nexport const PageOnParamsSchema = PageIdParamsSchema.extend({\n  subscriptionId: z.string().min(1),\n  event: PageEventNameSchema,\n}).meta({ id: \"PageOnParams\" });\n\nexport const PageOffParamsSchema = z\n  .strictObject({\n    subscriptionId: z.string().min(1),\n  })\n  .meta({ id: \"PageOffParams\" });\n\nexport const PageWebMCPToolsParamsSchema = z\n  .strictObject({\n    ...PageIdParamsSchema.shape,\n    options: WebMCPToolsOptionsSchema.optional(),\n  })\n  .meta({ id: \"PageWebMCPToolsParams\" });\n\nexport const PageWebMCPToolsResultSchema = z\n  .strictObject({\n    tools: z.array(WebMCPToolDescriptorSchema),\n  })\n  .meta({ id: \"PageWebMCPToolsResult\" });\n\nexport const PageWebMCPInvokeToolParamsSchema = z\n  .strictObject({\n    ...PageIdParamsSchema.shape,\n    frameId: z.string().min(1),\n    toolName: z.string().min(1),\n    ...WebMCPInvokeOptionsSchema.shape,\n  })\n  .meta({ id: \"PageWebMCPInvokeToolParams\" });\n\nexport const PageWebMCPInvocationResultParamsSchema = z\n  .strictObject({\n    ...PageIdParamsSchema.shape,\n    invocationId: z.string().min(1),\n    options: WebMCPResultOptionsSchema.optional(),\n  })\n  .meta({ id: \"PageWebMCPInvocationResultParams\" });\n\nexport const PageWebMCPCancelInvocationParamsSchema = z\n  .strictObject({\n    ...PageIdParamsSchema.shape,\n    invocationId: z.string().min(1),\n  })\n  .meta({ id: \"PageWebMCPCancelInvocationParams\" });\n\nexport const MouseButtonSchema = z.enum([\"left\", \"right\", \"middle\"]).meta({ id: \"MouseButton\" });\n\nexport const PageReloadParamsSchema = PageIdParamsSchema.extend({\n  options: PageNavigationOptionsSchema.extend({\n    ignoreCache: z.boolean().optional(),\n  })\n    .meta({ id: \"PageReloadOptions\" })\n    .optional(),\n}).meta({ id: \"PageReloadParams\" });\n\nexport const PageGoBackParamsSchema = PageIdParamsSchema.extend({\n  options: PageNavigationOptionsSchema.optional(),\n}).meta({ id: \"PageGoBackParams\" });\n\nexport const PageGoForwardParamsSchema = PageIdParamsSchema.extend({\n  options: PageNavigationOptionsSchema.optional(),\n}).meta({ id: \"PageGoForwardParams\" });\n\nexport const PageClickParamsSchema = PageIdParamsSchema.extend({\n  x: z.number(),\n  y: z.number(),\n  options: z\n    .strictObject({\n      button: MouseButtonSchema.optional(),\n      clickCount: z.number().int().positive().optional(),\n    })\n    .meta({ id: \"PageClickOptions\" })\n    .optional(),\n}).meta({ id: \"PageClickParams\" });\n\nexport const PageHoverParamsSchema = PageIdParamsSchema.extend({\n  x: z.number(),\n  y: z.number(),\n}).meta({ id: \"PageHoverParams\" });\n\nexport const PageScrollParamsSchema = PageIdParamsSchema.extend({\n  x: z.number(),\n  y: z.number(),\n  deltaX: z.number(),\n  deltaY: z.number(),\n}).meta({ id: \"PageScrollParams\" });\n\nexport const PageDragAndDropRoutePointSchema = z\n  .strictObject({\n    x: z.number(),\n    y: z.number(),\n  })\n  .meta({ id: \"PageDragAndDropRoutePoint\" });\n\nexport const PageDragAndDropParamsSchema = PageIdParamsSchema.extend({\n  fromX: z.number(),\n  fromY: z.number(),\n  toX: z.number(),\n  toY: z.number(),\n  options: z\n    .strictObject({\n      button: MouseButtonSchema.optional(),\n      steps: z.number().int().positive().optional(),\n      delay: z.number().nonnegative().optional(),\n      route: z.array(PageDragAndDropRoutePointSchema).optional(),\n    })\n    .meta({ id: \"PageDragAndDropOptions\" })\n    .optional(),\n}).meta({ id: \"PageDragAndDropParams\" });\n\nexport const PageTypeParamsSchema = PageIdParamsSchema.extend({\n  text: z.string(),\n  options: z\n    .strictObject({\n      delay: z.number().nonnegative().optional(),\n      withMistakes: z.boolean().optional(),\n    })\n    .meta({ id: \"PageTypeOptions\" })\n    .optional(),\n}).meta({ id: \"PageTypeParams\" });\n\nexport const PageKeyPressParamsSchema = PageIdParamsSchema.extend({\n  key: z.string().min(1),\n  options: z\n    .strictObject({\n      delay: z.number().nonnegative().optional(),\n    })\n    .meta({ id: \"PageKeyPressOptions\" })\n    .optional(),\n}).meta({ id: \"PageKeyPressParams\" });\n\nexport const PageEvaluateParamsSchema = PageIdParamsSchema.extend({\n  expression: z.string(),\n}).meta({ id: \"PageEvaluateParams\" });\n\nexport const PageAddInitScriptParamsSchema = PageIdParamsSchema.extend({\n  source: z.string(),\n}).meta({ id: \"PageAddInitScriptParams\" });\n\nexport const PageSetExtraHTTPHeadersParamsSchema = PageIdParamsSchema.extend({\n  headers: z.record(z.string(), z.string()),\n}).meta({ id: \"PageSetExtraHTTPHeadersParams\" });\n\nexport const PageScreenshotOptionsSchema = z\n  .strictObject({\n    animations: z.enum([\"disabled\", \"allow\"]).optional(),\n    caret: z.enum([\"hide\", \"initial\"]).optional(),\n    clip: PageScreenshotClipSchema.optional(),\n    fullPage: z.boolean().optional(),\n    mask: z.array(LocatorDescriptorSchema).optional(),\n    maskColor: z.string().optional(),\n    omitBackground: z.boolean().optional(),\n    quality: z.number().int().min(0).max(100).optional(),\n    scale: z.enum([\"css\", \"device\"]).optional(),\n    style: z.string().optional(),\n    timeout: z.number().nonnegative().optional(),\n    type: z.enum([\"png\", \"jpeg\"]).optional(),\n  })\n  .refine((options) => !(options.fullPage && options.clip), {\n    message: \"fullPage and clip cannot be used together\",\n    path: [\"clip\"],\n  })\n  .refine((options) => options.type === \"jpeg\" || options.quality === undefined, {\n    message: 'quality is only valid when type is \"jpeg\"',\n    path: [\"quality\"],\n  })\n  .meta({ id: \"PageScreenshotOptions\" });\n\nexport const PageScreenshotParamsSchema = PageIdParamsSchema.extend({\n  options: PageScreenshotOptionsSchema.optional(),\n}).meta({ id: \"PageScreenshotParams\" });\n\nexport const PageSnapshotParamsSchema = PageIdParamsSchema.extend({\n  options: PageSnapshotOptionsSchema.optional(),\n}).meta({ id: \"PageSnapshotParams\" });\n\nexport const PageSetViewportSizeParamsSchema = PageIdParamsSchema.extend({\n  width: z.number().int().positive(),\n  height: z.number().int().positive(),\n  options: z\n    .strictObject({\n      deviceScaleFactor: z.number().positive().optional(),\n    })\n    .meta({ id: \"PageSetViewportSizeOptions\" })\n    .optional(),\n}).meta({ id: \"PageSetViewportSizeParams\" });\n\nexport const PageWaitForLoadStateParamsSchema = PageIdParamsSchema.extend({\n  state: LoadStateSchema,\n  timeout: z.number().int().nonnegative().optional(),\n}).meta({ id: \"PageWaitForLoadStateParams\" });\n\nexport const PageWaitForTimeoutParamsSchema = PageIdParamsSchema.extend({\n  ms: z.number().int().nonnegative(),\n}).meta({ id: \"PageWaitForTimeoutParams\" });\n\nexport const PageWaitForSelectorParamsSchema = PageIdParamsSchema.extend({\n  selector: z.string().min(1),\n  options: z\n    .strictObject({\n      state: z.enum([\"attached\", \"detached\", \"visible\", \"hidden\"]).optional(),\n      timeout: z.number().int().nonnegative().optional(),\n      pierceShadow: z.boolean().optional(),\n    })\n    .meta({ id: \"PageWaitForSelectorOptions\" })\n    .optional(),\n}).meta({ id: \"PageWaitForSelectorParams\" });\n\nexport const LocatorClickParamsSchema = LocatorDescriptorSchema.extend({\n  options: z\n    .strictObject({\n      button: MouseButtonSchema.optional(),\n      clickCount: z.number().int().positive().optional(),\n    })\n    .meta({ id: \"LocatorClickOptions\" })\n    .optional(),\n}).meta({ id: \"LocatorClickParams\" });\n\nexport const LocatorFillParamsSchema = LocatorDescriptorSchema.extend({\n  value: z.string(),\n}).meta({ id: \"LocatorFillParams\" });\n\nexport const LocatorScrollToParamsSchema = LocatorDescriptorSchema.extend({\n  percent: z.union([z.number(), z.string()]),\n}).meta({ id: \"LocatorScrollToParams\" });\n\nexport const RgbaColorSchema = z\n  .strictObject({\n    r: z.number(),\n    g: z.number(),\n    b: z.number(),\n    a: z.number().optional(),\n  })\n  .meta({ id: \"RgbaColor\" });\n\nexport const LocatorHighlightParamsSchema = LocatorDescriptorSchema.extend({\n  options: z\n    .strictObject({\n      durationMs: z.number().int().nonnegative().optional(),\n      borderColor: RgbaColorSchema.optional(),\n      contentColor: RgbaColorSchema.optional(),\n    })\n    .meta({ id: \"LocatorHighlightOptions\" })\n    .optional(),\n}).meta({ id: \"LocatorHighlightParams\" });\n\nexport const LocatorSendClickEventParamsSchema = LocatorDescriptorSchema.extend({\n  options: z\n    .strictObject({\n      bubbles: z.boolean().optional(),\n      cancelable: z.boolean().optional(),\n      composed: z.boolean().optional(),\n      detail: z.number().optional(),\n    })\n    .meta({ id: \"LocatorSendClickEventOptions\" })\n    .optional(),\n}).meta({ id: \"LocatorSendClickEventParams\" });\n\nexport const LocatorTypeParamsSchema = LocatorDescriptorSchema.extend({\n  text: z.string(),\n  options: z\n    .strictObject({\n      delay: z.number().nonnegative().optional(),\n    })\n    .meta({ id: \"LocatorTypeOptions\" })\n    .optional(),\n}).meta({ id: \"LocatorTypeParams\" });\n\nexport const LocatorSelectOptionParamsSchema = LocatorDescriptorSchema.extend({\n  values: z.union([z.string(), z.array(z.string())]),\n}).meta({ id: \"LocatorSelectOptionParams\" });\n\nconst MAX_INPUT_FILE_BYTES = 50 * 1024 * 1024;\nconst MAX_INPUT_FILE_BASE64_LENGTH = Math.ceil(MAX_INPUT_FILE_BYTES / 3) * 4;\n\nexport function decodedBase64ByteLength(data: string): number {\n  const padding = data.endsWith(\"==\") ? 2 : data.endsWith(\"=\") ? 1 : 0;\n  return (data.length / 4) * 3 - padding;\n}\n\nexport const InputFilePayloadSchema = z\n  .strictObject({\n    name: z.string().min(1),\n    mimeType: z.string().min(1).optional(),\n    data: z\n      .base64()\n      .max(MAX_INPUT_FILE_BASE64_LENGTH)\n      .refine((value) => decodedBase64ByteLength(value) <= MAX_INPUT_FILE_BYTES, {\n        message: \"File data must decode to 50 MiB or less\",\n      })\n      .meta({ format: \"byte\" }),\n    lastModified: z.number().int().nonnegative().optional(),\n  })\n  .meta({ id: \"InputFilePayload\" });\n\nexport const LocatorSetInputFilesParamsSchema = LocatorDescriptorSchema.extend({\n  files: z.array(InputFilePayloadSchema),\n}).meta({ id: \"LocatorSetInputFilesParams\" });\n\nexport const StagehandInitResultSchema = z\n  .strictObject({\n    initialized: z.literal(true),\n    pages: z.array(PageRefSchema),\n  })\n  .meta({ id: \"StagehandInitResult\" });\n\nexport const StagehandCloseResultSchema = z\n  .strictObject({\n    closed: z.literal(true),\n  })\n  .meta({ id: \"StagehandCloseResult\" });\n\nexport const ContextPagesResultSchema = z.array(PageRefSchema).meta({ id: \"ContextPagesResult\" });\n\nexport const ContextActivePageResultSchema = PageRefSchema.nullable().meta({\n  id: \"ContextActivePageResult\",\n});\n\nexport const ContextGetDomainPolicyResultSchema = DomainPolicySchema.nullable().meta({\n  id: \"ContextGetDomainPolicyResult\",\n});\n\nexport const ContextCookiesResultSchema = z\n  .array(CookieSchema)\n  .meta({ id: \"ContextCookiesResult\" });\n\nexport const ContextClipboardReadTextResultSchema = z\n  .string()\n  .meta({ id: \"ContextClipboardReadTextResult\" });\n\nexport const PageUrlResultSchema = z.string().meta({ id: \"PageUrlResult\" });\n\nexport const PageTitleResultSchema = z.string().meta({ id: \"PageTitleResult\" });\n\nexport const PageCloseResultSchema = z\n  .strictObject({\n    closed: z.literal(true),\n  })\n  .meta({ id: \"PageCloseResult\" });\n\nexport const PageEvaluateResultSchema = z\n  .strictObject({\n    value: z.json(),\n  })\n  .meta({ id: \"PageEvaluateResult\" });\n\nexport const PageScreenshotResultSchema = z\n  .strictObject({\n    data: z.base64().meta({ format: \"byte\" }),\n  })\n  .meta({ id: \"PageScreenshotResult\" });\n\nexport const PageWaitForSelectorResultSchema = z\n  .strictObject({\n    matched: z.boolean(),\n  })\n  .meta({ id: \"PageWaitForSelectorResult\" });\n\nexport const LocatorClickResultSchema = z\n  .strictObject({\n    clicked: z.literal(true),\n  })\n  .meta({ id: \"LocatorClickResult\" });\n\nexport const LocatorFillResultSchema = z\n  .strictObject({\n    filled: z.literal(true),\n  })\n  .meta({ id: \"LocatorFillResult\" });\n\nexport const LocatorHoverResultSchema = z\n  .strictObject({\n    hovered: z.literal(true),\n  })\n  .meta({ id: \"LocatorHoverResult\" });\n\nexport const LocatorCountResultSchema = z\n  .number()\n  .int()\n  .nonnegative()\n  .meta({ id: \"LocatorCountResult\" });\n\nexport const LocatorIsCheckedResultSchema = z.boolean().meta({ id: \"LocatorIsCheckedResult\" });\n\nexport const LocatorInputValueResultSchema = z.string().meta({ id: \"LocatorInputValueResult\" });\n\nexport const LocatorIsVisibleResultSchema = z.boolean().meta({ id: \"LocatorIsVisibleResult\" });\n\nexport const LocatorInnerTextResultSchema = z.string().meta({ id: \"LocatorInnerTextResult\" });\n\nexport const LocatorInnerHtmlResultSchema = z.string().meta({ id: \"LocatorInnerHtmlResult\" });\n\nexport const LocatorTextContentResultSchema = z.string().meta({\n  id: \"LocatorTextContentResult\",\n});\n\nexport const LocatorScrollToResultSchema = z\n  .strictObject({\n    scrolled: z.literal(true),\n  })\n  .meta({ id: \"LocatorScrollToResult\" });\n\nexport const LocatorCentroidResultSchema = z\n  .strictObject({\n    x: z.number(),\n    y: z.number(),\n  })\n  .meta({ id: \"LocatorCentroidResult\" });\n\nexport const LocatorHighlightResultSchema = z\n  .strictObject({\n    highlighted: z.literal(true),\n  })\n  .meta({ id: \"LocatorHighlightResult\" });\n\nexport const LocatorSendClickEventResultSchema = z\n  .strictObject({\n    clicked: z.literal(true),\n  })\n  .meta({ id: \"LocatorSendClickEventResult\" });\n\nexport const LocatorTypeResultSchema = z\n  .strictObject({\n    typed: z.literal(true),\n  })\n  .meta({ id: \"LocatorTypeResult\" });\n\nexport const LocatorSelectOptionResultSchema = z\n  .array(z.string())\n  .meta({ id: \"LocatorSelectOptionResult\" });\n\nexport const LocatorSetInputFilesResultSchema = z\n  .strictObject({\n    set: z.literal(true),\n  })\n  .meta({ id: \"LocatorSetInputFilesResult\" });\n\nexport const StagehandLogLevelSchema = z\n  .enum([\"debug\", \"info\", \"warn\", \"error\"])\n  .meta({ id: \"StagehandLogLevel\" });\n\nexport const StagehandLogDataSchema = z\n  .record(z.string(), z.json())\n  .meta({ id: \"StagehandLogData\" });\n\nexport const StagehandLogSchema = z\n  .strictObject({\n    level: StagehandLogLevelSchema,\n    message: z.string().min(1),\n    data: StagehandLogDataSchema,\n  })\n  .meta({ id: \"StagehandLog\" });\n","import { z } from \"zod/v4\";\nimport {\n  JSONRPCNotificationSchema,\n  JSONRPCRequestSchema,\n  type RPCMethod,\n  type RPCNotification,\n} from \"./json-rpc/schemas.ts\";\nimport { wireSchema } from \"./json-rpc/wire-casing.ts\";\nimport {\n  ActResultSchema,\n  CallbackBatchParamsSchema,\n  CallbackBatchResultSchema,\n  ContextActivePageResultSchema,\n  ContextAddCookiesParamsSchema,\n  ContextAddInitScriptParamsSchema,\n  ContextClearCookiesParamsSchema,\n  ContextClipboardClearParamsSchema,\n  ContextClipboardCopyParamsSchema,\n  ContextClipboardCutParamsSchema,\n  ContextClipboardPasteParamsSchema,\n  ContextClipboardReadTextParamsSchema,\n  ContextClipboardReadTextResultSchema,\n  ContextClipboardWriteTextParamsSchema,\n  ContextCookiesParamsSchema,\n  ContextCookiesResultSchema,\n  ContextGetDomainPolicyResultSchema,\n  ContextNewPageParamsSchema,\n  ContextPagesResultSchema,\n  ContextSetActivePageParamsSchema,\n  ContextSetDomainPolicyParamsSchema,\n  ContextSetExtraHTTPHeadersParamsSchema,\n  ContextVoidResultSchema,\n  EmptyParamsSchema,\n  ExtractResultSchema,\n  LocatorClickParamsSchema,\n  LocatorClickResultSchema,\n  LocatorCentroidResultSchema,\n  LocatorCountResultSchema,\n  LocatorDescriptorSchema,\n  LocatorFillParamsSchema,\n  LocatorFillResultSchema,\n  LocatorHighlightParamsSchema,\n  LocatorHighlightResultSchema,\n  LocatorHoverResultSchema,\n  LocatorInnerHtmlResultSchema,\n  LocatorInnerTextResultSchema,\n  LocatorInputValueResultSchema,\n  LocatorIsCheckedResultSchema,\n  LocatorIsVisibleResultSchema,\n  LocatorScrollToParamsSchema,\n  LocatorScrollToResultSchema,\n  LocatorSelectOptionParamsSchema,\n  LocatorSelectOptionResultSchema,\n  LocatorSetInputFilesParamsSchema,\n  LocatorSetInputFilesResultSchema,\n  LocatorSendClickEventParamsSchema,\n  LocatorSendClickEventResultSchema,\n  LocatorTextContentResultSchema,\n  LocatorTypeParamsSchema,\n  LocatorTypeResultSchema,\n  LLMGenerateParamsSchema,\n  LLMGenerateResultSchema,\n  ObserveResultSchema,\n  PageAddInitScriptParamsSchema,\n  PageCDPEventNotificationSchema,\n  PageClickParamsSchema,\n  PageCloseResultSchema,\n  PageDragAndDropParamsSchema,\n  PageEvaluateParamsSchema,\n  PageEvaluateResultSchema,\n  PageGoBackParamsSchema,\n  PageGoForwardParamsSchema,\n  PageGotoParamsSchema,\n  PageHoverParamsSchema,\n  PageIdParamsSchema,\n  PageKeyPressParamsSchema,\n  PageNavigationResultSchema,\n  PageOffParamsSchema,\n  PageOnParamsSchema,\n  PageRefSchema,\n  PageReloadParamsSchema,\n  PageScreenshotParamsSchema,\n  PageScreenshotResultSchema,\n  PageScrollParamsSchema,\n  PageSetExtraHTTPHeadersParamsSchema,\n  PageSetViewportSizeParamsSchema,\n  PageSnapshotParamsSchema,\n  PageTitleResultSchema,\n  PageTypeParamsSchema,\n  PageUrlResultSchema,\n  PageVoidResultSchema,\n  PageWaitForLoadStateParamsSchema,\n  PageWaitForSelectorParamsSchema,\n  PageWaitForSelectorResultSchema,\n  PageWaitForTimeoutParamsSchema,\n  PageWebMCPCancelInvocationParamsSchema,\n  PageWebMCPInvocationResultParamsSchema,\n  PageWebMCPInvokeToolParamsSchema,\n  PageWebMCPToolsParamsSchema,\n  PageWebMCPToolsResultSchema,\n  ResponseAllHeadersResultSchema,\n  ResponseBodyResultSchema,\n  ResponseFinishedResultSchema,\n  ResponseHeadersArrayResultSchema,\n  ResponseIdParamsSchema,\n  ResponseSecurityDetailsResultSchema,\n  ResponseServerAddrResultSchema,\n  StagehandActParamsSchema,\n  StagehandCloseResultSchema,\n  StagehandExtractParamsSchema,\n  StagehandInitParamsSchema,\n  StagehandInitResultSchema,\n  StagehandLogSchema,\n  StagehandMetricsSchema,\n  StagehandObserveParamsSchema,\n  SnapshotResultSchema,\n  WebMCPInvocationDescriptorSchema,\n  WebMCPToolResponseSchema,\n} from \"./schemas.ts\";\n\nexport const STAGEHAND_SEND_TO_HOST_BINDING = \"__stagehandSendToHost\";\nexport const StagehandSendToHostBindingSchema = z\n  .literal(STAGEHAND_SEND_TO_HOST_BINDING)\n  .meta({ id: \"StagehandSendToHostBinding\" });\n\nexport const StagehandMethods = {\n  stagehandInit: {\n    name: \"stagehand.init\",\n    params: StagehandInitParamsSchema,\n    result: StagehandInitResultSchema,\n  },\n  stagehandClose: {\n    name: \"stagehand.close\",\n    params: EmptyParamsSchema,\n    result: StagehandCloseResultSchema,\n  },\n  stagehandAct: {\n    name: \"stagehand.act\",\n    params: StagehandActParamsSchema,\n    result: ActResultSchema,\n    resultWire: { transformKeys: [\"data\"] },\n  },\n  stagehandObserve: {\n    name: \"stagehand.observe\",\n    params: StagehandObserveParamsSchema,\n    result: ObserveResultSchema,\n    resultWire: { transformKeys: [\"data\"] },\n  },\n  stagehandExtract: {\n    name: \"stagehand.extract\",\n    params: StagehandExtractParamsSchema,\n    result: ExtractResultSchema,\n    paramsWire: { opaqueKeys: [\"schema\"] },\n    resultWire: { opaqueKeys: [\"data\"] },\n  },\n  stagehandMetrics: {\n    name: \"stagehand.metrics\",\n    params: EmptyParamsSchema,\n    result: StagehandMetricsSchema,\n  },\n  stagehandCallbackBatch: {\n    name: \"stagehand.callback_batch\",\n    params: CallbackBatchParamsSchema,\n    result: CallbackBatchResultSchema,\n    paramsWire: { opaqueKeys: [\"input\"] },\n    resultWire: { opaqueKeys: [\"value\"] },\n  },\n  llmGenerate: {\n    name: \"llm.generate\",\n    params: LLMGenerateParamsSchema,\n    result: LLMGenerateResultSchema,\n    paramsWire: {\n      opaqueKeys: [\"inputSchema\", \"outputSchema\", \"input\", \"structuredContent\", \"schema\"],\n    },\n    resultWire: { opaqueKeys: [\"structuredContent\"] },\n  },\n  contextPages: {\n    name: \"context.pages\",\n    params: EmptyParamsSchema,\n    result: ContextPagesResultSchema,\n  },\n  contextNewPage: {\n    name: \"context.new_page\",\n    params: ContextNewPageParamsSchema,\n    result: PageRefSchema,\n  },\n  contextActivePage: {\n    name: \"context.active_page\",\n    params: EmptyParamsSchema,\n    result: ContextActivePageResultSchema,\n  },\n  contextSetActivePage: {\n    name: \"context.set_active_page\",\n    params: ContextSetActivePageParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextAddInitScript: {\n    name: \"context.add_init_script\",\n    params: ContextAddInitScriptParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextSetExtraHTTPHeaders: {\n    name: \"context.set_extra_http_headers\",\n    params: ContextSetExtraHTTPHeadersParamsSchema,\n    result: ContextVoidResultSchema,\n    paramsWire: { opaqueKeys: [\"headers\"] },\n  },\n  contextGetDomainPolicy: {\n    name: \"context.get_domain_policy\",\n    params: EmptyParamsSchema,\n    result: ContextGetDomainPolicyResultSchema,\n  },\n  contextSetDomainPolicy: {\n    name: \"context.set_domain_policy\",\n    params: ContextSetDomainPolicyParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextCookies: {\n    name: \"context.cookies\",\n    params: ContextCookiesParamsSchema,\n    result: ContextCookiesResultSchema,\n  },\n  contextAddCookies: {\n    name: \"context.add_cookies\",\n    params: ContextAddCookiesParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClearCookies: {\n    name: \"context.clear_cookies\",\n    params: ContextClearCookiesParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClipboardReadText: {\n    name: \"context.clipboard_read_text\",\n    params: ContextClipboardReadTextParamsSchema,\n    result: ContextClipboardReadTextResultSchema,\n  },\n  contextClipboardWriteText: {\n    name: \"context.clipboard_write_text\",\n    params: ContextClipboardWriteTextParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClipboardClear: {\n    name: \"context.clipboard_clear\",\n    params: ContextClipboardClearParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClipboardPaste: {\n    name: \"context.clipboard_paste\",\n    params: ContextClipboardPasteParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClipboardCopy: {\n    name: \"context.clipboard_copy\",\n    params: ContextClipboardCopyParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  contextClipboardCut: {\n    name: \"context.clipboard_cut\",\n    params: ContextClipboardCutParamsSchema,\n    result: ContextVoidResultSchema,\n  },\n  pageGoto: {\n    name: \"page.goto\",\n    params: PageGotoParamsSchema,\n    result: PageNavigationResultSchema,\n    resultWire: { opaqueKeys: [\"headers\"] },\n  },\n  pageUrl: { name: \"page.url\", params: PageIdParamsSchema, result: PageUrlResultSchema },\n  pageTitle: { name: \"page.title\", params: PageIdParamsSchema, result: PageTitleResultSchema },\n  pageClose: { name: \"page.close\", params: PageIdParamsSchema, result: PageCloseResultSchema },\n  pageReload: {\n    name: \"page.reload\",\n    params: PageReloadParamsSchema,\n    result: PageNavigationResultSchema,\n    resultWire: { opaqueKeys: [\"headers\"] },\n  },\n  pageGoBack: {\n    name: \"page.go_back\",\n    params: PageGoBackParamsSchema,\n    result: PageNavigationResultSchema,\n    resultWire: { opaqueKeys: [\"headers\"] },\n  },\n  pageGoForward: {\n    name: \"page.go_forward\",\n    params: PageGoForwardParamsSchema,\n    result: PageNavigationResultSchema,\n    resultWire: { opaqueKeys: [\"headers\"] },\n  },\n  pageClick: {\n    name: \"page.click\",\n    params: PageClickParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageHover: {\n    name: \"page.hover\",\n    params: PageHoverParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageScroll: {\n    name: \"page.scroll\",\n    params: PageScrollParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageDragAndDrop: {\n    name: \"page.drag_and_drop\",\n    params: PageDragAndDropParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageType: { name: \"page.type\", params: PageTypeParamsSchema, result: PageVoidResultSchema },\n  pageKeyPress: {\n    name: \"page.key_press\",\n    params: PageKeyPressParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageEvaluate: {\n    name: \"page.evaluate\",\n    params: PageEvaluateParamsSchema,\n    result: PageEvaluateResultSchema,\n    resultWire: { opaqueKeys: [\"value\"] },\n  },\n  pageAddInitScript: {\n    name: \"page.add_init_script\",\n    params: PageAddInitScriptParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageOn: {\n    name: \"page.on\",\n    params: PageOnParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageOff: {\n    name: \"page.off\",\n    params: PageOffParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageSetExtraHTTPHeaders: {\n    name: \"page.set_extra_http_headers\",\n    params: PageSetExtraHTTPHeadersParamsSchema,\n    result: PageVoidResultSchema,\n    paramsWire: { opaqueKeys: [\"headers\"] },\n  },\n  pageScreenshot: {\n    name: \"page.screenshot\",\n    params: PageScreenshotParamsSchema,\n    result: PageScreenshotResultSchema,\n  },\n  pageSnapshot: {\n    name: \"page.snapshot\",\n    params: PageSnapshotParamsSchema,\n    result: SnapshotResultSchema,\n    resultWire: { opaqueKeys: [\"xpathMap\", \"urlMap\"] },\n  },\n  pageSetViewportSize: {\n    name: \"page.set_viewport_size\",\n    params: PageSetViewportSizeParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageWaitForLoadState: {\n    name: \"page.wait_for_load_state\",\n    params: PageWaitForLoadStateParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageWaitForTimeout: {\n    name: \"page.wait_for_timeout\",\n    params: PageWaitForTimeoutParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  pageWaitForSelector: {\n    name: \"page.wait_for_selector\",\n    params: PageWaitForSelectorParamsSchema,\n    result: PageWaitForSelectorResultSchema,\n  },\n  pageWebMCPTools: {\n    name: \"page.webmcp_tools\",\n    params: PageWebMCPToolsParamsSchema,\n    result: PageWebMCPToolsResultSchema,\n    resultWire: { opaqueKeys: [\"inputSchema\"] },\n  },\n  pageWebMCPInvokeTool: {\n    name: \"page.webmcp_invoke_tool\",\n    params: PageWebMCPInvokeToolParamsSchema,\n    result: WebMCPInvocationDescriptorSchema,\n    paramsWire: { opaqueKeys: [\"input\"] },\n    resultWire: { opaqueKeys: [\"input\"] },\n  },\n  pageWebMCPInvocationResult: {\n    name: \"page.webmcp_invocation_result\",\n    params: PageWebMCPInvocationResultParamsSchema,\n    result: WebMCPToolResponseSchema,\n    resultWire: { opaqueKeys: [\"output\", \"exception\"] },\n  },\n  pageWebMCPCancelInvocation: {\n    name: \"page.webmcp_cancel_invocation\",\n    params: PageWebMCPCancelInvocationParamsSchema,\n    result: PageVoidResultSchema,\n  },\n  locatorClick: {\n    name: \"locator.click\",\n    params: LocatorClickParamsSchema,\n    result: LocatorClickResultSchema,\n  },\n  locatorFill: {\n    name: \"locator.fill\",\n    params: LocatorFillParamsSchema,\n    result: LocatorFillResultSchema,\n  },\n  locatorHover: {\n    name: \"locator.hover\",\n    params: LocatorDescriptorSchema,\n    result: LocatorHoverResultSchema,\n  },\n  locatorCount: {\n    name: \"locator.count\",\n    params: LocatorDescriptorSchema,\n    result: LocatorCountResultSchema,\n  },\n  locatorIsChecked: {\n    name: \"locator.is_checked\",\n    params: LocatorDescriptorSchema,\n    result: LocatorIsCheckedResultSchema,\n  },\n  locatorInputValue: {\n    name: \"locator.input_value\",\n    params: LocatorDescriptorSchema,\n    result: LocatorInputValueResultSchema,\n  },\n  locatorIsVisible: {\n    name: \"locator.is_visible\",\n    params: LocatorDescriptorSchema,\n    result: LocatorIsVisibleResultSchema,\n  },\n  locatorInnerText: {\n    name: \"locator.inner_text\",\n    params: LocatorDescriptorSchema,\n    result: LocatorInnerTextResultSchema,\n  },\n  locatorInnerHtml: {\n    name: \"locator.inner_html\",\n    params: LocatorDescriptorSchema,\n    result: LocatorInnerHtmlResultSchema,\n  },\n  locatorTextContent: {\n    name: \"locator.text_content\",\n    params: LocatorDescriptorSchema,\n    result: LocatorTextContentResultSchema,\n  },\n  locatorScrollTo: {\n    name: \"locator.scroll_to\",\n    params: LocatorScrollToParamsSchema,\n    result: LocatorScrollToResultSchema,\n  },\n  locatorCentroid: {\n    name: \"locator.centroid\",\n    params: LocatorDescriptorSchema,\n    result: LocatorCentroidResultSchema,\n  },\n  locatorHighlight: {\n    name: \"locator.highlight\",\n    params: LocatorHighlightParamsSchema,\n    result: LocatorHighlightResultSchema,\n  },\n  locatorSendClickEvent: {\n    name: \"locator.send_click_event\",\n    params: LocatorSendClickEventParamsSchema,\n    result: LocatorSendClickEventResultSchema,\n  },\n  locatorType: {\n    name: \"locator.type\",\n    params: LocatorTypeParamsSchema,\n    result: LocatorTypeResultSchema,\n  },\n  locatorSelectOption: {\n    name: \"locator.select_option\",\n    params: LocatorSelectOptionParamsSchema,\n    result: LocatorSelectOptionResultSchema,\n  },\n  locatorSetInputFiles: {\n    name: \"locator.set_input_files\",\n    params: LocatorSetInputFilesParamsSchema,\n    result: LocatorSetInputFilesResultSchema,\n  },\n  responseBody: {\n    name: \"response.body\",\n    params: ResponseIdParamsSchema,\n    result: ResponseBodyResultSchema,\n  },\n  responseAllHeaders: {\n    name: \"response.all_headers\",\n    params: ResponseIdParamsSchema,\n    result: ResponseAllHeadersResultSchema,\n    resultWire: { opaqueKeys: [\"headers\"] },\n  },\n  responseHeadersArray: {\n    name: \"response.headers_array\",\n    params: ResponseIdParamsSchema,\n    result: ResponseHeadersArrayResultSchema,\n  },\n  responseSecurityDetails: {\n    name: \"response.security_details\",\n    params: ResponseIdParamsSchema,\n    result: ResponseSecurityDetailsResultSchema,\n  },\n  responseServerAddr: {\n    name: \"response.server_addr\",\n    params: ResponseIdParamsSchema,\n    result: ResponseServerAddrResultSchema,\n  },\n  responseFinished: {\n    name: \"response.finished\",\n    params: ResponseIdParamsSchema,\n    result: ResponseFinishedResultSchema,\n  },\n} as const satisfies Record<string, RPCMethod>;\n\nexport const StagehandMethodSchema = z\n  .enum(Object.values(StagehandMethods).map((method) => method.name))\n  .meta({ id: \"StagehandMethod\" });\n\nconst stagehandRpcRequestSchemas = Object.values(StagehandMethods).map((method) =>\n  JSONRPCRequestSchema.extend({\n    method: z.literal(method.name),\n    params: wireSchema(method.params, \"paramsWire\" in method ? method.paramsWire : undefined),\n  }),\n);\n\nexport const StagehandRpcRequestSchema = z\n  .union(\n    stagehandRpcRequestSchemas as [\n      (typeof stagehandRpcRequestSchemas)[number],\n      ...(typeof stagehandRpcRequestSchemas)[number][],\n    ],\n  )\n  .meta({ id: \"StagehandRpcRuntimeRequest\" });\n\nexport const StagehandNotifications = {\n  log: { name: \"stagehand.log\", params: StagehandLogSchema, paramsWire: undefined },\n  pageCDPEvent: {\n    name: \"page.cdp_event\",\n    params: PageCDPEventNotificationSchema,\n    paramsWire: { opaqueKeys: [\"params\"] },\n  },\n} as const satisfies Record<string, RPCNotification>;\n\ntype RegisteredNotificationSchema = {\n  [Key in keyof typeof StagehandNotifications]: z.ZodType<{\n    jsonrpc: \"2.0\";\n    method: (typeof StagehandNotifications)[Key][\"name\"];\n    params: z.output<(typeof StagehandNotifications)[Key][\"params\"]>;\n  }>;\n}[keyof typeof StagehandNotifications];\n\nconst stagehandRpcNotificationSchemas = Object.values(StagehandNotifications).map((notification) =>\n  JSONRPCNotificationSchema.extend({\n    method: z.literal(notification.name),\n    params: wireSchema(notification.params, notification.paramsWire),\n  }),\n) as RegisteredNotificationSchema[];\n\nexport const StagehandRpcNotificationSchema = z\n  .union(\n    stagehandRpcNotificationSchemas as [\n      RegisteredNotificationSchema,\n      ...RegisteredNotificationSchema[],\n    ],\n  )\n  .meta({ id: \"StagehandRpcRuntimeNotification\" });\n\nconst stagehandMethodsByName = new Map<string, RPCMethod>(\n  Object.values(StagehandMethods).map((method) => [method.name, method]),\n);\n\nexport function getStagehandMethod(name: string): RPCMethod | undefined {\n  return stagehandMethodsByName.get(name);\n}\n","import type { ContextClipboardPasteParams } from \"@browserbasehq/stagehand-protocol/types\";\nimport { StagehandMethods } from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport type { Page } from \"./page.js\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\n\nexport type ClipboardOptions = {\n  page?: Page;\n};\n\nexport type ClipboardPasteOptions = ClipboardOptions & {\n  shortcut?: ContextClipboardPasteParams[\"shortcut\"];\n};\n\nexport class BrowserClipboard {\n  constructor(readonly rpcClient: StagehandCommandClient) {}\n\n  async readText(options?: ClipboardOptions): Promise<string> {\n    return await this.rpcClient.send(\n      StagehandMethods.contextClipboardReadText,\n      clipboardTarget(options),\n    );\n  }\n\n  async writeText(text: string, options?: ClipboardOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextClipboardWriteText, {\n      text,\n      ...clipboardTarget(options),\n    });\n  }\n\n  async clear(options?: ClipboardOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextClipboardClear, clipboardTarget(options));\n  }\n\n  async paste(options?: ClipboardPasteOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextClipboardPaste, {\n      ...clipboardTarget(options),\n      ...(options?.shortcut === undefined ? {} : { shortcut: options.shortcut }),\n    });\n  }\n\n  async copy(options?: ClipboardOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextClipboardCopy, clipboardTarget(options));\n  }\n\n  async cut(options?: ClipboardOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextClipboardCut, clipboardTarget(options));\n  }\n}\n\nfunction clipboardTarget(options?: ClipboardOptions): { pageId?: string } {\n  return options?.page ? { pageId: options.page.pageId } : {};\n}\n","const BASE64_PATTERN = /^(?:[A-Za-z\\d+/]{4})*(?:[A-Za-z\\d+/]{2}==|[A-Za-z\\d+/]{3}=)?$/;\n\nexport function decodeBase64(value: string, source: string): Uint8Array {\n  if (value.length % 4 !== 0 || !BASE64_PATTERN.test(value)) {\n    throw new Error(`${source} returned invalid base64`);\n  }\n\n  let binary: string;\n  try {\n    binary = globalThis.atob(value);\n  } catch {\n    throw new Error(`${source} returned invalid base64`);\n  }\n  if (globalThis.btoa(binary) !== value) {\n    throw new Error(`${source} returned invalid base64`);\n  }\n\n  const bytes = new Uint8Array(binary.length);\n  for (let index = 0; index < binary.length; index += 1) {\n    bytes[index] = binary.charCodeAt(index);\n  }\n  return bytes;\n}\n","import type { InputFilePayload } from \"@browserbasehq/stagehand-protocol/types\";\n\nconst MAX_INPUT_FILE_BYTES = 50 * 1024 * 1024;\n\nexport type FilePayload = {\n  name: string;\n  mimeType?: string;\n  buffer: ArrayBuffer | Uint8Array | string;\n  lastModified?: number;\n};\n\nexport type FileInput = string | string[] | FilePayload | FilePayload[];\n\nexport async function normalizeFileInput(files: FileInput): Promise<InputFilePayload[]> {\n  const entries = Array.isArray(files) ? files : [files];\n  const payloads: InputFilePayload[] = [];\n  for (const entry of entries) payloads.push(await normalizeFile(entry));\n  return payloads;\n}\n\nasync function normalizeFile(file: string | FilePayload): Promise<InputFilePayload> {\n  if (typeof file === \"string\") {\n    const fsModuleName = \"node:\" + \"fs/promises\";\n    const pathModuleName = \"node:\" + \"path\";\n    const [fs, path] = await Promise.all([\n      import(/* @vite-ignore */ fsModuleName) as Promise<typeof import(\"node:fs/promises\")>,\n      import(/* @vite-ignore */ pathModuleName) as Promise<typeof import(\"node:path\")>,\n    ]).catch(() => {\n      throw new TypeError(\n        \"setInputFiles(): file paths are only supported in Node.js; use a file payload instead\",\n      );\n    });\n    const absolutePath = path.resolve(file);\n    const handle = await fs.open(absolutePath, \"r\").catch(() => {\n      throw new TypeError(\"setInputFiles(): could not read file\");\n    });\n    try {\n      const fileStat = await handle.stat().catch(() => {\n        throw new TypeError(\"setInputFiles(): could not read file\");\n      });\n      if (!fileStat.isFile()) {\n        throw new TypeError(\"setInputFiles(): expected a file\");\n      }\n      if (fileStat.size > MAX_INPUT_FILE_BYTES) {\n        throw new RangeError(`setInputFiles(): file is larger than the 50 MiB upload limit`);\n      }\n\n      const chunks: Buffer[] = [];\n      let bytesRead = 0;\n      try {\n        for await (const chunk of handle.createReadStream({\n          autoClose: false,\n          end: MAX_INPUT_FILE_BYTES,\n          start: 0,\n        })) {\n          const bytes = Buffer.from(chunk);\n          chunks.push(bytes);\n          bytesRead += bytes.byteLength;\n        }\n      } catch {\n        throw new TypeError(\"setInputFiles(): could not read file\");\n      }\n      if (bytesRead > MAX_INPUT_FILE_BYTES) {\n        throw new RangeError(`setInputFiles(): file is larger than the 50 MiB upload limit`);\n      }\n\n      const lastModified = Math.trunc(fileStat.mtimeMs);\n      return {\n        name: path.basename(absolutePath),\n        data: Buffer.concat(chunks, bytesRead).toString(\"base64\"),\n        ...(lastModified < 0 ? {} : { lastModified }),\n      };\n    } finally {\n      await handle.close().catch(() => {});\n    }\n  }\n\n  if (!file.name) throw new TypeError(\"setInputFiles(): file payload name cannot be empty\");\n  if (typeof file.buffer === \"string\") {\n    const nodeBuffer = (globalThis as typeof globalThis & { Buffer?: typeof Buffer }).Buffer;\n    const exceedsLimit = nodeBuffer\n      ? nodeBuffer.byteLength(file.buffer, \"utf8\") > MAX_INPUT_FILE_BYTES\n      : utf8ByteLengthExceeds(file.buffer, MAX_INPUT_FILE_BYTES);\n    if (exceedsLimit) {\n      throw new RangeError(`setInputFiles(): file is larger than the 50 MiB upload limit`);\n    }\n  }\n  const bytes =\n    typeof file.buffer === \"string\"\n      ? new TextEncoder().encode(file.buffer)\n      : file.buffer instanceof ArrayBuffer\n        ? new Uint8Array(file.buffer)\n        : file.buffer;\n  if (bytes.byteLength > MAX_INPUT_FILE_BYTES) {\n    throw new RangeError(`setInputFiles(): file is larger than the 50 MiB upload limit`);\n  }\n  if (\n    file.lastModified !== undefined &&\n    (!Number.isInteger(file.lastModified) || file.lastModified < 0)\n  ) {\n    throw new RangeError(\"setInputFiles(): lastModified must be a non-negative integer\");\n  }\n  return {\n    name: file.name,\n    ...(file.mimeType ? { mimeType: file.mimeType } : {}),\n    data: encodeBase64(bytes),\n    ...(file.lastModified === undefined ? {} : { lastModified: file.lastModified }),\n  };\n}\n\nfunction utf8ByteLengthExceeds(value: string, limit: number): boolean {\n  let byteLength = 0;\n  for (let index = 0; index < value.length; index++) {\n    const codeUnit = value.charCodeAt(index);\n    if (codeUnit <= 0x7f) {\n      byteLength += 1;\n    } else if (codeUnit <= 0x7ff) {\n      byteLength += 2;\n    } else if (\n      codeUnit >= 0xd800 &&\n      codeUnit <= 0xdbff &&\n      index + 1 < value.length &&\n      value.charCodeAt(index + 1) >= 0xdc00 &&\n      value.charCodeAt(index + 1) <= 0xdfff\n    ) {\n      byteLength += 4;\n      index += 1;\n    } else {\n      // BMP characters and lone surrogates both encode to three bytes.\n      byteLength += 3;\n    }\n    if (byteLength > limit) return true;\n  }\n  return false;\n}\n\nfunction encodeBase64(bytes: Uint8Array): string {\n  const nodeBuffer = (globalThis as typeof globalThis & { Buffer?: typeof Buffer }).Buffer;\n  if (nodeBuffer) return nodeBuffer.from(bytes).toString(\"base64\");\n  let binary = \"\";\n  for (const byte of bytes) binary += String.fromCharCode(byte);\n  return btoa(binary);\n}\n","import { LocatorDescriptorSchema } from \"@browserbasehq/stagehand-protocol/schemas\";\nimport { StagehandMethods } from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport type {\n  LocatorClickParams,\n  LocatorCentroidResult,\n  LocatorDescriptor,\n  LocatorHighlightParams,\n  LocatorScrollToParams,\n  LocatorSelectOptionParams,\n  LocatorSendClickEventParams,\n  LocatorTypeParams,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\nimport { normalizeFileInput, type FileInput } from \"./fileUpload.js\";\n\nexport type LocatorClickOptions = NonNullable<LocatorClickParams[\"options\"]>;\nexport type LocatorHighlightOptions = NonNullable<LocatorHighlightParams[\"options\"]>;\nexport type LocatorSendClickEventOptions = NonNullable<LocatorSendClickEventParams[\"options\"]>;\nexport type LocatorTypeOptions = NonNullable<LocatorTypeParams[\"options\"]>;\n\nexport class Locator {\n  constructor(\n    readonly rpcClient: StagehandCommandClient,\n    readonly descriptor: LocatorDescriptor,\n  ) {}\n\n  async click(options?: LocatorClickOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorClick, {\n      ...this.descriptor,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async hover(): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorHover, this.descriptor);\n  }\n\n  async fill(value: string): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorFill, {\n      ...this.descriptor,\n      value,\n    });\n  }\n\n  async count(): Promise<number> {\n    return await this.rpcClient.send(StagehandMethods.locatorCount, this.descriptor);\n  }\n\n  async isChecked(): Promise<boolean> {\n    return await this.rpcClient.send(StagehandMethods.locatorIsChecked, this.descriptor);\n  }\n\n  async inputValue(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.locatorInputValue, this.descriptor);\n  }\n\n  async isVisible(): Promise<boolean> {\n    return await this.rpcClient.send(StagehandMethods.locatorIsVisible, this.descriptor);\n  }\n\n  async innerText(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.locatorInnerText, this.descriptor);\n  }\n\n  async innerHtml(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.locatorInnerHtml, this.descriptor);\n  }\n\n  async textContent(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.locatorTextContent, this.descriptor);\n  }\n\n  async scrollTo(percent: LocatorScrollToParams[\"percent\"]): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorScrollTo, {\n      ...this.descriptor,\n      percent,\n    });\n  }\n\n  async centroid(): Promise<LocatorCentroidResult> {\n    return this.rpcClient.send(StagehandMethods.locatorCentroid, this.descriptor);\n  }\n\n  async highlight(options?: LocatorHighlightOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorHighlight, {\n      ...this.descriptor,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async sendClickEvent(options?: LocatorSendClickEventOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorSendClickEvent, {\n      ...this.descriptor,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async type(text: string, options?: LocatorTypeOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorType, {\n      ...this.descriptor,\n      text,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async selectOption(values: LocatorSelectOptionParams[\"values\"]): Promise<string[]> {\n    return await this.rpcClient.send(StagehandMethods.locatorSelectOption, {\n      ...this.descriptor,\n      values,\n    });\n  }\n\n  async setInputFiles(files: FileInput): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.locatorSetInputFiles, {\n      ...this.descriptor,\n      files: await normalizeFileInput(files),\n    });\n  }\n\n  first(): Locator {\n    return this.nth(0);\n  }\n\n  nth(index: number): Locator {\n    const parsedDescriptor = LocatorDescriptorSchema.safeParse({\n      ...this.descriptor,\n      nth: index,\n    });\n\n    if (!parsedDescriptor.success) {\n      throw parsedDescriptor.error;\n    }\n\n    return new Locator(this.rpcClient, parsedDescriptor.data);\n  }\n}\n","import { z } from \"zod/v4\";\n\nexport type InitScriptSource<Arg> =\n  | string\n  | { path?: string; content?: string }\n  | ((arg: Arg) => unknown);\n\nexport function normalizeEvaluationExpression<R, Arg>(\n  expression: string | ((arg: Arg) => R | Promise<R>),\n  arg?: Arg,\n): string {\n  if (typeof expression === \"string\") return expression;\n\n  return `(${expression.toString()})(${serializeArgument(arg, \"page.evaluate\")})`;\n}\n\nexport async function normalizeInitScriptSource<Arg>(\n  script: InitScriptSource<Arg>,\n  arg?: Arg,\n  caller = \"page.addInitScript\",\n): Promise<string> {\n  if (typeof script === \"function\") {\n    return `(${script.toString()})(${serializeArgument(arg, caller)})`;\n  }\n\n  if (arg !== undefined) {\n    throw new TypeError(`${caller}: 'arg' is only supported when passing a function.`);\n  }\n\n  if (typeof script === \"string\") return script;\n\n  if (!script || typeof script !== \"object\") {\n    throw new TypeError(\n      `${caller}: provide a string, function, or an object with exactly one of path or content.`,\n    );\n  }\n\n  const hasContent = typeof script.content === \"string\";\n  const hasPath = typeof script.path === \"string\" && script.path.trim().length > 0;\n  if (hasContent === hasPath) {\n    throw new TypeError(`${caller}: provide an object with exactly one of path or content.`);\n  }\n\n  if (hasContent) return script.content as string;\n\n  const filePath = script.path as string;\n  const moduleName = \"node:\" + \"fs/promises\";\n  const { readFile } = (await import(\n    /* @vite-ignore */ moduleName\n  )) as typeof import(\"node:fs/promises\");\n  const source = await readFile(filePath, \"utf8\");\n  return `${source}\\n//# sourceURL=${filePath.replace(/\\n/g, \"\")}`;\n}\n\nfunction serializeArgument(arg: unknown, caller: string): string {\n  if (arg === undefined) return \"undefined\";\n\n  const parsed = z.json().safeParse(arg);\n  if (!parsed.success) {\n    throw new TypeError(`${caller}: 'arg' must be JSON-serializable.`);\n  }\n\n  const serialized = JSON.stringify(parsed.data);\n  if (serialized === undefined) {\n    throw new TypeError(`${caller}: 'arg' must be JSON-serializable.`);\n  }\n  return serialized;\n}\n","import type {\n  NavigationHeader,\n  NavigationResponseDescriptor,\n  NavigationSecurityDetails,\n  NavigationServerAddr,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport { StagehandMethods } from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport { decodeBase64 } from \"./base64.js\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\n\nexport type ResponseHeader = NavigationHeader;\nexport type ResponseSecurityDetails = NavigationSecurityDetails;\nexport type ResponseServerAddr = NavigationServerAddr;\n\nexport class Response {\n  readonly #rpcClient: StagehandCommandClient;\n  readonly #descriptor: NavigationResponseDescriptor;\n\n  constructor(rpcClient: StagehandCommandClient, descriptor: NavigationResponseDescriptor) {\n    this.#rpcClient = rpcClient;\n    this.#descriptor = {\n      ...descriptor,\n      headers: { ...descriptor.headers },\n    };\n  }\n\n  url(): string {\n    return this.#descriptor.url;\n  }\n\n  status(): number {\n    return this.#descriptor.status;\n  }\n\n  statusText(): string {\n    return this.#descriptor.statusText;\n  }\n\n  ok(): boolean {\n    return this.status() >= 200 && this.status() <= 299;\n  }\n\n  headers(): Record<string, string> {\n    return { ...this.#descriptor.headers };\n  }\n\n  async allHeaders(): Promise<Record<string, string>> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseAllHeaders, {\n      responseId: this.#descriptor.responseId,\n    });\n    return { ...result.headers };\n  }\n\n  async headerValue(name: string): Promise<string | null> {\n    const values = await this.headerValues(name);\n    return values.length === 0 ? null : values.join(\", \");\n  }\n\n  async headerValues(name: string): Promise<string[]> {\n    const normalizedName = name.toLowerCase();\n    const headers = await this.headersArray();\n    return headers\n      .filter((header) => header.name.toLowerCase() === normalizedName)\n      .map((header) => header.value);\n  }\n\n  async headersArray(): Promise<ResponseHeader[]> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseHeadersArray, {\n      responseId: this.#descriptor.responseId,\n    });\n    return result.headers.map((header) => ({ ...header }));\n  }\n\n  fromServiceWorker(): boolean {\n    return this.#descriptor.fromServiceWorker;\n  }\n\n  async securityDetails(): Promise<ResponseSecurityDetails | null> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseSecurityDetails, {\n      responseId: this.#descriptor.responseId,\n    });\n    return result.value === null ? null : { ...result.value };\n  }\n\n  async serverAddr(): Promise<ResponseServerAddr | null> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseServerAddr, {\n      responseId: this.#descriptor.responseId,\n    });\n    return result.value === null ? null : { ...result.value };\n  }\n\n  async body(): Promise<Uint8Array> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseBody, {\n      responseId: this.#descriptor.responseId,\n    });\n    return decodeBase64(result.body, \"response.body\");\n  }\n\n  async text(): Promise<string> {\n    return new TextDecoder().decode(await this.body());\n  }\n\n  async json<T = unknown>(): Promise<T> {\n    return JSON.parse(await this.text()) as T;\n  }\n\n  async finished(): Promise<null | Error> {\n    const result = await this.#rpcClient.send(StagehandMethods.responseFinished, {\n      responseId: this.#descriptor.responseId,\n    });\n    return result.error === null ? null : new Error(result.error.message);\n  }\n}\n","import type {\n  WebMCPAnnotation,\n  WebMCPInvocationDescriptor,\n  WebMCPToolDescriptor,\n  WebMCPToolResponse,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport { StagehandMethods } from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport type { WebMCPInvokeOptions, WebMCPResultOptions } from \"./clientSchemas.js\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\n\nexport class WebMCPTool {\n  readonly name: string;\n  readonly description: string;\n  readonly inputSchema?: WebMCPToolDescriptor[\"inputSchema\"];\n  readonly annotations?: WebMCPAnnotation;\n  readonly frameId: string;\n  readonly backendNodeId?: number;\n\n  readonly #rpcClient: StagehandCommandClient;\n  readonly #pageId: string;\n\n  constructor(rpcClient: StagehandCommandClient, pageId: string, descriptor: WebMCPToolDescriptor) {\n    this.#rpcClient = rpcClient;\n    this.#pageId = pageId;\n    this.name = descriptor.name;\n    this.description = descriptor.description;\n    this.inputSchema = descriptor.inputSchema;\n    this.annotations = descriptor.annotations;\n    this.frameId = descriptor.frameId;\n    this.backendNodeId = descriptor.backendNodeId;\n  }\n\n  async invoke(options?: WebMCPInvokeOptions): Promise<WebMCPInvocation> {\n    const descriptor = await this.#rpcClient.send(StagehandMethods.pageWebMCPInvokeTool, {\n      pageId: this.#pageId,\n      frameId: this.frameId,\n      toolName: this.name,\n      input: options?.input ?? {},\n    });\n    return new WebMCPInvocation(this.#rpcClient, this.#pageId, descriptor);\n  }\n}\n\nexport class WebMCPInvocation {\n  readonly invocationId: string;\n  readonly toolName: string;\n  readonly frameId: string;\n  readonly input: WebMCPInvocationDescriptor[\"input\"];\n\n  readonly #rpcClient: StagehandCommandClient;\n  readonly #pageId: string;\n  #terminalResult?: WebMCPToolResponse;\n\n  constructor(\n    rpcClient: StagehandCommandClient,\n    pageId: string,\n    descriptor: WebMCPInvocationDescriptor,\n  ) {\n    this.#rpcClient = rpcClient;\n    this.#pageId = pageId;\n    this.invocationId = descriptor.invocationId;\n    this.toolName = descriptor.toolName;\n    this.frameId = descriptor.frameId;\n    this.input = descriptor.input;\n  }\n\n  async result(options?: WebMCPResultOptions): Promise<WebMCPToolResponse> {\n    if (this.#terminalResult !== undefined) return this.#terminalResult;\n\n    const result = await this.#rpcClient.send(StagehandMethods.pageWebMCPInvocationResult, {\n      pageId: this.#pageId,\n      invocationId: this.invocationId,\n      ...(options ? { options } : {}),\n    });\n    this.#terminalResult ??= result;\n    return this.#terminalResult;\n  }\n\n  async cancel(): Promise<void> {\n    await this.#rpcClient.send(StagehandMethods.pageWebMCPCancelInvocation, {\n      pageId: this.#pageId,\n      invocationId: this.invocationId,\n    });\n  }\n}\n","import type {\n  LoadState,\n  PageCDPEvent,\n  PageEventName,\n  PageClickParams,\n  PageDragAndDropParams,\n  PageKeyPressParams,\n  PageNavigationOptions,\n  PageRef,\n  PageReloadParams,\n  PageScreenshotOptions,\n  PageSetExtraHTTPHeadersParams,\n  PageSetViewportSizeParams,\n  PageSnapshotOptions,\n  SnapshotResult,\n  PageTypeParams,\n  PageWaitForSelectorParams,\n  PageWaitForTimeoutParams,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport {\n  StagehandMethods,\n  StagehandNotifications,\n} from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport { decodeBase64 } from \"./base64.js\";\nimport { Locator } from \"./locator.js\";\nimport {\n  type InitScriptSource,\n  normalizeEvaluationExpression,\n  normalizeInitScriptSource,\n} from \"./pageScripts.js\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\nimport { Response } from \"./response.js\";\nimport { WebMCPTool } from \"./webmcp.js\";\nimport type { WebMCPToolsOptions } from \"./clientSchemas.js\";\n\nexport type ScreenshotOptions = Omit<PageScreenshotOptions, \"mask\"> & {\n  mask?: Locator[];\n  path?: string;\n};\n\nexport type PageClickOptions = NonNullable<PageClickParams[\"options\"]>;\nexport type PageDragAndDropOptions = NonNullable<PageDragAndDropParams[\"options\"]>;\nexport type PageKeyPressOptions = NonNullable<PageKeyPressParams[\"options\"]>;\nexport type PageReloadOptions = NonNullable<PageReloadParams[\"options\"]>;\nexport type PageSetViewportSizeOptions = NonNullable<PageSetViewportSizeParams[\"options\"]>;\nexport type PageTypeOptions = NonNullable<PageTypeParams[\"options\"]>;\nexport type PageWaitForSelectorOptions = NonNullable<PageWaitForSelectorParams[\"options\"]>;\n\nexport interface PageEventListener {\n  (event: PageCDPEvent): unknown;\n}\n\nexport class CDPSubscription {\n  private unsubscribePromise: Promise<void> | undefined;\n\n  constructor(\n    private readonly rpcClient: StagehandCommandClient,\n    private readonly subscriptionId: string,\n    private readonly removeLocalListener: () => void,\n    private readonly onDisposed: () => void,\n  ) {}\n\n  unsubscribe(): Promise<void> {\n    this.unsubscribePromise ??= this.unsubscribeOnce().catch((error: unknown) => {\n      this.unsubscribePromise = undefined;\n      throw error;\n    });\n    return this.unsubscribePromise;\n  }\n\n  private async unsubscribeOnce(): Promise<void> {\n    this.removeLocalListener();\n    this.onDisposed();\n    await this.rpcClient.send(StagehandMethods.pageOff, {\n      subscriptionId: this.subscriptionId,\n    });\n  }\n}\n\nexport class Page {\n  currentRef: PageRef;\n  private readonly eventSubscriptions = new Set<CDPSubscription>();\n\n  constructor(\n    readonly rpcClient: StagehandCommandClient,\n    ref: PageRef,\n  ) {\n    this.currentRef = ref;\n  }\n\n  get pageId(): string {\n    return this.currentRef.pageId;\n  }\n\n  get ref(): PageRef {\n    return this.currentRef;\n  }\n\n  async goto(url: string, options?: PageNavigationOptions): Promise<Response | null> {\n    const result = await this.rpcClient.send(StagehandMethods.pageGoto, {\n      pageId: this.pageId,\n      url,\n      ...(options ? { options } : {}),\n    });\n    this.currentRef = result.page;\n    return result.response === null ? null : new Response(this.rpcClient, result.response);\n  }\n\n  async reload(options?: PageReloadOptions): Promise<Response | null> {\n    const result = await this.rpcClient.send(StagehandMethods.pageReload, {\n      pageId: this.pageId,\n      ...(options ? { options } : {}),\n    });\n    this.currentRef = result.page;\n    return result.response === null ? null : new Response(this.rpcClient, result.response);\n  }\n\n  async goBack(options?: PageNavigationOptions): Promise<Response | null> {\n    const result = await this.rpcClient.send(StagehandMethods.pageGoBack, {\n      pageId: this.pageId,\n      ...(options ? { options } : {}),\n    });\n    this.currentRef = result.page;\n    return result.response === null ? null : new Response(this.rpcClient, result.response);\n  }\n\n  async goForward(options?: PageNavigationOptions): Promise<Response | null> {\n    const result = await this.rpcClient.send(StagehandMethods.pageGoForward, {\n      pageId: this.pageId,\n      ...(options ? { options } : {}),\n    });\n    this.currentRef = result.page;\n    return result.response === null ? null : new Response(this.rpcClient, result.response);\n  }\n\n  async click(x: number, y: number, options?: PageClickOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageClick, {\n      pageId: this.pageId,\n      x,\n      y,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async hover(x: number, y: number): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageHover, {\n      pageId: this.pageId,\n      x,\n      y,\n    });\n  }\n\n  async scroll(x: number, y: number, deltaX: number, deltaY: number): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageScroll, {\n      pageId: this.pageId,\n      x,\n      y,\n      deltaX,\n      deltaY,\n    });\n  }\n\n  async dragAndDrop(\n    fromX: number,\n    fromY: number,\n    toX: number,\n    toY: number,\n    options?: PageDragAndDropOptions,\n  ): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageDragAndDrop, {\n      pageId: this.pageId,\n      fromX,\n      fromY,\n      toX,\n      toY,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async type(text: string, options?: PageTypeOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageType, {\n      pageId: this.pageId,\n      text,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async keyPress(key: string, options?: PageKeyPressOptions): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageKeyPress, {\n      pageId: this.pageId,\n      key,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async evaluate<R = unknown, Arg = unknown>(\n    expression: string | ((arg: Arg) => R | Promise<R>),\n    arg?: Arg,\n  ): Promise<R> {\n    const result = await this.rpcClient.send(StagehandMethods.pageEvaluate, {\n      pageId: this.pageId,\n      expression: normalizeEvaluationExpression(expression, arg),\n    });\n    return result.value as R;\n  }\n\n  async addInitScript<Arg = unknown>(script: InitScriptSource<Arg>, arg?: Arg): Promise<void> {\n    const source = await normalizeInitScriptSource(script, arg);\n    await this.rpcClient.send(StagehandMethods.pageAddInitScript, {\n      pageId: this.pageId,\n      source,\n    });\n  }\n\n  async on(event: PageEventName, listener: PageEventListener): Promise<CDPSubscription> {\n    const subscriptionId = crypto.randomUUID();\n    const removeNotificationListener = this.rpcClient.onNotification((notification) => {\n      if (\n        notification.method !== StagehandNotifications.pageCDPEvent.name ||\n        notification.params.subscriptionId !== subscriptionId\n      ) {\n        return;\n      }\n      try {\n        const result = listener(notification.params.event);\n        if (result && typeof result === \"object\" && \"then\" in result) {\n          void Promise.resolve(result).catch(reportPageEventListenerError);\n        }\n      } catch (error) {\n        reportPageEventListenerError(error);\n      }\n    });\n\n    let subscription: CDPSubscription;\n    subscription = new CDPSubscription(\n      this.rpcClient,\n      subscriptionId,\n      removeNotificationListener,\n      () => this.eventSubscriptions.delete(subscription),\n    );\n    this.eventSubscriptions.add(subscription);\n\n    try {\n      await this.rpcClient.send(StagehandMethods.pageOn, {\n        pageId: this.pageId,\n        subscriptionId,\n        event,\n      });\n      return subscription;\n    } catch (error) {\n      removeNotificationListener();\n      this.eventSubscriptions.delete(subscription);\n      throw error;\n    }\n  }\n\n  async setExtraHTTPHeaders(headers: PageSetExtraHTTPHeadersParams[\"headers\"]): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageSetExtraHTTPHeaders, {\n      pageId: this.pageId,\n      headers,\n    });\n  }\n\n  async setViewportSize(\n    width: number,\n    height: number,\n    options?: PageSetViewportSizeOptions,\n  ): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageSetViewportSize, {\n      pageId: this.pageId,\n      width,\n      height,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async waitForLoadState(state: LoadState, timeout?: number): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageWaitForLoadState, {\n      pageId: this.pageId,\n      state,\n      ...(timeout === undefined ? {} : { timeout }),\n    });\n  }\n\n  async waitForTimeout(ms: PageWaitForTimeoutParams[\"ms\"]): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.pageWaitForTimeout, {\n      pageId: this.pageId,\n      ms,\n    });\n  }\n\n  async waitForSelector(selector: string, options?: PageWaitForSelectorOptions): Promise<boolean> {\n    const result = await this.rpcClient.send(StagehandMethods.pageWaitForSelector, {\n      pageId: this.pageId,\n      selector,\n      ...(options ? { options } : {}),\n    });\n    return result.matched;\n  }\n\n  async screenshot(options?: ScreenshotOptions): Promise<Uint8Array> {\n    const { path, mask, ...screenshotOptions } = options ?? {};\n    const result = await this.rpcClient.send(StagehandMethods.pageScreenshot, {\n      pageId: this.pageId,\n      options: {\n        ...screenshotOptions,\n        ...(mask ? { mask: mask.map((locator) => locator.descriptor) } : {}),\n      },\n    });\n    const bytes = decodeBase64(result.data, \"page.screenshot\");\n    if (path) {\n      const moduleName = \"node:\" + \"fs/promises\";\n      const { writeFile } = (await import(/* @vite-ignore */ moduleName).catch(() => {\n        throw new TypeError(\n          \"page.screenshot(): path is only supported in Node.js; omit path to receive screenshot bytes\",\n        );\n      })) as typeof import(\"node:fs/promises\");\n      await writeFile(path, bytes);\n    }\n    return bytes;\n  }\n\n  async snapshot(options?: PageSnapshotOptions): Promise<SnapshotResult> {\n    return await this.rpcClient.send(StagehandMethods.pageSnapshot, {\n      pageId: this.pageId,\n      ...(options ? { options } : {}),\n    });\n  }\n\n  async tools(options?: WebMCPToolsOptions): Promise<WebMCPTool[]> {\n    const result = await this.rpcClient.send(StagehandMethods.pageWebMCPTools, {\n      pageId: this.pageId,\n      ...(options ? { options } : {}),\n    });\n    return result.tools.map(\n      (descriptor) => new WebMCPTool(this.rpcClient, this.pageId, descriptor),\n    );\n  }\n\n  async url(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.pageUrl, {\n      pageId: this.pageId,\n    });\n  }\n\n  async title(): Promise<string> {\n    return await this.rpcClient.send(StagehandMethods.pageTitle, {\n      pageId: this.pageId,\n    });\n  }\n\n  async close(): Promise<void> {\n    await Promise.allSettled(\n      [...this.eventSubscriptions].map((subscription) => subscription.unsubscribe()),\n    );\n    await this.rpcClient.send(StagehandMethods.pageClose, { pageId: this.pageId });\n  }\n\n  locator(selector: string): Locator {\n    return new Locator(this.rpcClient, {\n      pageId: this.pageId,\n      selector,\n    });\n  }\n}\n\nfunction reportPageEventListenerError(error: unknown): void {\n  process.emitWarning(error instanceof Error ? error.message : String(error), {\n    code: \"STAGEHAND_PAGE_EVENT_LISTENER_ERROR\",\n  });\n}\n","import type {\n  ContextClearCookiesParams,\n  ContextNewPageParams,\n  ContextSetExtraHTTPHeadersParams,\n  Cookie,\n  CookieParam,\n  DomainPolicy,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport type * as ProtocolTypes from \"@browserbasehq/stagehand-protocol/types\";\nimport { StagehandMethods } from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport { BrowserClipboard } from \"./browserClipboard.js\";\nimport { Page } from \"./page.js\";\nimport { normalizeInitScriptSource, type InitScriptSource } from \"./pageScripts.js\";\nimport type { StagehandCommandClient } from \"./commandClient.js\";\nexport type { Cookie, CookieParam, DomainPolicy } from \"@browserbasehq/stagehand-protocol/types\";\n\nexport type ClearCookieOptions = {\n  name?: string | RegExp;\n  domain?: string | RegExp;\n  path?: string | RegExp;\n};\n\nexport class BrowserContext {\n  clipboardRef?: BrowserClipboard;\n\n  constructor(\n    readonly rpcClient: StagehandCommandClient,\n    private readonly closeBrowser?: () => Promise<void>,\n  ) {}\n\n  get clipboard(): BrowserClipboard {\n    return (this.clipboardRef ??= new BrowserClipboard(this.rpcClient));\n  }\n\n  async pages(): Promise<Page[]> {\n    const pageRefs = await this.rpcClient.send(StagehandMethods.contextPages, {});\n    return pageRefs.map((pageRef) => new Page(this.rpcClient, pageRef));\n  }\n\n  async newPage(url?: string): Promise<Page> {\n    const params: ContextNewPageParams = url === undefined ? {} : { url };\n    const pageRef = await this.rpcClient.send(StagehandMethods.contextNewPage, params);\n    return new Page(this.rpcClient, pageRef);\n  }\n\n  async activePage(): Promise<Page | undefined> {\n    const pageRef = await this.rpcClient.send(StagehandMethods.contextActivePage, {});\n    return pageRef ? new Page(this.rpcClient, pageRef) : undefined;\n  }\n\n  async setActivePage(page: Page): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextSetActivePage, {\n      pageId: page.pageId,\n    });\n  }\n\n  /** Close the underlying browser. */\n  async close(): Promise<void> {\n    if (!this.closeBrowser) {\n      throw new Error(\"Browser context is not attached to a browser\");\n    }\n    await this.closeBrowser();\n  }\n\n  async addInitScript<Arg = unknown>(script: InitScriptSource<Arg>, arg?: Arg): Promise<void> {\n    const source = await normalizeInitScriptSource(script, arg, \"context.addInitScript\");\n    await this.rpcClient.send(StagehandMethods.contextAddInitScript, { source });\n  }\n\n  async setExtraHTTPHeaders(headers: ContextSetExtraHTTPHeadersParams[\"headers\"]): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextSetExtraHTTPHeaders, { headers });\n  }\n\n  async getDomainPolicy(): Promise<DomainPolicy | null> {\n    return await this.rpcClient.send(StagehandMethods.contextGetDomainPolicy, {});\n  }\n\n  async setDomainPolicy(policy: DomainPolicy | null): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextSetDomainPolicy, { policy });\n  }\n\n  async cookies(urls?: string | string[]): Promise<Cookie[]> {\n    const params = urls === undefined ? {} : { urls };\n    return await this.rpcClient.send(StagehandMethods.contextCookies, params);\n  }\n\n  async addCookies(cookies: CookieParam[]): Promise<void> {\n    await this.rpcClient.send(StagehandMethods.contextAddCookies, { cookies });\n  }\n\n  async clearCookies(options?: ClearCookieOptions): Promise<void> {\n    const params: ContextClearCookiesParams =\n      options === undefined ? {} : { options: serializeClearCookieOptions(options) };\n    await this.rpcClient.send(StagehandMethods.contextClearCookies, params);\n  }\n}\n\nfunction serializeClearCookieOptions(\n  options: ClearCookieOptions,\n): ProtocolTypes.ClearCookieOptions {\n  return {\n    ...(options.name === undefined ? {} : { name: serializeCookieFilter(options.name) }),\n    ...(options.domain === undefined ? {} : { domain: serializeCookieFilter(options.domain) }),\n    ...(options.path === undefined ? {} : { path: serializeCookieFilter(options.path) }),\n  };\n}\n\nfunction serializeCookieFilter(\n  filter: string | RegExp,\n): string | { source: string; flags: string } {\n  return typeof filter === \"string\" ? filter : { source: filter.source, flags: filter.flags };\n}\n","import type { ImplementationInfo } from \"@browserbasehq/stagehand-protocol/types\";\nimport {\n  ImplementationInfoSchema,\n  STAGEHAND_PROTOCOL_VERSION,\n} from \"@browserbasehq/stagehand-protocol/schemas\";\nimport { checkProtocolCompatibility } from \"@browserbasehq/stagehand-protocol/protocol-version\";\nimport { z } from \"zod/v4\";\n\nexport const STAGEHAND_RUNTIME_NAME = \"stagehand\";\n\nexport type RuntimeRequirement = {\n  protocolVersion: string;\n};\n/**\n * The marker a connected runtime published. Unlike the protocol's `RuntimeDescriptor`, the\n * server name is not pinned to \"stagehand\" so a foreign runtime can be reported as incompatible\n * rather than silently treated as unreadable.\n */\nexport type ReportedRuntimeDescriptor = {\n  protocolVersion: string;\n  serverInfo: ImplementationInfo;\n};\nexport type RuntimeIncompatibilityReason =\n  | \"protocol-invalid-version\"\n  | \"protocol-major-mismatch\"\n  | \"protocol-server-too-old\"\n  | \"protocol-prerelease-mismatch\"\n  | \"runtime-name-mismatch\";\nexport type RuntimeCompatibility =\n  | {\n      kind: \"compatible\";\n      protocolVersion: string;\n      serverInfo: ImplementationInfo;\n    }\n  | {\n      kind: \"incompatible\";\n      reason: RuntimeIncompatibilityReason;\n      detail: string;\n      required: RuntimeRequirement;\n      reported: ReportedRuntimeDescriptor;\n    }\n  | {\n      kind: \"unknown\";\n      reason: \"missing-marker\" | \"unreadable-marker\";\n      detail: string;\n    };\n\n// Accepts any server name so negotiation can distinguish a foreign runtime from garbage, and any\n// non-empty protocolVersion string so a non-SemVer version is reported as incompatible\n// (protocol-invalid-version) instead of being polled until the initialization timeout.\nconst ReportedRuntimeDescriptorSchema = z.strictObject({\n  protocolVersion: z.string().min(1),\n  serverInfo: ImplementationInfoSchema,\n});\n\nexport const DEFAULT_RUNTIME_REQUIREMENT: RuntimeRequirement = Object.freeze({\n  protocolVersion: STAGEHAND_PROTOCOL_VERSION,\n});\n\nexport function negotiateRuntimeCompatibility(\n  required: RuntimeRequirement,\n  raw: unknown,\n): RuntimeCompatibility {\n  if (raw == null)\n    return {\n      kind: \"unknown\",\n      reason: \"missing-marker\",\n      detail: \"Runtime marker is absent\",\n    };\n\n  try {\n    const result = ReportedRuntimeDescriptorSchema.safeParse(raw);\n    if (!result.success)\n      return {\n        kind: \"unknown\",\n        reason: \"unreadable-marker\",\n        detail: z.prettifyError(result.error),\n      };\n\n    const reported = descriptor(result.data);\n    if (reported.serverInfo.name !== STAGEHAND_RUNTIME_NAME)\n      return incompatible(\n        \"runtime-name-mismatch\",\n        `Runtime name mismatch: expected \"${STAGEHAND_RUNTIME_NAME}\", server reported \"${reported.serverInfo.name}\"`,\n        required,\n        reported,\n      );\n    const compatibility = checkProtocolCompatibility(\n      required.protocolVersion,\n      reported.protocolVersion,\n    );\n    if (!compatibility.compatible)\n      return incompatible(\n        compatibility.reason,\n        compatibilityDetail(\n          compatibility.reason,\n          required.protocolVersion,\n          reported.protocolVersion,\n        ),\n        required,\n        reported,\n      );\n    return {\n      kind: \"compatible\",\n      protocolVersion: reported.protocolVersion,\n      serverInfo: reported.serverInfo,\n    };\n  } catch {\n    return {\n      kind: \"unknown\",\n      reason: \"unreadable-marker\",\n      detail: \"Runtime marker could not be read\",\n    };\n  }\n}\n\nfunction compatibilityDetail(\n  reason: Exclude<RuntimeIncompatibilityReason, \"runtime-name-mismatch\">,\n  clientVersion: string,\n  serverVersion: string,\n): string {\n  switch (reason) {\n    case \"protocol-invalid-version\":\n      return `Invalid protocol version: client ${clientVersion}, server ${serverVersion}`;\n    case \"protocol-major-mismatch\":\n      return `Protocol major mismatch: client ${clientVersion}, server ${serverVersion}`;\n    case \"protocol-server-too-old\":\n      return `Server protocol ${serverVersion} is older than client requirement ${clientVersion}`;\n    case \"protocol-prerelease-mismatch\":\n      return `Protocol prereleases must match exactly: client ${clientVersion}, server ${serverVersion}`;\n  }\n}\n\nfunction descriptor(value: ReportedRuntimeDescriptor): ReportedRuntimeDescriptor {\n  return {\n    protocolVersion: value.protocolVersion,\n    serverInfo: { ...value.serverInfo },\n  };\n}\n\nfunction incompatible(\n  reason: RuntimeIncompatibilityReason,\n  detail: string,\n  required: RuntimeRequirement,\n  reported: ReportedRuntimeDescriptor,\n): RuntimeCompatibility {\n  return {\n    kind: \"incompatible\",\n    reason,\n    detail,\n    required: { ...required },\n    reported,\n  };\n}\n","export function abortReason(signal: AbortSignal): Error {\n  return signal.reason instanceof Error ? signal.reason : new Error(\"Operation aborted\");\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n  if (signal?.aborted) throw abortReason(signal);\n}\n\nexport async function abortable<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T> {\n  if (!signal) return await promise;\n  throwIfAborted(signal);\n\n  return await new Promise<T>((resolve, reject) => {\n    const onAbort = () => reject(abortReason(signal));\n    signal.addEventListener(\"abort\", onAbort, { once: true });\n    promise.then(\n      (value) => {\n        signal.removeEventListener(\"abort\", onAbort);\n        resolve(value);\n      },\n      (error: unknown) => {\n        signal.removeEventListener(\"abort\", onAbort);\n        reject(error);\n      },\n    );\n  });\n}\n\nexport async function abortableDelay(ms: number, signal?: AbortSignal): Promise<void> {\n  if (!signal) {\n    await new Promise<void>((resolve) => setTimeout(resolve, ms));\n    return;\n  }\n  throwIfAborted(signal);\n\n  await new Promise<void>((resolve, reject) => {\n    const onAbort = () => {\n      clearTimeout(timeoutId);\n      reject(abortReason(signal));\n    };\n    const timeoutId = setTimeout(() => {\n      signal.removeEventListener(\"abort\", onAbort);\n      resolve();\n    }, ms);\n    signal.addEventListener(\"abort\", onAbort, { once: true });\n  });\n}\n","import type { JSONRPCMessage } from \"@browserbasehq/stagehand-protocol/json-rpc/types\";\nimport {\n  STAGEHAND_SEND_TO_HOST_BINDING,\n  StagehandMethods,\n  StagehandSendToHostBindingSchema,\n} from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport { z } from \"zod/v4\";\nimport type { ImplementationInfo } from \"@browserbasehq/stagehand-protocol/types\";\nimport {\n  DEFAULT_RUNTIME_REQUIREMENT,\n  negotiateRuntimeCompatibility,\n  type RuntimeCompatibility,\n  type RuntimeIncompatibilityReason,\n  type RuntimeRequirement,\n} from \"./runtimeCompatibility.js\";\nimport { abortable, abortableDelay, abortReason, throwIfAborted } from \"./abort.js\";\n\ntype JsonObject = Record<string, unknown>;\n\ntype TargetInfo = {\n  targetId: string;\n  type: string;\n  title: string;\n  url: string;\n};\n\nexport type ServiceWorkerInfo = {\n  targetId: string;\n  url: string;\n  title: string;\n  extensionId?: string;\n};\n\nexport type CDPClientOptions = {\n  cdpUrl: string;\n  extensionDir?: string;\n  extensionId?: string;\n  preloadedExtension?: true;\n  serviceWorkerUrlIncludes?: string;\n  runtimeRequirement?: RuntimeRequirement;\n  allowFallbackInstall?: boolean;\n  signal: AbortSignal;\n};\n\ntype RuntimeEvaluateResult = {\n  result?: {\n    value?: unknown;\n  };\n  exceptionDetails?: {\n    text?: string;\n    exception?: {\n      description?: string;\n      value?: unknown;\n    };\n  };\n};\n\ntype PendingCDPRequest = {\n  method: string;\n  resolve: (value: unknown) => void;\n  reject: (reason: Error) => void;\n  removeAbortListener?: () => void;\n};\n\ntype VersionResponse = {\n  ok: boolean;\n  status: number;\n  statusText: string;\n  json(): Promise<unknown>;\n};\n\ntype ResolveBrowserWebSocketUrlOptions = {\n  pollIntervalMs?: number;\n  fetchFn?: (url: string, init?: { signal?: AbortSignal }) => Promise<VersionResponse>;\n  delayFn?: (ms: number) => Promise<void>;\n  signal: AbortSignal;\n};\n\nfunction callbackBatchExpression(input: {\n  message: JSONRPCMessage;\n  callbackSource: string;\n}): string {\n  const serializedMessage = JSON.stringify(JSON.stringify(input.message));\n  return `(() => { const __name = (fn, name) => { try { Object.defineProperty(fn, \"name\", { value: name, configurable: true }); } catch {} return fn; }; void globalThis.__stagehandReceiveFromHost(${serializedMessage}, { callback: (${input.callbackSource}) }); return true; })()`;\n}\n\nfunction callbackSourceFromMessage(message: JSONRPCMessage): string | undefined {\n  if (!(\"method\" in message) || message.method !== StagehandMethods.stagehandCallbackBatch.name) {\n    return undefined;\n  }\n  const params = message.params;\n  if (typeof params !== \"object\" || params === null || Array.isArray(params)) {\n    throw new TypeError(\"Stagehand callback batch request is missing callback_source\");\n  }\n  const source = params.callback_source;\n  if (typeof source !== \"string\" || !source.trim()) {\n    throw new TypeError(\"Stagehand callback batch request is missing callback_source\");\n  }\n  return source;\n}\n\nexport function stagehandMessageExpression(message: JSONRPCMessage): string {\n  const callbackSource = callbackSourceFromMessage(message);\n  return callbackSource\n    ? callbackBatchExpression({ message, callbackSource })\n    : `void globalThis.__stagehandReceiveFromHost(${JSON.stringify(JSON.stringify(message))}); true`;\n}\n\nexport const RUNTIME_INCOMPATIBLE_REMEDIATION =\n  \"Upgrade the Stagehand SDK and the Stagehand extension together so their protocol majors match, \" +\n  \"or start the session with the extension bundled in this SDK.\";\n\n/**\n * Raised as soon as the connected Stagehand extension publishes a runtime marker this SDK cannot\n * talk to. Initialization does not keep polling: the extension will not change its protocol\n * version while the session is open.\n */\nexport class StagehandRuntimeIncompatibleError extends Error {\n  readonly reason: RuntimeIncompatibilityReason;\n  /** Human-readable negotiation failure, without the version summary or remediation. */\n  readonly detail: string;\n  /** Protocol version this SDK speaks. */\n  readonly clientProtocolVersion: string;\n  /** Protocol version the connected extension reported. */\n  readonly reportedProtocolVersion: string;\n  /** `serverInfo` published by the connected runtime (name + version). */\n  readonly serverInfo: ImplementationInfo;\n  readonly remediation = RUNTIME_INCOMPATIBLE_REMEDIATION;\n\n  constructor(readonly compatibility: Extract<RuntimeCompatibility, { kind: \"incompatible\" }>) {\n    super(\n      \"Incompatible Stagehand runtime: \" +\n        compatibility.detail +\n        \"; client protocol \" +\n        compatibility.required.protocolVersion +\n        \", reported protocol \" +\n        String(compatibility.reported.protocolVersion) +\n        \", server \" +\n        compatibility.reported.serverInfo.name +\n        \"/\" +\n        compatibility.reported.serverInfo.version +\n        \". \" +\n        RUNTIME_INCOMPATIBLE_REMEDIATION,\n    );\n    this.name = \"StagehandRuntimeIncompatibleError\";\n    this.reason = compatibility.reason;\n    this.detail = compatibility.detail;\n    this.clientProtocolVersion = compatibility.required.protocolVersion;\n    this.reportedProtocolVersion = compatibility.reported.protocolVersion;\n    this.serverInfo = { ...compatibility.reported.serverInfo };\n  }\n}\n\nconst CDPErrorSchema = z.looseObject({\n  code: z.int(),\n  message: z.string(),\n  data: z.unknown().optional(),\n});\n\nconst CDPCommandErrorCauseSchema = CDPErrorSchema.extend({\n  method: z.string(),\n});\n\nconst CDPResponseEnvelopeSchema = z.looseObject({\n  id: z.int(),\n  result: z.unknown().optional(),\n  error: CDPErrorSchema.optional(),\n  sessionId: z.string().optional(),\n});\n\nconst CDPEventEnvelopeSchema = z.looseObject({\n  method: z.string(),\n  params: z.unknown().optional(),\n  sessionId: z.string().optional(),\n});\n\nconst RuntimeBindingCalledSchema = z.looseObject({\n  name: StagehandSendToHostBindingSchema,\n  payload: z.string(),\n  executionContextId: z.int(),\n});\n\nconst RuntimeReadinessEnvelopeSchema = z.looseObject({\n  marker: z.unknown(),\n  hasReceiver: z.boolean(),\n});\n\nconst InstalledExtensionSchema = z.looseObject({\n  id: z.string().min(1),\n  name: z.string(),\n  version: z.string(),\n  path: z.string(),\n  enabled: z.boolean(),\n});\n\nconst InstalledExtensionsResultSchema = z.looseObject({\n  extensions: z.array(InstalledExtensionSchema),\n});\n\nconst STAGEHAND_EXTENSION_NAME = \"Stagehand Runtime\";\n\nexport class CDPConnectionClosedError extends Error {\n  constructor(options?: ErrorOptions) {\n    super(\"CDP connection closed\", options);\n    this.name = \"CDPConnectionClosedError\";\n  }\n}\n\nexport class CDPClient {\n  onmessage?: (message: unknown) => void | Promise<void>;\n  onclose?: (reason?: Error) => void;\n  onerror?: (error: Error) => void;\n  readonly webSocketDebuggerUrl: string;\n  nextId = 1;\n  pending = new Map<number, PendingCDPRequest>();\n  sessionId: string | undefined;\n  attachedServiceWorker: ServiceWorkerInfo | undefined;\n  closed = false;\n\n  constructor(\n    readonly socket: WebSocket,\n    webSocketDebuggerUrl: string,\n  ) {\n    this.webSocketDebuggerUrl = webSocketDebuggerUrl;\n    this.socket.addEventListener(\"message\", (event) => {\n      this.handleMessage(event.data).catch((error: unknown) => {\n        const normalized = asError(error);\n        this.rejectPending(normalized);\n        this.onerror?.(normalized);\n      });\n    });\n\n    this.socket.addEventListener(\"close\", () => {\n      if (this.closed) return;\n      this.closed = true;\n      const reason = new CDPConnectionClosedError();\n      this.rejectPending(reason);\n      this.onclose?.(reason);\n    });\n\n    this.socket.addEventListener(\"error\", (event) => {\n      if (this.closed) return;\n      this.closed = true;\n      const socketError = asError((event as Event & { error?: unknown }).error ?? event);\n      const reason = new CDPConnectionClosedError({ cause: socketError });\n      this.rejectPending(reason);\n      try {\n        this.socket.close();\n      } catch {\n        // The transport is already terminal; preserve the original socket failure.\n      }\n      this.onerror?.(reason);\n    });\n  }\n\n  static async connect(options: CDPClientOptions): Promise<CDPClient> {\n    const signal = options.signal;\n    const webSocketDebuggerUrl = await resolveBrowserWebSocketUrl(options.cdpUrl, { signal });\n    throwIfAborted(signal);\n    const socket = await openCDPWebSocket(webSocketDebuggerUrl, signal);\n\n    const client = new CDPClient(socket, webSocketDebuggerUrl);\n\n    try {\n      let extensionId: string;\n      if (options.extensionDir) {\n        extensionId = await loadUnpackedExtension(client, options.extensionDir, signal);\n      } else if (options.extensionId) {\n        extensionId = options.extensionId;\n      } else if (options.preloadedExtension) {\n        extensionId = await discoverInstalledStagehandExtensionId(client, { signal });\n      } else {\n        throw new Error(\n          \"Exactly one of extensionDir, extensionId, or preloadedExtension is required\",\n        );\n      }\n      const serviceWorker = await waitForServiceWorker(client, {\n        extensionId,\n        urlIncludes: options.serviceWorkerUrlIncludes,\n        signal,\n      });\n      const attached = await client.sendCommand<{ sessionId: string }>(\n        \"Target.attachToTarget\",\n        {\n          targetId: serviceWorker.targetId,\n          flatten: true,\n        },\n        undefined,\n        signal,\n      );\n\n      client.sessionId = attached.sessionId;\n      client.attachedServiceWorker = {\n        targetId: serviceWorker.targetId,\n        title: serviceWorker.title,\n        url: serviceWorker.url,\n        extensionId,\n      };\n\n      await client.sendCommand(\"Runtime.enable\", {}, attached.sessionId, signal).catch(() => {\n        throwIfAborted(signal);\n        return undefined;\n      });\n      await client.sendCommand(\n        \"Runtime.addBinding\",\n        { name: STAGEHAND_SEND_TO_HOST_BINDING },\n        attached.sessionId,\n        signal,\n      );\n      await waitForRuntimeReady(client, attached.sessionId, {\n        runtimeRequirement: options.runtimeRequirement,\n        allowFallbackInstall: options.allowFallbackInstall,\n        signal,\n      });\n      return client;\n    } catch (error) {\n      client.close();\n      throw error;\n    }\n  }\n\n  get serviceWorker(): ServiceWorkerInfo {\n    if (!this.attachedServiceWorker) {\n      throw new Error(\"Stagehand service worker is not attached\");\n    }\n    return this.attachedServiceWorker;\n  }\n\n  async send(message: JSONRPCMessage, signal?: AbortSignal): Promise<void> {\n    if (this.closed) throw new Error(\"CDP client is closed\");\n    if (!this.sessionId) throw new Error(\"Stagehand service worker is not attached\");\n\n    const expression = stagehandMessageExpression(message);\n    const evaluated = await this.sendCommand<RuntimeEvaluateResult>(\n      \"Runtime.evaluate\",\n      {\n        expression,\n        awaitPromise: false,\n        returnByValue: true,\n      },\n      this.sessionId,\n      signal,\n    );\n\n    if (evaluated.exceptionDetails) {\n      throw new Error(\n        evaluated.exceptionDetails.exception?.description ??\n          evaluated.exceptionDetails.text ??\n          \"Stagehand service worker rejected an RPC message\",\n      );\n    }\n  }\n\n  async sendCommand<Result = JsonObject>(\n    method: string,\n    params: JsonObject = {},\n    sessionId?: string,\n    signal?: AbortSignal,\n  ): Promise<Result> {\n    throwIfAborted(signal);\n    if (this.socket.readyState !== WebSocket.OPEN) {\n      throw new Error(\"CDP connection is not open\");\n    }\n\n    const id = this.nextId++;\n    const message = sessionId ? { id, method, params, sessionId } : { id, method, params };\n\n    return await new Promise<Result>((resolve, reject) => {\n      const onAbort = () => {\n        this.pending.delete(id);\n        reject(signal ? abortReason(signal) : new Error(\"CDP command aborted\"));\n      };\n      signal?.addEventListener(\"abort\", onAbort, { once: true });\n\n      this.pending.set(id, {\n        method,\n        resolve: (value) => resolve(value as Result),\n        reject,\n        ...(signal\n          ? { removeAbortListener: () => signal.removeEventListener(\"abort\", onAbort) }\n          : {}),\n      });\n\n      if (signal?.aborted) {\n        onAbort();\n        return;\n      }\n      try {\n        this.socket.send(JSON.stringify(message));\n      } catch (error) {\n        this.pending.delete(id);\n        signal?.removeEventListener(\"abort\", onAbort);\n        reject(asError(error));\n      }\n    });\n  }\n\n  close(): void {\n    if (this.closed) return;\n    this.closed = true;\n    this.onmessage = undefined;\n    this.onclose = undefined;\n    this.onerror = undefined;\n    this.rejectPending(new Error(\"CDP client closed\"));\n    this.socket.close();\n  }\n\n  async handleMessage(data: unknown): Promise<void> {\n    const text = await messageDataToString(data);\n    const rawMessage = JSON.parse(text) as unknown;\n    const response = CDPResponseEnvelopeSchema.safeParse(rawMessage);\n\n    if (response.success) {\n      this.handleResponse(response.data);\n      return;\n    }\n\n    const event = CDPEventEnvelopeSchema.parse(rawMessage);\n    if (event.method !== \"Runtime.bindingCalled\" || event.sessionId !== this.sessionId) return;\n\n    const binding = RuntimeBindingCalledSchema.safeParse(event.params);\n    if (!binding.success) return;\n    void Promise.resolve(this.onmessage?.(binding.data.payload)).catch((error: unknown) => {\n      this.onerror?.(asError(error));\n    });\n  }\n\n  handleResponse(message: z.output<typeof CDPResponseEnvelopeSchema>): void {\n    const pending = this.pending.get(message.id);\n    if (!pending) return;\n\n    this.pending.delete(message.id);\n    pending.removeAbortListener?.();\n\n    if (message.error) {\n      pending.reject(\n        new Error(message.error.message, {\n          cause: CDPCommandErrorCauseSchema.parse({\n            ...message.error,\n            method: pending.method,\n          }),\n        }),\n      );\n      return;\n    }\n\n    pending.resolve(message.result);\n  }\n\n  rejectPending(error: Error): void {\n    for (const pending of this.pending.values()) {\n      pending.reject(error);\n      pending.removeAbortListener?.();\n    }\n    this.pending.clear();\n  }\n}\n\ntype CDPWebSocketFactory = (url: string) => WebSocket;\n\nexport async function openCDPWebSocket(\n  url: string,\n  signal: AbortSignal,\n  createSocket: CDPWebSocketFactory = (socketUrl) => new WebSocket(socketUrl),\n): Promise<WebSocket> {\n  throwIfAborted(signal);\n  const socket = createSocket(url);\n\n  await new Promise<void>((resolve, reject) => {\n    const cleanup = () => {\n      signal?.removeEventListener(\"abort\", onAbort);\n      socket.removeEventListener(\"open\", onOpen);\n      socket.removeEventListener(\"error\", onError);\n    };\n    const onAbort = () => {\n      cleanup();\n      socket.close();\n      reject(signal ? abortReason(signal) : new Error(\"CDP WebSocket opening aborted\"));\n    };\n    const onOpen = () => {\n      cleanup();\n      resolve();\n    };\n    const onError = () => {\n      cleanup();\n      reject(new Error(\"Failed to open CDP WebSocket\"));\n    };\n\n    signal?.addEventListener(\"abort\", onAbort, { once: true });\n    socket.addEventListener(\"open\", onOpen, { once: true });\n    socket.addEventListener(\"error\", onError, { once: true });\n    if (signal?.aborted) onAbort();\n  });\n\n  return socket;\n}\n\ntype CDPCommandSender = {\n  sendCommand<Result = JsonObject>(\n    method: string,\n    params?: JsonObject,\n    sessionId?: string,\n    signal?: AbortSignal,\n  ): Promise<Result>;\n};\n\nexport async function waitForRuntimeReady(\n  cdp: CDPCommandSender,\n  sessionId: string,\n  options: {\n    pollIntervalMs?: number;\n    delayFn?: (ms: number) => Promise<void>;\n    runtimeRequirement?: RuntimeRequirement;\n    /**\n     * Reserved for flows that can replace an incompatible preloaded extension. When not explicitly\n     * `true`, an incompatible marker fails initialization on the first poll instead of polling\n     * until the initialization timeout.\n     */\n    allowFallbackInstall?: boolean;\n    signal: AbortSignal;\n  },\n): Promise<void> {\n  const pollIntervalMs = options.pollIntervalMs ?? 100;\n  const delayFn = options.delayFn ?? delay;\n\n  while (true) {\n    throwIfAborted(options.signal);\n    const evaluated = await evaluateRuntimeReadiness(cdp, sessionId, options.signal);\n\n    if (!evaluated.exceptionDetails) {\n      const readiness = parseRuntimeReadiness(evaluated.result?.value);\n\n      const compatibility = negotiateRuntimeCompatibility(\n        options.runtimeRequirement ?? DEFAULT_RUNTIME_REQUIREMENT,\n        readiness.marker,\n      );\n      if (compatibility.kind === \"incompatible\" && options.allowFallbackInstall !== true)\n        throw new StagehandRuntimeIncompatibleError(compatibility);\n      if (compatibility.kind === \"compatible\" && readiness.hasReceiver) return;\n    }\n\n    await abortable(delayFn(pollIntervalMs), options.signal);\n  }\n}\n\nexport async function discoverInstalledStagehandExtensionId(\n  cdp: CDPCommandSender,\n  options: { signal: AbortSignal },\n): Promise<string> {\n  throwIfAborted(options.signal);\n  const response = await cdp.sendCommand<unknown>(\n    \"Extensions.getExtensions\",\n    {},\n    undefined,\n    options.signal,\n  );\n  const installed = InstalledExtensionsResultSchema.parse(response).extensions.filter(\n    (extension) => extension.name === STAGEHAND_EXTENSION_NAME,\n  );\n  const enabled = installed.filter((extension) => extension.enabled);\n\n  if (enabled.length === 1) return enabled[0].id;\n  if (enabled.length > 1) {\n    const ids = enabled\n      .map((extension) => extension.id)\n      .sort()\n      .join(\", \");\n    throw new Error(`Multiple enabled Stagehand extensions are installed: ${ids}`);\n  }\n  if (installed.length > 0) {\n    throw new Error(\"Stagehand extension is installed in the connected browser but is disabled.\");\n  }\n  throw new Error(\n    \"Stagehand extension is not installed in the connected browser. \" +\n      \"The extension must be included when the Browserbase session is created.\",\n  );\n}\n\nasync function evaluateRuntimeReadiness(\n  cdp: CDPCommandSender,\n  sessionId: string,\n  signal: AbortSignal,\n): Promise<RuntimeEvaluateResult> {\n  return await cdp.sendCommand<RuntimeEvaluateResult>(\n    \"Runtime.evaluate\",\n    {\n      expression: `(() => ({\n  marker: globalThis.__stagehand_runtime ?? null,\n  hasReceiver: typeof globalThis.__stagehandReceiveFromHost === \"function\",\n}))()`,\n      returnByValue: true,\n    },\n    sessionId,\n    signal,\n  );\n}\n\nfunction parseRuntimeReadiness(value: unknown): z.output<typeof RuntimeReadinessEnvelopeSchema> {\n  const parsed = RuntimeReadinessEnvelopeSchema.safeParse(value);\n  return parsed.success ? parsed.data : { marker: null, hasReceiver: false };\n}\n\nexport async function waitForServiceWorker(\n  cdp: CDPCommandSender,\n  options: {\n    extensionId: string;\n    urlIncludes?: string;\n    activationDelayMs?: number;\n    pollIntervalMs?: number;\n    delayFn?: (ms: number) => Promise<void>;\n    signal: AbortSignal;\n  },\n): Promise<TargetInfo> {\n  const startedAt = Date.now();\n  const activationDelayMs = options.activationDelayMs ?? 1_000;\n  const pollIntervalMs = options.pollIntervalMs ?? 100;\n  const delayFn = options.delayFn ?? delay;\n  const workerUrlIncludes = options.urlIncludes ?? \"service-worker.js\";\n  let activationTargetId: string | undefined;\n\n  try {\n    while (true) {\n      throwIfAborted(options.signal);\n      const targets = await cdp.sendCommand<{ targetInfos: TargetInfo[] }>(\n        \"Target.getTargets\",\n        {},\n        undefined,\n        options.signal,\n      );\n      const serviceWorker = targets.targetInfos.find(\n        (target) =>\n          target.type === \"service_worker\" &&\n          target.url.startsWith(\"chrome-extension://\") &&\n          target.url.startsWith(`chrome-extension://${options.extensionId}/`) &&\n          target.url.includes(workerUrlIncludes),\n      );\n\n      if (serviceWorker) return serviceWorker;\n\n      if (!activationTargetId && Date.now() - startedAt >= activationDelayMs) {\n        const activation = await cdp\n          .sendCommand<{ targetId?: string }>(\n            \"Target.createTarget\",\n            {\n              url: `chrome-extension://${options.extensionId}/wake-service-worker.html`,\n            },\n            undefined,\n            options.signal,\n          )\n          .catch(() => {\n            throwIfAborted(options.signal);\n            return undefined;\n          });\n        activationTargetId = activation?.targetId;\n      }\n\n      await abortable(delayFn(pollIntervalMs), options.signal);\n    }\n  } finally {\n    if (activationTargetId) {\n      // Cleanup must not inherit an already-aborted init signal or delay its rejection.\n      void cdp\n        .sendCommand(\"Target.closeTarget\", { targetId: activationTargetId })\n        .catch(() => undefined);\n    }\n  }\n}\n\nexport async function loadUnpackedExtension(\n  cdp: CDPCommandSender,\n  extensionDir: string,\n  signal: AbortSignal,\n): Promise<string> {\n  let loaded: { id?: string };\n\n  try {\n    loaded = await cdp.sendCommand<{ id?: string }>(\n      \"Extensions.loadUnpacked\",\n      {\n        path: extensionDir,\n      },\n      undefined,\n      signal,\n    );\n  } catch (error) {\n    if (isExtensionsLoadUnpackedUnavailable(error)) {\n      throw new Error(\n        \"This Chrome build does not support Extensions.loadUnpacked. Launch with --load-extension and connect using extensionId instead.\",\n        { cause: error },\n      );\n    }\n\n    throw error;\n  }\n\n  if (!loaded.id) {\n    throw new Error(\"Extensions.loadUnpacked did not return an extension id\");\n  }\n\n  return loaded.id;\n}\n\nexport async function resolveBrowserWebSocketUrl(\n  cdpUrl: string,\n  options: ResolveBrowserWebSocketUrlOptions,\n): Promise<string> {\n  throwIfAborted(options.signal);\n  if (cdpUrl.startsWith(\"ws://\") || cdpUrl.startsWith(\"wss://\")) return cdpUrl;\n\n  const pollIntervalMs = options.pollIntervalMs ?? 250;\n  const fetchFn = options.fetchFn ?? fetch;\n  const delayFn = options.delayFn ?? delay;\n  const baseUrl = cdpUrl.replace(/\\/$/, \"\");\n\n  while (true) {\n    throwIfAborted(options.signal);\n    try {\n      const response = await abortable(\n        fetchFn(`${baseUrl}/json/version`, { signal: options.signal }),\n        options.signal,\n      );\n\n      if (response.ok) {\n        const version = (await abortable(response.json(), options.signal)) as {\n          webSocketDebuggerUrl?: string;\n        };\n        if (version.webSocketDebuggerUrl) return version.webSocketDebuggerUrl;\n      }\n    } catch {\n      throwIfAborted(options.signal);\n    }\n\n    await abortable(delayFn(pollIntervalMs), options.signal);\n  }\n}\n\nasync function messageDataToString(data: unknown): Promise<string> {\n  if (typeof data === \"string\") return data;\n  if (data instanceof ArrayBuffer) return Buffer.from(data).toString(\"utf8\");\n  if (data instanceof Blob) return data.text();\n\n  const view = data as ArrayBufferView;\n  return Buffer.from(view.buffer as ArrayBuffer, view.byteOffset, view.byteLength).toString(\"utf8\");\n}\n\nfunction delay(ms: number): Promise<void> {\n  return abortableDelay(ms);\n}\n\nfunction isExtensionsLoadUnpackedUnavailable(error: unknown): boolean {\n  if (!(error instanceof Error)) return false;\n\n  const cause = CDPCommandErrorCauseSchema.safeParse(error.cause);\n  if (!cause.success) return false;\n\n  return (\n    cause.data.method === \"Extensions.loadUnpacked\" &&\n    (cause.data.code === -32601 || /method not found|wasn't found/i.test(cause.data.message))\n  );\n}\n\nfunction asError(error: unknown): Error {\n  return error instanceof Error ? error : new Error(String(error));\n}\n","import {\n  ROOT_CONTEXT,\n  context,\n  defaultTextMapGetter,\n  defaultTextMapSetter,\n  SpanKind,\n  SpanStatusCode,\n  trace,\n  type Context,\n  type Span,\n} from \"@opentelemetry/api\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport {\n  JSONRPCEnvelopeSchema,\n  JSONRPCErrorCodes,\n  JSONRPCErrorObjectSchema,\n  JSONRPCErrorResponseSchema,\n  JSONRPCRequestIdSchema,\n  JSONRPCRequestSchema,\n  JSONRPCResponseSchema,\n  JSONRPCSuccessResponseSchema,\n  JSONRPCWireInputSchema,\n  type RPCMethod,\n} from \"@browserbasehq/stagehand-protocol/json-rpc/schemas\";\nimport type {\n  JSONRPCMessage,\n  JSONRPCRequest,\n  JSONRPCResponse,\n} from \"@browserbasehq/stagehand-protocol/json-rpc/types\";\nimport {\n  encodeWireValue,\n  wireSchema,\n} from \"@browserbasehq/stagehand-protocol/json-rpc/wire-casing\";\nimport {\n  StagehandMethods,\n  StagehandRpcNotificationSchema,\n} from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport type { StagehandRpcNotification } from \"@browserbasehq/stagehand-protocol/types\";\nimport { z } from \"zod/v4\";\nimport { CDPClient, type ServiceWorkerInfo } from \"./cdpClient.js\";\nimport { abortReason } from \"./abort.js\";\n\ntype PendingRequest = {\n  method: RPCMethod;\n  resolve(value: unknown): void;\n  reject(error: Error): void;\n  removeAbortListener?: () => void;\n};\n\ntype RegisteredRequestHandler = {\n  method: RPCMethod;\n  handle(params: unknown): Promise<unknown>;\n};\n\ntype RPCSendOptions = {\n  signal?: AbortSignal;\n};\n\nconst TRACER = trace.getTracer(\"@browserbasehq/stagehand\");\nconst W3C_TRACE_CONTEXT_PROPAGATOR = new W3CTraceContextPropagator();\nconst MAX_PENDING_NOTIFICATIONS = 100;\nconst RPC_RESPONSE_GRACE_MS = 10_000;\nconst DEFAULT_OPERATION_TIMEOUT_MS = new Map<string, number>([\n  [StagehandMethods.pageGoto.name, 15_000],\n  [StagehandMethods.pageReload.name, 15_000],\n  [StagehandMethods.pageGoBack.name, 15_000],\n  [StagehandMethods.pageGoForward.name, 15_000],\n  [StagehandMethods.pageWaitForLoadState.name, 15_000],\n  [StagehandMethods.pageWaitForSelector.name, 30_000],\n  [StagehandMethods.pageWebMCPTools.name, 1_000],\n]);\nconst UNBOUNDED_BY_DEFAULT_METHODS = new Set<string>([\n  StagehandMethods.stagehandInit.name,\n  StagehandMethods.stagehandClose.name,\n  StagehandMethods.stagehandAct.name,\n  StagehandMethods.stagehandExtract.name,\n  StagehandMethods.stagehandObserve.name,\n  StagehandMethods.contextNewPage.name,\n  StagehandMethods.contextAddInitScript.name,\n  StagehandMethods.contextSetExtraHTTPHeaders.name,\n  StagehandMethods.contextGetDomainPolicy.name,\n  StagehandMethods.contextSetDomainPolicy.name,\n  StagehandMethods.contextCookies.name,\n  StagehandMethods.contextAddCookies.name,\n  StagehandMethods.contextClearCookies.name,\n  StagehandMethods.contextClipboardReadText.name,\n  StagehandMethods.contextClipboardWriteText.name,\n  StagehandMethods.contextClipboardClear.name,\n  StagehandMethods.contextClipboardPaste.name,\n  StagehandMethods.contextClipboardCopy.name,\n  StagehandMethods.contextClipboardCut.name,\n  StagehandMethods.pageClose.name,\n  StagehandMethods.pageEvaluate.name,\n  StagehandMethods.pageScreenshot.name,\n  StagehandMethods.pageSnapshot.name,\n  StagehandMethods.pageWebMCPInvocationResult.name,\n]);\n\nconst RPCClientOptionsBaseSchema = z\n  .object({\n    cdpUrl: z.string().min(1),\n    serviceWorkerUrlIncludes: z.string().min(1).optional(),\n    signal: z.custom<AbortSignal>((value) => value instanceof AbortSignal),\n  })\n  .strict();\n\nexport const RPCClientOptionsSchema = z.union([\n  RPCClientOptionsBaseSchema.extend({\n    extensionDir: z.string().min(1),\n    extensionId: z.never().optional(),\n    preloadedExtension: z.never().optional(),\n  }).strict(),\n  RPCClientOptionsBaseSchema.extend({\n    extensionId: z.string().min(1),\n    extensionDir: z.never().optional(),\n    preloadedExtension: z.never().optional(),\n  }).strict(),\n  RPCClientOptionsBaseSchema.extend({\n    preloadedExtension: z.literal(true),\n    extensionDir: z.never().optional(),\n    extensionId: z.never().optional(),\n  }).strict(),\n]);\n\nexport type RPCClientOptions = z.input<typeof RPCClientOptionsSchema>;\n\nexport type CDPTransport = {\n  readonly serviceWorker: ServiceWorkerInfo;\n  readonly webSocketDebuggerUrl?: string;\n  onmessage?: (message: unknown) => void | Promise<void>;\n  onclose?: (reason?: Error) => void;\n  onerror?: (error: Error) => void;\n  send(message: JSONRPCMessage, signal?: AbortSignal): Promise<void>;\n  close(): void;\n};\n\nexport class RPCClient {\n  readonly serviceWorker: ServiceWorkerInfo;\n  readonly browserWebSocketDebuggerUrl?: string;\n  nextRequestId = 1;\n  pending = new Map<number, PendingRequest>();\n  requestHandlers = new Map<string, RegisteredRequestHandler>();\n  notificationListeners = new Set<(notification: StagehandRpcNotification) => void>();\n  pendingNotifications: StagehandRpcNotification[] = [];\n  closed = false;\n  readonly cdp: CDPTransport;\n\n  constructor(cdp: CDPTransport) {\n    this.cdp = cdp;\n    this.serviceWorker = cdp.serviceWorker;\n    this.browserWebSocketDebuggerUrl = cdp.webSocketDebuggerUrl;\n    this.cdp.onmessage = (message) => this.receive(message);\n    this.cdp.onclose = (reason) => this.close(reason);\n    this.cdp.onerror = (error) => this.close(error);\n  }\n\n  async send<Method extends RPCMethod>(\n    method: Method,\n    params: z.input<Method[\"params\"]>,\n    options: RPCSendOptions = {},\n  ): Promise<z.output<Method[\"result\"]>> {\n    if (this.closed) throw new Error(\"RPC client is closed\");\n    if (method.name === StagehandMethods.stagehandInit.name && !options.signal) {\n      throw new Error(\"stagehand.init requires an initialization lifecycle signal\");\n    }\n\n    const parentContext = context.active();\n    const span = TRACER.startSpan(\n      method.name,\n      {\n        kind: SpanKind.CLIENT,\n        attributes: {\n          \"rpc.system.name\": \"jsonrpc\",\n          \"rpc.method\": method.name,\n        },\n      },\n      parentContext,\n    );\n    const requestContext = trace.setSpan(parentContext, span);\n    const requestId = this.nextRequestId++;\n\n    try {\n      return await context.with(requestContext, async () => {\n        const parsedParams = method.params.parse(params);\n        const request = JSONRPCRequestSchema.parse({\n          jsonrpc: \"2.0\",\n          id: requestId,\n          method: method.name,\n          params: encodeWireValue(parsedParams, method.paramsWire),\n          ...getTraceContextFields(requestContext),\n        });\n        span.setAttribute(\"jsonrpc.request.id\", String(request.id));\n        const responseTimeoutMs = rpcResponseTimeoutMs(method.name, parsedParams);\n        const timeoutController =\n          responseTimeoutMs === undefined ? undefined : new AbortController();\n        const signal =\n          options.signal && timeoutController\n            ? AbortSignal.any([options.signal, timeoutController.signal])\n            : (options.signal ?? timeoutController?.signal);\n        const timeoutId =\n          timeoutController && responseTimeoutMs !== undefined\n            ? setTimeout(() => {\n                timeoutController.abort(\n                  new Error(`RPC response timed out: ${method.name}`, {\n                    cause: { method: method.name, timeoutMs: responseTimeoutMs },\n                  }),\n                );\n              }, responseTimeoutMs)\n            : undefined;\n\n        try {\n          const response = this.waitForResponse(request.id, method, signal);\n          const [, result] = await Promise.all([\n            this.cdp.send(request, signal).catch((error: unknown) => {\n              this.rejectPending(request.id, asError(error));\n            }),\n            response,\n          ]);\n          return result as z.output<Method[\"result\"]>;\n        } finally {\n          if (timeoutId !== undefined) clearTimeout(timeoutId);\n        }\n      });\n    } catch (error) {\n      markSpanError(span, error);\n      throw error;\n    } finally {\n      span.end();\n    }\n  }\n\n  async sendStagehandInit(\n    params: z.input<typeof StagehandMethods.stagehandInit.params>,\n    signal: AbortSignal,\n  ): Promise<z.output<typeof StagehandMethods.stagehandInit.result>> {\n    return await this.send(StagehandMethods.stagehandInit, params, { signal });\n  }\n\n  onRequest<Method extends RPCMethod>(\n    method: Method,\n    handler: (\n      params: z.output<Method[\"params\"]>,\n    ) => z.input<Method[\"result\"]> | Promise<z.input<Method[\"result\"]>>,\n  ): () => void {\n    if (this.closed) throw new Error(\"RPC client is closed\");\n\n    const registeredHandler: RegisteredRequestHandler = {\n      method,\n      handle: async (params) => await handler(params as z.output<Method[\"params\"]>),\n    };\n    this.requestHandlers.set(method.name, registeredHandler);\n\n    return () => {\n      if (this.requestHandlers.get(method.name) === registeredHandler) {\n        this.requestHandlers.delete(method.name);\n      }\n    };\n  }\n\n  onNotification(listener: (notification: StagehandRpcNotification) => void): () => void {\n    this.notificationListeners.add(listener);\n    const pending = this.pendingNotifications;\n    this.pendingNotifications = [];\n    for (const notification of pending) listener(notification);\n\n    return () => this.notificationListeners.delete(listener);\n  }\n\n  close(\n    reason: Error = new Error(\"RPC client closed\"),\n    { closeTransport = true }: { closeTransport?: boolean } = {},\n  ): void {\n    if (this.closed) return;\n    this.closed = true;\n    this.requestHandlers.clear();\n    this.notificationListeners.clear();\n    this.pendingNotifications = [];\n    for (const [id] of this.pending) this.rejectPending(id, reason);\n    this.cdp.onmessage = undefined;\n    this.cdp.onclose = undefined;\n    this.cdp.onerror = undefined;\n    if (closeTransport) {\n      this.cdp.close();\n    }\n  }\n\n  waitForResponse(id: number, method: RPCMethod, signal?: AbortSignal): Promise<unknown> {\n    return new Promise((resolve, reject) => {\n      const onAbort = () => this.rejectPending(id, abortReason(signal!));\n      this.pending.set(id, {\n        method,\n        resolve,\n        reject,\n        ...(signal\n          ? { removeAbortListener: () => signal.removeEventListener(\"abort\", onAbort) }\n          : {}),\n      });\n      signal?.addEventListener(\"abort\", onAbort, { once: true });\n      if (signal?.aborted) onAbort();\n    });\n  }\n\n  async receive(raw: unknown): Promise<void> {\n    if (this.closed) return;\n\n    const wireInput = JSONRPCWireInputSchema.safeParse(raw);\n    if (!wireInput.success) {\n      await this.sendError(null, JSONRPCErrorCodes.parseError, \"Parse error\");\n      return;\n    }\n\n    const envelope = JSONRPCEnvelopeSchema.safeParse(wireInput.data);\n    if (!envelope.success) {\n      await this.sendError(null, JSONRPCErrorCodes.invalidRequest, \"Invalid request\");\n      return;\n    }\n    const message = envelope.data;\n\n    if (\"result\" in message || \"error\" in message) {\n      const response = JSONRPCResponseSchema.safeParse(message);\n      if (!response.success) {\n        this.close(new Error(\"Invalid JSON-RPC response\"));\n        return;\n      }\n      this.receiveResponse(response.data);\n      return;\n    }\n\n    if (\"method\" in message && !(\"id\" in message)) {\n      const notification = StagehandRpcNotificationSchema.safeParse(message);\n      if (!notification.success) return;\n      this.handleNotification(notification.data);\n      return;\n    }\n\n    const request = JSONRPCRequestSchema.safeParse(message);\n    if (request.success) {\n      await this.handleRequest(request.data);\n      return;\n    }\n\n    const requestId = JSONRPCRequestIdSchema.safeParse(message.id);\n    await this.sendError(\n      requestId.success ? requestId.data : null,\n      JSONRPCErrorCodes.invalidRequest,\n      \"Invalid request\",\n    );\n  }\n\n  async handleRequest(request: JSONRPCRequest): Promise<void> {\n    const registeredHandler = this.requestHandlers.get(request.method);\n    if (!registeredHandler) {\n      await this.sendError(request.id, JSONRPCErrorCodes.methodNotFound, \"Method not found\");\n      return;\n    }\n\n    const params = wireSchema(\n      registeredHandler.method.params,\n      registeredHandler.method.paramsWire,\n    ).safeParse(request.params);\n    if (!params.success) {\n      await this.sendError(request.id, JSONRPCErrorCodes.invalidParams, \"Invalid params\");\n      return;\n    }\n\n    const parentContext = W3C_TRACE_CONTEXT_PROPAGATOR.extract(\n      ROOT_CONTEXT,\n      request,\n      defaultTextMapGetter,\n    );\n    const span = TRACER.startSpan(\n      request.method,\n      {\n        kind: SpanKind.SERVER,\n        attributes: {\n          \"rpc.system.name\": \"jsonrpc\",\n          \"rpc.method\": request.method,\n          \"jsonrpc.request.id\": String(request.id),\n        },\n      },\n      parentContext,\n    );\n    const requestContext = trace.setSpan(parentContext, span);\n\n    try {\n      const result = await context.with(requestContext, () =>\n        registeredHandler.handle(params.data),\n      );\n      const parsedResult = registeredHandler.method.result.safeParse(result);\n      if (!parsedResult.success) {\n        span.setAttribute(\"rpc.response.status_code\", String(JSONRPCErrorCodes.internalError));\n        span.setAttribute(\"error.type\", String(JSONRPCErrorCodes.internalError));\n        span.setStatus({ code: SpanStatusCode.ERROR });\n        await this.sendError(request.id, JSONRPCErrorCodes.internalError, \"Internal error\");\n        return;\n      }\n\n      await this.cdp.send(\n        JSONRPCSuccessResponseSchema.parse({\n          jsonrpc: \"2.0\",\n          id: request.id,\n          result: encodeWireValue(parsedResult.data, registeredHandler.method.resultWire),\n        }),\n      );\n    } catch (error) {\n      markSpanError(span, error);\n      await this.sendError(\n        request.id,\n        JSONRPCErrorCodes.internalError,\n        error instanceof Error ? error.message : String(error),\n        { name: error instanceof Error ? error.name : \"Error\" },\n      );\n    } finally {\n      span.end();\n    }\n  }\n\n  receiveResponse(response: JSONRPCResponse): void {\n    if (response.id === null) return;\n    const pending = this.pending.get(response.id);\n    if (!pending) return;\n\n    this.pending.delete(response.id);\n    pending.removeAbortListener?.();\n\n    if (\"error\" in response) {\n      pending.reject(new Error(response.error.message, { cause: response.error }));\n      return;\n    }\n\n    try {\n      pending.resolve(\n        wireSchema(pending.method.result, pending.method.resultWire).parse(response.result),\n      );\n    } catch (error) {\n      pending.reject(asError(error));\n    }\n  }\n\n  rejectPending(id: number, error: Error): void {\n    const pending = this.pending.get(id);\n    if (!pending) return;\n    this.pending.delete(id);\n    pending.removeAbortListener?.();\n    pending.reject(error);\n  }\n\n  async sendError(id: number | null, code: number, message: string, data?: unknown): Promise<void> {\n    await this.cdp.send(\n      JSONRPCErrorResponseSchema.parse({\n        jsonrpc: \"2.0\",\n        id,\n        error: { code, message, ...(data === undefined ? {} : { data }) },\n      }),\n    );\n  }\n\n  handleNotification(notification: StagehandRpcNotification): void {\n    if (this.notificationListeners.size === 0) {\n      if (this.pendingNotifications.length === MAX_PENDING_NOTIFICATIONS) {\n        this.pendingNotifications.shift();\n      }\n      this.pendingNotifications.push(notification);\n      return;\n    }\n\n    for (const listener of this.notificationListeners) listener(notification);\n  }\n}\n\nexport async function connectRPCClient(input: RPCClientOptions): Promise<RPCClient> {\n  const options = RPCClientOptionsSchema.parse(input);\n  const cdpClient = await CDPClient.connect({\n    cdpUrl: options.cdpUrl,\n    ...(options.extensionDir ? { extensionDir: options.extensionDir } : {}),\n    ...(options.extensionId ? { extensionId: options.extensionId } : {}),\n    ...(options.preloadedExtension ? { preloadedExtension: true as const } : {}),\n    ...(options.serviceWorkerUrlIncludes\n      ? { serviceWorkerUrlIncludes: options.serviceWorkerUrlIncludes }\n      : {}),\n    signal: options.signal,\n  });\n  return new RPCClient(cdpClient);\n}\n\nexport function getTraceContextFields(requestContext: Context): {\n  traceparent?: string;\n  tracestate?: string;\n} {\n  const fields: { traceparent?: string; tracestate?: string } = {};\n\n  W3C_TRACE_CONTEXT_PROPAGATOR.inject(requestContext, fields, defaultTextMapSetter);\n\n  return fields;\n}\n\nfunction markSpanError(span: Span, error: unknown): void {\n  const rpcError = error instanceof Error ? JSONRPCErrorObjectSchema.safeParse(error.cause) : null;\n  if (rpcError?.success) {\n    span.setAttribute(\"rpc.response.status_code\", String(rpcError.data.code));\n    span.setAttribute(\"error.type\", String(rpcError.data.code));\n  } else if (error instanceof Error) {\n    span.setAttribute(\"error.type\", error.name);\n  }\n  span.setStatus({ code: SpanStatusCode.ERROR });\n}\n\nfunction asError(error: unknown): Error {\n  return error instanceof Error ? error : new Error(String(error));\n}\n\nexport function rpcResponseTimeoutMs(method: string, params: unknown): number | undefined {\n  let operationTimeoutMs: number | undefined;\n  switch (method) {\n    case StagehandMethods.stagehandAct.name:\n    case StagehandMethods.stagehandExtract.name:\n    case StagehandMethods.stagehandObserve.name:\n    case StagehandMethods.stagehandCallbackBatch.name:\n    case StagehandMethods.pageGoto.name:\n    case StagehandMethods.pageReload.name:\n    case StagehandMethods.pageGoBack.name:\n    case StagehandMethods.pageGoForward.name:\n    case StagehandMethods.pageScreenshot.name:\n    case StagehandMethods.pageWaitForSelector.name:\n    case StagehandMethods.pageWebMCPTools.name:\n    case StagehandMethods.pageWebMCPInvocationResult.name:\n      operationTimeoutMs = numericProperty(recordProperty(params, \"options\"), \"timeout\");\n      break;\n    case StagehandMethods.pageWaitForLoadState.name:\n      operationTimeoutMs = numericProperty(params, \"timeout\");\n      break;\n    case StagehandMethods.pageWaitForTimeout.name:\n      operationTimeoutMs = numericProperty(params, \"ms\");\n      break;\n  }\n\n  if (operationTimeoutMs !== undefined) {\n    return RPC_RESPONSE_GRACE_MS + Math.max(0, operationTimeoutMs);\n  }\n\n  const defaultOperationTimeoutMs = DEFAULT_OPERATION_TIMEOUT_MS.get(method);\n  if (defaultOperationTimeoutMs !== undefined) {\n    return RPC_RESPONSE_GRACE_MS + defaultOperationTimeoutMs;\n  }\n\n  // These operations had no v3 deadline. Keep the server as the owner of their\n  // lifetime instead of turning the transport grace period into a 10s ceiling.\n  if (UNBOUNDED_BY_DEFAULT_METHODS.has(method) || method.startsWith(\"locator.\")) {\n    return undefined;\n  }\n\n  return RPC_RESPONSE_GRACE_MS;\n}\n\nfunction recordProperty(value: unknown, property: string): unknown {\n  return typeof value === \"object\" && value !== null\n    ? (value as Record<string, unknown>)[property]\n    : undefined;\n}\n\nfunction numericProperty(value: unknown, property: string): number | undefined {\n  const candidate = recordProperty(value, property);\n  return typeof candidate === \"number\" && Number.isFinite(candidate) ? candidate : undefined;\n}\n","import type { Locator } from \"./locator.js\";\n\nexport type ClientLocatorOptions = {\n  locator?: Locator;\n  ignoreLocators?: Locator[];\n};\n\nexport function serializeClientLocator(locator: Locator, pageId: string, method: string) {\n  if (locator.descriptor.pageId !== pageId) {\n    throw new TypeError(`${method}(): locator must belong to the target page`);\n  }\n  const { selector, nth } = locator.descriptor;\n  return {\n    selector,\n    ...(nth === undefined ? {} : { nth }),\n  };\n}\n\nexport function serializeClientLocatorOptions<Options extends ClientLocatorOptions>(\n  method: string,\n  pageId: string,\n  options: Options,\n) {\n  const { locator, ignoreLocators, ...rest } = options;\n  return {\n    ...rest,\n    ...(locator ? { locator: serializeClientLocator(locator, pageId, method) } : {}),\n    ...(ignoreLocators\n      ? {\n          ignoreLocators: ignoreLocators.map((ignoredLocator) =>\n            serializeClientLocator(ignoredLocator, pageId, method),\n          ),\n        }\n      : {}),\n  };\n}\n","import type {\n  BrowserbaseConnectOptions,\n  BrowserbaseFetchOptions,\n  BrowserbaseFetchResult,\n  BrowserbaseLaunchOptions,\n  BrowserbaseSearchOptions,\n  BrowserbaseSearchResult,\n  LocalBrowserConnectOptions,\n  LocalBrowserLaunchOptions,\n} from \"../clientSchemas.js\";\nimport type { BrowserContext } from \"../browserContext.js\";\n\nexport type {\n  BrowserbaseConnectOptions,\n  BrowserbaseFetchOptions,\n  BrowserbaseFetchResult,\n  BrowserbaseLaunchOptions,\n  BrowserbaseSearchOptions,\n  BrowserbaseSearchResult,\n  LocalBrowserConnectOptions,\n  LocalBrowserLaunchOptions,\n};\n\nconst stagehandBrowserBrand: unique symbol = Symbol(\"StagehandBrowser\");\n\nexport type StagehandBrowserProvider = \"local\" | \"browserbase\";\nexport type StagehandBrowserOrigin = \"launched\" | \"connected\";\n\n/**\n * A browser whose Stagehand extension is ready for its first RPC call.\n *\n * Browser handles are created by Stagehand's browser factories. The private\n * brand prevents arbitrary CDP connections from being passed to Stagehand.\n */\nexport interface StagehandBrowser {\n  readonly [stagehandBrowserBrand]: true;\n  readonly provider: StagehandBrowserProvider;\n  readonly origin: StagehandBrowserOrigin;\n  /** Browserbase session id backing this browser; undefined for local browsers. */\n  readonly sessionId?: string;\n  readonly context: BrowserContext;\n  readonly closed: boolean;\n  close(): Promise<void>;\n}\n\nexport interface LocalBrowser {\n  launch(options?: LocalBrowserLaunchOptions): Promise<StagehandBrowser>;\n  connect(options: LocalBrowserConnectOptions): Promise<StagehandBrowser>;\n}\n\nexport interface BrowserbaseBrowser {\n  launch(options: BrowserbaseLaunchOptions): Promise<StagehandBrowser>;\n  connect(options: BrowserbaseConnectOptions): Promise<StagehandBrowser>;\n  search(options: BrowserbaseSearchOptions): Promise<BrowserbaseSearchResult>;\n  fetch(options: BrowserbaseFetchOptions): Promise<BrowserbaseFetchResult>;\n}\n\ntype BrowserHandleInternals = {\n  claimed: boolean;\n  attachment: unknown;\n  context?: BrowserContext;\n  close: () => Promise<void> | void;\n  invalidate: () => Promise<void> | void;\n  terminalPromise?: Promise<void>;\n};\n\nconst browserHandleInternals = new WeakMap<StagehandBrowser, BrowserHandleInternals>();\n\nclass StagehandBrowserHandle implements StagehandBrowser {\n  readonly [stagehandBrowserBrand] = true as const;\n\n  constructor(\n    readonly provider: StagehandBrowserProvider,\n    readonly origin: StagehandBrowserOrigin,\n    internals: BrowserHandleInternals,\n    readonly sessionId?: string,\n  ) {\n    browserHandleInternals.set(this, internals);\n  }\n\n  get closed(): boolean {\n    return browserHandleInternals.get(this)?.terminalPromise !== undefined;\n  }\n\n  get context(): BrowserContext {\n    const context = requireBrowserHandleInternals(this).context;\n    if (!context) {\n      throw new Error(\n        \"Browser context is unavailable. Attach the browser with await Stagehand.create({ browser }).\",\n      );\n    }\n    return context;\n  }\n\n  close(): Promise<void> {\n    const internals = requireBrowserHandleInternals(this);\n    internals.terminalPromise ??= Promise.resolve().then(internals.close);\n    return internals.terminalPromise;\n  }\n}\n\n/** @internal */\nexport function createStagehandBrowserHandle<Attachment>(options: {\n  provider: StagehandBrowserProvider;\n  origin: StagehandBrowserOrigin;\n  attachment: Attachment;\n  close: () => Promise<void> | void;\n  invalidate?: () => Promise<void> | void;\n  sessionId?: string;\n}): StagehandBrowser {\n  return new StagehandBrowserHandle(\n    options.provider,\n    options.origin,\n    {\n      claimed: false,\n      attachment: options.attachment,\n      close: options.close,\n      invalidate: options.invalidate ?? options.close,\n    },\n    options.sessionId,\n  );\n}\n\n/** @internal */\nexport function claimStagehandBrowserHandle<Attachment>(browser: StagehandBrowser): Attachment {\n  const internals = requireBrowserHandleInternals(browser);\n  if (internals.terminalPromise) {\n    throw new Error(\"Cannot attach Stagehand to a closed browser\");\n  }\n  if (internals.claimed) {\n    throw new Error(\"This browser is already attached to a Stagehand instance\");\n  }\n  internals.claimed = true;\n  return internals.attachment as Attachment;\n}\n\n/** @internal */\nexport function invalidateStagehandBrowserHandle(browser: StagehandBrowser): Promise<void> {\n  const internals = requireBrowserHandleInternals(browser);\n  internals.terminalPromise ??= Promise.resolve().then(internals.invalidate);\n  return internals.terminalPromise;\n}\n\n/** @internal */\nexport function releaseStagehandBrowserHandle(browser: StagehandBrowser): void {\n  const internals = requireBrowserHandleInternals(browser);\n  internals.claimed = false;\n}\n\n/** @internal */\nexport function attachStagehandBrowserContext(\n  browser: StagehandBrowser,\n  context: BrowserContext,\n): void {\n  const internals = requireBrowserHandleInternals(browser);\n  if (!internals.claimed) {\n    throw new Error(\"Cannot attach a browser context before Stagehand claims the browser\");\n  }\n  if (internals.context) {\n    throw new Error(\"This browser already has a Stagehand context\");\n  }\n  internals.context = context;\n}\n\n/** @internal */\nexport function detachStagehandBrowserContext(browser: StagehandBrowser): void {\n  const internals = requireBrowserHandleInternals(browser);\n  internals.context = undefined;\n}\n\nexport function isStagehandBrowser(value: unknown): value is StagehandBrowser {\n  return (\n    typeof value === \"object\" &&\n    value !== null &&\n    browserHandleInternals.has(value as StagehandBrowser)\n  );\n}\n\nfunction requireBrowserHandleInternals(browser: StagehandBrowser): BrowserHandleInternals {\n  const internals = browserHandleInternals.get(browser);\n  if (!internals) {\n    throw new TypeError(\"browser must be created by localBrowser or browserbase\");\n  }\n  return internals;\n}\n","/**\n * TypeScript SDK-owned schemas. They extend protocol schemas with SDK-only values such as local/CDP\n * connection options, JavaScript callbacks, and Page instances. Those values are consumed by the\n * SDK and never cross the RPC boundary. Other language SDKs should follow the same pattern around\n * the shared wire params.\n */\n\nimport { z } from \"zod/v4\";\nimport type Browserbase from \"@browserbasehq/sdk\";\nimport * as ProtocolSchemas from \"@browserbasehq/stagehand-protocol/schemas\";\nimport type { StagehandLog } from \"@browserbasehq/stagehand-protocol/types\";\nimport {\n  ActOptionsSchema,\n  BrowserbaseRegionSchema,\n  ExtractOptionsSchema,\n  LLMGenerateParamsSchema,\n  LLMGenerateResultSchema,\n  ModelConfigSchema,\n  ObserveOptionsSchema,\n  StagehandInitParamsSchema,\n  StagehandLogLevelSchema,\n} from \"@browserbasehq/stagehand-protocol/schemas\";\nimport { Page } from \"./page.js\";\nimport { Locator } from \"./locator.js\";\nimport { isStagehandBrowser, type StagehandBrowser } from \"./browser/index.js\";\n\nexport const LocalBrowserLaunchOptionsSchema = z\n  .strictObject({\n    args: z.array(z.string()).optional(),\n    executablePath: z.string().optional(),\n    port: z.number().optional(),\n    userDataDir: z.string().optional(),\n    preserveUserDataDir: z.boolean().optional(),\n    headless: z.boolean().optional(),\n    devtools: z.boolean().optional(),\n    chromiumSandbox: z.boolean().optional(),\n    ignoreDefaultArgs: z.union([z.boolean(), z.array(z.string())]).optional(),\n    proxy: z\n      .strictObject({\n        server: z.string(),\n        bypass: z.string().optional(),\n        username: z.string().optional(),\n        password: z.string().optional(),\n      })\n      .optional(),\n    locale: z.string().optional(),\n    viewport: z.strictObject({ width: z.number(), height: z.number() }).optional(),\n    deviceScaleFactor: z.number().optional(),\n    hasTouch: z.boolean().optional(),\n    ignoreHTTPSErrors: z.boolean().optional(),\n    downloadsPath: z.string().optional(),\n    acceptDownloads: z.boolean().optional(),\n    keepAlive: z.boolean().optional(),\n  })\n  .meta({ id: \"LocalBrowserLaunchOptions\" });\n\nexport const LocalBrowserConnectOptionsSchema = z\n  .strictObject({\n    cdpUrl: z.string().min(1),\n    extensionId: z.string().min(1).optional(),\n  })\n  .meta({ id: \"LocalBrowserConnectOptions\" });\n\nexport const DEFAULT_BROWSERBASE_URL = \"https://api.browserbase.com\";\n\ntype BrowserbaseLaunchOptionsInput = Browserbase.SessionCreateParams & {\n  apiKey: string;\n  baseUrl?: string;\n};\n\ntype BrowserbaseLaunchOptionsOutput = Browserbase.SessionCreateParams & {\n  apiKey: string;\n  baseUrl: string;\n};\n\n/**\n * Browserbase owns the session option surface. Keep this object loose so newly added SDK options\n * pass through without requiring a Stagehand protocol or schema update.\n */\nexport const BrowserbaseLaunchOptionsSchema = z\n  .looseObject({\n    apiKey: z.string().min(1),\n    baseUrl: z.url().default(DEFAULT_BROWSERBASE_URL),\n    apiUrl: z.never().optional(),\n    type: z.never().optional(),\n  })\n  .meta({ id: \"BrowserbaseLaunchOptions\" }) as z.ZodType<\n  BrowserbaseLaunchOptionsOutput,\n  BrowserbaseLaunchOptionsInput\n>;\n\nexport const BrowserbaseConnectOptionsSchema = z\n  .strictObject({\n    apiKey: z.string().min(1),\n    baseUrl: z.url().default(DEFAULT_BROWSERBASE_URL),\n    sessionId: z.string().min(1),\n    extensionId: z.string().min(1).optional(),\n  })\n  .meta({ id: \"BrowserbaseConnectOptions\" });\n\nconst BrowserbaseClientOptionsSchema = {\n  apiKey: z.string().min(1),\n  baseUrl: z.url().default(DEFAULT_BROWSERBASE_URL),\n};\n\nexport const BrowserbaseSearchOptionsSchema = z\n  .strictObject({\n    ...BrowserbaseClientOptionsSchema,\n    query: z.string().min(1).max(200),\n    numResults: z.int().min(1).max(25).optional(),\n  })\n  .meta({ id: \"BrowserbaseSearchOptions\" });\n\nexport const BrowserbaseFetchOptionsSchema = z\n  .strictObject({\n    ...BrowserbaseClientOptionsSchema,\n    url: z.url(),\n    allowInsecureSsl: z.boolean().optional(),\n    allowRedirects: z.boolean().optional(),\n    format: z.enum([\"raw\", \"json\", \"markdown\"]).optional(),\n    proxies: z.boolean().optional(),\n    schema: z.record(z.string(), z.unknown()).optional(),\n  })\n  .refine(({ format, schema }) => schema === undefined || format === \"json\", {\n    message: 'schema is only valid when format is \"json\"',\n    path: [\"schema\"],\n  })\n  .refine(({ format, schema }) => format !== \"json\" || schema !== undefined, {\n    message: 'schema is required when format is \"json\"',\n    path: [\"schema\"],\n  })\n  .meta({ id: \"BrowserbaseFetchOptions\" });\n\nexport const BrowserbaseSearchResultSchema = z\n  .object({\n    query: z.string(),\n    requestId: z.string(),\n    results: z.array(\n      z.object({\n        id: z.string(),\n        title: z.string(),\n        url: z.string(),\n        author: z.string().nullish(),\n        favicon: z.string().nullish(),\n        image: z.string().nullish(),\n        publishedDate: z.string().nullish(),\n      }),\n    ),\n  })\n  .meta({ id: \"BrowserbaseSearchResult\" });\n\nexport const BrowserbaseFetchResultSchema = z\n  .object({\n    id: z.string(),\n    content: z.union([z.string(), z.record(z.string(), z.unknown())]),\n    contentType: z.string(),\n    encoding: z.string(),\n    headers: z.record(z.string(), z.string()),\n    statusCode: z.number().int(),\n  })\n  .meta({ id: \"BrowserbaseFetchResult\" });\n\n/** Data returned by the Browserbase SDK after creating a session. */\nexport const BrowserbaseSessionCreateResultSchema = z\n  .object({\n    id: z.string(),\n    connectUrl: z.string(),\n  })\n  .meta({ id: \"BrowserbaseSessionCreateResult\" });\n\n/** Data returned by the Browserbase SDK when retrieving a session. */\nexport const BrowserbaseSessionRetrieveResultSchema = z\n  .object({\n    id: z.string(),\n    connectUrl: z.string().optional(),\n    region: BrowserbaseRegionSchema.optional(),\n  })\n  .meta({ id: \"BrowserbaseSessionRetrieveResult\" });\n\n/** Normalized connection data shared by Browserbase launch and connect flows. */\nexport const BrowserbaseSessionConnectionSchema = z\n  .strictObject({\n    sessionId: z.string().trim().min(1),\n    cdpUrl: z.string().trim().min(1),\n    region: BrowserbaseRegionSchema.optional(),\n  })\n  .meta({ id: \"BrowserbaseSessionConnection\" });\n\nexport const WebMCPToolsOptionsSchema = ProtocolSchemas.WebMCPToolsOptionsSchema.partial();\n\nexport const WebMCPInvokeOptionsSchema = ProtocolSchemas.WebMCPInvokeOptionsSchema.partial();\n\nexport const WebMCPResultOptionsSchema = ProtocolSchemas.WebMCPResultOptionsSchema;\n\n/** An LLM callback implemented locally by the SDK consumer. It never crosses the wire. */\nexport const ClientLLMSchema = z\n  .strictObject({\n    generate: z.function({\n      input: [LLMGenerateParamsSchema],\n      output: z.promise(LLMGenerateResultSchema),\n    }),\n  })\n  .meta({ id: \"ClientLLM\" });\n\nexport const StagehandClientLogLevelSchema = z\n  .union([StagehandLogLevelSchema, z.literal(\"off\")])\n  .meta({ id: \"StagehandClientLogLevel\" });\n\nexport const StagehandClientLogFormatSchema = z\n  .enum([\"pretty\", \"json\"])\n  .meta({ id: \"StagehandClientLogFormat\" });\n\nexport const StagehandClientOnLogSchema = z\n  .custom<(log: StagehandLog) => void | Promise<void>>(\n    (value) => typeof value === \"function\",\n    \"onLog must be a function\",\n  )\n  .meta({ id: \"StagehandClientOnLog\" });\n\nexport const StagehandClientLoggingConfigSchema = z\n  .strictObject({\n    level: StagehandClientLogLevelSchema.default(\"info\"),\n    format: StagehandClientLogFormatSchema.default(\"pretty\"),\n    onLog: StagehandClientOnLogSchema.optional(),\n  })\n  .meta({ id: \"StagehandClientLoggingConfig\" });\n\nexport const StagehandClientActOptionsSchema = ActOptionsSchema.extend({\n  locator: z.instanceof(Locator).optional(),\n  ignoreLocators: z.array(z.instanceof(Locator)).optional(),\n  page: z.instanceof(Page).optional(),\n}).meta({ id: \"StagehandClientActOptions\" });\n\nexport const StagehandClientObserveOptionsSchema = ObserveOptionsSchema.extend({\n  locator: z.instanceof(Locator).optional(),\n  ignoreLocators: z.array(z.instanceof(Locator)).optional(),\n  page: z.instanceof(Page).optional(),\n}).meta({ id: \"StagehandClientObserveOptions\" });\n\nexport const StagehandClientExtractOptionsSchema = ExtractOptionsSchema.extend({\n  locator: z.instanceof(Locator).optional(),\n  ignoreLocators: z.array(z.instanceof(Locator)).optional(),\n  page: z.instanceof(Page).optional(),\n}).meta({ id: \"StagehandClientExtractOptions\" });\n\nexport const StagehandClientCreateConfigSchema = StagehandInitParamsSchema.omit({\n  protocolVersion: true,\n  clientInfo: true,\n  browserCdpUrl: true,\n  logLevel: true,\n  browser: true,\n})\n  .extend({\n    model: z.union([ModelConfigSchema, ClientLLMSchema]).optional(),\n    logging: StagehandClientLoggingConfigSchema.default({\n      level: \"info\",\n      format: \"pretty\",\n    }),\n  })\n  .strict()\n  .meta({ id: \"StagehandClientCreateConfig\" });\n\nexport const StagehandBrowserSchema = z\n  .custom<StagehandBrowser>(\n    isStagehandBrowser,\n    \"browser must be created by localBrowser or browserbase\",\n  )\n  .meta({ id: \"StagehandBrowser\" });\n\nexport const StagehandCreateOptionsSchema = StagehandClientCreateConfigSchema.extend({\n  browser: StagehandBrowserSchema,\n}).meta({ id: \"StagehandCreateOptions\" });\n\nexport type ClientLLM = z.infer<typeof ClientLLMSchema>;\nexport type StagehandClientLoggingConfig = z.input<typeof StagehandClientLoggingConfigSchema>;\nexport type ResolvedStagehandClientLoggingConfig = z.output<\n  typeof StagehandClientLoggingConfigSchema\n>;\nexport type StagehandClientActOptions = z.input<typeof StagehandClientActOptionsSchema>;\nexport type StagehandClientObserveOptions = z.input<typeof StagehandClientObserveOptionsSchema>;\nexport type StagehandClientExtractOptions = z.input<typeof StagehandClientExtractOptionsSchema>;\nexport type LocalBrowserLaunchOptions = z.infer<typeof LocalBrowserLaunchOptionsSchema>;\nexport type LocalBrowserConnectOptions = z.infer<typeof LocalBrowserConnectOptionsSchema>;\nexport type BrowserbaseLaunchOptions = z.input<typeof BrowserbaseLaunchOptionsSchema>;\nexport type BrowserbaseConnectOptions = z.input<typeof BrowserbaseConnectOptionsSchema>;\nexport type BrowserbaseSearchOptions = z.input<typeof BrowserbaseSearchOptionsSchema>;\nexport type BrowserbaseFetchOptions = z.input<typeof BrowserbaseFetchOptionsSchema>;\nexport type BrowserbaseSearchResult = z.infer<typeof BrowserbaseSearchResultSchema>;\nexport type BrowserbaseFetchResult = z.infer<typeof BrowserbaseFetchResultSchema>;\nexport type BrowserbaseSessionCreateResult = z.infer<typeof BrowserbaseSessionCreateResultSchema>;\nexport type BrowserbaseSessionRetrieveResult = z.infer<\n  typeof BrowserbaseSessionRetrieveResultSchema\n>;\nexport type BrowserbaseSessionConnection = z.infer<typeof BrowserbaseSessionConnectionSchema>;\nexport type StagehandClientCreateConfig = z.input<typeof StagehandClientCreateConfigSchema>;\nexport type ResolvedStagehandClientCreateConfig = z.output<\n  typeof StagehandClientCreateConfigSchema\n>;\nexport type StagehandCreateOptions = z.input<typeof StagehandCreateOptionsSchema>;\nexport type ResolvedStagehandCreateOptions = z.output<typeof StagehandCreateOptionsSchema>;\nexport type WebMCPToolsOptions = z.infer<typeof WebMCPToolsOptionsSchema>;\nexport type WebMCPInvokeOptions = z.infer<typeof WebMCPInvokeOptionsSchema>;\nexport type WebMCPResultOptions = z.infer<typeof WebMCPResultOptionsSchema>;\n","","import packageJson from \"../package.json\" with { type: \"json\" };\n\nexport const STAGEHAND_SDK_VERSION = packageJson.version;\n","import { STAGEHAND_SDK_VERSION } from \"./version.js\";\n\nconst STAGEHAND_SDK_IDENTITY = {\n  name: \"stagehand-sdk-ts\",\n  language: \"typescript\",\n  version: STAGEHAND_SDK_VERSION,\n} as const;\n\nexport const STAGEHAND_SDK_CLIENT_INFO = {\n  name: STAGEHAND_SDK_IDENTITY.name,\n  version: STAGEHAND_SDK_IDENTITY.version,\n} as const;\n\nexport const STAGEHAND_SESSION_METADATA = {\n  stagehand: \"true\",\n  stagehand_sdk_language: STAGEHAND_SDK_IDENTITY.language,\n  stagehand_sdk_version: STAGEHAND_SDK_IDENTITY.version,\n} as const;\n","import { fileURLToPath } from \"node:url\";\n\nconst packageRoot = new URL(\"../\", import.meta.url);\n\n// Env overrides exist for bundlers (nitro, eve dev's authored-module\n// compiler) that inline this module and re-anchor import.meta.url away from\n// the installed package, leaving the derived paths pointing at files the\n// bundle does not carry.\nfunction nonEmpty(value: string | undefined): string | undefined {\n  const trimmed = value?.trim();\n  return trimmed ? trimmed : undefined;\n}\n\nexport const STAGEHAND_EXTENSION_ARCHIVE_PATH =\n  nonEmpty(process.env.STAGEHAND_EXTENSION_ARCHIVE_PATH) ??\n  fileURLToPath(new URL(\"dist/assets/stagehand-extension.zip\", packageRoot));\n\nexport const STAGEHAND_EXTENSION_DIRECTORY_PATH =\n  nonEmpty(process.env.STAGEHAND_EXTENSION_DIRECTORY_PATH) ??\n  fileURLToPath(new URL(\"dist/extension/\", packageRoot));\n","import { createReadStream } from \"node:fs\";\nimport Browserbase from \"@browserbasehq/sdk\";\nimport { STAGEHAND_EXTENSION_ARCHIVE_PATH } from \"./extensionAssets.js\";\n\nexport type BrowserbaseExtensionClient = {\n  uploadExtension(archivePath: string): Promise<{ id: string }>;\n  deleteExtension(extensionId: string): Promise<void>;\n};\n\nexport type ProvisionedBrowserbaseExtension = {\n  extensionId: string;\n  cleanup(): Promise<void>;\n};\n\nexport type BrowserbaseExtensionSdk = {\n  extensions: {\n    create(params: { file: ReturnType<typeof createReadStream> }): Promise<{ id: string }>;\n    delete(\n      extensionId: string,\n      options?: { headers?: Record<string, string | null> },\n    ): Promise<void>;\n  };\n};\n\ntype BrowserbaseSdkFactory = (apiKey: string) => BrowserbaseExtensionSdk;\n\nexport function createBrowserbaseExtensionClient(\n  apiKey: string,\n  createSdk: BrowserbaseSdkFactory = (key) => new Browserbase({ apiKey: key }),\n): BrowserbaseExtensionClient {\n  const browserbase = createSdk(apiKey);\n  return {\n    async uploadExtension(archivePath) {\n      const extension = await browserbase.extensions.create({\n        file: createReadStream(archivePath),\n      });\n      return { id: extension.id };\n    },\n    async deleteExtension(extensionId) {\n      await browserbase.extensions.delete(extensionId, {\n        headers: { \"Content-Type\": null },\n      });\n    },\n  };\n}\n\nexport async function provisionBrowserbaseExtension(\n  client: BrowserbaseExtensionClient,\n  archivePath = STAGEHAND_EXTENSION_ARCHIVE_PATH,\n): Promise<ProvisionedBrowserbaseExtension> {\n  let uploaded: { id: string };\n\n  try {\n    uploaded = await client.uploadExtension(archivePath);\n  } catch (error) {\n    throw new Error(\"Failed to upload the Stagehand extension to Browserbase\", { cause: error });\n  }\n\n  const extensionId = uploaded.id.trim();\n  if (extensionId.length === 0) {\n    throw new Error(\"Browserbase extension upload returned an empty extension ID\");\n  }\n\n  let cleaned = false;\n  return {\n    extensionId,\n    async cleanup() {\n      if (cleaned) return;\n      await client.deleteExtension(extensionId);\n      cleaned = true;\n    },\n  };\n}\n","import Browserbase from \"@browserbasehq/sdk\";\nimport {\n  createBrowserbaseExtensionClient,\n  provisionBrowserbaseExtension,\n  type BrowserbaseExtensionClient,\n  type BrowserbaseExtensionSdk,\n  type ProvisionedBrowserbaseExtension,\n} from \"../browserbaseExtension.js\";\nimport { STAGEHAND_SESSION_METADATA } from \"../sdkIdentity.js\";\nimport {\n  BrowserbaseSessionConnectionSchema,\n  BrowserbaseSessionCreateResultSchema,\n  BrowserbaseSessionRetrieveResultSchema,\n  type BrowserbaseSessionConnection,\n  type BrowserbaseSessionCreateResult,\n  type BrowserbaseSessionRetrieveResult,\n} from \"../clientSchemas.js\";\n\ntype OwnedBrowserbaseSession = BrowserbaseSessionConnection & {\n  close: () => Promise<void> | void;\n};\n\nexport type BrowserbaseSessionClient = {\n  createSession(params: Browserbase.SessionCreateParams): Promise<OwnedBrowserbaseSession>;\n  connectSession?(sessionId: string): Promise<OwnedBrowserbaseSession>;\n};\n\nexport type BrowserbaseSessionClientFactory = (\n  apiKey: string,\n  baseUrl: string,\n) => BrowserbaseSessionClient;\n\nexport type BrowserbaseApiClient = BrowserbaseExtensionClient & {\n  createSession(params: Browserbase.SessionCreateParams): Promise<BrowserbaseSessionCreateResult>;\n  retrieveSession(sessionId: string): Promise<BrowserbaseSessionRetrieveResult>;\n  releaseSession(sessionId: string): Promise<void>;\n};\n\ntype BrowserbaseSessionClientDependencies = {\n  browserbase?: BrowserbaseApiClient;\n  provisionExtension?: (\n    client: BrowserbaseExtensionClient,\n  ) => Promise<ProvisionedBrowserbaseExtension>;\n};\n\ntype BrowserbaseSdk = BrowserbaseExtensionSdk & {\n  sessions: {\n    create(params: Browserbase.SessionCreateParams): Promise<unknown>;\n    retrieve(sessionId: string): Promise<unknown>;\n    update(sessionId: string, params: { status: \"REQUEST_RELEASE\" }): Promise<unknown>;\n  };\n};\n\ntype BrowserbaseSdkFactory = (apiKey: string, baseUrl: string) => BrowserbaseSdk;\n\nexport class BrowserbaseSessionError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"BrowserbaseSessionError\";\n  }\n}\n\nexport function createBrowserbaseSessionClient(\n  apiKey: string,\n  baseUrl: string,\n  dependencies: BrowserbaseSessionClientDependencies = {},\n): BrowserbaseSessionClient {\n  const browserbase = dependencies.browserbase ?? createBrowserbaseApiClient(apiKey, baseUrl);\n  const provisionExtension = dependencies.provisionExtension ?? provisionBrowserbaseExtension;\n\n  return {\n    async createSession(params) {\n      const callerExtensionId = params.extensionId ?? params.browserSettings?.extensionId;\n      const extension =\n        callerExtensionId === undefined ? await provisionExtension(browserbase) : undefined;\n      let session: BrowserbaseSessionCreateResult;\n\n      try {\n        session = await browserbase.createSession({\n          ...params,\n          ...(extension === undefined ? {} : { extensionId: extension.extensionId }),\n          userMetadata: {\n            ...params.userMetadata,\n            ...STAGEHAND_SESSION_METADATA,\n          },\n        });\n      } catch {\n        await extension?.cleanup().catch(() => undefined);\n        throw new BrowserbaseSessionError(\"Failed to create a Browserbase session\");\n      }\n\n      const sessionId = session.id.trim();\n      const cdpUrl = session.connectUrl.trim();\n      if (sessionId.length === 0 || cdpUrl.length === 0) {\n        await cleanupInvalidSession(browserbase, sessionId, extension);\n        throw new Error(\n          sessionId.length === 0\n            ? \"Browserbase session creation returned an empty session ID\"\n            : \"Browserbase session creation returned an empty connection URL\",\n        );\n      }\n\n      let sessionReleased = false;\n      let extensionCleaned = extension === undefined;\n      const connection = BrowserbaseSessionConnectionSchema.parse({ sessionId, cdpUrl });\n      return {\n        ...connection,\n        async close() {\n          let releaseError: unknown;\n          if (!sessionReleased) {\n            try {\n              await browserbase.releaseSession(sessionId);\n              sessionReleased = true;\n            } catch (error) {\n              releaseError = error;\n            }\n          }\n\n          let extensionCleanupError: unknown;\n          if (!extensionCleaned && extension) {\n            try {\n              await extension.cleanup();\n              extensionCleaned = true;\n            } catch (error) {\n              extensionCleanupError = error;\n            }\n          }\n\n          if (releaseError) throw releaseError;\n          if (extensionCleanupError) throw extensionCleanupError;\n        },\n      };\n    },\n    async connectSession(sessionId) {\n      const normalizedSessionId = sessionId.trim();\n      if (normalizedSessionId.length === 0) {\n        throw new BrowserbaseSessionError(\"A Browserbase session ID is required\");\n      }\n\n      let session: Awaited<ReturnType<BrowserbaseApiClient[\"retrieveSession\"]>>;\n      try {\n        session = await browserbase.retrieveSession(normalizedSessionId);\n      } catch {\n        throw new BrowserbaseSessionError(\"Failed to retrieve the Browserbase session\");\n      }\n      const cdpUrl = session.connectUrl?.trim();\n      if (!cdpUrl) {\n        throw new BrowserbaseSessionError(\"Browserbase session is not available for connection\");\n      }\n      let sessionReleased = false;\n      const connection = BrowserbaseSessionConnectionSchema.parse({\n        sessionId: session.id.trim() || normalizedSessionId,\n        cdpUrl,\n        ...(session.region === undefined ? {} : { region: session.region }),\n      });\n      return {\n        ...connection,\n        async close() {\n          if (sessionReleased) return;\n          await browserbase.releaseSession(connection.sessionId);\n          sessionReleased = true;\n        },\n      };\n    },\n  };\n}\n\nexport function createBrowserbaseApiClient(\n  apiKey: string,\n  baseUrl: string,\n  createSdk: BrowserbaseSdkFactory = (key, baseURL) => new Browserbase({ apiKey: key, baseURL }),\n): BrowserbaseApiClient {\n  const sdk = createSdk(apiKey, baseUrl);\n  const extensionClient = createBrowserbaseExtensionClient(apiKey, () => sdk);\n\n  return {\n    ...extensionClient,\n    async createSession(params) {\n      const session = await sdk.sessions.create(params as Browserbase.SessionCreateParams);\n      return BrowserbaseSessionCreateResultSchema.parse(session);\n    },\n    async retrieveSession(sessionId) {\n      const session = await sdk.sessions.retrieve(sessionId);\n      return BrowserbaseSessionRetrieveResultSchema.parse(session);\n    },\n    async releaseSession(sessionId) {\n      await sdk.sessions.update(sessionId, { status: \"REQUEST_RELEASE\" });\n    },\n  };\n}\n\nasync function cleanupInvalidSession(\n  browserbase: BrowserbaseApiClient,\n  sessionId: string,\n  extension: ProvisionedBrowserbaseExtension | undefined,\n): Promise<void> {\n  if (sessionId.length > 0) {\n    await browserbase.releaseSession(sessionId).catch(() => undefined);\n  }\n  await extension?.cleanup().catch(() => undefined);\n}\n","import Browserbase from \"@browserbasehq/sdk\";\nimport {\n  BrowserbaseFetchResultSchema,\n  BrowserbaseSearchResultSchema,\n  type BrowserbaseFetchResult,\n  type BrowserbaseSearchResult,\n} from \"../clientSchemas.js\";\n\nexport type BrowserbaseSearchParams = {\n  query: string;\n  numResults?: number;\n};\n\nexport type BrowserbaseFetchParams = {\n  url: string;\n  allowInsecureSsl?: boolean;\n  allowRedirects?: boolean;\n  format?: \"raw\" | \"json\" | \"markdown\";\n  proxies?: boolean;\n  schema?: Record<string, unknown>;\n};\n\nexport type BrowserbaseServicesClient = {\n  search(params: BrowserbaseSearchParams): Promise<BrowserbaseSearchResult>;\n  fetch(params: BrowserbaseFetchParams): Promise<BrowserbaseFetchResult>;\n};\n\ntype BrowserbaseSdk = {\n  search: {\n    web(params: BrowserbaseSearchParams): Promise<unknown>;\n  };\n  fetchAPI: {\n    create(params: BrowserbaseFetchParams): Promise<unknown>;\n  };\n};\ntype BrowserbaseSdkFactory = (apiKey: string, baseUrl: string) => BrowserbaseSdk;\n\nexport function createBrowserbaseServicesClient(\n  apiKey: string,\n  baseUrl: string,\n  createSdk: BrowserbaseSdkFactory = (key, baseURL) => new Browserbase({ apiKey: key, baseURL }),\n): BrowserbaseServicesClient {\n  const sdk = createSdk(apiKey, baseUrl);\n  return {\n    async search(params) {\n      return BrowserbaseSearchResultSchema.parse(await sdk.search.web(params));\n    },\n    async fetch(params) {\n      return BrowserbaseFetchResultSchema.parse(await sdk.fetchAPI.create(params));\n    },\n  };\n}\n","import { spawn, type ChildProcess } from \"node:child_process\";\nimport { access, mkdir, mkdtemp, rm, stat } from \"node:fs/promises\";\nimport { constants } from \"node:fs\";\nimport { createServer } from \"node:net\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport type { LocalBrowserLaunchOptions } from \"../clientSchemas.js\";\nimport { abortable, abortableDelay, throwIfAborted } from \"../abort.js\";\n\nconst CHROME_POLL_INTERVAL_MS = 100;\nconst CHROME_REQUEST_TIMEOUT_MS = 100;\nconst CHROME_TERMINATION_TIMEOUT_MS = 3_000;\n\nexport const DEFAULT_CHROME_FLAGS = [\n  \"--disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,\" +\n    \"CalculateNativeWinOcclusion,InterestFeedContentSuggestions,\" +\n    \"CertificateTransparencyComponentUpdater,AutofillServerCommunication,\" +\n    \"PrivacySandboxSettings4,RenderDocument\",\n  \"--disable-component-extensions-with-background-pages\",\n  \"--disable-background-networking\",\n  \"--disable-component-update\",\n  \"--disable-client-side-phishing-detection\",\n  \"--disable-sync\",\n  \"--metrics-recording-only\",\n  \"--disable-default-apps\",\n  \"--mute-audio\",\n  \"--no-default-browser-check\",\n  \"--no-first-run\",\n  \"--disable-backgrounding-occluded-windows\",\n  \"--disable-renderer-backgrounding\",\n  \"--disable-background-timer-throttling\",\n  \"--disable-ipc-flooding-protection\",\n  \"--password-store=basic\",\n  \"--use-mock-keychain\",\n  \"--force-fieldtrials=*BackgroundTracing/default/\",\n  \"--disable-hang-monitor\",\n  \"--disable-prompt-on-repost\",\n  \"--disable-domain-reliability\",\n  \"--propagate-iph-for-testing\",\n  \"--enable-unsafe-extension-debugging\",\n  \"--remote-allow-origins=*\",\n  \"--enable-features=WebMCPTesting,DevToolsWebMCPSupport\",\n] as const;\n\ntype ChromeProcessExit = {\n  code: number | null;\n  signal: NodeJS.Signals | null;\n  error?: Error;\n};\n\ntype ChromeProcessMonitor = {\n  spawned: Promise<void>;\n  exited: Promise<ChromeProcessExit>;\n  currentExit(): ChromeProcessExit | undefined;\n};\n\ntype LocalBrowserLauncherDependencies = {\n  platform: NodeJS.Platform;\n  env: NodeJS.ProcessEnv;\n  getuid: (() => number) | undefined;\n  isExecutableFile(filePath: string): Promise<boolean>;\n  mkdir(directory: string, options: { recursive: true; mode: number }): Promise<string | undefined>;\n  mkdtemp(prefix: string): Promise<string>;\n  rm(directory: string, options: { force: true; recursive: true }): Promise<void>;\n  spawnChrome(executablePath: string, args: string[], options: SpawnChromeOptions): ChildProcess;\n  fetch: typeof globalThis.fetch;\n  findAvailablePort(): Promise<number>;\n  assertPortAvailable(port: number): Promise<void>;\n  signalProcess(pid: number, signal: NodeJS.Signals): void;\n  runTaskkill(pid: number, force: boolean): Promise<void>;\n};\n\ntype SpawnChromeOptions = {\n  detached: boolean;\n  env: NodeJS.ProcessEnv;\n};\n\nconst defaultDependencies: LocalBrowserLauncherDependencies = {\n  platform: process.platform,\n  env: process.env,\n  getuid: process.getuid,\n  isExecutableFile,\n  mkdir,\n  mkdtemp,\n  rm,\n  spawnChrome: (executablePath, args, options) =>\n    spawn(executablePath, args, {\n      detached: options.detached,\n      env: options.env,\n      stdio: \"ignore\",\n    }),\n  fetch: globalThis.fetch,\n  findAvailablePort,\n  assertPortAvailable,\n  signalProcess: (pid, signal) => process.kill(pid, signal),\n  runTaskkill,\n};\n\nexport type LocalBrowserLauncher = (\n  options: LocalBrowserLaunchOptions,\n  signal?: AbortSignal,\n) => Promise<{ cdpUrl: string; close: () => Promise<void> }>;\n\nexport async function launchLocalBrowser(\n  options: LocalBrowserLaunchOptions,\n  signal?: AbortSignal,\n): Promise<{ cdpUrl: string; close: () => Promise<void> }> {\n  return await launchChrome(options, signal, defaultDependencies);\n}\n\nasync function launchChrome(\n  options: LocalBrowserLaunchOptions,\n  signal: AbortSignal | undefined,\n  dependencies: LocalBrowserLauncherDependencies,\n): Promise<{ cdpUrl: string; close: () => Promise<void> }> {\n  validateLocalBrowserOptions(options);\n  throwIfAborted(signal);\n\n  const chromePath = await findChromePath(options.executablePath, dependencies);\n  const port = await resolveChromePort(options.port, dependencies);\n  const { userDataDir, removeProfile } = await resolveChromeProfile(options, dependencies);\n\n  let child: ChildProcess | undefined;\n  let close: (() => Promise<void>) | undefined;\n  try {\n    throwIfAborted(signal);\n    const args = localBrowserChromeFlags(\n      options,\n      port,\n      userDataDir,\n      shouldDisableSandbox(options, dependencies),\n    );\n    child = dependencies.spawnChrome(chromePath, args, {\n      detached: dependencies.platform !== \"win32\",\n      env: dependencies.env,\n    });\n    const monitor = monitorChromeProcess(child);\n    close = memoizedChromeClose(child, monitor, userDataDir, removeProfile, dependencies);\n    await abortable(monitor.spawned, signal);\n\n    const cdpUrl = `http://127.0.0.1:${port}`;\n    await waitForChrome(cdpUrl, monitor, signal, dependencies.fetch);\n    return { cdpUrl, close };\n  } catch (error) {\n    if (close) {\n      try {\n        await close();\n      } catch (cleanupError) {\n        throw new AggregateError(\n          [error, cleanupError],\n          \"Chrome launch failed and browser cleanup also failed\",\n          { cause: error },\n        );\n      }\n    } else if (removeProfile) {\n      try {\n        await dependencies.rm(userDataDir, { force: true, recursive: true });\n      } catch (cleanupError) {\n        throw new AggregateError(\n          [error, cleanupError],\n          \"Chrome launch failed and profile cleanup also failed\",\n          { cause: error },\n        );\n      }\n    }\n    throw error;\n  }\n}\n\nasync function resolveChromeProfile(\n  options: LocalBrowserLaunchOptions,\n  dependencies: Pick<LocalBrowserLauncherDependencies, \"mkdir\" | \"mkdtemp\">,\n): Promise<{ userDataDir: string; removeProfile: boolean }> {\n  if (options.userDataDir !== undefined && options.userDataDir !== \"\") {\n    await dependencies.mkdir(options.userDataDir, { recursive: true, mode: 0o700 });\n    return { userDataDir: options.userDataDir, removeProfile: false };\n  }\n  const userDataDir = await dependencies.mkdtemp(path.join(tmpdir(), \"stagehand-chrome-\"));\n  return {\n    userDataDir,\n    removeProfile: options.preserveUserDataDir !== true,\n  };\n}\n\nexport function localBrowserChromeFlags(\n  options: LocalBrowserLaunchOptions,\n  port: number,\n  userDataDir: string,\n  disableSandbox: boolean,\n): string[] {\n  const ignoredDefaultArgs = options.ignoreDefaultArgs;\n  const ignoredFlags = new Set(Array.isArray(ignoredDefaultArgs) ? ignoredDefaultArgs : []);\n  const includeDefaults = ignoredDefaultArgs !== true;\n  const viewport = options.viewport ?? { width: 1280, height: 800 };\n  const windowSizeFlag = `--window-size=${viewport.width},${viewport.height}`;\n\n  return [\n    ...(includeDefaults ? selectedChromeFlags(DEFAULT_CHROME_FLAGS, ignoredFlags) : []),\n    ...(options.viewport !== undefined || (includeDefaults && !ignoredFlags.has(windowSizeFlag))\n      ? [windowSizeFlag]\n      : []),\n    `--remote-debugging-port=${port}`,\n    `--user-data-dir=${userDataDir}`,\n    ...(options.headless === true ? [\"--headless\"] : []),\n    ...(options.devtools ? [\"--auto-open-devtools-for-tabs\"] : []),\n    ...(disableSandbox ? [\"--no-sandbox\"] : []),\n    ...(options.proxy ? [`--proxy-server=${options.proxy.server}`] : []),\n    ...(options.proxy?.bypass ? [`--proxy-bypass-list=${options.proxy.bypass}`] : []),\n    ...(options.locale ? [`--lang=${options.locale}`] : []),\n    ...(options.deviceScaleFactor === undefined\n      ? []\n      : [`--force-device-scale-factor=${options.deviceScaleFactor}`]),\n    ...(options.hasTouch === true ? [\"--touch-events=enabled\"] : []),\n    ...(options.ignoreHTTPSErrors === true ? [\"--ignore-certificate-errors\"] : []),\n    ...(options.args ?? []),\n    \"about:blank\",\n  ];\n}\n\nfunction selectedChromeFlags(\n  flags: readonly string[],\n  ignoredFlags: ReadonlySet<string>,\n): string[] {\n  return flags.filter((flag) => !ignoredFlags.has(flag));\n}\n\nfunction validateLocalBrowserOptions(options: LocalBrowserLaunchOptions): void {\n  if (\n    options.port !== undefined &&\n    (!Number.isInteger(options.port) || options.port < 1 || options.port > 65_535)\n  ) {\n    throw new Error(\"Chrome port must be an integer between 1 and 65535\");\n  }\n  if (\n    options.viewport !== undefined &&\n    (!Number.isInteger(options.viewport.width) ||\n      !Number.isInteger(options.viewport.height) ||\n      options.viewport.width <= 0 ||\n      options.viewport.height <= 0)\n  ) {\n    throw new Error(\"Chrome viewport dimensions must be positive integers\");\n  }\n  if (\n    options.deviceScaleFactor !== undefined &&\n    (!Number.isFinite(options.deviceScaleFactor) || options.deviceScaleFactor <= 0)\n  ) {\n    throw new Error(\"Chrome device scale factor must be positive and finite\");\n  }\n  if (options.proxy !== undefined) {\n    if (options.proxy.server.length === 0) {\n      throw new Error(\"Chrome proxy server is required\");\n    }\n    if (options.proxy.username !== undefined || options.proxy.password !== undefined) {\n      throw new Error(\"Authenticated local browser proxies are not supported yet\");\n    }\n  }\n}\n\nasync function findChromePath(\n  explicitPath: string | undefined,\n  dependencies: Pick<LocalBrowserLauncherDependencies, \"platform\" | \"env\" | \"isExecutableFile\">,\n): Promise<string> {\n  if (explicitPath !== undefined) {\n    if (await dependencies.isExecutableFile(explicitPath)) return explicitPath;\n    throw new Error(`Chrome executable ${JSON.stringify(explicitPath)} does not exist`);\n  }\n\n  const configuredPath = dependencies.env.CHROME_PATH;\n  if (configuredPath && (await dependencies.isExecutableFile(configuredPath))) {\n    return configuredPath;\n  }\n\n  const candidates = chromeCandidates(dependencies.platform, dependencies.env);\n  for (const candidate of candidates) {\n    if (await dependencies.isExecutableFile(candidate)) return candidate;\n  }\n  throw new Error(\"Chrome installation not found; set CHROME_PATH\");\n}\n\nfunction chromeCandidates(platform: NodeJS.Platform, env: NodeJS.ProcessEnv): string[] {\n  if (platform === \"darwin\") {\n    return [\n      \"/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary\",\n      \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\",\n      \"/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta\",\n      \"/Applications/Chromium.app/Contents/MacOS/Chromium\",\n    ];\n  }\n  if (platform === \"win32\") {\n    const roots = [env.LOCALAPPDATA, env.PROGRAMFILES, env[\"PROGRAMFILES(X86)\"]].filter(\n      (root): root is string => Boolean(root),\n    );\n    const suffixes = [\n      [\"Google\", \"Chrome SxS\", \"Application\", \"chrome.exe\"],\n      [\"Google\", \"Chrome\", \"Application\", \"chrome.exe\"],\n    ];\n    return roots.flatMap((root) => suffixes.map((suffix) => path.win32.join(root, ...suffix)));\n  }\n  if (platform === \"linux\") {\n    const directories = (env.PATH ?? \"\").split(path.delimiter).filter(Boolean);\n    const names = [\"google-chrome-stable\", \"google-chrome\", \"chromium-browser\", \"chromium\"];\n    return names.flatMap((name) => directories.map((directory) => path.join(directory, name)));\n  }\n  throw new Error(`Chrome launching is not supported on ${platform}`);\n}\n\nasync function isExecutableFile(filePath: string): Promise<boolean> {\n  try {\n    const info = await stat(filePath);\n    if (!info.isFile()) return false;\n    if (process.platform !== \"win32\") await access(filePath, constants.X_OK);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nasync function resolveChromePort(\n  requestedPort: number | undefined,\n  dependencies: Pick<LocalBrowserLauncherDependencies, \"assertPortAvailable\" | \"findAvailablePort\">,\n): Promise<number> {\n  if (requestedPort === undefined) return await dependencies.findAvailablePort();\n  await dependencies.assertPortAvailable(requestedPort);\n  return requestedPort;\n}\n\nasync function findAvailablePort(): Promise<number> {\n  return await inspectPort(0);\n}\n\nasync function assertPortAvailable(port: number): Promise<void> {\n  try {\n    await inspectPort(port);\n  } catch (error) {\n    throw new Error(`Chrome debugging port ${port} is already in use`, { cause: error });\n  }\n}\n\nasync function inspectPort(port: number): Promise<number> {\n  const server = createServer();\n  server.unref();\n  try {\n    return await new Promise<number>((resolve, reject) => {\n      server.once(\"error\", reject);\n      server.listen(port, \"127.0.0.1\", () => {\n        const address = server.address();\n        if (typeof address === \"object\" && address !== null) resolve(address.port);\n        else reject(new Error(\"Failed to resolve Chrome debugging port\"));\n      });\n    });\n  } finally {\n    await new Promise<void>((resolve, reject) => {\n      if (!server.listening) {\n        resolve();\n        return;\n      }\n      server.close((error) => (error ? reject(error) : resolve()));\n    });\n  }\n}\n\nfunction shouldDisableSandbox(\n  options: LocalBrowserLaunchOptions,\n  dependencies: Pick<LocalBrowserLauncherDependencies, \"platform\" | \"env\" | \"getuid\">,\n): boolean {\n  return (\n    Boolean(dependencies.env.CI) ||\n    options.chromiumSandbox === false ||\n    (dependencies.platform === \"linux\" && dependencies.getuid?.() === 0)\n  );\n}\n\nfunction monitorChromeProcess(child: ChildProcess): ChromeProcessMonitor {\n  let currentExit: ChromeProcessExit | undefined;\n  let resolveSpawned!: () => void;\n  let rejectSpawned!: (error: Error) => void;\n  let resolveExited!: (exit: ChromeProcessExit) => void;\n  const spawned = new Promise<void>((resolve, reject) => {\n    resolveSpawned = resolve;\n    rejectSpawned = reject;\n  });\n  const exited = new Promise<ChromeProcessExit>((resolve) => {\n    resolveExited = resolve;\n  });\n\n  child.once(\"spawn\", resolveSpawned);\n  child.once(\"error\", (error) => {\n    rejectSpawned(error);\n    if (!currentExit) {\n      currentExit = { code: null, signal: null, error };\n      resolveExited(currentExit);\n    }\n  });\n  child.once(\"exit\", (code, signal) => {\n    if (!currentExit) {\n      currentExit = { code, signal };\n      resolveExited(currentExit);\n    }\n  });\n\n  if (child.exitCode !== null || child.signalCode !== null) {\n    currentExit = { code: child.exitCode, signal: child.signalCode };\n    resolveSpawned();\n    resolveExited(currentExit);\n  }\n\n  return { spawned, exited, currentExit: () => currentExit };\n}\n\nasync function waitForChrome(\n  cdpUrl: string,\n  monitor: ChromeProcessMonitor,\n  signal: AbortSignal | undefined,\n  fetchImplementation: typeof globalThis.fetch,\n): Promise<void> {\n  while (true) {\n    throwIfAborted(signal);\n    const exited = monitor.currentExit();\n    if (exited) throw chromeExitedBeforeReadyError(exited);\n\n    const outcome = await abortable(\n      Promise.race([\n        chromeDebuggingReady(cdpUrl, signal, fetchImplementation).then((ready) => ({\n          kind: \"ready\" as const,\n          ready,\n        })),\n        monitor.exited.then((exit) => ({ kind: \"exit\" as const, exit })),\n      ]),\n      signal,\n    );\n    if (outcome.kind === \"exit\") throw chromeExitedBeforeReadyError(outcome.exit);\n    if (outcome.ready) {\n      const exitAfterReadiness = monitor.currentExit();\n      if (exitAfterReadiness) throw chromeExitedBeforeReadyError(exitAfterReadiness);\n      return;\n    }\n\n    await abortable(\n      Promise.race([\n        abortableDelay(CHROME_POLL_INTERVAL_MS, signal),\n        monitor.exited.then((exit) => {\n          throw chromeExitedBeforeReadyError(exit);\n        }),\n      ]),\n      signal,\n    );\n  }\n}\n\nasync function chromeDebuggingReady(\n  cdpUrl: string,\n  signal: AbortSignal | undefined,\n  fetchImplementation: typeof globalThis.fetch,\n): Promise<boolean> {\n  const requestController = new AbortController();\n  const timeoutId = setTimeout(() => requestController.abort(), CHROME_REQUEST_TIMEOUT_MS);\n  const requestSignal = signal\n    ? AbortSignal.any([signal, requestController.signal])\n    : requestController.signal;\n  try {\n    const response = await fetchImplementation(`${cdpUrl.replace(/\\/$/, \"\")}/json/version`, {\n      signal: requestSignal,\n    });\n    if (!response.ok) return false;\n    const version: unknown = await response.json();\n    return (\n      typeof version === \"object\" &&\n      version !== null &&\n      \"webSocketDebuggerUrl\" in version &&\n      typeof version.webSocketDebuggerUrl === \"string\" &&\n      version.webSocketDebuggerUrl.trim().length > 0\n    );\n  } catch {\n    throwIfAborted(signal);\n    return false;\n  } finally {\n    clearTimeout(timeoutId);\n  }\n}\n\nfunction chromeExitedBeforeReadyError(exit: ChromeProcessExit): Error {\n  if (exit.error) {\n    return new Error(`Chrome exited before its debugging port was ready: ${exit.error.message}`, {\n      cause: exit.error,\n    });\n  }\n  const detail = exit.signal ? `signal ${exit.signal}` : `code ${exit.code ?? \"unknown\"}`;\n  return new Error(`Chrome exited before its debugging port was ready with ${detail}`);\n}\n\nfunction memoizedChromeClose(\n  child: ChildProcess,\n  monitor: ChromeProcessMonitor,\n  userDataDir: string,\n  removeProfile: boolean,\n  dependencies: LocalBrowserLauncherDependencies,\n): () => Promise<void> {\n  let closePromise: Promise<void> | undefined;\n  return () => {\n    closePromise ??= closeChrome(child, monitor, userDataDir, removeProfile, dependencies);\n    return closePromise;\n  };\n}\n\nasync function closeChrome(\n  child: ChildProcess,\n  monitor: ChromeProcessMonitor,\n  userDataDir: string,\n  removeProfile: boolean,\n  dependencies: LocalBrowserLauncherDependencies,\n): Promise<void> {\n  let processError: unknown;\n  try {\n    await closeChromeProcess(child, monitor, dependencies);\n  } catch (error) {\n    processError = error;\n  }\n\n  let profileError: unknown;\n  if (removeProfile) {\n    try {\n      await dependencies.rm(userDataDir, { force: true, recursive: true });\n    } catch (error) {\n      profileError = error;\n    }\n  }\n\n  if (processError && profileError) {\n    throw new AggregateError(\n      [processError, profileError],\n      \"Chrome termination and profile cleanup both failed\",\n    );\n  }\n  if (processError) throw processError;\n  if (profileError) throw profileError;\n}\n\nasync function closeChromeProcess(\n  child: ChildProcess,\n  monitor: ChromeProcessMonitor,\n  dependencies: LocalBrowserLauncherDependencies,\n): Promise<void> {\n  if (monitor.currentExit()) return;\n  const pid = child.pid;\n  if (pid === undefined) return;\n\n  try {\n    await terminateChromeProcess(pid, false, dependencies);\n  } catch (error) {\n    if (!isFinishedProcessError(error)) throw error;\n  }\n  if (await waitForExit(monitor, CHROME_TERMINATION_TIMEOUT_MS)) return;\n\n  try {\n    await terminateChromeProcess(pid, true, dependencies);\n  } catch (error) {\n    if (!isFinishedProcessError(error)) throw error;\n  }\n  await monitor.exited;\n}\n\nasync function terminateChromeProcess(\n  pid: number,\n  force: boolean,\n  dependencies: Pick<\n    LocalBrowserLauncherDependencies,\n    \"platform\" | \"runTaskkill\" | \"signalProcess\"\n  >,\n): Promise<void> {\n  if (dependencies.platform === \"win32\") {\n    await dependencies.runTaskkill(pid, force);\n    return;\n  }\n  dependencies.signalProcess(-pid, force ? \"SIGKILL\" : \"SIGTERM\");\n}\n\nasync function waitForExit(monitor: ChromeProcessMonitor, timeoutMs: number): Promise<boolean> {\n  if (monitor.currentExit()) return true;\n  return await new Promise<boolean>((resolve) => {\n    const timeoutId = setTimeout(() => resolve(false), timeoutMs);\n    void monitor.exited.then(() => {\n      clearTimeout(timeoutId);\n      resolve(true);\n    });\n  });\n}\n\nfunction isFinishedProcessError(error: unknown): boolean {\n  return (\n    typeof error === \"object\" &&\n    error !== null &&\n    \"code\" in error &&\n    (error.code === \"ESRCH\" || error.code === 128)\n  );\n}\n\nasync function runTaskkill(pid: number, force: boolean): Promise<void> {\n  const args = [\"/PID\", String(pid), \"/T\", ...(force ? [\"/F\"] : [])];\n  const taskkill = spawn(\"taskkill\", args, { stdio: \"ignore\" });\n  await new Promise<void>((resolve, reject) => {\n    taskkill.once(\"error\", reject);\n    taskkill.once(\"exit\", (code) => {\n      if (code === 0) resolve();\n      else\n        reject(\n          Object.assign(new Error(`taskkill exited with code ${code ?? \"unknown\"}`), { code }),\n        );\n    });\n  });\n}\n\n/** @internal */\nexport function createLocalBrowserLauncherForTest(\n  overrides: Partial<LocalBrowserLauncherDependencies>,\n): LocalBrowserLauncher {\n  const dependencies = { ...defaultDependencies, ...overrides };\n  return async (options, signal) => await launchChrome(options, signal, dependencies);\n}\n","import { abortable } from \"./abort.js\";\n\nexport const STAGEHAND_INIT_TIMEOUT_MS = 60_000;\n\nexport async function withStagehandInitDeadline<T>(\n  operation: (signal: AbortSignal) => Promise<T>,\n): Promise<T> {\n  const controller = new AbortController();\n  const timeoutId = setTimeout(() => {\n    controller.abort(\n      new Error(`Stagehand initialization timed out after ${STAGEHAND_INIT_TIMEOUT_MS}ms`),\n    );\n  }, STAGEHAND_INIT_TIMEOUT_MS);\n\n  try {\n    return await abortable(operation(controller.signal), controller.signal);\n  } finally {\n    clearTimeout(timeoutId);\n  }\n}\n","import type { StagehandInitParams } from \"@browserbasehq/stagehand-protocol/types\";\nimport {\n  BrowserbaseConnectOptionsSchema,\n  BrowserbaseFetchOptionsSchema,\n  BrowserbaseLaunchOptionsSchema,\n  BrowserbaseSearchOptionsSchema,\n  LocalBrowserConnectOptionsSchema,\n  LocalBrowserLaunchOptionsSchema,\n} from \"../clientSchemas.js\";\nimport {\n  claimStagehandBrowserHandle,\n  createStagehandBrowserHandle,\n  invalidateStagehandBrowserHandle,\n  isStagehandBrowser,\n  releaseStagehandBrowserHandle,\n  type BrowserbaseBrowser,\n  type LocalBrowser,\n  type StagehandBrowser,\n  type StagehandBrowserOrigin,\n  type StagehandBrowserProvider,\n} from \"./index.js\";\nimport { CDPClient, CDPConnectionClosedError, type CDPClientOptions } from \"../cdpClient.js\";\nimport {\n  createBrowserbaseSessionClient,\n  type BrowserbaseSessionClient,\n} from \"./browserbaseSession.js\";\nimport {\n  createBrowserbaseServicesClient,\n  type BrowserbaseServicesClient,\n} from \"./browserbaseServices.js\";\nimport { launchLocalBrowser, type LocalBrowserLauncher } from \"./localBrowser.js\";\nimport { STAGEHAND_EXTENSION_DIRECTORY_PATH } from \"../extensionAssets.js\";\nimport { abortable } from \"../abort.js\";\nimport { withStagehandInitDeadline } from \"../timeouts.js\";\n\nexport { isStagehandBrowser };\nexport type { BrowserbaseBrowser, LocalBrowser, StagehandBrowser } from \"./index.js\";\n\nexport type StagehandWorkerInitMetadata = Pick<StagehandInitParams, \"apiKey\" | \"browser\">;\n\nexport type ClaimedStagehandBrowser = {\n  cdpClient: CDPClient;\n  workerInitMetadata: StagehandWorkerInitMetadata;\n};\n\ntype BrowserFactoryDependencies = {\n  launchLocalBrowser?: LocalBrowserLauncher;\n  createBrowserbaseSessionClient?: (apiKey: string, baseUrl: string) => BrowserbaseSessionClient;\n  createBrowserbaseServicesClient?: (apiKey: string, baseUrl: string) => BrowserbaseServicesClient;\n  connectCdp?: (options: CDPClientOptions) => Promise<CDPClient>;\n};\n\ntype BrowserConnectionSource = {\n  cdpUrl: string;\n  keepAlive: boolean;\n  close?: () => Promise<void> | void;\n};\n\nfunction createBrowserFactories(dependencies: BrowserFactoryDependencies = {}): {\n  localBrowser: LocalBrowser;\n  browserbase: BrowserbaseBrowser;\n} {\n  const launchLocal = dependencies.launchLocalBrowser ?? launchLocalBrowser;\n  const createBrowserbase =\n    dependencies.createBrowserbaseSessionClient ?? createBrowserbaseSessionClient;\n  const createBrowserbaseServices =\n    dependencies.createBrowserbaseServicesClient ?? createBrowserbaseServicesClient;\n  const connectCdp = dependencies.connectCdp ?? ((options) => CDPClient.connect(options));\n\n  return {\n    localBrowser: {\n      async launch(input = {}) {\n        const options = LocalBrowserLaunchOptionsSchema.parse(input);\n        if (options.acceptDownloads === true && options.downloadsPath === undefined) {\n          throw new Error(\"downloadsPath is required when acceptDownloads is true\");\n        }\n        return await withStagehandInitDeadline(async (signal) => {\n          const launchPromise = launchLocal(options, signal);\n          let launched: Awaited<typeof launchPromise>;\n          try {\n            launched = await abortable(launchPromise, signal);\n          } catch (error) {\n            if (signal.aborted && options.keepAlive !== true) {\n              // A launcher may finish after the deadline; close that late-owned browser.\n              void launchPromise.then((lateBrowser) => lateBrowser.close()).catch(() => undefined);\n            }\n            throw error;\n          }\n          const source: BrowserConnectionSource = {\n            cdpUrl: launched.cdpUrl,\n            keepAlive: options.keepAlive ?? false,\n            close: launched.close,\n          };\n          return await connectBrowser({\n            provider: \"local\",\n            origin: \"launched\",\n            source,\n            connectCdp,\n            extension: { extensionDir: STAGEHAND_EXTENSION_DIRECTORY_PATH },\n            signal,\n            afterConnect:\n              options.acceptDownloads === undefined && options.downloadsPath === undefined\n                ? undefined\n                : async (cdpClient, commandSignal) => {\n                    await cdpClient.sendCommand(\n                      \"Browser.setDownloadBehavior\",\n                      {\n                        behavior: options.acceptDownloads === false ? \"deny\" : \"allow\",\n                        ...(options.downloadsPath === undefined\n                          ? {}\n                          : { downloadPath: options.downloadsPath }),\n                      },\n                      undefined,\n                      commandSignal,\n                    );\n                  },\n            workerInitMetadata: {},\n          });\n        });\n      },\n\n      async connect(options) {\n        const parsed = LocalBrowserConnectOptionsSchema.parse(options);\n        const source: BrowserConnectionSource = {\n          cdpUrl: parsed.cdpUrl,\n          keepAlive: true,\n        };\n        return await withStagehandInitDeadline(async (signal) =>\n          connectBrowser({\n            provider: \"local\",\n            origin: \"connected\",\n            source,\n            connectCdp,\n            extension:\n              parsed.extensionId === undefined\n                ? { extensionDir: STAGEHAND_EXTENSION_DIRECTORY_PATH }\n                : { extensionId: parsed.extensionId },\n            signal,\n            workerInitMetadata: {},\n          }),\n        );\n      },\n    },\n\n    browserbase: {\n      async launch(input) {\n        const { apiKey, baseUrl, ...sessionOptions } = BrowserbaseLaunchOptionsSchema.parse(input);\n        return await withStagehandInitDeadline(async (signal) => {\n          const sessionPromise = createBrowserbase(apiKey, baseUrl).createSession(sessionOptions);\n          let session: Awaited<typeof sessionPromise>;\n          try {\n            session = await abortable(sessionPromise, signal);\n          } catch (error) {\n            if (signal.aborted && sessionOptions.keepAlive !== true) {\n              // A remote session may finish launching after the deadline; release it when owned.\n              void sessionPromise\n                .then((lateSession) => lateSession.close?.())\n                .catch(() => undefined);\n            }\n            throw error;\n          }\n          const source: BrowserConnectionSource = {\n            cdpUrl: session.cdpUrl,\n            keepAlive: sessionOptions.keepAlive ?? false,\n            close: session.close,\n          };\n          return await connectBrowser({\n            provider: \"browserbase\",\n            origin: \"launched\",\n            source,\n            connectCdp,\n            extension: { preloadedExtension: true },\n            signal,\n            workerInitMetadata: {\n              apiKey,\n              browser: {\n                sessionId: session.sessionId,\n                ...(sessionOptions.region === undefined ? {} : { region: sessionOptions.region }),\n              },\n            },\n          });\n        });\n      },\n\n      async connect(input) {\n        const options = BrowserbaseConnectOptionsSchema.parse(input);\n        const client = createBrowserbase(options.apiKey, options.baseUrl);\n        if (!client.connectSession) {\n          throw new Error(\"Browserbase session connection is not supported by this client\");\n        }\n        return await withStagehandInitDeadline(async (signal) => {\n          const session = await abortable(client.connectSession!(options.sessionId), signal);\n          const source: BrowserConnectionSource = {\n            cdpUrl: session.cdpUrl,\n            keepAlive: true,\n            close: session.close,\n          };\n          return await connectBrowser({\n            provider: \"browserbase\",\n            origin: \"connected\",\n            source,\n            connectCdp,\n            extension:\n              options.extensionId === undefined\n                ? { preloadedExtension: true }\n                : { extensionId: options.extensionId },\n            signal,\n            workerInitMetadata: {\n              apiKey: options.apiKey,\n              browser: {\n                sessionId: session.sessionId,\n                ...(session.region === undefined ? {} : { region: session.region }),\n              },\n            },\n          });\n        });\n      },\n\n      async search(input) {\n        const { apiKey, baseUrl, ...params } = BrowserbaseSearchOptionsSchema.parse(input);\n        return await createBrowserbaseServices(apiKey, baseUrl).search(params);\n      },\n\n      async fetch(input) {\n        const { apiKey, baseUrl, ...params } = BrowserbaseFetchOptionsSchema.parse(input);\n        return await createBrowserbaseServices(apiKey, baseUrl).fetch(params);\n      },\n    },\n  };\n}\n\nconst factories = createBrowserFactories();\nexport const localBrowser = factories.localBrowser;\nexport const browserbase = factories.browserbase;\n\n/** @internal */\nexport function createBrowserFactoriesForTest(\n  dependencies: BrowserFactoryDependencies,\n): ReturnType<typeof createBrowserFactories> {\n  return createBrowserFactories(dependencies);\n}\n\n/** @internal */\nexport function claimStagehandBrowser(browser: StagehandBrowser): ClaimedStagehandBrowser {\n  return claimStagehandBrowserHandle<ClaimedStagehandBrowser>(browser);\n}\n\n/** @internal */\nexport function releaseStagehandBrowser(browser: StagehandBrowser): void {\n  releaseStagehandBrowserHandle(browser);\n}\n\n/** @internal */\nexport function invalidateStagehandBrowser(browser: StagehandBrowser): Promise<void> {\n  return invalidateStagehandBrowserHandle(browser);\n}\n\nasync function connectBrowser(options: {\n  provider: StagehandBrowserProvider;\n  origin: StagehandBrowserOrigin;\n  source: BrowserConnectionSource;\n  connectCdp: (options: CDPClientOptions) => Promise<CDPClient>;\n  extension: { extensionDir: string } | { extensionId: string } | { preloadedExtension: true };\n  signal: AbortSignal;\n  afterConnect?: (cdpClient: CDPClient, signal: AbortSignal) => Promise<void>;\n  workerInitMetadata: StagehandWorkerInitMetadata;\n}): Promise<StagehandBrowser> {\n  const ownsSource = options.origin === \"launched\" && !options.source.keepAlive;\n  let cdpClient: CDPClient | undefined;\n  try {\n    const connectionPromise = options.connectCdp({\n      cdpUrl: options.source.cdpUrl,\n      ...options.extension,\n      serviceWorkerUrlIncludes: \"service-worker.js\",\n      signal: options.signal,\n    });\n    try {\n      cdpClient = await abortable(connectionPromise, options.signal);\n    } catch (error) {\n      if (options.signal.aborted) {\n        // An injected connector may ignore AbortSignal and resolve after the factory rejects.\n        void connectionPromise.then((lateClient) => lateClient.close()).catch(() => undefined);\n      }\n      throw error;\n    }\n    await options.afterConnect?.(cdpClient, options.signal);\n    const connectedClient = cdpClient;\n    const invalidate = async () => {\n      connectedClient.close();\n      if (ownsSource) {\n        await closeSource(options.source);\n      }\n    };\n    const close = async () => {\n      try {\n        if (options.provider === \"local\" && options.origin === \"connected\") {\n          try {\n            await connectedClient.sendCommand(\"Browser.close\");\n          } catch (error) {\n            if (!(error instanceof CDPConnectionClosedError)) throw error;\n          }\n        } else {\n          await closeSource(options.source);\n        }\n      } finally {\n        connectedClient.close();\n      }\n    };\n    return createStagehandBrowserHandle({\n      provider: options.provider,\n      origin: options.origin,\n      sessionId: options.workerInitMetadata.browser?.sessionId,\n      attachment: {\n        cdpClient: connectedClient,\n        workerInitMetadata: options.workerInitMetadata,\n      } satisfies ClaimedStagehandBrowser,\n      close,\n      invalidate,\n    });\n  } catch (error) {\n    cdpClient?.close();\n    if (ownsSource) {\n      try {\n        await closeSource(options.source);\n      } catch (cleanupError) {\n        throw new AggregateError(\n          [error, cleanupError],\n          \"Browser connection failed and browser cleanup also failed\",\n          { cause: error },\n        );\n      }\n    }\n    throw error;\n  }\n}\n\nasync function closeSource(source: BrowserConnectionSource): Promise<void> {\n  await source.close?.();\n}\n","import { RPCClient } from \"./rpcClient.js\";\nimport {\n  DefaultExtractDataSchema,\n  MAX_CALLBACK_BATCH_TIMEOUT_MS,\n  STAGEHAND_PROTOCOL_VERSION,\n  StagehandInitParamsSchema,\n} from \"@browserbasehq/stagehand-protocol/schemas\";\nimport { JSONRPCErrorObjectSchema } from \"@browserbasehq/stagehand-protocol/json-rpc/schemas\";\nimport {\n  StagehandMethods,\n  StagehandNotifications,\n} from \"@browserbasehq/stagehand-protocol/schema-registry\";\nimport type {\n  Action,\n  ActResult,\n  CallbackBatchResult,\n  DefaultExtractData,\n  ObserveResult,\n  StagehandMetrics,\n  StagehandRpcNotification,\n} from \"@browserbasehq/stagehand-protocol/types\";\nimport { z } from \"zod/v4\";\nimport { BrowserContext } from \"./browserContext.js\";\nimport { serializeClientLocatorOptions } from \"./clientLocatorOptions.js\";\nimport {\n  StagehandClientActOptionsSchema,\n  StagehandClientExtractOptionsSchema,\n  StagehandCreateOptionsSchema,\n  StagehandClientObserveOptionsSchema,\n  type StagehandClientActOptions,\n  type StagehandClientExtractOptions,\n  type ResolvedStagehandClientLoggingConfig,\n  type ResolvedStagehandClientCreateConfig,\n  type StagehandCreateOptions,\n  type StagehandClientObserveOptions,\n} from \"./clientSchemas.js\";\nimport { CDPConnectionClosedError } from \"./cdpClient.js\";\nimport { STAGEHAND_SDK_CLIENT_INFO } from \"./sdkIdentity.js\";\nimport {\n  claimStagehandBrowser,\n  invalidateStagehandBrowser,\n  releaseStagehandBrowser,\n  type ClaimedStagehandBrowser,\n  type StagehandBrowser,\n} from \"./browser/factories.js\";\nimport { attachStagehandBrowserContext, detachStagehandBrowserContext } from \"./browser/index.js\";\nimport { withStagehandInitDeadline } from \"./timeouts.js\";\nimport type { ExperimentalBatchCallback, ExperimentalBatchOptions } from \"./batch.js\";\n\ntype ProtocolExtractResult = import(\"@browserbasehq/stagehand-protocol/types\").ExtractResult;\n\nexport type ExtractResult<Schema extends z.ZodType> = Omit<ProtocolExtractResult, \"data\"> & {\n  data: z.output<Schema>;\n};\n\nconst isZodSchema = (value: unknown): value is z.ZodType =>\n  typeof value === \"object\" &&\n  value !== null &&\n  \"parse\" in value &&\n  typeof value.parse === \"function\" &&\n  \"safeParse\" in value &&\n  typeof value.safeParse === \"function\";\n\nconst nativeFunctionSourcePattern =\n  /^\\s*function(?:\\s+[^()]*)?\\([^)]*\\)\\s*\\{\\s*\\[native code\\]\\s*\\}\\s*$/;\n\nexport class Stagehand {\n  isInitialized = false;\n  rpcClient: RPCClient | undefined;\n  removeNotificationListener: (() => void) | undefined;\n  removeClientLLMHandler: (() => void) | undefined;\n  closePromise: Promise<void> | undefined;\n  initRequestStarted = false;\n\n  private constructor(\n    private readonly browserHandle: StagehandBrowser,\n    private readonly createConfig: ResolvedStagehandClientCreateConfig,\n  ) {}\n\n  static async create(input: StagehandCreateOptions): Promise<Stagehand> {\n    const { browser, ...createConfig } = StagehandCreateOptionsSchema.parse(input);\n    const claimedBrowser = claimStagehandBrowser(browser);\n    const stagehand = new Stagehand(browser, createConfig);\n    let lifecycleSignal: AbortSignal | undefined;\n    try {\n      await withStagehandInitDeadline((signal) => {\n        lifecycleSignal = signal;\n        return stagehand.initialize(claimedBrowser, signal);\n      });\n      return stagehand;\n    } catch (error) {\n      const initFailureIsAmbiguous =\n        lifecycleSignal?.aborted ||\n        (stagehand.initRequestStarted && !isDefinitiveRPCErrorResponse(error));\n      if (initFailureIsAmbiguous) {\n        try {\n          await invalidateStagehandBrowser(browser);\n        } catch (cleanupError) {\n          throw new AggregateError(\n            [error, cleanupError],\n            \"Stagehand initialization failed ambiguously and browser invalidation also failed\",\n            { cause: error },\n          );\n        }\n      } else {\n        releaseStagehandBrowser(browser);\n      }\n      throw error;\n    }\n  }\n\n  get browser(): StagehandBrowser {\n    return this.browserHandle;\n  }\n\n  get initialized(): boolean {\n    return this.isInitialized;\n  }\n\n  async metrics(): Promise<StagehandMetrics> {\n    return this.connectedRpcClient.send(StagehandMethods.stagehandMetrics, {});\n  }\n\n  async experimentalBatch<Result>(\n    callback: ExperimentalBatchCallback<undefined, Result>,\n  ): Promise<Awaited<Result>>;\n  async experimentalBatch<Input, Result>(\n    callback: ExperimentalBatchCallback<Input, Result>,\n    input: Input,\n    options?: ExperimentalBatchOptions,\n  ): Promise<Awaited<Result>>;\n  async experimentalBatch<Input, Result>(\n    callback: ExperimentalBatchCallback<Input, Result>,\n    input?: Input,\n    options: ExperimentalBatchOptions = {},\n  ): Promise<Awaited<Result>> {\n    if (typeof callback !== \"function\") {\n      throw new TypeError(\"stagehand.experimentalBatch() requires a callback function\");\n    }\n    if (options === null || typeof options !== \"object\" || Array.isArray(options)) {\n      throw new TypeError(\"stagehand.experimentalBatch() options must be an object\");\n    }\n    const parsedInput = input === undefined ? undefined : z.json().parse(input);\n    const timeout = options.timeout ?? 30_000;\n    if (!Number.isInteger(timeout) || timeout <= 0) {\n      throw new RangeError(\"stagehand.experimentalBatch() timeout must be a positive integer\");\n    }\n    if (timeout > MAX_CALLBACK_BATCH_TIMEOUT_MS) {\n      throw new RangeError(\n        `stagehand.experimentalBatch() timeout must not exceed ${MAX_CALLBACK_BATCH_TIMEOUT_MS} milliseconds`,\n      );\n    }\n    const callbackSource = Function.prototype.toString.call(callback);\n    if (nativeFunctionSourcePattern.test(callbackSource)) {\n      throw new TypeError(\"stagehand.experimentalBatch() callback must be serializable JavaScript\");\n    }\n\n    const result: CallbackBatchResult = await this.connectedRpcClient.send(\n      StagehandMethods.stagehandCallbackBatch,\n      {\n        callbackSource,\n        ...(parsedInput === undefined ? {} : { input: parsedInput }),\n        options: {\n          ...(options.page ? { pageId: options.page.pageId } : {}),\n          timeout,\n        },\n      },\n    );\n    return result.value as Awaited<Result>;\n  }\n\n  private async initialize(browser: ClaimedStagehandBrowser, signal: AbortSignal): Promise<void> {\n    const createConfig = this.createConfig;\n    const rpcClient = new RPCClient(browser.cdpClient);\n    this.rpcClient = rpcClient;\n\n    try {\n      this.removeNotificationListener = rpcClient.onNotification((notification) =>\n        handleStagehandNotification(notification, createConfig.logging),\n      );\n      if (createConfig.model && \"generate\" in createConfig.model) {\n        this.removeClientLLMHandler = rpcClient.onRequest(\n          StagehandMethods.llmGenerate,\n          createConfig.model.generate,\n        );\n      }\n\n      this.initRequestStarted = true;\n      await rpcClient.sendStagehandInit(\n        stagehandCreateParamsForWorker(createConfig, browser),\n        signal,\n      );\n      attachStagehandBrowserContext(\n        this.browserHandle,\n        new BrowserContext(rpcClient, () => this.browserHandle.close()),\n      );\n    } catch (error) {\n      this.removeClientLLMHandler?.();\n      this.removeClientLLMHandler = undefined;\n      this.removeNotificationListener?.();\n      this.removeNotificationListener = undefined;\n      rpcClient.close(new Error(\"Stagehand initialization failed\", { cause: error }), {\n        closeTransport: false,\n      });\n      this.rpcClient = undefined;\n      throw error;\n    }\n\n    this.isInitialized = true;\n    this.closePromise = undefined;\n  }\n\n  async act(instruction: string, options?: StagehandClientActOptions): Promise<ActResult>;\n  async act(instruction: Action, options?: StagehandClientActOptions): Promise<ActResult>;\n  async act(instruction: string | Action, options?: StagehandClientActOptions): Promise<ActResult> {\n    const { page, ...clientOptions } = StagehandClientActOptionsSchema.parse(options ?? {});\n    const targetPage = page ?? (await this.browser.context.activePage());\n    if (!targetPage) throw new Error(\"Stagehand has no active page.\");\n    const protocolOptions = serializeClientLocatorOptions(\"act\", targetPage.pageId, clientOptions);\n    const response = await this.connectedRpcClient.send(StagehandMethods.stagehandAct, {\n      pageId: targetPage.pageId,\n      instruction,\n      ...(options === undefined ? {} : { options: protocolOptions }),\n    });\n\n    return response;\n  }\n\n  async observe(\n    instruction?: string,\n    options?: StagehandClientObserveOptions,\n  ): Promise<ObserveResult> {\n    const { page, ...clientOptions } = StagehandClientObserveOptionsSchema.parse(options ?? {});\n    const targetPage = page ?? (await this.browser.context.activePage());\n    if (!targetPage) throw new Error(\"Stagehand has no active page.\");\n    const protocolOptions = serializeClientLocatorOptions(\n      \"observe\",\n      targetPage.pageId,\n      clientOptions,\n    );\n    const response = await this.connectedRpcClient.send(StagehandMethods.stagehandObserve, {\n      pageId: targetPage.pageId,\n      ...(instruction === undefined ? {} : { instruction }),\n      ...(options === undefined ? {} : { options: protocolOptions }),\n    });\n\n    return response;\n  }\n\n  async extract(\n    instruction: string,\n    options?: StagehandClientExtractOptions,\n  ): Promise<ExtractResult<z.ZodType<DefaultExtractData>>>;\n  async extract<Schema extends z.ZodType>(\n    instruction: string,\n    schema: Schema,\n    options?: StagehandClientExtractOptions,\n  ): Promise<ExtractResult<Schema>>;\n  async extract<Schema extends z.ZodType | StagehandClientExtractOptions>(\n    instruction: string,\n    schema?: Schema,\n    options?: StagehandClientExtractOptions,\n  ): Promise<ExtractResult<z.ZodType>> {\n    const hasCustomSchema = isZodSchema(schema);\n    const resolvedSchema = hasCustomSchema ? schema : DefaultExtractDataSchema;\n    const resolvedOptions = hasCustomSchema ? options : schema;\n    const { page, ...clientOptions } = StagehandClientExtractOptionsSchema.parse(\n      resolvedOptions ?? {},\n    );\n    const targetPage = page ?? (await this.browser.context.activePage());\n    if (!targetPage) throw new Error(\"Stagehand has no active page.\");\n    const protocolOptions = serializeClientLocatorOptions(\n      \"extract\",\n      targetPage.pageId,\n      clientOptions,\n    );\n    const response = await this.connectedRpcClient.send(StagehandMethods.stagehandExtract, {\n      pageId: targetPage.pageId,\n      instruction,\n      ...(hasCustomSchema ? { schema: z.json().parse(z.toJSONSchema(resolvedSchema)) } : {}),\n      ...(resolvedOptions === undefined ? {} : { options: protocolOptions }),\n    });\n\n    return {\n      ...response,\n      data: resolvedSchema.parse(response.data),\n    };\n  }\n\n  close(): Promise<void> {\n    this.closePromise ??= (async () => {\n      let shouldReleaseBrowserClaim = !this.isInitialized;\n      try {\n        if (this.isInitialized) {\n          try {\n            await this.rpcClient?.send(StagehandMethods.stagehandClose, {});\n            shouldReleaseBrowserClaim = true;\n          } catch (error) {\n            if (!(error instanceof CDPConnectionClosedError)) throw error;\n            shouldReleaseBrowserClaim = true;\n          }\n        }\n      } finally {\n        this.removeClientLLMHandler?.();\n        this.removeClientLLMHandler = undefined;\n        this.removeNotificationListener?.();\n        this.removeNotificationListener = undefined;\n        this.rpcClient?.close(new Error(\"Stagehand closed\"), { closeTransport: false });\n        this.rpcClient = undefined;\n        detachStagehandBrowserContext(this.browserHandle);\n        if (shouldReleaseBrowserClaim) releaseStagehandBrowser(this.browserHandle);\n        this.isInitialized = false;\n      }\n    })();\n    return this.closePromise;\n  }\n\n  private get connectedRpcClient(): RPCClient {\n    if (!this.isInitialized || !this.rpcClient) {\n      throw new Error(\n        \"Stagehand is unavailable. Create a new instance with await Stagehand.create().\",\n      );\n    }\n    return this.rpcClient;\n  }\n}\n\nfunction isDefinitiveRPCErrorResponse(error: unknown): boolean {\n  return error instanceof Error && JSONRPCErrorObjectSchema.safeParse(error.cause).success;\n}\n\nfunction stagehandCreateParamsForWorker(\n  createConfig: ResolvedStagehandClientCreateConfig,\n  browser: ClaimedStagehandBrowser,\n) {\n  const { logging, model, ...protocolParams } = createConfig;\n  const protocolModel = model && \"generate\" in model ? { source: \"client\" as const } : model;\n\n  return StagehandInitParamsSchema.parse({\n    protocolVersion: STAGEHAND_PROTOCOL_VERSION,\n    clientInfo: STAGEHAND_SDK_CLIENT_INFO,\n    browserCdpUrl: browser.cdpClient.webSocketDebuggerUrl,\n    logLevel: logging.level,\n    ...protocolParams,\n    ...browser.workerInitMetadata,\n    ...(protocolModel === undefined ? {} : { model: protocolModel }),\n  });\n}\n\nconst LOG_LEVEL_PRIORITY = {\n  debug: 10,\n  info: 20,\n  warn: 30,\n  error: 40,\n  off: Number.POSITIVE_INFINITY,\n} as const;\n\nfunction handleStagehandNotification(\n  notification: StagehandRpcNotification,\n  logging: ResolvedStagehandClientLoggingConfig,\n): void {\n  if (notification.method !== StagehandNotifications.log.name) return;\n  const log = notification.params;\n  if (LOG_LEVEL_PRIORITY[log.level] < LOG_LEVEL_PRIORITY[logging.level]) return;\n\n  process.stderr.write(renderStagehandLog(log, logging.format) + \"\\n\");\n  if (!logging.onLog) return;\n\n  try {\n    const result = logging.onLog(log);\n    if (result && typeof result === \"object\" && \"then\" in result) {\n      void Promise.resolve(result).catch(reportOnLogError);\n    }\n  } catch (error) {\n    reportOnLogError(error);\n  }\n}\n\nfunction renderStagehandLog(\n  log: Extract<StagehandRpcNotification, { method: \"stagehand.log\" }>[\"params\"],\n  format: ResolvedStagehandClientLoggingConfig[\"format\"],\n): string {\n  if (format === \"json\") return JSON.stringify(log);\n\n  const data = Object.keys(log.data).length === 0 ? \"\" : ` ${JSON.stringify(log.data)}`;\n  return `[stagehand] ${log.level.toUpperCase()} ${log.message}${data}`;\n}\n\nfunction reportOnLogError(error: unknown): void {\n  const message = error instanceof Error ? error.message : String(error);\n  process.stderr.write(`[stagehand] ERROR onLog callback failed: ${message}\\n`);\n}\n"],"x_google_ignoreList":[1,2,3,4,5,6,7],"mappings":"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"}