@browserbasehq/orca 3.2.0-preview.1 → 3.2.0-preview.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/cjs/lib/utils.d.ts +1 -0
  2. package/dist/cjs/lib/utils.js +4 -0
  3. package/dist/cjs/lib/utils.js.map +1 -1
  4. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +4 -6
  5. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  6. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +4 -6
  7. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  8. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +4 -6
  9. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  10. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +2 -0
  11. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +2 -2
  12. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  13. package/dist/cjs/lib/v3/agent/tools/{search.js → braveSearch.js} +1 -1
  14. package/dist/cjs/lib/v3/agent/tools/braveSearch.js.map +1 -0
  15. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  16. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js +70 -0
  17. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  18. package/dist/cjs/lib/v3/agent/tools/index.d.ts +14 -3
  19. package/dist/cjs/lib/v3/agent/tools/index.js +7 -3
  20. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -1
  21. package/dist/cjs/lib/v3/eventStore.d.ts +41 -0
  22. package/dist/cjs/lib/v3/eventStore.js +375 -0
  23. package/dist/cjs/lib/v3/eventStore.js.map +1 -0
  24. package/dist/cjs/lib/v3/flowLogger.d.ts +62 -103
  25. package/dist/cjs/lib/v3/flowLogger.js +362 -773
  26. package/dist/cjs/lib/v3/flowLogger.js.map +1 -1
  27. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +21 -33
  28. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  29. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +0 -4
  30. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +14 -34
  31. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  32. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +10 -12
  33. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  34. package/dist/cjs/lib/v3/llm/aisdk.js +10 -16
  35. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  36. package/dist/cjs/lib/v3/types/public/agent.d.ts +16 -2
  37. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  38. package/dist/cjs/lib/v3/types/public/options.d.ts +5 -0
  39. package/dist/cjs/lib/v3/types/public/options.js.map +1 -1
  40. package/dist/cjs/lib/v3/understudy/cdp.d.ts +3 -12
  41. package/dist/cjs/lib/v3/understudy/cdp.js +83 -10
  42. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -1
  43. package/dist/cjs/lib/v3/understudy/page.js +32 -17
  44. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  45. package/dist/cjs/lib/v3/v3.d.ts +10 -0
  46. package/dist/cjs/lib/v3/v3.js +181 -157
  47. package/dist/cjs/lib/v3/v3.js.map +1 -1
  48. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -1
  49. package/dist/esm/lib/utils.d.ts +1 -0
  50. package/dist/esm/lib/utils.js +3 -0
  51. package/dist/esm/lib/utils.js.map +1 -1
  52. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +5 -7
  53. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  54. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +5 -7
  55. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  56. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +5 -7
  57. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  58. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +2 -0
  59. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +2 -2
  60. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  61. package/dist/esm/lib/v3/agent/tools/{search.js → braveSearch.js} +1 -1
  62. package/dist/esm/lib/v3/agent/tools/braveSearch.js.map +1 -0
  63. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  64. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js +66 -0
  65. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  66. package/dist/esm/lib/v3/agent/tools/index.d.ts +14 -3
  67. package/dist/esm/lib/v3/agent/tools/index.js +7 -3
  68. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  69. package/dist/esm/lib/v3/eventStore.d.ts +41 -0
  70. package/dist/esm/lib/v3/eventStore.js +363 -0
  71. package/dist/esm/lib/v3/eventStore.js.map +1 -0
  72. package/dist/esm/lib/v3/flowLogger.d.ts +62 -103
  73. package/dist/esm/lib/v3/flowLogger.js +356 -762
  74. package/dist/esm/lib/v3/flowLogger.js.map +1 -1
  75. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +22 -34
  76. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  77. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +0 -4
  78. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +16 -36
  79. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  80. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +11 -13
  81. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  82. package/dist/esm/lib/v3/llm/aisdk.js +11 -17
  83. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  84. package/dist/esm/lib/v3/types/public/agent.d.ts +16 -2
  85. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  86. package/dist/esm/lib/v3/types/public/options.d.ts +5 -0
  87. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  88. package/dist/esm/lib/v3/understudy/cdp.d.ts +3 -12
  89. package/dist/esm/lib/v3/understudy/cdp.js +83 -10
  90. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  91. package/dist/esm/lib/v3/understudy/page.js +33 -18
  92. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  93. package/dist/esm/lib/v3/v3.d.ts +10 -0
  94. package/dist/esm/lib/v3/v3.js +182 -158
  95. package/dist/esm/lib/v3/v3.js.map +1 -1
  96. package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -1
  97. package/package.json +1 -3
  98. package/dist/cjs/lib/v3/agent/tools/search.js.map +0 -1
  99. package/dist/cjs/tests/unit/rerender-missing-shadows.test.d.ts +0 -1
  100. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js +0 -209
  101. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js.map +0 -1
  102. package/dist/esm/lib/v3/agent/tools/search.js.map +0 -1
  103. package/dist/esm/tests/unit/rerender-missing-shadows.test.d.ts +0 -1
  104. package/dist/esm/tests/unit/rerender-missing-shadows.test.js +0 -207
  105. package/dist/esm/tests/unit/rerender-missing-shadows.test.js.map +0 -1
  106. /package/dist/cjs/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
  107. /package/dist/esm/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"public-types.test.js","sourceRoot":"","sources":["../../../../../tests/unit/public-api/public-types.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expectTypeOf, it } from \"vitest\";\nimport * as Stagehand from \"@browserbasehq/stagehand\";\n\n// Type-level manifest of all expected exported types\n// Since these types don't exist at runtime, we currently need to manually add new publicly exported types\n// to this list ourselves - it's not automatically going to catch changes like our export-surface.test.ts does.\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype ExpectedExportedTypes = {\n // Types from model.ts\n AvailableModel: Stagehand.AvailableModel;\n AvailableCuaModel: Stagehand.AvailableCuaModel;\n ModelProvider: Stagehand.ModelProvider;\n ClientOptions: Stagehand.ClientOptions;\n ModelConfiguration: Stagehand.ModelConfiguration;\n AnthropicJsonSchemaObject: Stagehand.AnthropicJsonSchemaObject;\n AISDKProvider: Stagehand.AISDKProvider;\n AISDKCustomProvider: Stagehand.AISDKCustomProvider;\n LLMTool: Stagehand.LLMTool;\n // Types from methods.ts\n ActOptions: Stagehand.ActOptions;\n ActResult: Stagehand.ActResult;\n ExtractResult: Stagehand.ExtractResult<Stagehand.StagehandZodSchema>;\n Action: Stagehand.Action;\n HistoryEntry: Stagehand.HistoryEntry;\n ExtractOptions: Stagehand.ExtractOptions;\n ObserveOptions: Stagehand.ObserveOptions;\n ObserveResult: Stagehand.ObserveResult;\n V3FunctionName: Stagehand.V3FunctionName;\n // Types from agent.ts\n Tool: Stagehand.Tool;\n AgentAction: Stagehand.AgentAction;\n AgentResult: Stagehand.AgentResult;\n AgentExecuteOptions: Stagehand.AgentExecuteOptions;\n AgentType: Stagehand.AgentType;\n AgentExecutionOptions: Stagehand.AgentExecutionOptions<Stagehand.AgentExecuteOptions>;\n AgentHandlerOptions: Stagehand.AgentHandlerOptions;\n ActionExecutionResult: Stagehand.ActionExecutionResult;\n ToolUseItem: Stagehand.ToolUseItem;\n AnthropicMessage: Stagehand.AnthropicMessage;\n AnthropicContentBlock: Stagehand.AnthropicContentBlock;\n AnthropicTextBlock: Stagehand.AnthropicTextBlock;\n AnthropicToolResult: Stagehand.AnthropicToolResult;\n ResponseItem: Stagehand.ResponseItem;\n ComputerCallItem: Stagehand.ComputerCallItem;\n FunctionCallItem: Stagehand.FunctionCallItem;\n ResponseInputItem: Stagehand.ResponseInputItem;\n AgentInstance: Stagehand.AgentInstance;\n AgentProviderType: Stagehand.AgentProviderType;\n AgentModelConfig: Stagehand.AgentModelConfig;\n AgentConfig: Stagehand.AgentConfig;\n AgentToolMode: Stagehand.AgentToolMode;\n VariableValue: Stagehand.VariableValue;\n Variables: Stagehand.Variables;\n AgentCallbacks: Stagehand.AgentCallbacks;\n AgentExecuteCallbacks: Stagehand.AgentExecuteCallbacks;\n AgentStreamCallbacks: Stagehand.AgentStreamCallbacks;\n AgentExecuteOptionsBase: Stagehand.AgentExecuteOptionsBase;\n AgentStreamExecuteOptions: Stagehand.AgentStreamExecuteOptions;\n ModelMessage: Stagehand.ModelMessage;\n // Types from agent/tools\n AgentTools: Stagehand.AgentTools;\n AgentToolTypesMap: Stagehand.AgentToolTypesMap;\n AgentUITools: Stagehand.AgentUITools;\n AgentToolCall: Stagehand.AgentToolCall;\n AgentToolResult: Stagehand.AgentToolResult;\n // Types from logs.ts\n LogLevel: Stagehand.LogLevel;\n LogLine: Stagehand.LogLine;\n Logger: Stagehand.Logger;\n // Types from metrics.ts\n StagehandMetrics: Stagehand.StagehandMetrics;\n // Types from options.ts\n V3Env: Stagehand.V3Env;\n LocalBrowserLaunchOptions: Stagehand.LocalBrowserLaunchOptions;\n V3Options: Stagehand.V3Options;\n // Types from page.ts\n AnyPage: Stagehand.AnyPage;\n Page: Stagehand.Page;\n PlaywrightPage: Stagehand.PlaywrightPage;\n PatchrightPage: Stagehand.PatchrightPage;\n PuppeteerPage: Stagehand.PuppeteerPage;\n ConsoleListener: Stagehand.ConsoleListener;\n LoadState: Stagehand.LoadState;\n // Types from LLMClient.ts\n ChatMessage: Stagehand.ChatMessage;\n ChatMessageContent: Stagehand.ChatMessageContent;\n ChatMessageImageContent: Stagehand.ChatMessageImageContent;\n ChatMessageTextContent: Stagehand.ChatMessageTextContent;\n ChatCompletionOptions: Stagehand.ChatCompletionOptions;\n LLMResponse: Stagehand.LLMResponse;\n CreateChatCompletionOptions: Stagehand.CreateChatCompletionOptions;\n LLMUsage: Stagehand.LLMUsage;\n LLMParsedResponse: Stagehand.LLMParsedResponse<Record<string, unknown>>;\n // Types from zodCompat.ts\n StagehandZodSchema: Stagehand.StagehandZodSchema;\n StagehandZodObject: Stagehand.StagehandZodObject;\n InferStagehandSchema: Stagehand.InferStagehandSchema<Stagehand.StagehandZodSchema>;\n JsonSchemaDocument: Stagehand.JsonSchemaDocument;\n // Types from utils.ts\n JsonSchema: Stagehand.JsonSchema;\n JsonSchemaProperty: Stagehand.JsonSchemaProperty;\n // Types from cookies.ts\n Cookie: Stagehand.Cookie;\n CookieParam: Stagehand.CookieParam;\n ClearCookieOptions: Stagehand.ClearCookieOptions;\n};\n\ndescribe(\"Stagehand public API types\", () => {\n describe(\"AnyPage\", () => {\n type ExpectedAnyPage =\n | Stagehand.PlaywrightPage\n | Stagehand.PuppeteerPage\n | Stagehand.PatchrightPage\n | Stagehand.Page;\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AnyPage>().toEqualTypeOf<ExpectedAnyPage>();\n });\n });\n\n describe(\"ActOptions\", () => {\n type ExpectedActOptions = {\n model?: Stagehand.ModelConfiguration;\n variables?: Stagehand.Variables;\n timeout?: number;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ActOptions>().toEqualTypeOf<ExpectedActOptions>();\n });\n });\n\n describe(\"ActResult\", () => {\n type ExpectedActResult = {\n success: boolean;\n message: string;\n actionDescription: string;\n actions: Stagehand.Action[];\n cacheStatus?: \"HIT\" | \"MISS\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ActResult>().toEqualTypeOf<ExpectedActResult>();\n });\n });\n\n describe(\"ExtractOptions\", () => {\n type ExpectedExtractOptions = {\n model?: Stagehand.ModelConfiguration;\n timeout?: number;\n selector?: string;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ExtractOptions>().toEqualTypeOf<ExpectedExtractOptions>();\n });\n });\n\n describe(\"ObserveOptions\", () => {\n type ExpectedObserveOptions = {\n model?: Stagehand.ModelConfiguration;\n timeout?: number;\n selector?: string;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ObserveOptions>().toEqualTypeOf<ExpectedObserveOptions>();\n });\n });\n\n describe(\"ObserveResult\", () => {\n it(\"is an Action array with optional cacheStatus\", () => {\n expectTypeOf<Stagehand.ObserveResult>().toExtend<Stagehand.Action[]>();\n expectTypeOf<Stagehand.ObserveResult[\"cacheStatus\"]>().toEqualTypeOf<\n \"HIT\" | \"MISS\" | undefined\n >();\n });\n });\n\n describe(\"Action\", () => {\n type ExpectedAction = {\n selector: string;\n description: string;\n method?: string;\n arguments?: string[];\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.Action>().toEqualTypeOf<ExpectedAction>();\n });\n });\n\n describe(\"AgentAction\", () => {\n // AgentAction is a separate type from Action, not an extension\n // It has additional fields like type, reasoning, taskCompleted, etc.\n it(\"has type field\", () => {\n type TestAction = { type: string } & Stagehand.AgentAction;\n expectTypeOf<TestAction[\"type\"]>().toEqualTypeOf<string>();\n });\n });\n\n describe(\"AgentExecuteOptions\", () => {\n type ExpectedAgentExecuteOptions = {\n instruction: string;\n maxSteps?: number;\n page?: Stagehand.AnyPage;\n highlightCursor?: boolean;\n messages?: Stagehand.ModelMessage[];\n signal?: AbortSignal;\n excludeTools?: string[];\n output?: Stagehand.StagehandZodObject;\n callbacks?: Stagehand.AgentExecuteCallbacks;\n variables?: Stagehand.Variables;\n toolTimeout?: number;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentExecuteOptions>().toEqualTypeOf<ExpectedAgentExecuteOptions>();\n });\n });\n\n describe(\"AgentStreamExecuteOptions\", () => {\n type ExpectedAgentStreamExecuteOptions = {\n instruction: string;\n maxSteps?: number;\n page?: Stagehand.AnyPage;\n highlightCursor?: boolean;\n messages?: Stagehand.ModelMessage[];\n signal?: AbortSignal;\n excludeTools?: string[];\n output?: Stagehand.StagehandZodObject;\n callbacks?: Stagehand.AgentStreamCallbacks;\n variables?: Stagehand.Variables;\n toolTimeout?: number;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentStreamExecuteOptions>().toEqualTypeOf<ExpectedAgentStreamExecuteOptions>();\n });\n });\n\n describe(\"AgentExecutionOptions\", () => {\n type ExpectedAgentExecutionOptions<T = Stagehand.AgentExecuteOptions> = {\n options: T;\n logger: (message: Stagehand.LogLine) => void;\n retries?: number;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<\n Stagehand.AgentExecutionOptions<Stagehand.AgentExecuteOptions>\n >().toEqualTypeOf<\n ExpectedAgentExecutionOptions<Stagehand.AgentExecuteOptions>\n >();\n });\n });\n\n describe(\"AgentResult\", () => {\n type ExpectedAgentResult = {\n success: boolean;\n message: string;\n actions: Stagehand.AgentAction[];\n completed: boolean;\n metadata?: Record<string, unknown>;\n usage?: {\n input_tokens: number;\n output_tokens: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n };\n messages?: Stagehand.ModelMessage[];\n output?: Record<string, unknown>;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentResult>().toEqualTypeOf<ExpectedAgentResult>();\n });\n });\n\n describe(\"AgentConfig\", () => {\n type ExpectedAgentConfig = {\n systemPrompt?: string;\n integrations?: (unknown | string)[];\n tools?: unknown;\n cua?: boolean;\n model?: string | Stagehand.AgentModelConfig<string>;\n executionModel?: string | Stagehand.AgentModelConfig<string>;\n stream?: boolean;\n mode?: Stagehand.AgentToolMode;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentConfig>().toExtend<ExpectedAgentConfig>();\n });\n });\n\n describe(\"AgentToolMode\", () => {\n type ExpectedAgentToolMode = \"dom\" | \"hybrid\" | \"cua\";\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentToolMode>().toEqualTypeOf<ExpectedAgentToolMode>();\n });\n });\n\n describe(\"HistoryEntry\", () => {\n type ExpectedHistoryEntry = {\n method: \"act\" | \"extract\" | \"observe\" | \"navigate\" | \"agent\";\n parameters: unknown;\n result: unknown;\n timestamp: string;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.HistoryEntry>().toEqualTypeOf<ExpectedHistoryEntry>();\n });\n });\n\n describe(\"Cookie\", () => {\n type ExpectedCookie = {\n name: string;\n value: string;\n domain: string;\n path: string;\n expires: number;\n httpOnly: boolean;\n secure: boolean;\n sameSite: \"Strict\" | \"Lax\" | \"None\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.Cookie>().toEqualTypeOf<ExpectedCookie>();\n });\n });\n\n describe(\"CookieParam\", () => {\n type ExpectedCookieParam = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n expires?: number;\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.CookieParam>().toEqualTypeOf<ExpectedCookieParam>();\n });\n });\n\n describe(\"ClearCookieOptions\", () => {\n type ExpectedClearCookieOptions = {\n name?: string | RegExp;\n domain?: string | RegExp;\n path?: string | RegExp;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ClearCookieOptions>().toEqualTypeOf<ExpectedClearCookieOptions>();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"public-types.test.js","sourceRoot":"","sources":["../../../../../tests/unit/public-api/public-types.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expectTypeOf, it } from \"vitest\";\nimport * as Stagehand from \"@browserbasehq/stagehand\";\n\n// Type-level manifest of all expected exported types\n// Since these types don't exist at runtime, we currently need to manually add new publicly exported types\n// to this list ourselves - it's not automatically going to catch changes like our export-surface.test.ts does.\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype ExpectedExportedTypes = {\n // Types from model.ts\n AvailableModel: Stagehand.AvailableModel;\n AvailableCuaModel: Stagehand.AvailableCuaModel;\n ModelProvider: Stagehand.ModelProvider;\n ClientOptions: Stagehand.ClientOptions;\n ModelConfiguration: Stagehand.ModelConfiguration;\n AnthropicJsonSchemaObject: Stagehand.AnthropicJsonSchemaObject;\n AISDKProvider: Stagehand.AISDKProvider;\n AISDKCustomProvider: Stagehand.AISDKCustomProvider;\n LLMTool: Stagehand.LLMTool;\n // Types from methods.ts\n ActOptions: Stagehand.ActOptions;\n ActResult: Stagehand.ActResult;\n ExtractResult: Stagehand.ExtractResult<Stagehand.StagehandZodSchema>;\n Action: Stagehand.Action;\n HistoryEntry: Stagehand.HistoryEntry;\n ExtractOptions: Stagehand.ExtractOptions;\n ObserveOptions: Stagehand.ObserveOptions;\n ObserveResult: Stagehand.ObserveResult;\n V3FunctionName: Stagehand.V3FunctionName;\n // Types from agent.ts\n Tool: Stagehand.Tool;\n AgentAction: Stagehand.AgentAction;\n AgentResult: Stagehand.AgentResult;\n AgentExecuteOptions: Stagehand.AgentExecuteOptions;\n AgentType: Stagehand.AgentType;\n AgentExecutionOptions: Stagehand.AgentExecutionOptions<Stagehand.AgentExecuteOptions>;\n AgentHandlerOptions: Stagehand.AgentHandlerOptions;\n ActionExecutionResult: Stagehand.ActionExecutionResult;\n ToolUseItem: Stagehand.ToolUseItem;\n AnthropicMessage: Stagehand.AnthropicMessage;\n AnthropicContentBlock: Stagehand.AnthropicContentBlock;\n AnthropicTextBlock: Stagehand.AnthropicTextBlock;\n AnthropicToolResult: Stagehand.AnthropicToolResult;\n ResponseItem: Stagehand.ResponseItem;\n ComputerCallItem: Stagehand.ComputerCallItem;\n FunctionCallItem: Stagehand.FunctionCallItem;\n ResponseInputItem: Stagehand.ResponseInputItem;\n AgentInstance: Stagehand.AgentInstance;\n AgentProviderType: Stagehand.AgentProviderType;\n AgentModelConfig: Stagehand.AgentModelConfig;\n AgentConfig: Stagehand.AgentConfig;\n AgentToolMode: Stagehand.AgentToolMode;\n VariableValue: Stagehand.VariableValue;\n Variables: Stagehand.Variables;\n AgentCallbacks: Stagehand.AgentCallbacks;\n AgentExecuteCallbacks: Stagehand.AgentExecuteCallbacks;\n AgentStreamCallbacks: Stagehand.AgentStreamCallbacks;\n AgentExecuteOptionsBase: Stagehand.AgentExecuteOptionsBase;\n AgentStreamExecuteOptions: Stagehand.AgentStreamExecuteOptions;\n ModelMessage: Stagehand.ModelMessage;\n // Types from agent/tools\n AgentTools: Stagehand.AgentTools;\n AgentToolTypesMap: Stagehand.AgentToolTypesMap;\n AgentUITools: Stagehand.AgentUITools;\n AgentToolCall: Stagehand.AgentToolCall;\n AgentToolResult: Stagehand.AgentToolResult;\n // Types from logs.ts\n LogLevel: Stagehand.LogLevel;\n LogLine: Stagehand.LogLine;\n Logger: Stagehand.Logger;\n // Types from metrics.ts\n StagehandMetrics: Stagehand.StagehandMetrics;\n // Types from options.ts\n V3Env: Stagehand.V3Env;\n LocalBrowserLaunchOptions: Stagehand.LocalBrowserLaunchOptions;\n V3Options: Stagehand.V3Options;\n // Types from page.ts\n AnyPage: Stagehand.AnyPage;\n Page: Stagehand.Page;\n PlaywrightPage: Stagehand.PlaywrightPage;\n PatchrightPage: Stagehand.PatchrightPage;\n PuppeteerPage: Stagehand.PuppeteerPage;\n ConsoleListener: Stagehand.ConsoleListener;\n LoadState: Stagehand.LoadState;\n // Types from LLMClient.ts\n ChatMessage: Stagehand.ChatMessage;\n ChatMessageContent: Stagehand.ChatMessageContent;\n ChatMessageImageContent: Stagehand.ChatMessageImageContent;\n ChatMessageTextContent: Stagehand.ChatMessageTextContent;\n ChatCompletionOptions: Stagehand.ChatCompletionOptions;\n LLMResponse: Stagehand.LLMResponse;\n CreateChatCompletionOptions: Stagehand.CreateChatCompletionOptions;\n LLMUsage: Stagehand.LLMUsage;\n LLMParsedResponse: Stagehand.LLMParsedResponse<Record<string, unknown>>;\n // Types from zodCompat.ts\n StagehandZodSchema: Stagehand.StagehandZodSchema;\n StagehandZodObject: Stagehand.StagehandZodObject;\n InferStagehandSchema: Stagehand.InferStagehandSchema<Stagehand.StagehandZodSchema>;\n JsonSchemaDocument: Stagehand.JsonSchemaDocument;\n // Types from utils.ts\n JsonSchema: Stagehand.JsonSchema;\n JsonSchemaProperty: Stagehand.JsonSchemaProperty;\n // Types from cookies.ts\n Cookie: Stagehand.Cookie;\n CookieParam: Stagehand.CookieParam;\n ClearCookieOptions: Stagehand.ClearCookieOptions;\n};\n\ndescribe(\"Stagehand public API types\", () => {\n describe(\"AnyPage\", () => {\n type ExpectedAnyPage =\n | Stagehand.PlaywrightPage\n | Stagehand.PuppeteerPage\n | Stagehand.PatchrightPage\n | Stagehand.Page;\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AnyPage>().toEqualTypeOf<ExpectedAnyPage>();\n });\n });\n\n describe(\"ActOptions\", () => {\n type ExpectedActOptions = {\n model?: Stagehand.ModelConfiguration;\n variables?: Stagehand.Variables;\n timeout?: number;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ActOptions>().toEqualTypeOf<ExpectedActOptions>();\n });\n });\n\n describe(\"ActResult\", () => {\n type ExpectedActResult = {\n success: boolean;\n message: string;\n actionDescription: string;\n actions: Stagehand.Action[];\n cacheStatus?: \"HIT\" | \"MISS\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ActResult>().toEqualTypeOf<ExpectedActResult>();\n });\n });\n\n describe(\"ExtractOptions\", () => {\n type ExpectedExtractOptions = {\n model?: Stagehand.ModelConfiguration;\n timeout?: number;\n selector?: string;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ExtractOptions>().toEqualTypeOf<ExpectedExtractOptions>();\n });\n });\n\n describe(\"ObserveOptions\", () => {\n type ExpectedObserveOptions = {\n model?: Stagehand.ModelConfiguration;\n timeout?: number;\n selector?: string;\n page?: Stagehand.AnyPage;\n serverCache?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ObserveOptions>().toEqualTypeOf<ExpectedObserveOptions>();\n });\n });\n\n describe(\"ObserveResult\", () => {\n it(\"is an Action array with optional cacheStatus\", () => {\n expectTypeOf<Stagehand.ObserveResult>().toExtend<Stagehand.Action[]>();\n expectTypeOf<Stagehand.ObserveResult[\"cacheStatus\"]>().toEqualTypeOf<\n \"HIT\" | \"MISS\" | undefined\n >();\n });\n });\n\n describe(\"Action\", () => {\n type ExpectedAction = {\n selector: string;\n description: string;\n method?: string;\n arguments?: string[];\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.Action>().toEqualTypeOf<ExpectedAction>();\n });\n });\n\n describe(\"AgentAction\", () => {\n // AgentAction is a separate type from Action, not an extension\n // It has additional fields like type, reasoning, taskCompleted, etc.\n it(\"has type field\", () => {\n type TestAction = { type: string } & Stagehand.AgentAction;\n expectTypeOf<TestAction[\"type\"]>().toEqualTypeOf<string>();\n });\n });\n\n describe(\"AgentExecuteOptions\", () => {\n type ExpectedAgentExecuteOptions = {\n instruction: string;\n maxSteps?: number;\n page?: Stagehand.AnyPage;\n highlightCursor?: boolean;\n messages?: Stagehand.ModelMessage[];\n signal?: AbortSignal;\n excludeTools?: string[];\n output?: Stagehand.StagehandZodObject;\n callbacks?: Stagehand.AgentExecuteCallbacks;\n variables?: Stagehand.Variables;\n toolTimeout?: number;\n useSearch?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentExecuteOptions>().toEqualTypeOf<ExpectedAgentExecuteOptions>();\n });\n });\n\n describe(\"AgentStreamExecuteOptions\", () => {\n type ExpectedAgentStreamExecuteOptions = {\n instruction: string;\n maxSteps?: number;\n page?: Stagehand.AnyPage;\n highlightCursor?: boolean;\n messages?: Stagehand.ModelMessage[];\n signal?: AbortSignal;\n excludeTools?: string[];\n output?: Stagehand.StagehandZodObject;\n callbacks?: Stagehand.AgentStreamCallbacks;\n variables?: Stagehand.Variables;\n toolTimeout?: number;\n useSearch?: boolean;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentStreamExecuteOptions>().toEqualTypeOf<ExpectedAgentStreamExecuteOptions>();\n });\n });\n\n describe(\"AgentExecutionOptions\", () => {\n type ExpectedAgentExecutionOptions<T = Stagehand.AgentExecuteOptions> = {\n options: T;\n logger: (message: Stagehand.LogLine) => void;\n retries?: number;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<\n Stagehand.AgentExecutionOptions<Stagehand.AgentExecuteOptions>\n >().toEqualTypeOf<\n ExpectedAgentExecutionOptions<Stagehand.AgentExecuteOptions>\n >();\n });\n });\n\n describe(\"AgentResult\", () => {\n type ExpectedAgentResult = {\n success: boolean;\n message: string;\n actions: Stagehand.AgentAction[];\n completed: boolean;\n metadata?: Record<string, unknown>;\n usage?: {\n input_tokens: number;\n output_tokens: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n };\n messages?: Stagehand.ModelMessage[];\n output?: Record<string, unknown>;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentResult>().toEqualTypeOf<ExpectedAgentResult>();\n });\n });\n\n describe(\"AgentConfig\", () => {\n type ExpectedAgentConfig = {\n systemPrompt?: string;\n integrations?: (unknown | string)[];\n tools?: unknown;\n cua?: boolean;\n model?: string | Stagehand.AgentModelConfig<string>;\n executionModel?: string | Stagehand.AgentModelConfig<string>;\n stream?: boolean;\n mode?: Stagehand.AgentToolMode;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentConfig>().toExtend<ExpectedAgentConfig>();\n });\n });\n\n describe(\"AgentToolMode\", () => {\n type ExpectedAgentToolMode = \"dom\" | \"hybrid\" | \"cua\";\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.AgentToolMode>().toEqualTypeOf<ExpectedAgentToolMode>();\n });\n });\n\n describe(\"HistoryEntry\", () => {\n type ExpectedHistoryEntry = {\n method: \"act\" | \"extract\" | \"observe\" | \"navigate\" | \"agent\";\n parameters: unknown;\n result: unknown;\n timestamp: string;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.HistoryEntry>().toEqualTypeOf<ExpectedHistoryEntry>();\n });\n });\n\n describe(\"Cookie\", () => {\n type ExpectedCookie = {\n name: string;\n value: string;\n domain: string;\n path: string;\n expires: number;\n httpOnly: boolean;\n secure: boolean;\n sameSite: \"Strict\" | \"Lax\" | \"None\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.Cookie>().toEqualTypeOf<ExpectedCookie>();\n });\n });\n\n describe(\"CookieParam\", () => {\n type ExpectedCookieParam = {\n name: string;\n value: string;\n url?: string;\n domain?: string;\n path?: string;\n expires?: number;\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: \"Strict\" | \"Lax\" | \"None\";\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.CookieParam>().toEqualTypeOf<ExpectedCookieParam>();\n });\n });\n\n describe(\"ClearCookieOptions\", () => {\n type ExpectedClearCookieOptions = {\n name?: string | RegExp;\n domain?: string | RegExp;\n path?: string | RegExp;\n };\n\n it(\"matches expected type shape\", () => {\n expectTypeOf<Stagehand.ClearCookieOptions>().toEqualTypeOf<ExpectedClearCookieOptions>();\n });\n });\n});\n"]}
@@ -46,6 +46,7 @@ export declare const providerEnvVarMap: Partial<Record<ModelProvider | string, s
46
46
  */
47
47
  export declare function loadApiKeyFromEnv(provider: string | undefined, logger: (logLine: LogLine) => void): string | undefined;
48
48
  export declare function trimTrailingTextNode(path: string | undefined): string | undefined;
49
+ export declare function toTitleCase(str: string): string;
49
50
  export interface JsonSchemaProperty {
50
51
  type: string;
51
52
  enum?: unknown[];
@@ -569,6 +569,9 @@ export function loadApiKeyFromEnv(provider, logger) {
569
569
  export function trimTrailingTextNode(path) {
570
570
  return path?.replace(/\/text\(\)(\[\d+\])?$/iu, "");
571
571
  }
572
+ export function toTitleCase(str) {
573
+ return str.replace(/\w\S*/g, (text) => text.charAt(0).toUpperCase() + text.substring(1));
574
+ }
572
575
  /**
573
576
  * Converts a JSON Schema object to a Zod schema
574
577
  * @param schema The JSON Schema object to convert
@@ -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\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 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"]}
@@ -3,7 +3,7 @@ import Anthropic from "@anthropic-ai/sdk";
3
3
  import { AgentClient } from "./AgentClient.js";
4
4
  import { compressConversationImages } from "./utils/imageCompression.js";
5
5
  import { toJsonSchema } from "../zodCompat.js";
6
- import { SessionFileLogger, formatCuaPromptPreview, formatCuaResponsePreview, } from "../flowLogger.js";
6
+ import { FlowLogger, extractLlmCuaPromptSummary, extractLlmCuaResponseSummary, } from "../flowLogger.js";
7
7
  import { v7 as uuidv7 } from "uuid";
8
8
  /**
9
9
  * Client for Anthropic's Computer Use API
@@ -398,11 +398,10 @@ export class AnthropicCUAClient extends AgentClient {
398
398
  }
399
399
  // Log LLM request
400
400
  const llmRequestId = uuidv7();
401
- SessionFileLogger.logLlmRequest({
401
+ FlowLogger.logLlmRequest({
402
402
  requestId: llmRequestId,
403
403
  model: this.modelName,
404
- operation: "CUA.getAction",
405
- prompt: formatCuaPromptPreview(messages),
404
+ prompt: extractLlmCuaPromptSummary(messages),
406
405
  });
407
406
  const startTime = Date.now();
408
407
  // Create the message using the Anthropic Messages API
@@ -416,11 +415,10 @@ export class AnthropicCUAClient extends AgentClient {
416
415
  inference_time_ms: elapsedMs,
417
416
  };
418
417
  // Log LLM response
419
- SessionFileLogger.logLlmResponse({
418
+ FlowLogger.logLlmResponse({
420
419
  requestId: llmRequestId,
421
420
  model: this.modelName,
422
- operation: "CUA.getAction",
423
- output: formatCuaResponsePreview(response.content),
421
+ output: extractLlmCuaResponseSummary(response.content),
424
422
  inputTokens: response.usage.input_tokens,
425
423
  outputTokens: response.usage.output_tokens,
426
424
  });