@browserbasehq/stagehand 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -21
- package/dist/assets/stagehand-extension.zip +0 -0
- package/dist/extension/service-worker.js +1 -0
- package/dist/index.d.mts +11 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +10 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/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-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 ContextCloseResultSchema = z\n .strictObject({\n closed: z.literal(true),\n })\n .meta({ id: \"ContextCloseResult\" });\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.literal(\"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 type: z.enum([\"png\", \"jpeg\"]),\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 ContextCloseResultSchema,\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 contextClose: {\n name: \"context.close\",\n params: EmptyParamsSchema,\n result: ContextCloseResultSchema,\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\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 \"../../protocol/schemas.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\nimport type {\n LocatorClickParams,\n LocatorCentroidResult,\n LocatorDescriptor,\n LocatorHighlightParams,\n LocatorScrollToParams,\n LocatorSelectOptionParams,\n LocatorSendClickEventParams,\n LocatorTypeParams,\n} from \"../../protocol/types.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods, StagehandNotifications } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport type * as ProtocolTypes from \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\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(readonly rpcClient: StagehandCommandClient) {}\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 remote context. Call Stagehand.close() to dispose the SDK's local resources. */\n async close(): Promise<void> {\n await this.rpcClient.send(StagehandMethods.contextClose, {});\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, RuntimeDescriptor } from \"../../protocol/types.js\";\nimport { RuntimeDescriptorSchema, STAGEHAND_PROTOCOL_VERSION } from \"../../protocol/schemas.js\";\nimport { checkProtocolCompatibility } from \"../../protocol/protocol-version.js\";\nimport { z } from \"zod/v4\";\n\nexport type RuntimeRequirement = {\n protocolVersion: string;\n};\nexport type RuntimeCompatibility =\n | {\n kind: \"compatible\";\n protocolVersion: string;\n serverInfo: ImplementationInfo;\n }\n | {\n kind: \"incompatible\";\n reason:\n | \"protocol-invalid-version\"\n | \"protocol-major-mismatch\"\n | \"protocol-server-too-old\"\n | \"protocol-prerelease-mismatch\";\n detail: string;\n required: RuntimeRequirement;\n reported: RuntimeDescriptor;\n }\n | {\n kind: \"unknown\";\n reason: \"missing-marker\" | \"unreadable-marker\";\n detail: string;\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 = RuntimeDescriptorSchema.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 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: Extract<RuntimeCompatibility, { kind: \"incompatible\" }>[\"reason\"],\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: RuntimeDescriptor): RuntimeDescriptor {\n return {\n protocolVersion: value.protocolVersion,\n serverInfo: { ...value.serverInfo },\n };\n}\n\nfunction incompatible(\n reason: Extract<RuntimeCompatibility, { kind: \"incompatible\" }>[\"reason\"],\n detail: string,\n required: RuntimeRequirement,\n reported: RuntimeDescriptor,\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 \"../../protocol/json-rpc/types.js\";\nimport {\n STAGEHAND_SEND_TO_HOST_BINDING,\n StagehandMethods,\n StagehandSendToHostBindingSchema,\n} from \"../../protocol/schema-registry.js\";\nimport { z } from \"zod/v4\";\nimport {\n DEFAULT_RUNTIME_REQUIREMENT,\n negotiateRuntimeCompatibility,\n type RuntimeCompatibility,\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 class StagehandRuntimeIncompatibleError extends Error {\n readonly reason;\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 this.name = \"StagehandRuntimeIncompatibleError\";\n this.reason = compatibility.reason;\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\nexport class CDPConnectionClosedError extends Error {\n constructor() {\n super(\"CDP connection closed\");\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 const error = asError((event as Event & { error?: unknown }).error ?? event);\n this.rejectPending(error);\n this.onerror?.(error);\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 serviceWorker: TargetInfo;\n let attached: { sessionId: string };\n let extensionId: string | undefined;\n\n if (options.preloadedExtension) {\n const discovered = await waitForPreloadedStagehandServiceWorker(client, {\n urlIncludes: options.serviceWorkerUrlIncludes,\n runtimeRequirement: options.runtimeRequirement,\n allowFallbackInstall: options.allowFallbackInstall,\n signal,\n });\n serviceWorker = discovered.serviceWorker;\n attached = { sessionId: discovered.sessionId };\n extensionId = extensionIdFromUrl(serviceWorker.url);\n } else {\n extensionId = options.extensionDir\n ? await loadUnpackedExtension(client, options.extensionDir, signal)\n : options.extensionId;\n serviceWorker = await waitForServiceWorker(client, {\n extensionId,\n urlIncludes: options.serviceWorkerUrlIncludes,\n signal,\n });\n 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\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 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 === false)\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 waitForPreloadedStagehandServiceWorker(\n cdp: CDPCommandSender,\n options: {\n urlIncludes?: string;\n pollIntervalMs?: number;\n delayFn?: (ms: number) => Promise<void>;\n runtimeRequirement?: RuntimeRequirement;\n allowFallbackInstall?: boolean;\n signal: AbortSignal;\n },\n): Promise<{ serviceWorker: TargetInfo; sessionId: string }> {\n const pollIntervalMs = options.pollIntervalMs ?? 100;\n const delayFn = options.delayFn ?? delay;\n const workerUrlIncludes = options.urlIncludes ?? \"service-worker.js\";\n\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 candidates = targets.targetInfos.filter(\n (target) =>\n target.type === \"service_worker\" &&\n target.url.startsWith(\"chrome-extension://\") &&\n target.url.includes(workerUrlIncludes),\n );\n let incompatibleRuntime: Extract<RuntimeCompatibility, { kind: \"incompatible\" }> | undefined;\n for (const serviceWorker of candidates) {\n let sessionId: string | undefined;\n let keepAttached = false;\n try {\n const attached = await cdp.sendCommand<{ sessionId: string }>(\n \"Target.attachToTarget\",\n {\n targetId: serviceWorker.targetId,\n flatten: true,\n },\n undefined,\n options.signal,\n );\n sessionId = attached.sessionId;\n const evaluated = await evaluateRuntimeReadiness(cdp, sessionId, options.signal);\n if (!evaluated.exceptionDetails) {\n const readiness = parseRuntimeReadiness(evaluated.result?.value);\n const compatibility = negotiateRuntimeCompatibility(\n options.runtimeRequirement ?? DEFAULT_RUNTIME_REQUIREMENT,\n readiness.marker,\n );\n if (compatibility.kind === \"compatible\" && readiness.hasReceiver) {\n keepAttached = true;\n return { serviceWorker, sessionId };\n }\n if (compatibility.kind === \"incompatible\" && options.allowFallbackInstall === false) {\n incompatibleRuntime = compatibility;\n }\n }\n } catch {\n throwIfAborted(options.signal);\n // The worker may still be starting. Detach and retry until initialization is cancelled.\n } finally {\n if (sessionId && !keepAttached) {\n await cdp\n .sendCommand(\"Target.detachFromTarget\", { sessionId }, undefined, options.signal)\n .catch(() => undefined);\n }\n }\n }\n\n if (incompatibleRuntime) {\n throw new StagehandRuntimeIncompatibleError(incompatibleRuntime);\n }\n await abortable(delayFn(pollIntervalMs), options.signal);\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\nfunction extensionIdFromUrl(url: string): string | undefined {\n const match = /^chrome-extension:\\/\\/([^/]+)\\//u.exec(url);\n return match?.[1];\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 (options.extensionId\n ? target.url.startsWith(`chrome-extension://${options.extensionId}/`)\n : true) &&\n target.url.includes(workerUrlIncludes),\n );\n\n if (serviceWorker) return serviceWorker;\n\n if (\n options.extensionId &&\n !activationTargetId &&\n Date.now() - startedAt >= activationDelayMs\n ) {\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 \"../../protocol/json-rpc/schemas.js\";\nimport type {\n JSONRPCMessage,\n JSONRPCRequest,\n JSONRPCResponse,\n} from \"../../protocol/json-rpc/types.js\";\nimport { encodeWireValue, wireSchema } from \"../../protocol/json-rpc/wire-casing.js\";\nimport {\n StagehandMethods,\n StagehandRpcNotificationSchema,\n} from \"../../protocol/schema-registry.js\";\nimport type { StagehandRpcNotification } from \"../../protocol/types.js\";\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.contextClose.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 BrowserbaseLaunchOptions,\n LocalBrowserConnectOptions,\n LocalBrowserLaunchOptions,\n} from \"../clientSchemas.js\";\nimport type { BrowserContext } from \"../browserContext.js\";\n\nexport type {\n BrowserbaseConnectOptions,\n BrowserbaseLaunchOptions,\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}\n\ntype BrowserHandleInternals = {\n claimed: boolean;\n attachment: unknown;\n context?: BrowserContext;\n close: () => Promise<void> | void;\n closePromise?: 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)?.closePromise !== 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.closePromise ??= Promise.resolve().then(internals.close);\n return internals.closePromise;\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 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 },\n options.sessionId,\n );\n}\n\n/** @internal */\nexport function claimStagehandBrowserHandle<Attachment>(browser: StagehandBrowser): Attachment {\n const internals = requireBrowserHandleInternals(browser);\n if (internals.closePromise) {\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 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 \"../../protocol/schemas.js\";\nimport type { StagehandLog } from \"../../protocol/types.js\";\nimport {\n ActOptionsSchema,\n BrowserbaseRegionSchema,\n ExtractOptionsSchema,\n LLMGenerateParamsSchema,\n LLMGenerateResultSchema,\n ModelConfigSchema,\n ObserveOptionsSchema,\n StagehandInitParamsSchema,\n StagehandLogLevelSchema,\n} from \"../../protocol/schemas.js\";\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\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 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} as const;\n","import { fileURLToPath } from \"node:url\";\n\nconst packageRoot = new URL(\"../\", import.meta.url);\n\nexport const STAGEHAND_EXTENSION_ARCHIVE_PATH = fileURLToPath(\n new URL(\"dist/assets/stagehand-extension.zip\", packageRoot),\n);\n\nexport const STAGEHAND_EXTENSION_DIRECTORY_PATH = fileURLToPath(\n new URL(\"dist/extension/\", packageRoot),\n);\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<BrowserbaseSessionConnection>;\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 return BrowserbaseSessionConnectionSchema.parse({\n sessionId: session.id.trim() || normalizedSessionId,\n cdpUrl,\n ...(session.region === undefined ? {} : { region: session.region }),\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 { mkdtemp } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport type { LocalBrowserLaunchOptions } from \"../clientSchemas.js\";\n\nexport const WEBMCP_CHROME_FLAG = \"--enable-features=WebMCPTesting,DevToolsWebMCPSupport\";\n\nconst STAGEHAND_DEFAULT_CHROME_FLAGS = [\n \"--enable-unsafe-extension-debugging\",\n \"--remote-allow-origins=*\",\n] as const;\n\nexport type LocalBrowserLauncher = (\n options: LocalBrowserLaunchOptions,\n) => Promise<{ cdpUrl: string; close: () => Promise<void> | void }>;\n\nexport const launchLocalBrowser: LocalBrowserLauncher = async (options) => {\n if (options.proxy?.username !== undefined || options.proxy?.password !== undefined) {\n throw new Error(\"Authenticated local browser proxies are not supported yet\");\n }\n const { getChromePath, launch, Launcher } = await import(\"chrome-launcher\");\n const userDataDir =\n options.userDataDir ??\n (options.preserveUserDataDir === true\n ? await mkdtemp(path.join(tmpdir(), \"stagehand-chrome-\"))\n : undefined);\n const chrome = await launch({\n chromePath: options.executablePath ?? getChromePath(),\n startingUrl: \"about:blank\",\n ignoreDefaultFlags: true,\n chromeFlags: localBrowserChromeFlags(options, Launcher.defaultFlags(), Boolean(process.env.CI)),\n userDataDir,\n ...(options.port === undefined ? {} : { port: options.port }),\n logLevel: \"silent\",\n });\n\n return {\n cdpUrl: `http://127.0.0.1:${chrome.port}`,\n close: () => chrome.kill(),\n };\n};\n\nexport function localBrowserChromeFlags(\n options: LocalBrowserLaunchOptions,\n launcherDefaultFlags: string[],\n isCI: 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\n ? launcherDefaultFlags.filter(\n (flag) => flag !== \"--disable-extensions\" && !ignoredFlags.has(flag),\n )\n : []),\n ...(includeDefaults\n ? STAGEHAND_DEFAULT_CHROME_FLAGS.filter((flag) => !ignoredFlags.has(flag))\n : []),\n ...(options.viewport !== undefined || (includeDefaults && !ignoredFlags.has(windowSizeFlag))\n ? [windowSizeFlag]\n : []),\n ...(includeDefaults && !ignoredFlags.has(WEBMCP_CHROME_FLAG) ? [WEBMCP_CHROME_FLAG] : []),\n ...(options.headless === true ? [\"--headless\"] : []),\n ...(options.devtools ? [\"--auto-open-devtools-for-tabs\"] : []),\n ...(isCI || options.chromiumSandbox === false ? [\"--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 ];\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 \"../../../protocol/types.js\";\nimport {\n BrowserbaseConnectOptionsSchema,\n BrowserbaseLaunchOptionsSchema,\n LocalBrowserConnectOptionsSchema,\n LocalBrowserLaunchOptionsSchema,\n} from \"../clientSchemas.js\";\nimport {\n claimStagehandBrowserHandle,\n createStagehandBrowserHandle,\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, type CDPClientOptions } from \"../cdpClient.js\";\nimport {\n createBrowserbaseSessionClient,\n type BrowserbaseSessionClient,\n} from \"./browserbaseSession.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 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 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);\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 };\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 };\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\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 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: async () => {\n connectedClient.close();\n if (ownsSource) {\n await closeSource(options.source);\n }\n },\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 \"../../protocol/schemas.js\";\nimport { JSONRPCErrorObjectSchema } from \"../../protocol/json-rpc/schemas.js\";\nimport { StagehandMethods, StagehandNotifications } from \"../../protocol/schema-registry.js\";\nimport type {\n Action,\n ActResult,\n CallbackBatchResult,\n DefaultExtractData,\n ObserveResult,\n StagehandMetrics,\n StagehandRpcNotification,\n} from \"../../protocol/types.js\";\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 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(\"../../protocol/types.js\").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 browser.close();\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(this.browserHandle, new BrowserContext(rpcClient));\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 try {\n if (this.isInitialized) {\n try {\n await this.rpcClient?.send(StagehandMethods.stagehandClose, {});\n } catch (error) {\n if (!(error instanceof CDPConnectionClosedError)) throw error;\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 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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"}
|
|
1
|
+
{"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/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 ContextCloseResultSchema = z\n .strictObject({\n closed: z.literal(true),\n })\n .meta({ id: \"ContextCloseResult\" });\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.literal(\"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 type: z.enum([\"png\", \"jpeg\"]),\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 ContextCloseResultSchema,\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 contextClose: {\n name: \"context.close\",\n params: EmptyParamsSchema,\n result: ContextCloseResultSchema,\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\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 \"../../protocol/schemas.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\nimport type {\n LocatorClickParams,\n LocatorCentroidResult,\n LocatorDescriptor,\n LocatorHighlightParams,\n LocatorScrollToParams,\n LocatorSelectOptionParams,\n LocatorSendClickEventParams,\n LocatorTypeParams,\n} from \"../../protocol/types.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport { StagehandMethods, StagehandNotifications } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\nimport type * as ProtocolTypes from \"../../protocol/types.js\";\nimport { StagehandMethods } from \"../../protocol/schema-registry.js\";\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 \"../../protocol/types.js\";\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(readonly rpcClient: StagehandCommandClient) {}\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 remote context. Call Stagehand.close() to dispose the SDK's local resources. */\n async close(): Promise<void> {\n await this.rpcClient.send(StagehandMethods.contextClose, {});\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, RuntimeDescriptor } from \"../../protocol/types.js\";\nimport { RuntimeDescriptorSchema, STAGEHAND_PROTOCOL_VERSION } from \"../../protocol/schemas.js\";\nimport { checkProtocolCompatibility } from \"../../protocol/protocol-version.js\";\nimport { z } from \"zod/v4\";\n\nexport type RuntimeRequirement = {\n protocolVersion: string;\n};\nexport type RuntimeCompatibility =\n | {\n kind: \"compatible\";\n protocolVersion: string;\n serverInfo: ImplementationInfo;\n }\n | {\n kind: \"incompatible\";\n reason:\n | \"protocol-invalid-version\"\n | \"protocol-major-mismatch\"\n | \"protocol-server-too-old\"\n | \"protocol-prerelease-mismatch\";\n detail: string;\n required: RuntimeRequirement;\n reported: RuntimeDescriptor;\n }\n | {\n kind: \"unknown\";\n reason: \"missing-marker\" | \"unreadable-marker\";\n detail: string;\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 = RuntimeDescriptorSchema.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 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: Extract<RuntimeCompatibility, { kind: \"incompatible\" }>[\"reason\"],\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: RuntimeDescriptor): RuntimeDescriptor {\n return {\n protocolVersion: value.protocolVersion,\n serverInfo: { ...value.serverInfo },\n };\n}\n\nfunction incompatible(\n reason: Extract<RuntimeCompatibility, { kind: \"incompatible\" }>[\"reason\"],\n detail: string,\n required: RuntimeRequirement,\n reported: RuntimeDescriptor,\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 \"../../protocol/json-rpc/types.js\";\nimport {\n STAGEHAND_SEND_TO_HOST_BINDING,\n StagehandMethods,\n StagehandSendToHostBindingSchema,\n} from \"../../protocol/schema-registry.js\";\nimport { z } from \"zod/v4\";\nimport {\n DEFAULT_RUNTIME_REQUIREMENT,\n negotiateRuntimeCompatibility,\n type RuntimeCompatibility,\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 class StagehandRuntimeIncompatibleError extends Error {\n readonly reason;\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 this.name = \"StagehandRuntimeIncompatibleError\";\n this.reason = compatibility.reason;\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\nexport class CDPConnectionClosedError extends Error {\n constructor() {\n super(\"CDP connection closed\");\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 const error = asError((event as Event & { error?: unknown }).error ?? event);\n this.rejectPending(error);\n this.onerror?.(error);\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 serviceWorker: TargetInfo;\n let attached: { sessionId: string };\n let extensionId: string | undefined;\n\n if (options.preloadedExtension) {\n const discovered = await waitForPreloadedStagehandServiceWorker(client, {\n urlIncludes: options.serviceWorkerUrlIncludes,\n runtimeRequirement: options.runtimeRequirement,\n allowFallbackInstall: options.allowFallbackInstall,\n signal,\n });\n serviceWorker = discovered.serviceWorker;\n attached = { sessionId: discovered.sessionId };\n extensionId = extensionIdFromUrl(serviceWorker.url);\n } else {\n extensionId = options.extensionDir\n ? await loadUnpackedExtension(client, options.extensionDir, signal)\n : options.extensionId;\n serviceWorker = await waitForServiceWorker(client, {\n extensionId,\n urlIncludes: options.serviceWorkerUrlIncludes,\n signal,\n });\n 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\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 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 === false)\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 waitForPreloadedStagehandServiceWorker(\n cdp: CDPCommandSender,\n options: {\n urlIncludes?: string;\n pollIntervalMs?: number;\n delayFn?: (ms: number) => Promise<void>;\n runtimeRequirement?: RuntimeRequirement;\n allowFallbackInstall?: boolean;\n signal: AbortSignal;\n },\n): Promise<{ serviceWorker: TargetInfo; sessionId: string }> {\n const pollIntervalMs = options.pollIntervalMs ?? 100;\n const delayFn = options.delayFn ?? delay;\n const workerUrlIncludes = options.urlIncludes ?? \"service-worker.js\";\n\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 candidates = targets.targetInfos.filter(\n (target) =>\n target.type === \"service_worker\" &&\n target.url.startsWith(\"chrome-extension://\") &&\n target.url.includes(workerUrlIncludes),\n );\n let incompatibleRuntime: Extract<RuntimeCompatibility, { kind: \"incompatible\" }> | undefined;\n for (const serviceWorker of candidates) {\n let sessionId: string | undefined;\n let keepAttached = false;\n try {\n const attached = await cdp.sendCommand<{ sessionId: string }>(\n \"Target.attachToTarget\",\n {\n targetId: serviceWorker.targetId,\n flatten: true,\n },\n undefined,\n options.signal,\n );\n sessionId = attached.sessionId;\n const evaluated = await evaluateRuntimeReadiness(cdp, sessionId, options.signal);\n if (!evaluated.exceptionDetails) {\n const readiness = parseRuntimeReadiness(evaluated.result?.value);\n const compatibility = negotiateRuntimeCompatibility(\n options.runtimeRequirement ?? DEFAULT_RUNTIME_REQUIREMENT,\n readiness.marker,\n );\n if (compatibility.kind === \"compatible\" && readiness.hasReceiver) {\n keepAttached = true;\n return { serviceWorker, sessionId };\n }\n if (compatibility.kind === \"incompatible\" && options.allowFallbackInstall === false) {\n incompatibleRuntime = compatibility;\n }\n }\n } catch {\n throwIfAborted(options.signal);\n // The worker may still be starting. Detach and retry until initialization is cancelled.\n } finally {\n if (sessionId && !keepAttached) {\n await cdp\n .sendCommand(\"Target.detachFromTarget\", { sessionId }, undefined, options.signal)\n .catch(() => undefined);\n }\n }\n }\n\n if (incompatibleRuntime) {\n throw new StagehandRuntimeIncompatibleError(incompatibleRuntime);\n }\n await abortable(delayFn(pollIntervalMs), options.signal);\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\nfunction extensionIdFromUrl(url: string): string | undefined {\n const match = /^chrome-extension:\\/\\/([^/]+)\\//u.exec(url);\n return match?.[1];\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 (options.extensionId\n ? target.url.startsWith(`chrome-extension://${options.extensionId}/`)\n : true) &&\n target.url.includes(workerUrlIncludes),\n );\n\n if (serviceWorker) return serviceWorker;\n\n if (\n options.extensionId &&\n !activationTargetId &&\n Date.now() - startedAt >= activationDelayMs\n ) {\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 \"../../protocol/json-rpc/schemas.js\";\nimport type {\n JSONRPCMessage,\n JSONRPCRequest,\n JSONRPCResponse,\n} from \"../../protocol/json-rpc/types.js\";\nimport { encodeWireValue, wireSchema } from \"../../protocol/json-rpc/wire-casing.js\";\nimport {\n StagehandMethods,\n StagehandRpcNotificationSchema,\n} from \"../../protocol/schema-registry.js\";\nimport type { StagehandRpcNotification } from \"../../protocol/types.js\";\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.contextClose.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 BrowserbaseLaunchOptions,\n LocalBrowserConnectOptions,\n LocalBrowserLaunchOptions,\n} from \"../clientSchemas.js\";\nimport type { BrowserContext } from \"../browserContext.js\";\n\nexport type {\n BrowserbaseConnectOptions,\n BrowserbaseLaunchOptions,\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}\n\ntype BrowserHandleInternals = {\n claimed: boolean;\n attachment: unknown;\n context?: BrowserContext;\n close: () => Promise<void> | void;\n closePromise?: 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)?.closePromise !== 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.closePromise ??= Promise.resolve().then(internals.close);\n return internals.closePromise;\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 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 },\n options.sessionId,\n );\n}\n\n/** @internal */\nexport function claimStagehandBrowserHandle<Attachment>(browser: StagehandBrowser): Attachment {\n const internals = requireBrowserHandleInternals(browser);\n if (internals.closePromise) {\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 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 \"../../protocol/schemas.js\";\nimport type { StagehandLog } from \"../../protocol/types.js\";\nimport {\n ActOptionsSchema,\n BrowserbaseRegionSchema,\n ExtractOptionsSchema,\n LLMGenerateParamsSchema,\n LLMGenerateResultSchema,\n ModelConfigSchema,\n ObserveOptionsSchema,\n StagehandInitParamsSchema,\n StagehandLogLevelSchema,\n} from \"../../protocol/schemas.js\";\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\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 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<BrowserbaseSessionConnection>;\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 return BrowserbaseSessionConnectionSchema.parse({\n sessionId: session.id.trim() || normalizedSessionId,\n cdpUrl,\n ...(session.region === undefined ? {} : { region: session.region }),\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 { mkdtemp } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport type { LocalBrowserLaunchOptions } from \"../clientSchemas.js\";\n\nexport const WEBMCP_CHROME_FLAG = \"--enable-features=WebMCPTesting,DevToolsWebMCPSupport\";\n\nconst STAGEHAND_DEFAULT_CHROME_FLAGS = [\n \"--enable-unsafe-extension-debugging\",\n \"--remote-allow-origins=*\",\n] as const;\n\nexport type LocalBrowserLauncher = (\n options: LocalBrowserLaunchOptions,\n) => Promise<{ cdpUrl: string; close: () => Promise<void> | void }>;\n\nexport const launchLocalBrowser: LocalBrowserLauncher = async (options) => {\n if (options.proxy?.username !== undefined || options.proxy?.password !== undefined) {\n throw new Error(\"Authenticated local browser proxies are not supported yet\");\n }\n const { getChromePath, launch, Launcher } = await import(\"chrome-launcher\");\n const userDataDir =\n options.userDataDir ??\n (options.preserveUserDataDir === true\n ? await mkdtemp(path.join(tmpdir(), \"stagehand-chrome-\"))\n : undefined);\n const chrome = await launch({\n chromePath: options.executablePath ?? getChromePath(),\n startingUrl: \"about:blank\",\n ignoreDefaultFlags: true,\n chromeFlags: localBrowserChromeFlags(options, Launcher.defaultFlags(), Boolean(process.env.CI)),\n userDataDir,\n ...(options.port === undefined ? {} : { port: options.port }),\n logLevel: \"silent\",\n });\n\n return {\n cdpUrl: `http://127.0.0.1:${chrome.port}`,\n close: () => chrome.kill(),\n };\n};\n\nexport function localBrowserChromeFlags(\n options: LocalBrowserLaunchOptions,\n launcherDefaultFlags: string[],\n isCI: 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\n ? launcherDefaultFlags.filter(\n (flag) => flag !== \"--disable-extensions\" && !ignoredFlags.has(flag),\n )\n : []),\n ...(includeDefaults\n ? STAGEHAND_DEFAULT_CHROME_FLAGS.filter((flag) => !ignoredFlags.has(flag))\n : []),\n ...(options.viewport !== undefined || (includeDefaults && !ignoredFlags.has(windowSizeFlag))\n ? [windowSizeFlag]\n : []),\n ...(includeDefaults && !ignoredFlags.has(WEBMCP_CHROME_FLAG) ? [WEBMCP_CHROME_FLAG] : []),\n ...(options.headless === true ? [\"--headless\"] : []),\n ...(options.devtools ? [\"--auto-open-devtools-for-tabs\"] : []),\n ...(isCI || options.chromiumSandbox === false ? [\"--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 ];\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 \"../../../protocol/types.js\";\nimport {\n BrowserbaseConnectOptionsSchema,\n BrowserbaseLaunchOptionsSchema,\n LocalBrowserConnectOptionsSchema,\n LocalBrowserLaunchOptionsSchema,\n} from \"../clientSchemas.js\";\nimport {\n claimStagehandBrowserHandle,\n createStagehandBrowserHandle,\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, type CDPClientOptions } from \"../cdpClient.js\";\nimport {\n createBrowserbaseSessionClient,\n type BrowserbaseSessionClient,\n} from \"./browserbaseSession.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 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 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);\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 };\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 };\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\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 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: async () => {\n connectedClient.close();\n if (ownsSource) {\n await closeSource(options.source);\n }\n },\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 \"../../protocol/schemas.js\";\nimport { JSONRPCErrorObjectSchema } from \"../../protocol/json-rpc/schemas.js\";\nimport { StagehandMethods, StagehandNotifications } from \"../../protocol/schema-registry.js\";\nimport type {\n Action,\n ActResult,\n CallbackBatchResult,\n DefaultExtractData,\n ObserveResult,\n StagehandMetrics,\n StagehandRpcNotification,\n} from \"../../protocol/types.js\";\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 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(\"../../protocol/types.js\").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 browser.close();\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(this.browserHandle, new BrowserContext(rpcClient));\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 try {\n if (this.isInitialized) {\n try {\n await this.rpcClient?.send(StagehandMethods.stagehandClose, {});\n } catch (error) {\n if (!(error instanceof CDPConnectionClosedError)) throw error;\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 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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"}
|