@browserbasehq/orca 3.5.0-preview.1 → 3.5.1-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/dist/cjs/lib/utils.d.ts +2 -0
- package/dist/cjs/lib/utils.js +20 -0
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AgentProvider.js +1 -0
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +1 -0
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/api.js +28 -33
- package/dist/cjs/lib/v3/api.js.map +1 -1
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +24 -24
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
- package/dist/cjs/lib/v3/index.d.ts +2 -1
- package/dist/cjs/lib/v3/llm/LLMProvider.js +18 -2
- package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/agent.d.ts +2 -2
- package/dist/cjs/lib/v3/types/public/agent.js +1 -0
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/api.d.ts +538 -27
- package/dist/cjs/lib/v3/types/public/api.js +83 -7
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/clipboard.d.ts +15 -0
- package/dist/cjs/lib/v3/types/public/clipboard.js +3 -0
- package/dist/cjs/lib/v3/types/public/clipboard.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
- package/dist/cjs/lib/v3/types/public/index.js +1 -0
- package/dist/cjs/lib/v3/types/public/index.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/model.d.ts +18 -3
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/page.d.ts +29 -0
- package/dist/cjs/lib/v3/types/public/page.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +3 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.js +8 -2
- package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/clipboard.d.ts +24 -0
- package/dist/cjs/lib/v3/understudy/clipboard.js +166 -0
- package/dist/cjs/lib/v3/understudy/clipboard.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/context.d.ts +3 -0
- package/dist/cjs/lib/v3/understudy/context.js +15 -0
- package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/page.d.ts +23 -1
- package/dist/cjs/lib/v3/understudy/page.js +283 -0
- package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
- package/dist/cjs/lib/v3/v3.js +15 -6
- package/dist/cjs/lib/v3/v3.js.map +1 -1
- package/dist/cjs/lib/version.d.ts +1 -1
- package/dist/cjs/lib/version.js +1 -1
- package/dist/cjs/lib/version.js.map +1 -1
- package/dist/esm/lib/utils.d.ts +2 -0
- package/dist/esm/lib/utils.js +18 -0
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js +1 -0
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +1 -0
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/api.js +29 -34
- package/dist/esm/lib/v3/api.js.map +1 -1
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +24 -24
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +2 -1
- package/dist/esm/lib/v3/llm/LLMProvider.js +18 -2
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agent.d.ts +2 -2
- package/dist/esm/lib/v3/types/public/agent.js +1 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/api.d.ts +538 -27
- package/dist/esm/lib/v3/types/public/api.js +81 -5
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/clipboard.d.ts +15 -0
- package/dist/esm/lib/v3/types/public/clipboard.js +2 -0
- package/dist/esm/lib/v3/types/public/clipboard.js.map +1 -0
- package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
- package/dist/esm/lib/v3/types/public/index.js +1 -0
- package/dist/esm/lib/v3/types/public/index.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +18 -3
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/types/public/page.d.ts +29 -0
- package/dist/esm/lib/v3/types/public/page.js.map +1 -1
- package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +3 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js +5 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
- package/dist/esm/lib/v3/understudy/clipboard.d.ts +24 -0
- package/dist/esm/lib/v3/understudy/clipboard.js +163 -0
- package/dist/esm/lib/v3/understudy/clipboard.js.map +1 -0
- package/dist/esm/lib/v3/understudy/context.d.ts +3 -0
- package/dist/esm/lib/v3/understudy/context.js +15 -0
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.d.ts +23 -1
- package/dist/esm/lib/v3/understudy/page.js +284 -1
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/v3.js +16 -7
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/dist/esm/lib/version.d.ts +1 -1
- package/dist/esm/lib/version.js +1 -1
- package/dist/esm/lib/version.js.map +1 -1
- package/package.json +13 -7
package/dist/cjs/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,iBAAiB,GAAG,OAAgB,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/version.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,iBAAiB,GAAG,OAAgB,CAAC","sourcesContent":["/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n * Run `pnpm run gen-version` to refresh.\n */\nexport const STAGEHAND_VERSION = \"3.5.0\" as const;\n"]}
|
package/dist/esm/lib/utils.d.ts
CHANGED
|
@@ -45,6 +45,8 @@ export declare const providerEnvVarMap: Partial<Record<ModelProvider | string, s
|
|
|
45
45
|
* @returns The API key if found, undefined otherwise
|
|
46
46
|
*/
|
|
47
47
|
export declare function loadApiKeyFromEnv(provider: string | undefined, logger: (logLine: LogLine) => void): string | undefined;
|
|
48
|
+
export declare function hasModelProviderAuth(clientOptions: unknown): boolean;
|
|
49
|
+
export declare function getInheritableModelOptions<T extends object>(clientOptions: T | undefined): Partial<T> | undefined;
|
|
48
50
|
export declare function trimTrailingTextNode(path: string | undefined): string | undefined;
|
|
49
51
|
export declare function toTitleCase(str: string): string;
|
|
50
52
|
export interface JsonSchemaProperty {
|
package/dist/esm/lib/utils.js
CHANGED
|
@@ -566,6 +566,24 @@ export function loadApiKeyFromEnv(provider, logger) {
|
|
|
566
566
|
// Don't log - this is expected when llmClient is provided or API key will be set later
|
|
567
567
|
return undefined;
|
|
568
568
|
}
|
|
569
|
+
export function hasModelProviderAuth(clientOptions) {
|
|
570
|
+
if (!clientOptions || typeof clientOptions !== "object") {
|
|
571
|
+
return false;
|
|
572
|
+
}
|
|
573
|
+
const auth = clientOptions.auth;
|
|
574
|
+
return auth !== undefined && auth !== null;
|
|
575
|
+
}
|
|
576
|
+
export function getInheritableModelOptions(clientOptions) {
|
|
577
|
+
if (!clientOptions) {
|
|
578
|
+
return undefined;
|
|
579
|
+
}
|
|
580
|
+
const inheritableOptions = {
|
|
581
|
+
...clientOptions,
|
|
582
|
+
};
|
|
583
|
+
delete inheritableOptions.apiKey;
|
|
584
|
+
delete inheritableOptions.auth;
|
|
585
|
+
return inheritableOptions;
|
|
586
|
+
}
|
|
569
587
|
export function trimTrailingTextNode(path) {
|
|
570
588
|
return path?.replace(/\/text\(\)(\[\d+\])?$/iu, "");
|
|
571
589
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodSchemaValidationError } from \"./v3/types/public/sdkErrors.js\";\nimport { Schema, Type } from \"@google/genai\";\nimport { z, ZodTypeAny } from \"zod\";\nimport z3 from \"zod/v3\";\nimport { LogLine } from \"./v3/types/public/logs.js\";\nimport { ModelProvider } from \"./v3/types/public/model.js\";\nimport { ZodPathSegments } from \"./v3/types/private/internal.js\";\nimport type { StagehandZodSchema } from \"./v3/zodCompat.js\";\nimport { isZod4Schema } from \"./v3/zodCompat.js\";\n\nconst ID_PATTERN = /^\\d+-\\d+$/;\n\nconst zFactories = {\n v4: z,\n v3: z3 as unknown as typeof z,\n};\n\nexport function getZFactory(schema: StagehandZodSchema): typeof z {\n return isZod4Schema(schema) ? zFactories.v4 : zFactories.v3;\n}\n\nconst TYPE_NAME_MAP: Record<string, string> = {\n ZodString: \"string\",\n string: \"string\",\n ZodNumber: \"number\",\n number: \"number\",\n ZodBoolean: \"boolean\",\n boolean: \"boolean\",\n ZodObject: \"object\",\n object: \"object\",\n ZodArray: \"array\",\n array: \"array\",\n ZodUnion: \"union\",\n union: \"union\",\n ZodIntersection: \"intersection\",\n intersection: \"intersection\",\n ZodOptional: \"optional\",\n optional: \"optional\",\n ZodNullable: \"nullable\",\n nullable: \"nullable\",\n ZodLiteral: \"literal\",\n literal: \"literal\",\n ZodEnum: \"enum\",\n enum: \"enum\",\n ZodDefault: \"default\",\n default: \"default\",\n ZodEffects: \"effects\",\n effects: \"effects\",\n pipe: \"pipe\",\n};\n\nfunction getZ4Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ4Bag(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.bag as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ3Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getObjectShape(\n schema: StagehandZodSchema,\n): Record<string, StagehandZodSchema> | undefined {\n const z4Shape = getZ4Def(schema)?.shape as\n | Record<string, StagehandZodSchema>\n | undefined;\n if (z4Shape) {\n return z4Shape;\n }\n\n const z3Shape = getZ3Def(schema)?.shape;\n if (!z3Shape) {\n return undefined;\n }\n\n if (typeof z3Shape === \"function\") {\n return (z3Shape as () => Record<string, StagehandZodSchema>)();\n }\n\n return z3Shape as Record<string, StagehandZodSchema>;\n}\n\nfunction getArrayElement(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.element ?? getZ3Def(schema)?.type) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getInnerType(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.innerType ?? getZ3Def(schema)?.innerType) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getUnionOptions(\n schema: StagehandZodSchema,\n): StagehandZodSchema[] | undefined {\n const z4Options = getZ4Def(schema)?.options;\n if (Array.isArray(z4Options)) {\n return z4Options as StagehandZodSchema[];\n }\n const z3Options = getZ3Def(schema)?.options;\n return Array.isArray(z3Options)\n ? (z3Options as StagehandZodSchema[])\n : undefined;\n}\n\nfunction getIntersectionSides(schema: StagehandZodSchema): {\n left?: StagehandZodSchema;\n right?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.left || z4Def?.right) {\n return {\n left: z4Def?.left as StagehandZodSchema | undefined,\n right: z4Def?.right as StagehandZodSchema | undefined,\n };\n }\n const z3Def = getZ3Def(schema);\n return {\n left: z3Def?.left as StagehandZodSchema | undefined,\n right: z3Def?.right as StagehandZodSchema | undefined,\n };\n}\n\nfunction getEnumValues(schema: StagehandZodSchema): string[] | undefined {\n const z4Entries = getZ4Def(schema)?.entries;\n if (z4Entries && typeof z4Entries === \"object\") {\n return Object.values(z4Entries as Record<string, string>);\n }\n const z3Values = getZ3Def(schema)?.values;\n return Array.isArray(z3Values) ? (z3Values as string[]) : undefined;\n}\n\nfunction getLiteralValues(schema: StagehandZodSchema): unknown[] {\n const z4Values = getZ4Def(schema)?.values;\n if (Array.isArray(z4Values)) {\n return z4Values as unknown[];\n }\n const value = getZ3Def(schema)?.value;\n return typeof value !== \"undefined\" ? [value] : [];\n}\n\nfunction getStringChecks(schema: StagehandZodSchema): unknown[] {\n const z4Checks = getZ4Def(schema)?.checks;\n if (Array.isArray(z4Checks)) {\n return z4Checks;\n }\n const z3Checks = getZ3Def(schema)?.checks;\n return Array.isArray(z3Checks) ? z3Checks : [];\n}\n\nfunction getStringFormat(schema: StagehandZodSchema): string | undefined {\n const bagFormat = getZ4Bag(schema)?.format;\n if (typeof bagFormat === \"string\") {\n return bagFormat;\n }\n const z4Format = getZ4Def(schema)?.format;\n if (typeof z4Format === \"string\") {\n return z4Format;\n }\n const z3Format = getZ3Def(schema)?.format;\n return typeof z3Format === \"string\" ? z3Format : undefined;\n}\n\nfunction getPipeEndpoints(schema: StagehandZodSchema): {\n in?: StagehandZodSchema;\n out?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.in || z4Def?.out) {\n return {\n in: z4Def?.in as StagehandZodSchema | undefined,\n out: z4Def?.out as StagehandZodSchema | undefined,\n };\n }\n return {};\n}\n\nfunction getEffectsBaseSchema(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return getZ3Def(schema)?.schema as StagehandZodSchema | undefined;\n}\n\ntype SchemaInternals = {\n _zod?: { def?: Record<string, unknown>; bag?: Record<string, unknown> };\n _def?: Record<string, unknown>;\n};\n\nexport function validateZodSchema(schema: StagehandZodSchema, data: unknown) {\n const result = schema.safeParse(data);\n\n if (result.success) {\n return true;\n }\n throw new ZodSchemaValidationError(data, result.error.format());\n}\n\n/**\n * Detects if the code is running in the Bun runtime environment.\n * @returns {boolean} True if running in Bun, false otherwise.\n */\nexport function isRunningInBun(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n \"bun\" in process.versions\n );\n}\n\n/*\n * Helper functions for converting between Gemini and Zod schemas\n */\nfunction decorateGeminiSchema(\n geminiSchema: Schema,\n zodSchema: z.ZodTypeAny,\n): Schema {\n if (geminiSchema.nullable === undefined) {\n geminiSchema.nullable = zodSchema.isOptional();\n }\n\n if (zodSchema.description) {\n geminiSchema.description = zodSchema.description;\n }\n\n return geminiSchema;\n}\n\nexport function toGeminiSchema(zodSchema: StagehandZodSchema): Schema {\n const normalizedSchema = zodSchema as z.ZodTypeAny;\n const zodType = getZodType(zodSchema);\n switch (zodType) {\n case \"array\": {\n const element = getArrayElement(zodSchema) ?? z.any();\n return decorateGeminiSchema(\n {\n type: Type.ARRAY,\n items: toGeminiSchema(element),\n },\n normalizedSchema,\n );\n }\n case \"object\": {\n const properties: Record<string, Schema> = {};\n const required: string[] = [];\n\n const shape = getObjectShape(zodSchema);\n if (shape) {\n Object.entries(shape).forEach(\n ([key, value]: [string, StagehandZodSchema]) => {\n properties[key] = toGeminiSchema(value);\n if (getZodType(value) !== \"optional\") {\n required.push(key);\n }\n },\n );\n }\n\n return decorateGeminiSchema(\n {\n type: Type.OBJECT,\n properties,\n required: required.length > 0 ? required : undefined,\n },\n normalizedSchema,\n );\n }\n case \"string\":\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n case \"number\":\n return decorateGeminiSchema(\n {\n type: Type.NUMBER,\n },\n normalizedSchema,\n );\n case \"boolean\":\n return decorateGeminiSchema(\n {\n type: Type.BOOLEAN,\n },\n normalizedSchema,\n );\n case \"enum\": {\n const values = getEnumValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values,\n },\n normalizedSchema,\n );\n }\n case \"default\":\n case \"nullable\":\n case \"optional\": {\n const innerType = getInnerType(zodSchema) ?? z.any();\n const innerSchema = toGeminiSchema(innerType);\n return decorateGeminiSchema(\n {\n ...innerSchema,\n nullable: true,\n },\n normalizedSchema,\n );\n }\n case \"literal\": {\n const values = getLiteralValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values as string[],\n },\n normalizedSchema,\n );\n }\n case \"pipe\": {\n const endpoints = getPipeEndpoints(zodSchema);\n if (endpoints.in) {\n return toGeminiSchema(endpoints.in);\n }\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n // Standalone transforms and any unknown types fall through to default\n default:\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n}\n\n// Helper function to check the type of Zod schema\nexport function getZodType(schema: StagehandZodSchema): string {\n const schemaWithDef = schema as SchemaInternals & {\n _zod?: { def?: { type?: string } };\n };\n const rawType =\n (schemaWithDef._zod?.def?.type as string | undefined) ??\n (schemaWithDef._def?.typeName as string | undefined) ??\n (schemaWithDef._def?.type as string | undefined);\n\n if (!rawType) {\n return \"unknown\";\n }\n\n return TYPE_NAME_MAP[rawType] ?? rawType;\n}\n\n/**\n * Recursively traverses a given Zod schema, scanning for any fields of type `z.string().url()`.\n * For each such field, it replaces the `z.string().url()` with `z.number()`.\n *\n * This function is used internally by higher-level utilities (e.g., transforming entire object schemas)\n * and handles nested objects, arrays, unions, intersections, optionals.\n *\n * @param schema - The Zod schema to transform.\n * @param currentPath - An array of string/number keys representing the current schema path (used internally for recursion).\n * @returns A two-element tuple:\n * 1. The updated Zod schema, with any `.url()` fields replaced by `z.number()`.\n * 2. An array of {@link ZodPathSegments} objects representing each replaced field, including the path segments.\n */\nexport function transformSchema(\n schema: StagehandZodSchema,\n currentPath: Array<string | number>,\n): [StagehandZodSchema, ZodPathSegments[]] {\n if (isKind(schema, \"string\")) {\n const checks = getStringChecks(schema);\n const format = getStringFormat(schema);\n const hasUrlCheck =\n checks.some((check) => {\n const candidate = check as {\n kind?: string;\n format?: string;\n _zod?: { def?: { check?: string; format?: string } };\n };\n return (\n candidate.kind === \"url\" ||\n candidate.format === \"url\" ||\n candidate._zod?.def?.check === \"url\" ||\n candidate._zod?.def?.format === \"url\"\n );\n }) || format === \"url\";\n\n if (hasUrlCheck) {\n return [makeIdStringSchema(schema), [{ segments: [] }]];\n }\n return [schema, []];\n }\n\n if (isKind(schema, \"object\")) {\n const shape = getObjectShape(schema);\n if (!shape) {\n return [schema, []];\n }\n const newShape: Record<string, StagehandZodSchema> = {};\n const urlPaths: ZodPathSegments[] = [];\n let changed = false;\n\n for (const key of Object.keys(shape)) {\n const child = shape[key];\n const [transformedChild, childPaths] = transformSchema(child, [\n ...currentPath,\n key,\n ]);\n if (transformedChild !== child) {\n changed = true;\n }\n newShape[key] = transformedChild;\n childPaths.forEach((cp) => {\n urlPaths.push({ segments: [key, ...cp.segments] });\n });\n }\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.object(newShape as Record<string, z.ZodTypeAny>),\n urlPaths,\n ];\n }\n return [schema, urlPaths];\n }\n\n if (isKind(schema, \"array\")) {\n const itemType = getArrayElement(schema);\n if (!itemType) {\n return [schema, []];\n }\n const [transformedItem, childPaths] = transformSchema(itemType, [\n ...currentPath,\n \"*\",\n ]);\n const arrayPaths: ZodPathSegments[] = childPaths.map((cp) => ({\n segments: [\"*\", ...cp.segments],\n }));\n if (transformedItem !== itemType) {\n const factory = getZFactory(schema);\n return [\n factory.array(transformedItem as unknown as z.ZodTypeAny),\n arrayPaths,\n ];\n }\n return [schema, arrayPaths];\n }\n\n if (isKind(schema, \"union\")) {\n const unionOptions = getUnionOptions(schema);\n if (!unionOptions || unionOptions.length === 0) {\n return [schema, []];\n }\n const newOptions: StagehandZodSchema[] = [];\n let changed = false;\n let allPaths: ZodPathSegments[] = [];\n\n unionOptions.forEach((option, idx) => {\n const [newOption, childPaths] = transformSchema(option, [\n ...currentPath,\n `union_${idx}`,\n ]);\n if (newOption !== option) {\n changed = true;\n }\n newOptions.push(newOption);\n allPaths = [...allPaths, ...childPaths];\n });\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.union(\n newOptions as unknown as [\n z.ZodTypeAny,\n z.ZodTypeAny,\n ...z.ZodTypeAny[],\n ],\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"intersection\")) {\n const { left, right } = getIntersectionSides(schema);\n if (!left || !right) {\n return [schema, []];\n }\n const [newLeft, leftPaths] = transformSchema(left, [\n ...currentPath,\n \"intersection_left\",\n ]);\n const [newRight, rightPaths] = transformSchema(right, [\n ...currentPath,\n \"intersection_right\",\n ]);\n const changed = newLeft !== left || newRight !== right;\n const allPaths = [...leftPaths, ...rightPaths];\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.intersection(\n newLeft as unknown as z.ZodTypeAny,\n newRight as unknown as z.ZodTypeAny,\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"optional\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).optional() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"nullable\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).nullable() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"pipe\") && isZod4Schema(schema)) {\n const { in: inSchema, out: outSchema } = getPipeEndpoints(schema);\n if (!inSchema || !outSchema) {\n return [schema, []];\n }\n\n const [newIn, inPaths] = transformSchema(inSchema, currentPath);\n const [newOut, outPaths] = transformSchema(outSchema, currentPath);\n const allPaths = [...inPaths, ...outPaths];\n\n if (newIn !== inSchema || newOut !== outSchema) {\n const result = z.pipe(\n newIn as unknown as z.ZodTypeAny,\n newOut as unknown as z.ZodTypeAny,\n ) as StagehandZodSchema;\n return [result, allPaths];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"effects\")) {\n const baseSchema = getEffectsBaseSchema(schema);\n if (!baseSchema) {\n return [schema, []];\n }\n return transformSchema(baseSchema, currentPath);\n }\n\n return [schema, []];\n}\n\n/**\n * Once we get the final extracted object that has numeric IDs in place of URLs,\n * use `injectUrls` to walk the object and replace numeric IDs\n * with the real URL strings from idToUrlMapping. The `path` may include `*`\n * for array indices (indicating \"all items in the array\").\n */\nexport function injectUrls(\n obj: unknown,\n path: Array<string | number>,\n idToUrlMapping: Record<string, string>,\n): void {\n if (path.length === 0) return;\n const toId = (value: unknown): string | undefined => {\n if (typeof value === \"number\") {\n return String(value);\n }\n if (typeof value === \"string\" && ID_PATTERN.test(value)) {\n return value;\n }\n return undefined;\n };\n const [key, ...rest] = path;\n\n if (key === \"*\") {\n if (Array.isArray(obj)) {\n if (rest.length === 0) {\n for (let i = 0; i < obj.length; i += 1) {\n const id = toId(obj[i]);\n if (id !== undefined) {\n obj[i] = idToUrlMapping[id] ?? \"\";\n }\n }\n } else {\n for (const item of obj) injectUrls(item, rest, idToUrlMapping);\n }\n }\n return;\n }\n\n if (obj && typeof obj === \"object\") {\n const record = obj as Record<string | number, unknown>;\n if (path.length === 1) {\n const fieldValue = record[key];\n const id = toId(fieldValue);\n if (id !== undefined) {\n record[key] = idToUrlMapping[id] ?? \"\";\n }\n } else {\n injectUrls(record[key], rest, idToUrlMapping);\n }\n }\n}\n\n// Helper to check if a schema is of a specific type\nfunction isKind(s: StagehandZodSchema, kind: string): boolean {\n try {\n return getZodType(s) === kind;\n } catch {\n return false;\n }\n}\n\nfunction makeIdStringSchema(orig: StagehandZodSchema): StagehandZodSchema {\n const userDesc =\n (orig as unknown as { description?: string }).description ?? \"\";\n\n const base =\n \"This field must be the element-ID in the form 'frameId-backendId' \" +\n '(e.g. \"0-432\").';\n const composed =\n userDesc.trim().length > 0\n ? `${base} that follows this user-defined description: ${userDesc}`\n : base;\n\n const factory = getZFactory(orig);\n return factory.string().regex(ID_PATTERN).describe(composed);\n}\n\n/**\n * Mapping from LLM provider names to their corresponding environment variable names for API keys.\n */\nexport const providerEnvVarMap: Partial<\n Record<ModelProvider | string, string | Array<string>>\n> = {\n openai: \"OPENAI_API_KEY\",\n anthropic: \"ANTHROPIC_API_KEY\",\n google: [\"GEMINI_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\", \"GOOGLE_API_KEY\"],\n vertex: \"GOOGLE_VERTEX_AI_API_KEY\",\n groq: \"GROQ_API_KEY\",\n cerebras: \"CEREBRAS_API_KEY\",\n togetherai: \"TOGETHER_AI_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n perplexity: \"PERPLEXITY_API_KEY\",\n azure: \"AZURE_API_KEY\",\n xai: \"XAI_API_KEY\",\n google_legacy: \"GOOGLE_API_KEY\",\n};\n\nconst providersWithoutApiKey = new Set([\"bedrock\", \"ollama\"]);\n\n/**\n * Loads an API key for a provider, checking environment variables.\n * @param provider The name of the provider (e.g., 'openai', 'anthropic')\n * @param logger Optional logger for info/error messages\n * @returns The API key if found, undefined otherwise\n */\nexport function loadApiKeyFromEnv(\n provider: string | undefined,\n logger: (logLine: LogLine) => void,\n): string | undefined {\n if (!provider) {\n return undefined;\n }\n\n const envVarName = providerEnvVarMap[provider];\n if (!envVarName) {\n if (!providersWithoutApiKey.has(provider)) {\n logger({\n category: \"init\",\n message: `No known environment variable for provider '${provider}'`,\n level: 0,\n });\n }\n return undefined;\n }\n\n const apiKeyFromEnv = Array.isArray(envVarName)\n ? envVarName\n .map((name) => process.env[name])\n .find((key) => key && key.length > 0)\n : process.env[envVarName as string];\n if (typeof apiKeyFromEnv === \"string\" && apiKeyFromEnv.length > 0) {\n return apiKeyFromEnv;\n }\n\n // Don't log - this is expected when llmClient is provided or API key will be set later\n return undefined;\n}\n\nexport function trimTrailingTextNode(\n path: string | undefined,\n): string | undefined {\n return path?.replace(/\\/text\\(\\)(\\[\\d+\\])?$/iu, \"\");\n}\n\nexport function toTitleCase(str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (text) => text.charAt(0).toUpperCase() + text.substring(1),\n );\n}\n\n// TODO: move to separate types file\nexport interface JsonSchemaProperty {\n type: string;\n enum?: unknown[];\n items?: JsonSchemaProperty;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n minimum?: number;\n maximum?: number;\n description?: string;\n format?: string; // JSON Schema format field (e.g., \"uri\", \"url\", \"email\", etc.)\n}\nexport interface JsonSchema extends JsonSchemaProperty {\n type: string;\n}\n\n/**\n * Converts a JSON Schema object to a Zod schema\n * @param schema The JSON Schema object to convert\n * @returns A Zod schema equivalent to the input JSON Schema\n */\nexport function jsonSchemaToZod(schema: JsonSchema): ZodTypeAny {\n switch (schema.type) {\n case \"object\":\n if (schema.properties) {\n const shape: Record<string, ZodTypeAny> = {};\n for (const key in schema.properties) {\n shape[key] = jsonSchemaToZod(schema.properties[key]);\n }\n let zodObject = z.object(shape);\n if (schema.required && Array.isArray(schema.required)) {\n const requiredFields = schema.required.reduce<Record<string, true>>(\n (acc, field) => ({ ...acc, [field]: true }),\n {},\n );\n zodObject = zodObject.partial().required(requiredFields);\n }\n if (schema.description) {\n zodObject = zodObject.describe(schema.description);\n }\n return zodObject;\n } else {\n return z.object({});\n }\n case \"array\":\n if (schema.items) {\n let zodArray = z.array(jsonSchemaToZod(schema.items));\n if (schema.description) {\n zodArray = zodArray.describe(schema.description);\n }\n return zodArray;\n } else {\n return z.array(z.any());\n }\n case \"string\": {\n if (schema.enum) {\n return z.string().refine((val) => schema.enum!.includes(val));\n }\n let zodString = z.string();\n\n // Handle JSON Schema format field\n if (schema.format === \"uri\" || schema.format === \"url\") {\n zodString = zodString.url();\n } else if (schema.format === \"email\") {\n zodString = zodString.email();\n } else if (schema.format === \"uuid\") {\n zodString = zodString.uuid();\n }\n // Add more format handlers as needed\n\n if (schema.description) {\n zodString = zodString.describe(schema.description);\n }\n return zodString;\n }\n case \"number\": {\n let zodNumber = z.number();\n if (schema.minimum !== undefined) {\n zodNumber = zodNumber.min(schema.minimum);\n }\n if (schema.maximum !== undefined) {\n zodNumber = zodNumber.max(schema.maximum);\n }\n if (schema.description) {\n zodNumber = zodNumber.describe(schema.description);\n }\n return zodNumber;\n }\n case \"boolean\": {\n let zodBoolean = z.boolean();\n if (schema.description) {\n zodBoolean = zodBoolean.describe(schema.description);\n }\n return zodBoolean;\n }\n default:\n return z.any();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodSchemaValidationError } from \"./v3/types/public/sdkErrors.js\";\nimport { Schema, Type } from \"@google/genai\";\nimport { z, ZodTypeAny } from \"zod\";\nimport z3 from \"zod/v3\";\nimport { LogLine } from \"./v3/types/public/logs.js\";\nimport { ModelProvider } from \"./v3/types/public/model.js\";\nimport { ZodPathSegments } from \"./v3/types/private/internal.js\";\nimport type { StagehandZodSchema } from \"./v3/zodCompat.js\";\nimport { isZod4Schema } from \"./v3/zodCompat.js\";\n\nconst ID_PATTERN = /^\\d+-\\d+$/;\n\nconst zFactories = {\n v4: z,\n v3: z3 as unknown as typeof z,\n};\n\nexport function getZFactory(schema: StagehandZodSchema): typeof z {\n return isZod4Schema(schema) ? zFactories.v4 : zFactories.v3;\n}\n\nconst TYPE_NAME_MAP: Record<string, string> = {\n ZodString: \"string\",\n string: \"string\",\n ZodNumber: \"number\",\n number: \"number\",\n ZodBoolean: \"boolean\",\n boolean: \"boolean\",\n ZodObject: \"object\",\n object: \"object\",\n ZodArray: \"array\",\n array: \"array\",\n ZodUnion: \"union\",\n union: \"union\",\n ZodIntersection: \"intersection\",\n intersection: \"intersection\",\n ZodOptional: \"optional\",\n optional: \"optional\",\n ZodNullable: \"nullable\",\n nullable: \"nullable\",\n ZodLiteral: \"literal\",\n literal: \"literal\",\n ZodEnum: \"enum\",\n enum: \"enum\",\n ZodDefault: \"default\",\n default: \"default\",\n ZodEffects: \"effects\",\n effects: \"effects\",\n pipe: \"pipe\",\n};\n\nfunction getZ4Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ4Bag(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.bag as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ3Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getObjectShape(\n schema: StagehandZodSchema,\n): Record<string, StagehandZodSchema> | undefined {\n const z4Shape = getZ4Def(schema)?.shape as\n | Record<string, StagehandZodSchema>\n | undefined;\n if (z4Shape) {\n return z4Shape;\n }\n\n const z3Shape = getZ3Def(schema)?.shape;\n if (!z3Shape) {\n return undefined;\n }\n\n if (typeof z3Shape === \"function\") {\n return (z3Shape as () => Record<string, StagehandZodSchema>)();\n }\n\n return z3Shape as Record<string, StagehandZodSchema>;\n}\n\nfunction getArrayElement(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.element ?? getZ3Def(schema)?.type) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getInnerType(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.innerType ?? getZ3Def(schema)?.innerType) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getUnionOptions(\n schema: StagehandZodSchema,\n): StagehandZodSchema[] | undefined {\n const z4Options = getZ4Def(schema)?.options;\n if (Array.isArray(z4Options)) {\n return z4Options as StagehandZodSchema[];\n }\n const z3Options = getZ3Def(schema)?.options;\n return Array.isArray(z3Options)\n ? (z3Options as StagehandZodSchema[])\n : undefined;\n}\n\nfunction getIntersectionSides(schema: StagehandZodSchema): {\n left?: StagehandZodSchema;\n right?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.left || z4Def?.right) {\n return {\n left: z4Def?.left as StagehandZodSchema | undefined,\n right: z4Def?.right as StagehandZodSchema | undefined,\n };\n }\n const z3Def = getZ3Def(schema);\n return {\n left: z3Def?.left as StagehandZodSchema | undefined,\n right: z3Def?.right as StagehandZodSchema | undefined,\n };\n}\n\nfunction getEnumValues(schema: StagehandZodSchema): string[] | undefined {\n const z4Entries = getZ4Def(schema)?.entries;\n if (z4Entries && typeof z4Entries === \"object\") {\n return Object.values(z4Entries as Record<string, string>);\n }\n const z3Values = getZ3Def(schema)?.values;\n return Array.isArray(z3Values) ? (z3Values as string[]) : undefined;\n}\n\nfunction getLiteralValues(schema: StagehandZodSchema): unknown[] {\n const z4Values = getZ4Def(schema)?.values;\n if (Array.isArray(z4Values)) {\n return z4Values as unknown[];\n }\n const value = getZ3Def(schema)?.value;\n return typeof value !== \"undefined\" ? [value] : [];\n}\n\nfunction getStringChecks(schema: StagehandZodSchema): unknown[] {\n const z4Checks = getZ4Def(schema)?.checks;\n if (Array.isArray(z4Checks)) {\n return z4Checks;\n }\n const z3Checks = getZ3Def(schema)?.checks;\n return Array.isArray(z3Checks) ? z3Checks : [];\n}\n\nfunction getStringFormat(schema: StagehandZodSchema): string | undefined {\n const bagFormat = getZ4Bag(schema)?.format;\n if (typeof bagFormat === \"string\") {\n return bagFormat;\n }\n const z4Format = getZ4Def(schema)?.format;\n if (typeof z4Format === \"string\") {\n return z4Format;\n }\n const z3Format = getZ3Def(schema)?.format;\n return typeof z3Format === \"string\" ? z3Format : undefined;\n}\n\nfunction getPipeEndpoints(schema: StagehandZodSchema): {\n in?: StagehandZodSchema;\n out?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.in || z4Def?.out) {\n return {\n in: z4Def?.in as StagehandZodSchema | undefined,\n out: z4Def?.out as StagehandZodSchema | undefined,\n };\n }\n return {};\n}\n\nfunction getEffectsBaseSchema(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return getZ3Def(schema)?.schema as StagehandZodSchema | undefined;\n}\n\ntype SchemaInternals = {\n _zod?: { def?: Record<string, unknown>; bag?: Record<string, unknown> };\n _def?: Record<string, unknown>;\n};\n\nexport function validateZodSchema(schema: StagehandZodSchema, data: unknown) {\n const result = schema.safeParse(data);\n\n if (result.success) {\n return true;\n }\n throw new ZodSchemaValidationError(data, result.error.format());\n}\n\n/**\n * Detects if the code is running in the Bun runtime environment.\n * @returns {boolean} True if running in Bun, false otherwise.\n */\nexport function isRunningInBun(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n \"bun\" in process.versions\n );\n}\n\n/*\n * Helper functions for converting between Gemini and Zod schemas\n */\nfunction decorateGeminiSchema(\n geminiSchema: Schema,\n zodSchema: z.ZodTypeAny,\n): Schema {\n if (geminiSchema.nullable === undefined) {\n geminiSchema.nullable = zodSchema.isOptional();\n }\n\n if (zodSchema.description) {\n geminiSchema.description = zodSchema.description;\n }\n\n return geminiSchema;\n}\n\nexport function toGeminiSchema(zodSchema: StagehandZodSchema): Schema {\n const normalizedSchema = zodSchema as z.ZodTypeAny;\n const zodType = getZodType(zodSchema);\n switch (zodType) {\n case \"array\": {\n const element = getArrayElement(zodSchema) ?? z.any();\n return decorateGeminiSchema(\n {\n type: Type.ARRAY,\n items: toGeminiSchema(element),\n },\n normalizedSchema,\n );\n }\n case \"object\": {\n const properties: Record<string, Schema> = {};\n const required: string[] = [];\n\n const shape = getObjectShape(zodSchema);\n if (shape) {\n Object.entries(shape).forEach(\n ([key, value]: [string, StagehandZodSchema]) => {\n properties[key] = toGeminiSchema(value);\n if (getZodType(value) !== \"optional\") {\n required.push(key);\n }\n },\n );\n }\n\n return decorateGeminiSchema(\n {\n type: Type.OBJECT,\n properties,\n required: required.length > 0 ? required : undefined,\n },\n normalizedSchema,\n );\n }\n case \"string\":\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n case \"number\":\n return decorateGeminiSchema(\n {\n type: Type.NUMBER,\n },\n normalizedSchema,\n );\n case \"boolean\":\n return decorateGeminiSchema(\n {\n type: Type.BOOLEAN,\n },\n normalizedSchema,\n );\n case \"enum\": {\n const values = getEnumValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values,\n },\n normalizedSchema,\n );\n }\n case \"default\":\n case \"nullable\":\n case \"optional\": {\n const innerType = getInnerType(zodSchema) ?? z.any();\n const innerSchema = toGeminiSchema(innerType);\n return decorateGeminiSchema(\n {\n ...innerSchema,\n nullable: true,\n },\n normalizedSchema,\n );\n }\n case \"literal\": {\n const values = getLiteralValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values as string[],\n },\n normalizedSchema,\n );\n }\n case \"pipe\": {\n const endpoints = getPipeEndpoints(zodSchema);\n if (endpoints.in) {\n return toGeminiSchema(endpoints.in);\n }\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n // Standalone transforms and any unknown types fall through to default\n default:\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n}\n\n// Helper function to check the type of Zod schema\nexport function getZodType(schema: StagehandZodSchema): string {\n const schemaWithDef = schema as SchemaInternals & {\n _zod?: { def?: { type?: string } };\n };\n const rawType =\n (schemaWithDef._zod?.def?.type as string | undefined) ??\n (schemaWithDef._def?.typeName as string | undefined) ??\n (schemaWithDef._def?.type as string | undefined);\n\n if (!rawType) {\n return \"unknown\";\n }\n\n return TYPE_NAME_MAP[rawType] ?? rawType;\n}\n\n/**\n * Recursively traverses a given Zod schema, scanning for any fields of type `z.string().url()`.\n * For each such field, it replaces the `z.string().url()` with `z.number()`.\n *\n * This function is used internally by higher-level utilities (e.g., transforming entire object schemas)\n * and handles nested objects, arrays, unions, intersections, optionals.\n *\n * @param schema - The Zod schema to transform.\n * @param currentPath - An array of string/number keys representing the current schema path (used internally for recursion).\n * @returns A two-element tuple:\n * 1. The updated Zod schema, with any `.url()` fields replaced by `z.number()`.\n * 2. An array of {@link ZodPathSegments} objects representing each replaced field, including the path segments.\n */\nexport function transformSchema(\n schema: StagehandZodSchema,\n currentPath: Array<string | number>,\n): [StagehandZodSchema, ZodPathSegments[]] {\n if (isKind(schema, \"string\")) {\n const checks = getStringChecks(schema);\n const format = getStringFormat(schema);\n const hasUrlCheck =\n checks.some((check) => {\n const candidate = check as {\n kind?: string;\n format?: string;\n _zod?: { def?: { check?: string; format?: string } };\n };\n return (\n candidate.kind === \"url\" ||\n candidate.format === \"url\" ||\n candidate._zod?.def?.check === \"url\" ||\n candidate._zod?.def?.format === \"url\"\n );\n }) || format === \"url\";\n\n if (hasUrlCheck) {\n return [makeIdStringSchema(schema), [{ segments: [] }]];\n }\n return [schema, []];\n }\n\n if (isKind(schema, \"object\")) {\n const shape = getObjectShape(schema);\n if (!shape) {\n return [schema, []];\n }\n const newShape: Record<string, StagehandZodSchema> = {};\n const urlPaths: ZodPathSegments[] = [];\n let changed = false;\n\n for (const key of Object.keys(shape)) {\n const child = shape[key];\n const [transformedChild, childPaths] = transformSchema(child, [\n ...currentPath,\n key,\n ]);\n if (transformedChild !== child) {\n changed = true;\n }\n newShape[key] = transformedChild;\n childPaths.forEach((cp) => {\n urlPaths.push({ segments: [key, ...cp.segments] });\n });\n }\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.object(newShape as Record<string, z.ZodTypeAny>),\n urlPaths,\n ];\n }\n return [schema, urlPaths];\n }\n\n if (isKind(schema, \"array\")) {\n const itemType = getArrayElement(schema);\n if (!itemType) {\n return [schema, []];\n }\n const [transformedItem, childPaths] = transformSchema(itemType, [\n ...currentPath,\n \"*\",\n ]);\n const arrayPaths: ZodPathSegments[] = childPaths.map((cp) => ({\n segments: [\"*\", ...cp.segments],\n }));\n if (transformedItem !== itemType) {\n const factory = getZFactory(schema);\n return [\n factory.array(transformedItem as unknown as z.ZodTypeAny),\n arrayPaths,\n ];\n }\n return [schema, arrayPaths];\n }\n\n if (isKind(schema, \"union\")) {\n const unionOptions = getUnionOptions(schema);\n if (!unionOptions || unionOptions.length === 0) {\n return [schema, []];\n }\n const newOptions: StagehandZodSchema[] = [];\n let changed = false;\n let allPaths: ZodPathSegments[] = [];\n\n unionOptions.forEach((option, idx) => {\n const [newOption, childPaths] = transformSchema(option, [\n ...currentPath,\n `union_${idx}`,\n ]);\n if (newOption !== option) {\n changed = true;\n }\n newOptions.push(newOption);\n allPaths = [...allPaths, ...childPaths];\n });\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.union(\n newOptions as unknown as [\n z.ZodTypeAny,\n z.ZodTypeAny,\n ...z.ZodTypeAny[],\n ],\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"intersection\")) {\n const { left, right } = getIntersectionSides(schema);\n if (!left || !right) {\n return [schema, []];\n }\n const [newLeft, leftPaths] = transformSchema(left, [\n ...currentPath,\n \"intersection_left\",\n ]);\n const [newRight, rightPaths] = transformSchema(right, [\n ...currentPath,\n \"intersection_right\",\n ]);\n const changed = newLeft !== left || newRight !== right;\n const allPaths = [...leftPaths, ...rightPaths];\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.intersection(\n newLeft as unknown as z.ZodTypeAny,\n newRight as unknown as z.ZodTypeAny,\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"optional\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).optional() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"nullable\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).nullable() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"pipe\") && isZod4Schema(schema)) {\n const { in: inSchema, out: outSchema } = getPipeEndpoints(schema);\n if (!inSchema || !outSchema) {\n return [schema, []];\n }\n\n const [newIn, inPaths] = transformSchema(inSchema, currentPath);\n const [newOut, outPaths] = transformSchema(outSchema, currentPath);\n const allPaths = [...inPaths, ...outPaths];\n\n if (newIn !== inSchema || newOut !== outSchema) {\n const result = z.pipe(\n newIn as unknown as z.ZodTypeAny,\n newOut as unknown as z.ZodTypeAny,\n ) as StagehandZodSchema;\n return [result, allPaths];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"effects\")) {\n const baseSchema = getEffectsBaseSchema(schema);\n if (!baseSchema) {\n return [schema, []];\n }\n return transformSchema(baseSchema, currentPath);\n }\n\n return [schema, []];\n}\n\n/**\n * Once we get the final extracted object that has numeric IDs in place of URLs,\n * use `injectUrls` to walk the object and replace numeric IDs\n * with the real URL strings from idToUrlMapping. The `path` may include `*`\n * for array indices (indicating \"all items in the array\").\n */\nexport function injectUrls(\n obj: unknown,\n path: Array<string | number>,\n idToUrlMapping: Record<string, string>,\n): void {\n if (path.length === 0) return;\n const toId = (value: unknown): string | undefined => {\n if (typeof value === \"number\") {\n return String(value);\n }\n if (typeof value === \"string\" && ID_PATTERN.test(value)) {\n return value;\n }\n return undefined;\n };\n const [key, ...rest] = path;\n\n if (key === \"*\") {\n if (Array.isArray(obj)) {\n if (rest.length === 0) {\n for (let i = 0; i < obj.length; i += 1) {\n const id = toId(obj[i]);\n if (id !== undefined) {\n obj[i] = idToUrlMapping[id] ?? \"\";\n }\n }\n } else {\n for (const item of obj) injectUrls(item, rest, idToUrlMapping);\n }\n }\n return;\n }\n\n if (obj && typeof obj === \"object\") {\n const record = obj as Record<string | number, unknown>;\n if (path.length === 1) {\n const fieldValue = record[key];\n const id = toId(fieldValue);\n if (id !== undefined) {\n record[key] = idToUrlMapping[id] ?? \"\";\n }\n } else {\n injectUrls(record[key], rest, idToUrlMapping);\n }\n }\n}\n\n// Helper to check if a schema is of a specific type\nfunction isKind(s: StagehandZodSchema, kind: string): boolean {\n try {\n return getZodType(s) === kind;\n } catch {\n return false;\n }\n}\n\nfunction makeIdStringSchema(orig: StagehandZodSchema): StagehandZodSchema {\n const userDesc =\n (orig as unknown as { description?: string }).description ?? \"\";\n\n const base =\n \"This field must be the element-ID in the form 'frameId-backendId' \" +\n '(e.g. \"0-432\").';\n const composed =\n userDesc.trim().length > 0\n ? `${base} that follows this user-defined description: ${userDesc}`\n : base;\n\n const factory = getZFactory(orig);\n return factory.string().regex(ID_PATTERN).describe(composed);\n}\n\n/**\n * Mapping from LLM provider names to their corresponding environment variable names for API keys.\n */\nexport const providerEnvVarMap: Partial<\n Record<ModelProvider | string, string | Array<string>>\n> = {\n openai: \"OPENAI_API_KEY\",\n anthropic: \"ANTHROPIC_API_KEY\",\n google: [\"GEMINI_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\", \"GOOGLE_API_KEY\"],\n vertex: \"GOOGLE_VERTEX_AI_API_KEY\",\n groq: \"GROQ_API_KEY\",\n cerebras: \"CEREBRAS_API_KEY\",\n togetherai: \"TOGETHER_AI_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n perplexity: \"PERPLEXITY_API_KEY\",\n azure: \"AZURE_API_KEY\",\n xai: \"XAI_API_KEY\",\n google_legacy: \"GOOGLE_API_KEY\",\n};\n\nconst providersWithoutApiKey = new Set([\"bedrock\", \"ollama\"]);\n\n/**\n * Loads an API key for a provider, checking environment variables.\n * @param provider The name of the provider (e.g., 'openai', 'anthropic')\n * @param logger Optional logger for info/error messages\n * @returns The API key if found, undefined otherwise\n */\nexport function loadApiKeyFromEnv(\n provider: string | undefined,\n logger: (logLine: LogLine) => void,\n): string | undefined {\n if (!provider) {\n return undefined;\n }\n\n const envVarName = providerEnvVarMap[provider];\n if (!envVarName) {\n if (!providersWithoutApiKey.has(provider)) {\n logger({\n category: \"init\",\n message: `No known environment variable for provider '${provider}'`,\n level: 0,\n });\n }\n return undefined;\n }\n\n const apiKeyFromEnv = Array.isArray(envVarName)\n ? envVarName\n .map((name) => process.env[name])\n .find((key) => key && key.length > 0)\n : process.env[envVarName as string];\n if (typeof apiKeyFromEnv === \"string\" && apiKeyFromEnv.length > 0) {\n return apiKeyFromEnv;\n }\n\n // Don't log - this is expected when llmClient is provided or API key will be set later\n return undefined;\n}\n\nexport function hasModelProviderAuth(clientOptions: unknown): boolean {\n if (!clientOptions || typeof clientOptions !== \"object\") {\n return false;\n }\n\n const auth = (clientOptions as { auth?: unknown }).auth;\n return auth !== undefined && auth !== null;\n}\n\nexport function getInheritableModelOptions<T extends object>(\n clientOptions: T | undefined,\n): Partial<T> | undefined {\n if (!clientOptions) {\n return undefined;\n }\n\n const inheritableOptions = {\n ...(clientOptions as Record<string, unknown>),\n };\n delete inheritableOptions.apiKey;\n delete inheritableOptions.auth;\n\n return inheritableOptions as Partial<T>;\n}\n\nexport function trimTrailingTextNode(\n path: string | undefined,\n): string | undefined {\n return path?.replace(/\\/text\\(\\)(\\[\\d+\\])?$/iu, \"\");\n}\n\nexport function toTitleCase(str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (text) => text.charAt(0).toUpperCase() + text.substring(1),\n );\n}\n\n// TODO: move to separate types file\nexport interface JsonSchemaProperty {\n type: string;\n enum?: unknown[];\n items?: JsonSchemaProperty;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n minimum?: number;\n maximum?: number;\n description?: string;\n format?: string; // JSON Schema format field (e.g., \"uri\", \"url\", \"email\", etc.)\n}\nexport interface JsonSchema extends JsonSchemaProperty {\n type: string;\n}\n\n/**\n * Converts a JSON Schema object to a Zod schema\n * @param schema The JSON Schema object to convert\n * @returns A Zod schema equivalent to the input JSON Schema\n */\nexport function jsonSchemaToZod(schema: JsonSchema): ZodTypeAny {\n switch (schema.type) {\n case \"object\":\n if (schema.properties) {\n const shape: Record<string, ZodTypeAny> = {};\n for (const key in schema.properties) {\n shape[key] = jsonSchemaToZod(schema.properties[key]);\n }\n let zodObject = z.object(shape);\n if (schema.required && Array.isArray(schema.required)) {\n const requiredFields = schema.required.reduce<Record<string, true>>(\n (acc, field) => ({ ...acc, [field]: true }),\n {},\n );\n zodObject = zodObject.partial().required(requiredFields);\n }\n if (schema.description) {\n zodObject = zodObject.describe(schema.description);\n }\n return zodObject;\n } else {\n return z.object({});\n }\n case \"array\":\n if (schema.items) {\n let zodArray = z.array(jsonSchemaToZod(schema.items));\n if (schema.description) {\n zodArray = zodArray.describe(schema.description);\n }\n return zodArray;\n } else {\n return z.array(z.any());\n }\n case \"string\": {\n if (schema.enum) {\n return z.string().refine((val) => schema.enum!.includes(val));\n }\n let zodString = z.string();\n\n // Handle JSON Schema format field\n if (schema.format === \"uri\" || schema.format === \"url\") {\n zodString = zodString.url();\n } else if (schema.format === \"email\") {\n zodString = zodString.email();\n } else if (schema.format === \"uuid\") {\n zodString = zodString.uuid();\n }\n // Add more format handlers as needed\n\n if (schema.description) {\n zodString = zodString.describe(schema.description);\n }\n return zodString;\n }\n case \"number\": {\n let zodNumber = z.number();\n if (schema.minimum !== undefined) {\n zodNumber = zodNumber.min(schema.minimum);\n }\n if (schema.maximum !== undefined) {\n zodNumber = zodNumber.max(schema.maximum);\n }\n if (schema.description) {\n zodNumber = zodNumber.describe(schema.description);\n }\n return zodNumber;\n }\n case \"boolean\": {\n let zodBoolean = z.boolean();\n if (schema.description) {\n zodBoolean = zodBoolean.describe(schema.description);\n }\n return zodBoolean;\n }\n default:\n return z.any();\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ export const modelToAgentProviderMap = {
|
|
|
14
14
|
"claude-sonnet-4-5-20250929": "anthropic",
|
|
15
15
|
"claude-opus-4-5-20251101": "anthropic",
|
|
16
16
|
"claude-opus-4-6": "anthropic",
|
|
17
|
+
"claude-opus-4-8": "anthropic",
|
|
17
18
|
"claude-sonnet-4-6": "anthropic",
|
|
18
19
|
"claude-haiku-4-5": "anthropic",
|
|
19
20
|
"claude-haiku-4-5-20251001": "anthropic",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AgentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { ToolSet } from \"ai\";\nimport { AgentProviderType } from \"../types/public/agent.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { ClientOptions } from \"../types/public/model.js\";\nimport {\n UnsupportedModelError,\n UnsupportedModelProviderError,\n} from \"../types/public/sdkErrors.js\";\nimport { AgentClient } from \"./AgentClient.js\";\nimport { AnthropicCUAClient } from \"./AnthropicCUAClient.js\";\nimport { OpenAICUAClient } from \"./OpenAICUAClient.js\";\nimport { GoogleCUAClient } from \"./GoogleCUAClient.js\";\nimport { MicrosoftCUAClient } from \"./MicrosoftCUAClient.js\";\n\n// Map model names to their provider types\nexport const modelToAgentProviderMap: Record<string, AgentProviderType> = {\n \"gpt-5.4\": \"openai\",\n \"gpt-5.4-mini\": \"openai\",\n \"gpt-5.5\": \"openai\",\n \"computer-use-preview\": \"openai\",\n \"computer-use-preview-2025-03-11\": \"openai\",\n \"claude-sonnet-4-20250514\": \"anthropic\",\n \"claude-sonnet-4-5-20250929\": \"anthropic\",\n \"claude-opus-4-5-20251101\": \"anthropic\",\n \"claude-opus-4-6\": \"anthropic\",\n \"claude-sonnet-4-6\": \"anthropic\",\n \"claude-haiku-4-5\": \"anthropic\",\n \"claude-haiku-4-5-20251001\": \"anthropic\",\n \"gemini-2.5-computer-use-preview-10-2025\": \"google\",\n \"gemini-3-flash-preview\": \"google\",\n \"gemini-3-pro-preview\": \"google\",\n \"fara-7b\": \"microsoft\",\n};\n\n/**\n * Provider for agent clients\n * This class is responsible for creating the appropriate agent client\n * based on the provider type\n */\nexport class AgentProvider {\n private logger: (message: LogLine) => void;\n\n /**\n * Create a new agent provider\n */\n constructor(logger: (message: LogLine) => void) {\n this.logger = logger;\n }\n\n getClient(\n modelName: string,\n clientOptions?: ClientOptions,\n userProvidedInstructions?: string,\n tools?: ToolSet,\n ): AgentClient {\n // Check if provider is explicitly set in clientOptions\n const explicitProvider = clientOptions?.provider as\n | AgentProviderType\n | undefined;\n const type = explicitProvider || AgentProvider.getAgentProvider(modelName);\n\n this.logger({\n category: \"agent\",\n message: `Getting agent client for type: ${type}, model: ${modelName}${explicitProvider ? \" (explicit provider)\" : \"\"}`,\n level: 2,\n });\n\n try {\n switch (type) {\n case \"openai\":\n return new OpenAICUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"anthropic\":\n return new AnthropicCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"google\":\n return new GoogleCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"microsoft\":\n return new MicrosoftCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n );\n default:\n throw new UnsupportedModelProviderError(\n [\"openai\", \"anthropic\", \"google\", \"microsoft\"],\n \"Computer Use Agent\",\n );\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error creating agent client: ${errorMessage}`,\n level: 0,\n });\n throw error;\n }\n }\n\n static getAgentProvider(modelName: string): AgentProviderType {\n const normalized = modelName.includes(\"/\")\n ? modelName.split(\"/\")[1]\n : modelName;\n\n if (normalized in modelToAgentProviderMap) {\n return modelToAgentProviderMap[normalized];\n }\n\n throw new UnsupportedModelError(\n Object.keys(modelToAgentProviderMap),\n \"Computer Use Agent\",\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AgentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { ToolSet } from \"ai\";\nimport { AgentProviderType } from \"../types/public/agent.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { ClientOptions } from \"../types/public/model.js\";\nimport {\n UnsupportedModelError,\n UnsupportedModelProviderError,\n} from \"../types/public/sdkErrors.js\";\nimport { AgentClient } from \"./AgentClient.js\";\nimport { AnthropicCUAClient } from \"./AnthropicCUAClient.js\";\nimport { OpenAICUAClient } from \"./OpenAICUAClient.js\";\nimport { GoogleCUAClient } from \"./GoogleCUAClient.js\";\nimport { MicrosoftCUAClient } from \"./MicrosoftCUAClient.js\";\n\n// Map model names to their provider types\nexport const modelToAgentProviderMap: Record<string, AgentProviderType> = {\n \"gpt-5.4\": \"openai\",\n \"gpt-5.4-mini\": \"openai\",\n \"gpt-5.5\": \"openai\",\n \"computer-use-preview\": \"openai\",\n \"computer-use-preview-2025-03-11\": \"openai\",\n \"claude-sonnet-4-20250514\": \"anthropic\",\n \"claude-sonnet-4-5-20250929\": \"anthropic\",\n \"claude-opus-4-5-20251101\": \"anthropic\",\n \"claude-opus-4-6\": \"anthropic\",\n \"claude-opus-4-8\": \"anthropic\",\n \"claude-sonnet-4-6\": \"anthropic\",\n \"claude-haiku-4-5\": \"anthropic\",\n \"claude-haiku-4-5-20251001\": \"anthropic\",\n \"gemini-2.5-computer-use-preview-10-2025\": \"google\",\n \"gemini-3-flash-preview\": \"google\",\n \"gemini-3-pro-preview\": \"google\",\n \"fara-7b\": \"microsoft\",\n};\n\n/**\n * Provider for agent clients\n * This class is responsible for creating the appropriate agent client\n * based on the provider type\n */\nexport class AgentProvider {\n private logger: (message: LogLine) => void;\n\n /**\n * Create a new agent provider\n */\n constructor(logger: (message: LogLine) => void) {\n this.logger = logger;\n }\n\n getClient(\n modelName: string,\n clientOptions?: ClientOptions,\n userProvidedInstructions?: string,\n tools?: ToolSet,\n ): AgentClient {\n // Check if provider is explicitly set in clientOptions\n const explicitProvider = clientOptions?.provider as\n | AgentProviderType\n | undefined;\n const type = explicitProvider || AgentProvider.getAgentProvider(modelName);\n\n this.logger({\n category: \"agent\",\n message: `Getting agent client for type: ${type}, model: ${modelName}${explicitProvider ? \" (explicit provider)\" : \"\"}`,\n level: 2,\n });\n\n try {\n switch (type) {\n case \"openai\":\n return new OpenAICUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"anthropic\":\n return new AnthropicCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"google\":\n return new GoogleCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"microsoft\":\n return new MicrosoftCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n );\n default:\n throw new UnsupportedModelProviderError(\n [\"openai\", \"anthropic\", \"google\", \"microsoft\"],\n \"Computer Use Agent\",\n );\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error creating agent client: ${errorMessage}`,\n level: 0,\n });\n throw error;\n }\n }\n\n static getAgentProvider(modelName: string): AgentProviderType {\n const normalized = modelName.includes(\"/\")\n ? modelName.split(\"/\")[1]\n : modelName;\n\n if (normalized in modelToAgentProviderMap) {\n return modelToAgentProviderMap[normalized];\n }\n\n throw new UnsupportedModelError(\n Object.keys(modelToAgentProviderMap),\n \"Computer Use Agent\",\n );\n }\n}\n"]}
|
|
@@ -347,6 +347,7 @@ export class AnthropicCUAClient extends AgentClient {
|
|
|
347
347
|
: this.modelName;
|
|
348
348
|
// Check if this is a Claude 4.6+ model that supports adaptive thinking
|
|
349
349
|
const isAdaptiveThinkingModel = [
|
|
350
|
+
"claude-opus-4-8",
|
|
350
351
|
"claude-opus-4-6",
|
|
351
352
|
"claude-sonnet-4-6",
|
|
352
353
|
].includes(modelBase);
|