@browserbasehq/orca 3.5.1-preview.0 → 3.6.0-gemini-cua

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 (186) hide show
  1. package/README.md +0 -12
  2. package/dist/cjs/lib/utils.d.ts +6 -0
  3. package/dist/cjs/lib/utils.js +11 -0
  4. package/dist/cjs/lib/utils.js.map +1 -1
  5. package/dist/cjs/lib/v3/agent/AgentProvider.js +4 -3
  6. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -9
  8. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +124 -28
  10. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  11. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +10 -1
  12. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  13. package/dist/cjs/lib/v3/cache/ActCache.js +1 -1
  14. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -1
  15. package/dist/cjs/lib/v3/cache/utils.d.ts +7 -0
  16. package/dist/cjs/lib/v3/cache/utils.js +19 -0
  17. package/dist/cjs/lib/v3/cache/utils.js.map +1 -1
  18. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +2 -1
  19. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +25 -9
  20. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  21. package/dist/cjs/lib/v3/index.d.ts +2 -2
  22. package/dist/cjs/lib/v3/index.js.map +1 -1
  23. package/dist/cjs/lib/v3/launch/local.js +1 -0
  24. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  25. package/dist/cjs/lib/v3/llm/LLMProvider.js +1 -0
  26. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  27. package/dist/cjs/lib/v3/llm/aisdk.js +4 -0
  28. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  29. package/dist/cjs/lib/v3/llm/anthropicOptions.d.ts +57 -0
  30. package/dist/cjs/lib/v3/llm/anthropicOptions.js +115 -0
  31. package/dist/cjs/lib/v3/llm/anthropicOptions.js.map +1 -0
  32. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  33. package/dist/cjs/lib/v3/types/public/agent.js +2 -0
  34. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  35. package/dist/cjs/lib/v3/types/public/model.d.ts +3 -2
  36. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  37. package/dist/cjs/lib/v3/understudy/page.js +1 -1
  38. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  39. package/dist/cjs/lib/v3/v3.js +4 -1
  40. package/dist/cjs/lib/v3/v3.js.map +1 -1
  41. package/dist/cjs/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
  42. package/dist/cjs/lib/v3/verifier/errorTaxonomy.js +291 -0
  43. package/dist/cjs/lib/v3/verifier/errorTaxonomy.js.map +1 -0
  44. package/dist/cjs/lib/v3/verifier/evidence.d.ts +44 -0
  45. package/dist/cjs/lib/v3/verifier/evidence.js +432 -0
  46. package/dist/cjs/lib/v3/verifier/evidence.js.map +1 -0
  47. package/dist/cjs/lib/v3/verifier/index.d.ts +1 -1
  48. package/dist/cjs/lib/v3/verifier/index.js.map +1 -1
  49. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
  50. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js +71 -0
  51. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
  52. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
  53. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js +166 -0
  54. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
  55. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
  56. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js +158 -0
  57. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
  58. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
  59. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js +137 -0
  60. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
  61. package/dist/cjs/lib/v3/verifier/prompts/index.d.ts +8 -0
  62. package/dist/cjs/lib/v3/verifier/prompts/index.js +22 -0
  63. package/dist/cjs/lib/v3/verifier/prompts/index.js.map +1 -0
  64. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
  65. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js +77 -0
  66. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
  67. package/dist/cjs/lib/v3/verifier/prompts/render.d.ts +23 -0
  68. package/dist/cjs/lib/v3/verifier/prompts/render.js +45 -0
  69. package/dist/cjs/lib/v3/verifier/prompts/render.js.map +1 -0
  70. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
  71. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js +321 -0
  72. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
  73. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
  74. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js +116 -0
  75. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
  76. package/dist/cjs/lib/v3/verifier/rubricVerifier.d.ts +91 -0
  77. package/dist/cjs/lib/v3/verifier/rubricVerifier.js +1645 -0
  78. package/dist/cjs/lib/v3/verifier/rubricVerifier.js.map +1 -0
  79. package/dist/cjs/lib/v3/verifier/trajectory.d.ts +3 -3
  80. package/dist/cjs/lib/v3/verifier/trajectory.js +26 -26
  81. package/dist/cjs/lib/v3/verifier/trajectory.js.map +1 -1
  82. package/dist/cjs/lib/v3/verifier/types.d.ts +163 -15
  83. package/dist/cjs/lib/v3/verifier/types.js +0 -7
  84. package/dist/cjs/lib/v3/verifier/types.js.map +1 -1
  85. package/dist/cjs/lib/v3Evaluator.d.ts +5 -0
  86. package/dist/cjs/lib/v3Evaluator.js +47 -7
  87. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  88. package/dist/cjs/lib/version.d.ts +1 -1
  89. package/dist/cjs/lib/version.js +1 -1
  90. package/dist/cjs/lib/version.js.map +1 -1
  91. package/dist/esm/lib/utils.d.ts +6 -0
  92. package/dist/esm/lib/utils.js +10 -0
  93. package/dist/esm/lib/utils.js.map +1 -1
  94. package/dist/esm/lib/v3/agent/AgentProvider.js +4 -3
  95. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  96. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -9
  97. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  98. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +124 -28
  99. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  100. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +10 -1
  101. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  102. package/dist/esm/lib/v3/cache/ActCache.js +2 -2
  103. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  104. package/dist/esm/lib/v3/cache/utils.d.ts +7 -0
  105. package/dist/esm/lib/v3/cache/utils.js +18 -0
  106. package/dist/esm/lib/v3/cache/utils.js.map +1 -1
  107. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -1
  108. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +25 -9
  109. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  110. package/dist/esm/lib/v3/index.d.ts +2 -2
  111. package/dist/esm/lib/v3/index.js.map +1 -1
  112. package/dist/esm/lib/v3/launch/local.js +1 -0
  113. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  114. package/dist/esm/lib/v3/llm/LLMProvider.js +1 -0
  115. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  116. package/dist/esm/lib/v3/llm/aisdk.js +4 -0
  117. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  118. package/dist/esm/lib/v3/llm/anthropicOptions.d.ts +57 -0
  119. package/dist/esm/lib/v3/llm/anthropicOptions.js +106 -0
  120. package/dist/esm/lib/v3/llm/anthropicOptions.js.map +1 -0
  121. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  122. package/dist/esm/lib/v3/types/public/agent.js +2 -0
  123. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  124. package/dist/esm/lib/v3/types/public/model.d.ts +3 -2
  125. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  126. package/dist/esm/lib/v3/understudy/page.js +1 -1
  127. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  128. package/dist/esm/lib/v3/v3.js +4 -1
  129. package/dist/esm/lib/v3/v3.js.map +1 -1
  130. package/dist/esm/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
  131. package/dist/esm/lib/v3/verifier/errorTaxonomy.js +285 -0
  132. package/dist/esm/lib/v3/verifier/errorTaxonomy.js.map +1 -0
  133. package/dist/esm/lib/v3/verifier/evidence.d.ts +44 -0
  134. package/dist/esm/lib/v3/verifier/evidence.js +393 -0
  135. package/dist/esm/lib/v3/verifier/evidence.js.map +1 -0
  136. package/dist/esm/lib/v3/verifier/index.d.ts +1 -1
  137. package/dist/esm/lib/v3/verifier/index.js.map +1 -1
  138. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
  139. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js +68 -0
  140. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
  141. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
  142. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js +162 -0
  143. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
  144. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
  145. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js +155 -0
  146. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
  147. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
  148. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js +134 -0
  149. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
  150. package/dist/esm/lib/v3/verifier/prompts/index.d.ts +8 -0
  151. package/dist/esm/lib/v3/verifier/prompts/index.js +9 -0
  152. package/dist/esm/lib/v3/verifier/prompts/index.js.map +1 -0
  153. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
  154. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js +74 -0
  155. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
  156. package/dist/esm/lib/v3/verifier/prompts/render.d.ts +23 -0
  157. package/dist/esm/lib/v3/verifier/prompts/render.js +41 -0
  158. package/dist/esm/lib/v3/verifier/prompts/render.js.map +1 -0
  159. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
  160. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js +318 -0
  161. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
  162. package/dist/esm/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
  163. package/dist/esm/lib/v3/verifier/prompts/taskValidity.js +113 -0
  164. package/dist/esm/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
  165. package/dist/esm/lib/v3/verifier/rubricVerifier.d.ts +91 -0
  166. package/dist/esm/lib/v3/verifier/rubricVerifier.js +1640 -0
  167. package/dist/esm/lib/v3/verifier/rubricVerifier.js.map +1 -0
  168. package/dist/esm/lib/v3/verifier/trajectory.d.ts +3 -3
  169. package/dist/esm/lib/v3/verifier/trajectory.js +26 -26
  170. package/dist/esm/lib/v3/verifier/trajectory.js.map +1 -1
  171. package/dist/esm/lib/v3/verifier/types.d.ts +163 -15
  172. package/dist/esm/lib/v3/verifier/types.js +0 -7
  173. package/dist/esm/lib/v3/verifier/types.js.map +1 -1
  174. package/dist/esm/lib/v3Evaluator.d.ts +5 -0
  175. package/dist/esm/lib/v3Evaluator.js +47 -7
  176. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  177. package/dist/esm/lib/version.d.ts +1 -1
  178. package/dist/esm/lib/version.js +1 -1
  179. package/dist/esm/lib/version.js.map +1 -1
  180. package/package.json +8 -8
  181. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.d.ts +0 -24
  182. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js +0 -31
  183. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js.map +0 -1
  184. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.d.ts +0 -24
  185. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js +0 -28
  186. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AnthropicCUAClient.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AnthropicCUAClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AgentAction,\n AgentResult,\n AgentType,\n AnthropicContentBlock,\n AnthropicMessage,\n AnthropicTextBlock,\n AnthropicToolResult,\n AgentExecutionOptions,\n ToolUseItem,\n} from \"../types/public/agent.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { ClientOptions, ThinkingEffort } from \"../types/public/model.js\";\nimport {\n AgentScreenshotProviderError,\n StagehandClosedError,\n} from \"../types/public/sdkErrors.js\";\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { ToolSet } from \"ai\";\nimport { AgentClient } from \"./AgentClient.js\";\nimport { compressConversationImages } from \"./utils/imageCompression.js\";\nimport { toJsonSchema } from \"../zodCompat.js\";\nimport type { StagehandZodSchema } from \"../zodCompat.js\";\nimport {\n FlowLogger,\n extractLlmCuaPromptSummary,\n extractLlmCuaResponseSummary,\n} from \"../flowlogger/FlowLogger.js\";\nimport { v7 as uuidv7 } from \"uuid\";\n\nexport type ResponseInputItem = AnthropicMessage | AnthropicToolResult;\n\n/**\n * Client for Anthropic's Computer Use API\n * This implementation uses the official Anthropic Messages API for Computer Use\n */\nexport class AnthropicCUAClient extends AgentClient {\n private apiKey: string;\n private baseURL?: string;\n private client: Anthropic;\n public lastMessageId?: string;\n private currentViewport = { width: 1288, height: 711 };\n private currentUrl?: string;\n private screenshotProvider?: () => Promise<string>;\n private actionHandler?: (action: AgentAction) => Promise<void>;\n private thinkingBudget: number | null = null;\n private thinkingEffort: ThinkingEffort | null = null;\n private userTemperature: number | undefined;\n private tools?: ToolSet;\n\n constructor(\n type: AgentType,\n modelName: string,\n userProvidedInstructions?: string,\n clientOptions?: ClientOptions,\n tools?: ToolSet,\n ) {\n super(type, modelName, userProvidedInstructions);\n\n // Process client options\n this.apiKey =\n (clientOptions?.apiKey as string) || process.env.ANTHROPIC_API_KEY || \"\";\n this.baseURL = (clientOptions?.baseURL as string) || undefined;\n\n // Get thinking budget if specified (deprecated for 4.6 models)\n if (\n clientOptions?.thinkingBudget &&\n typeof clientOptions.thinkingBudget === \"number\"\n ) {\n this.thinkingBudget = clientOptions.thinkingBudget;\n }\n\n // Get thinking effort for adaptive thinking (Claude 4.6+ models)\n if (clientOptions?.thinkingEffort) {\n this.thinkingEffort = clientOptions.thinkingEffort;\n }\n\n // Track user-specified temperature so we can warn if adaptive thinking overrides it\n this.userTemperature = clientOptions?.temperature;\n\n // Store client options for reference\n this.clientOptions = {\n apiKey: this.apiKey,\n };\n\n if (this.baseURL) {\n this.clientOptions.baseURL = this.baseURL;\n }\n\n // Initialize the Anthropic client\n this.client = new Anthropic(this.clientOptions);\n\n this.tools = tools;\n }\n\n setViewport(width: number, height: number): void {\n this.currentViewport = { width, height };\n }\n\n setCurrentUrl(url: string): void {\n this.currentUrl = url;\n }\n\n setScreenshotProvider(provider: () => Promise<string>): void {\n this.screenshotProvider = provider;\n }\n\n setActionHandler(handler: (action: AgentAction) => Promise<void>): void {\n this.actionHandler = handler;\n }\n\n setTools(tools: ToolSet): void {\n this.tools = tools;\n }\n\n /**\n * Execute a task with the Anthropic CUA\n * This is the main entry point for the agent\n * @implements AgentClient.execute\n */\n async execute(executionOptions: AgentExecutionOptions): Promise<AgentResult> {\n const { options, logger } = executionOptions;\n const { instruction } = options;\n const maxSteps = options.maxSteps || 10;\n\n let currentStep = 0;\n let completed = false;\n const actions: AgentAction[] = [];\n const messageList: string[] = [];\n let finalMessage = \"\";\n\n // Start with the initial instruction\n let inputItems: ResponseInputItem[] =\n this.createInitialInputItems(instruction);\n\n logger({\n category: \"agent\",\n message: `Starting Anthropic agent execution with instruction: ${instruction}`,\n level: 1,\n });\n\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalInferenceTime = 0;\n\n try {\n // Execute steps until completion or max steps reached\n while (!completed && currentStep < maxSteps) {\n await this.preStepHook?.();\n\n logger({\n category: \"agent\",\n message: `Executing step ${currentStep + 1}/${maxSteps}`,\n level: 1,\n });\n\n const result = await this.executeStep(inputItems, logger);\n totalInputTokens += result.usage.input_tokens;\n totalOutputTokens += result.usage.output_tokens;\n totalInferenceTime += result.usage.inference_time_ms;\n\n // Add actions to the list\n if (result.actions.length > 0) {\n logger({\n category: \"agent\",\n message: `Step ${currentStep + 1} performed ${result.actions.length} actions`,\n level: 2,\n });\n actions.push(...result.actions);\n }\n\n // Update completion status\n completed = result.completed;\n\n // Update the input items for the next step if we're continuing\n if (!completed) {\n inputItems = result.nextInputItems;\n }\n\n // Record any message for this step\n if (result.message) {\n messageList.push(result.message);\n finalMessage = result.message;\n }\n\n // Increment step counter\n currentStep++;\n }\n\n logger({\n category: \"agent\",\n message: `Anthropic agent execution completed: ${completed}, with ${actions.length} total actions performed`,\n level: 1,\n });\n\n // Return the final result\n return {\n success: completed,\n actions,\n message: finalMessage,\n completed,\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n inference_time_ms: totalInferenceTime,\n },\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n return {\n success: false,\n actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n inference_time_ms: totalInferenceTime,\n },\n };\n }\n }\n\n async executeStep(\n inputItems: ResponseInputItem[],\n logger: (message: LogLine) => void,\n ): Promise<{\n actions: AgentAction[];\n message: string;\n completed: boolean;\n nextInputItems: ResponseInputItem[];\n usage: {\n input_tokens: number;\n output_tokens: number;\n inference_time_ms: number;\n };\n }> {\n try {\n // Get response from the model\n const result = await this.getAction(inputItems, logger);\n const content = result.content;\n const usage = {\n input_tokens: result.usage.input_tokens,\n output_tokens: result.usage.output_tokens,\n inference_time_ms: result.usage.inference_time_ms,\n };\n\n logger({\n category: \"agent\",\n message: `Received response with ${content.length} content blocks`,\n level: 2,\n });\n\n // Extract actions from the content\n const stepActions: AgentAction[] = [];\n const toolUseItems: ToolUseItem[] = [];\n let message = \"\";\n\n // Process content blocks to find tool use items and text content\n for (const block of content) {\n logger({\n category: \"agent\",\n message: `Processing block type: ${block.type}, id: ${block.id || \"unknown\"}`,\n level: 2,\n });\n\n if (block.type === \"tool_use\") {\n // Direct handling of tool_use type\n logger({\n category: \"agent\",\n message: `Found tool_use block: ${JSON.stringify(block)}`,\n level: 2,\n });\n\n // Cast to ToolUseItem and add to list\n const toolUseItem = block as ToolUseItem;\n toolUseItems.push(toolUseItem);\n\n logger({\n category: \"agent\",\n message: `Added tool_use item: ${toolUseItem.name}, action: ${JSON.stringify(toolUseItem.input)}`,\n level: 2,\n });\n\n // Convert tool use to action and add to actions list\n const action = this.convertToolUseToAction(toolUseItem);\n if (action) {\n logger({\n category: \"agent\",\n message: `Created action from tool_use: ${toolUseItem.name}, action: ${action.type}`,\n level: 2,\n });\n stepActions.push(action);\n } else if (this.tools && toolUseItem.name in this.tools) {\n stepActions.push({\n type: \"custom_tool\",\n tool: toolUseItem.name,\n input: toolUseItem.input,\n } as AgentAction);\n }\n } else if (block.type === \"text\") {\n // Safe to cast here since we've verified it's a text block\n const textBlock = block as unknown as AnthropicTextBlock;\n message += textBlock.text + \"\\n\";\n\n logger({\n category: \"agent\",\n message: `Found text block: ${textBlock.text}`,\n level: 2,\n });\n } else {\n logger({\n category: \"agent\",\n message: `Found unknown block type: ${block.type}`,\n level: 2,\n });\n }\n }\n\n // Execute actions if an action handler is provided\n if (this.actionHandler && stepActions.length > 0) {\n for (const action of stepActions) {\n try {\n logger({\n category: \"agent\",\n message: `Executing action: ${action.type}`,\n level: 1,\n });\n await this.actionHandler(action);\n } catch (error) {\n if (error instanceof StagehandClosedError) {\n throw error;\n }\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing action ${action.type}: ${errorMessage}`,\n level: 0,\n });\n }\n }\n }\n\n // Create the assistant response message with all content blocks\n const assistantMessage: AnthropicMessage = {\n role: \"assistant\",\n content: content as unknown as AnthropicContentBlock[],\n };\n\n // Keep track of the conversation history by preserving all previous messages\n // and adding new messages at the end\n const nextInputItems: ResponseInputItem[] = [...inputItems];\n\n // Add the assistant message with tool_use blocks to the history\n compressConversationImages(nextInputItems);\n\n nextInputItems.push(assistantMessage);\n\n // Generate tool results and add them as a user message\n if (toolUseItems.length > 0) {\n const toolResults = await this.takeAction(toolUseItems, logger);\n\n if (toolResults.length > 0) {\n // Tool results are AnthropicToolResult[] which are compatible with AnthropicContentBlock[]\n const userToolResultsMessage: AnthropicMessage = {\n role: \"user\",\n content: toolResults as unknown as AnthropicContentBlock[],\n };\n nextInputItems.push(userToolResultsMessage);\n }\n }\n\n // The step is completed only if there were no tool_use items\n const completed = toolUseItems.length === 0;\n\n logger({\n category: \"agent\",\n message: `Step processed ${toolUseItems.length} tool use items, completed: ${completed}`,\n level: 2,\n });\n\n return {\n actions: stepActions,\n message: message.trim(),\n completed,\n nextInputItems,\n usage: usage,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing step: ${errorMessage}`,\n level: 0,\n });\n\n throw error;\n }\n }\n\n private createInitialInputItems(instruction: string): AnthropicMessage[] {\n // For the initial request, we use a simple array with the user's instruction\n return [\n {\n role: \"system\",\n content: this.userProvidedInstructions,\n },\n {\n role: \"user\",\n content: instruction,\n },\n ];\n }\n\n async getAction(\n inputItems: ResponseInputItem[],\n logger?: (message: LogLine) => void,\n ): Promise<{\n content: AnthropicContentBlock[];\n id: string;\n usage: Record<string, number>;\n }> {\n try {\n // For the API request, we use the inputItems directly\n // These should already be properly formatted as a sequence of user/assistant messages\n const messages: AnthropicMessage[] = [];\n\n for (const item of inputItems) {\n if (\"role\" in item) {\n // Skip system messages as Anthropic requires system as a top-level parameter\n if (item.role !== \"system\") {\n messages.push(item);\n }\n }\n // Note: We don't need special handling for tool_result items here anymore\n // as they should already be properly wrapped in user messages\n }\n\n // Claude 4.6+ models require the newer computer_20251124 tool version\n // and support adaptive thinking instead of budget_tokens\n const modelBase = this.modelName.includes(\"/\")\n ? this.modelName.split(\"/\")[1]\n : this.modelName;\n\n // Check if this is a Claude 4.6+ model that supports adaptive thinking\n const isAdaptiveThinkingModel = [\n \"claude-opus-4-8\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-6\",\n ].includes(modelBase);\n\n // claude-opus-4-5-20251101 uses the newer computer tool version but does\n // NOT support adaptive thinking — it still requires budget_tokens.\n const shouldUseNewToolVersion =\n isAdaptiveThinkingModel || modelBase === \"claude-opus-4-5-20251101\";\n\n // Configure thinking capability based on model version\n // - For 4.6 models: Use adaptive thinking with effort (recommended, defaults to \"medium\")\n // - For older models: Use enabled thinking with budget_tokens (deprecated)\n let thinking:\n | { type: \"adaptive\" }\n | { type: \"enabled\"; budget_tokens: number }\n | undefined;\n let outputConfig: { effort: Exclude<ThinkingEffort, \"none\"> } | undefined;\n let useAdaptiveThinking = false;\n\n if (isAdaptiveThinkingModel) {\n if (this.thinkingBudget) {\n logger?.({\n category: \"agent\",\n message: `thinkingBudget is ignored for ${this.modelName}; use thinkingEffort instead`,\n level: 2,\n });\n }\n\n if (this.thinkingEffort !== \"none\") {\n // Claude 4.6+ models use adaptive thinking with output_config.effort\n // Default to \"medium\" effort if not explicitly specified\n // See: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n thinking = { type: \"adaptive\" };\n outputConfig = { effort: this.thinkingEffort || \"medium\" };\n useAdaptiveThinking = true;\n }\n } else if (this.thinkingBudget) {\n // Older models use enabled thinking with budget_tokens (deprecated for 4.6)\n thinking = { type: \"enabled\", budget_tokens: this.thinkingBudget };\n }\n\n const computerToolType = shouldUseNewToolVersion\n ? \"computer_20251124\"\n : \"computer_20250124\";\n const betaFlag = shouldUseNewToolVersion\n ? \"computer-use-2025-11-24\"\n : \"computer-use-2025-01-24\";\n\n // Create the request parameters\n const requestParams: Record<string, unknown> = {\n model: this.modelName,\n max_tokens: 4096,\n messages: messages,\n tools: [\n {\n type: computerToolType,\n name: \"computer\",\n display_width_px: this.currentViewport.width,\n display_height_px: this.currentViewport.height,\n display_number: 1,\n },\n ],\n betas: [betaFlag],\n };\n\n // Add custom tools if available\n if (this.tools && Object.keys(this.tools).length > 0) {\n const customTools = Object.entries(this.tools).map(([name, tool]) => {\n const schema = tool.inputSchema as StagehandZodSchema;\n\n // Convert Zod schema to proper JSON schema format for Anthropic\n const jsonSchema = toJsonSchema(schema) as {\n properties?: Record<string, unknown>;\n required?: string[];\n };\n\n const inputSchema = {\n type: \"object\",\n properties: jsonSchema.properties || {},\n required: jsonSchema.required || [],\n };\n\n return {\n name,\n description: tool.description,\n input_schema: inputSchema,\n };\n });\n\n requestParams.tools = [\n ...(requestParams.tools as Record<string, unknown>[]),\n ...customTools,\n ];\n }\n\n // Add system parameter if provided\n if (this.userProvidedInstructions) {\n requestParams.system = this.userProvidedInstructions;\n }\n\n // Add thinking parameter if available\n if (thinking) {\n requestParams.thinking = thinking;\n }\n\n // Add output_config for adaptive thinking (Claude 4.6+ models)\n if (outputConfig) {\n requestParams.output_config = outputConfig;\n }\n\n // Adaptive thinking requires temperature to be set to 1\n // See: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n if (useAdaptiveThinking) {\n if (this.userTemperature !== undefined && this.userTemperature !== 1) {\n logger?.({\n category: \"agent\",\n message: `Adaptive thinking requires temperature=1; overriding user-specified temperature=${this.userTemperature}`,\n level: 2,\n });\n }\n requestParams.temperature = 1;\n }\n\n // Log LLM request\n const llmRequestId = uuidv7();\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.modelName,\n prompt: extractLlmCuaPromptSummary(messages),\n });\n\n const startTime = Date.now();\n // Create the message using the Anthropic Messages API\n // @ts-expect-error - The Anthropic SDK types are stricter than what we need\n const response = await this.client.beta.messages.create(requestParams);\n const endTime = Date.now();\n const elapsedMs = endTime - startTime;\n const usage = {\n input_tokens: response.usage.input_tokens,\n output_tokens: response.usage.output_tokens,\n inference_time_ms: elapsedMs,\n };\n\n // Log LLM response\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.modelName,\n output: extractLlmCuaResponseSummary(response.content),\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n });\n\n // Store the message ID for future use\n this.lastMessageId = response.id;\n\n // Return the content and message ID\n return {\n // Cast the response content to our internal type\n content: response.content as unknown as AnthropicContentBlock[],\n id: response.id,\n usage,\n };\n } catch (error) {\n console.error(\"Error getting action from Anthropic:\", error);\n throw error;\n }\n }\n\n async takeAction(\n toolUseItems: ToolUseItem[],\n logger: (message: LogLine) => void,\n ): Promise<AnthropicToolResult[]> {\n const toolResults: AnthropicToolResult[] = [];\n\n logger({\n category: \"agent\",\n message: `Taking action on ${toolUseItems.length} tool use items`,\n level: 2,\n });\n\n // Process each tool use item\n for (const item of toolUseItems) {\n try {\n logger({\n category: \"agent\",\n message: `Processing tool use: ${item.name}, id: ${item.id}, action: ${JSON.stringify(item.input)}`,\n level: 2,\n });\n\n // TODO: Normalize and migrate to agentHandler\n\n // For computer tool, capture screenshot and return image\n if (item.name === \"computer\") {\n // Get action type\n const action = item.input.action as string;\n logger({\n category: \"agent\",\n message: `Computer action type: ${action}`,\n level: 2,\n });\n\n // Capture a screenshot for the response\n const screenshot = await this.captureScreenshot();\n logger({\n category: \"agent\",\n message: `Screenshot captured, length: ${screenshot.length}`,\n level: 2,\n });\n\n // Create proper image content block for Anthropic\n const imageContent = [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: \"image/png\",\n data: screenshot.replace(/^data:image\\/png;base64,/, \"\"),\n },\n },\n ];\n\n // Add current URL if available\n if (this.currentUrl) {\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n ...imageContent,\n {\n type: \"text\",\n text: `Current URL: ${this.currentUrl}`,\n },\n ],\n });\n } else {\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: imageContent,\n });\n }\n\n logger({\n category: \"agent\",\n message: `Added computer tool result for tool_use_id: ${item.id}`,\n level: 2,\n });\n } else {\n // Handle custom tools\n let toolResult = \"Tool executed successfully\";\n if (this.tools && item.name in this.tools) {\n try {\n const tool = this.tools[item.name];\n\n logger({\n category: \"agent\",\n message: `Executing tool call: ${item.name} with args: ${JSON.stringify(item.input)}`,\n level: 1,\n });\n\n const result = await tool.execute(item.input, {\n toolCallId: item.id,\n messages: [],\n });\n toolResult = JSON.stringify(result);\n\n logger({\n category: \"agent\",\n message: `Tool ${item.name} completed successfully. Result: ${toolResult}`,\n level: 1,\n });\n } catch (toolError) {\n const errorMessage =\n toolError instanceof Error\n ? toolError.message\n : String(toolError);\n toolResult = `Error executing tool: ${errorMessage}`;\n\n logger({\n category: \"agent\",\n message: `Error executing tool ${item.name}: ${errorMessage}`,\n level: 0,\n });\n }\n }\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: toolResult,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added custom tool result for tool ${item.name}, tool_use_id: ${item.id}`,\n level: 2,\n });\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n logger({\n category: \"agent\",\n message: `Error executing tool use: ${errorMessage}`,\n level: 0,\n });\n\n try {\n // For computer tool, try to capture a screenshot even on error\n if (item.name === \"computer\") {\n const screenshot = await this.captureScreenshot();\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: \"image/png\",\n data: screenshot.replace(/^data:image\\/png;base64,/, \"\"),\n },\n },\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added error tool result with screenshot for tool_use_id: ${item.id}`,\n level: 1,\n });\n } else {\n // For other tools, return an error message as a text content block\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added error tool result for tool_use_id: ${item.id}`,\n level: 1,\n });\n }\n } catch (screenshotError) {\n // If we can't capture a screenshot, just send the error\n logger({\n category: \"agent\",\n message: `Error capturing screenshot: ${String(screenshotError)}`,\n level: 0,\n });\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added text error tool result for tool_use_id: ${item.id}`,\n level: 1,\n });\n }\n }\n }\n\n logger({\n category: \"agent\",\n message: `Prepared ${toolResults.length} tool results for next request`,\n level: 2,\n });\n\n return toolResults;\n }\n\n private convertToolUseToAction(item: ToolUseItem): AgentAction | null {\n try {\n const { name, input } = item;\n\n if (name === \"computer\") {\n // For computer actions, format according to the action type\n const action = input.action as string;\n\n if (!action) {\n console.warn(\"Missing action in tool use item:\", item);\n return null;\n }\n\n // Handle different action types specifically\n if (action === \"screenshot\") {\n return {\n type: \"screenshot\",\n ...input,\n };\n } else if (action === \"click\") {\n return {\n type: \"click\",\n x: input.x as number,\n y: input.y as number,\n button: (input.button as string) || \"left\",\n ...input,\n };\n } else if (action === \"type\") {\n return {\n type: \"type\",\n text: input.text as string,\n ...input,\n };\n } else if (action === \"keypress\" || action === \"key\") {\n return {\n type: \"keypress\",\n keys: [input.text as string],\n ...input,\n };\n } else if (action === \"double_click\" || action === \"doubleClick\") {\n return {\n type: \"doubleClick\",\n x:\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0),\n y:\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0),\n ...input,\n };\n } else if (action === \"triple_click\" || action === \"tripleClick\") {\n return {\n type: \"tripleClick\",\n x:\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0),\n y:\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0),\n ...input,\n };\n } else if (action === \"scroll\") {\n // Convert Anthropic's coordinate, scroll_amount and scroll_direction into scroll_x and scroll_y\n const x =\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0);\n const y =\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0);\n\n // Calculate scroll_x and scroll_y based on scroll_amount and scroll_direction\n let scroll_x = 0;\n let scroll_y = 0;\n\n const scrollAmount = (input.scroll_amount as number) || 5;\n const scrollMultiplier = 100; // Pixels per unit of scroll_amount\n\n if (input.scroll_direction) {\n const direction = input.scroll_direction as string;\n if (direction === \"down\") {\n scroll_y = scrollAmount * scrollMultiplier;\n } else if (direction === \"up\") {\n scroll_y = -scrollAmount * scrollMultiplier;\n } else if (direction === \"right\") {\n scroll_x = scrollAmount * scrollMultiplier;\n } else if (direction === \"left\") {\n scroll_x = -scrollAmount * scrollMultiplier;\n }\n } else {\n // Use direct scroll_x and scroll_y if provided\n scroll_x = (input.scroll_x as number) || 0;\n scroll_y = (input.scroll_y as number) || 0;\n }\n\n return {\n type: \"scroll\",\n x: x,\n y: y,\n scroll_x: scroll_x,\n scroll_y: scroll_y,\n ...input,\n };\n } else if (action === \"move\") {\n // Handle Anthropic's coordinate format\n const coordinates = input.coordinate as number[] | undefined;\n const x = coordinates ? coordinates[0] : (input.x as number) || 0;\n const y = coordinates ? coordinates[1] : (input.y as number) || 0;\n\n return {\n type: \"move\",\n x: x,\n y: y,\n ...input,\n };\n } else if (action === \"drag\" || action === \"left_click_drag\") {\n // Make sure path is properly formatted\n const path =\n (input.path as { x: number; y: number }[]) ||\n (input.coordinate\n ? [\n {\n x: (input.start_coordinate as number[])[0],\n y: (input.start_coordinate as number[])[1],\n },\n {\n x: (input.coordinate as number[])[0],\n y: (input.coordinate as number[])[1],\n },\n ]\n : []);\n\n return {\n type: \"drag\",\n path: path,\n ...input,\n };\n } else if (action === \"wait\") {\n return {\n type: \"wait\",\n ...input,\n };\n } else if (action === \"left_click\") {\n // Convert left_click to regular click\n const coordinates = input.coordinate as number[] | undefined;\n const x = coordinates ? coordinates[0] : (input.x as number) || 0;\n const y = coordinates ? coordinates[1] : (input.y as number) || 0;\n\n return {\n type: \"click\",\n x: x,\n y: y,\n button: \"left\",\n ...input,\n };\n } else {\n // For other computer actions, use the action type directly\n return {\n type: action,\n ...input,\n };\n }\n } else if (name === \"str_replace_editor\" || name === \"bash\") {\n // For editor or bash tools\n return {\n type: name,\n params: input,\n };\n } else if (this.tools && name in this.tools) {\n return null;\n }\n\n console.warn(`Unknown tool name: ${name}`);\n return null;\n } catch (error) {\n console.error(\"Error converting tool use to action:\", error);\n return null;\n }\n }\n\n async captureScreenshot(options?: {\n base64Image?: string;\n currentUrl?: string;\n }): Promise<string> {\n // Use provided options if available\n if (options?.base64Image) {\n return `data:image/png;base64,${options.base64Image}`;\n }\n\n // Use the screenshot provider if available\n if (this.screenshotProvider) {\n try {\n const base64Image = await this.screenshotProvider();\n return `data:image/png;base64,${base64Image}`;\n } catch (error) {\n console.error(\"Error capturing screenshot:\", error);\n throw error;\n }\n }\n\n throw new AgentScreenshotProviderError(\n \"`screenshotProvider` has not been set. \" +\n \"Please call `setScreenshotProvider()` with a valid function that returns a base64-encoded image\",\n );\n }\n}\n"]}
1
+ {"version":3,"file":"AnthropicCUAClient.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AnthropicCUAClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AgentAction,\n AgentResult,\n AgentType,\n AnthropicContentBlock,\n AnthropicMessage,\n AnthropicTextBlock,\n AnthropicToolResult,\n AgentExecutionOptions,\n ToolUseItem,\n} from \"../types/public/agent.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { ClientOptions, ThinkingEffort } from \"../types/public/model.js\";\nimport {\n AgentScreenshotProviderError,\n StagehandClosedError,\n} from \"../types/public/sdkErrors.js\";\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { ToolSet } from \"ai\";\nimport { AgentClient } from \"./AgentClient.js\";\nimport { compressConversationImages } from \"./utils/imageCompression.js\";\nimport { toJsonSchema } from \"../zodCompat.js\";\nimport type { StagehandZodSchema } from \"../zodCompat.js\";\nimport {\n FlowLogger,\n extractLlmCuaPromptSummary,\n extractLlmCuaResponseSummary,\n} from \"../flowlogger/FlowLogger.js\";\nimport {\n isAdaptiveThinkingAnthropicModel,\n resolveAdaptiveEffort,\n} from \"../llm/anthropicOptions.js\";\nimport { stripModelProvider } from \"../../utils.js\";\nimport { v7 as uuidv7 } from \"uuid\";\n\nexport type ResponseInputItem = AnthropicMessage | AnthropicToolResult;\n\n/**\n * Client for Anthropic's Computer Use API\n * This implementation uses the official Anthropic Messages API for Computer Use\n */\nexport class AnthropicCUAClient extends AgentClient {\n private apiKey: string;\n private baseURL?: string;\n private client: Anthropic;\n public lastMessageId?: string;\n private currentViewport = { width: 1288, height: 711 };\n private currentUrl?: string;\n private screenshotProvider?: () => Promise<string>;\n private actionHandler?: (action: AgentAction) => Promise<void>;\n private thinkingBudget: number | null = null;\n private thinkingEffort: ThinkingEffort | null = null;\n private userTemperature: number | undefined;\n private tools?: ToolSet;\n\n constructor(\n type: AgentType,\n modelName: string,\n userProvidedInstructions?: string,\n clientOptions?: ClientOptions,\n tools?: ToolSet,\n ) {\n super(type, modelName, userProvidedInstructions);\n\n // Process client options\n this.apiKey =\n (clientOptions?.apiKey as string) || process.env.ANTHROPIC_API_KEY || \"\";\n this.baseURL = (clientOptions?.baseURL as string) || undefined;\n\n // Get thinking budget if specified (deprecated for 4.6 models)\n if (\n clientOptions?.thinkingBudget &&\n typeof clientOptions.thinkingBudget === \"number\"\n ) {\n this.thinkingBudget = clientOptions.thinkingBudget;\n }\n\n // Get thinking effort for adaptive thinking (Claude 4.6+ models)\n if (clientOptions?.thinkingEffort) {\n this.thinkingEffort = clientOptions.thinkingEffort;\n }\n\n // Track user-specified temperature so we can warn if adaptive thinking overrides it\n this.userTemperature = clientOptions?.temperature;\n\n // Store client options for reference\n this.clientOptions = {\n apiKey: this.apiKey,\n };\n\n if (this.baseURL) {\n this.clientOptions.baseURL = this.baseURL;\n }\n\n // Initialize the Anthropic client\n this.client = new Anthropic(this.clientOptions);\n\n this.tools = tools;\n }\n\n setViewport(width: number, height: number): void {\n this.currentViewport = { width, height };\n }\n\n setCurrentUrl(url: string): void {\n this.currentUrl = url;\n }\n\n setScreenshotProvider(provider: () => Promise<string>): void {\n this.screenshotProvider = provider;\n }\n\n setActionHandler(handler: (action: AgentAction) => Promise<void>): void {\n this.actionHandler = handler;\n }\n\n setTools(tools: ToolSet): void {\n this.tools = tools;\n }\n\n /**\n * Execute a task with the Anthropic CUA\n * This is the main entry point for the agent\n * @implements AgentClient.execute\n */\n async execute(executionOptions: AgentExecutionOptions): Promise<AgentResult> {\n const { options, logger } = executionOptions;\n const { instruction } = options;\n const maxSteps = options.maxSteps || 10;\n\n let currentStep = 0;\n let completed = false;\n const actions: AgentAction[] = [];\n const messageList: string[] = [];\n let finalMessage = \"\";\n\n // Start with the initial instruction\n let inputItems: ResponseInputItem[] =\n this.createInitialInputItems(instruction);\n\n logger({\n category: \"agent\",\n message: `Starting Anthropic agent execution with instruction: ${instruction}`,\n level: 1,\n });\n\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalInferenceTime = 0;\n\n try {\n // Execute steps until completion or max steps reached\n while (!completed && currentStep < maxSteps) {\n await this.preStepHook?.();\n\n logger({\n category: \"agent\",\n message: `Executing step ${currentStep + 1}/${maxSteps}`,\n level: 1,\n });\n\n const result = await this.executeStep(inputItems, logger);\n totalInputTokens += result.usage.input_tokens;\n totalOutputTokens += result.usage.output_tokens;\n totalInferenceTime += result.usage.inference_time_ms;\n\n // Add actions to the list\n if (result.actions.length > 0) {\n logger({\n category: \"agent\",\n message: `Step ${currentStep + 1} performed ${result.actions.length} actions`,\n level: 2,\n });\n actions.push(...result.actions);\n }\n\n // Update completion status\n completed = result.completed;\n\n // Update the input items for the next step if we're continuing\n if (!completed) {\n inputItems = result.nextInputItems;\n }\n\n // Record any message for this step\n if (result.message) {\n messageList.push(result.message);\n finalMessage = result.message;\n }\n\n // Increment step counter\n currentStep++;\n }\n\n logger({\n category: \"agent\",\n message: `Anthropic agent execution completed: ${completed}, with ${actions.length} total actions performed`,\n level: 1,\n });\n\n // Return the final result\n return {\n success: completed,\n actions,\n message: finalMessage,\n completed,\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n inference_time_ms: totalInferenceTime,\n },\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n return {\n success: false,\n actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n inference_time_ms: totalInferenceTime,\n },\n };\n }\n }\n\n async executeStep(\n inputItems: ResponseInputItem[],\n logger: (message: LogLine) => void,\n ): Promise<{\n actions: AgentAction[];\n message: string;\n completed: boolean;\n nextInputItems: ResponseInputItem[];\n usage: {\n input_tokens: number;\n output_tokens: number;\n inference_time_ms: number;\n };\n }> {\n try {\n // Get response from the model\n const result = await this.getAction(inputItems, logger);\n const content = result.content;\n const usage = {\n input_tokens: result.usage.input_tokens,\n output_tokens: result.usage.output_tokens,\n inference_time_ms: result.usage.inference_time_ms,\n };\n\n logger({\n category: \"agent\",\n message: `Received response with ${content.length} content blocks`,\n level: 2,\n });\n\n // Extract actions from the content\n const stepActions: AgentAction[] = [];\n const toolUseItems: ToolUseItem[] = [];\n let message = \"\";\n\n // Process content blocks to find tool use items and text content\n for (const block of content) {\n logger({\n category: \"agent\",\n message: `Processing block type: ${block.type}, id: ${block.id || \"unknown\"}`,\n level: 2,\n });\n\n if (block.type === \"tool_use\") {\n // Direct handling of tool_use type\n logger({\n category: \"agent\",\n message: `Found tool_use block: ${JSON.stringify(block)}`,\n level: 2,\n });\n\n // Cast to ToolUseItem and add to list\n const toolUseItem = block as ToolUseItem;\n toolUseItems.push(toolUseItem);\n\n logger({\n category: \"agent\",\n message: `Added tool_use item: ${toolUseItem.name}, action: ${JSON.stringify(toolUseItem.input)}`,\n level: 2,\n });\n\n // Convert tool use to action and add to actions list\n const action = this.convertToolUseToAction(toolUseItem);\n if (action) {\n logger({\n category: \"agent\",\n message: `Created action from tool_use: ${toolUseItem.name}, action: ${action.type}`,\n level: 2,\n });\n stepActions.push(action);\n } else if (this.tools && toolUseItem.name in this.tools) {\n stepActions.push({\n type: \"custom_tool\",\n tool: toolUseItem.name,\n input: toolUseItem.input,\n } as AgentAction);\n }\n } else if (block.type === \"text\") {\n // Safe to cast here since we've verified it's a text block\n const textBlock = block as unknown as AnthropicTextBlock;\n message += textBlock.text + \"\\n\";\n\n logger({\n category: \"agent\",\n message: `Found text block: ${textBlock.text}`,\n level: 2,\n });\n } else {\n logger({\n category: \"agent\",\n message: `Found unknown block type: ${block.type}`,\n level: 2,\n });\n }\n }\n\n // Execute actions if an action handler is provided\n if (this.actionHandler && stepActions.length > 0) {\n for (const action of stepActions) {\n try {\n logger({\n category: \"agent\",\n message: `Executing action: ${action.type}`,\n level: 1,\n });\n await this.actionHandler(action);\n } catch (error) {\n if (error instanceof StagehandClosedError) {\n throw error;\n }\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing action ${action.type}: ${errorMessage}`,\n level: 0,\n });\n }\n }\n }\n\n // Create the assistant response message with all content blocks\n const assistantMessage: AnthropicMessage = {\n role: \"assistant\",\n content: content as unknown as AnthropicContentBlock[],\n };\n\n // Keep track of the conversation history by preserving all previous messages\n // and adding new messages at the end\n const nextInputItems: ResponseInputItem[] = [...inputItems];\n\n // Add the assistant message with tool_use blocks to the history\n compressConversationImages(nextInputItems);\n\n nextInputItems.push(assistantMessage);\n\n // Generate tool results and add them as a user message\n if (toolUseItems.length > 0) {\n const toolResults = await this.takeAction(toolUseItems, logger);\n\n if (toolResults.length > 0) {\n // Tool results are AnthropicToolResult[] which are compatible with AnthropicContentBlock[]\n const userToolResultsMessage: AnthropicMessage = {\n role: \"user\",\n content: toolResults as unknown as AnthropicContentBlock[],\n };\n nextInputItems.push(userToolResultsMessage);\n }\n }\n\n // The step is completed only if there were no tool_use items\n const completed = toolUseItems.length === 0;\n\n logger({\n category: \"agent\",\n message: `Step processed ${toolUseItems.length} tool use items, completed: ${completed}`,\n level: 2,\n });\n\n return {\n actions: stepActions,\n message: message.trim(),\n completed,\n nextInputItems,\n usage: usage,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger({\n category: \"agent\",\n message: `Error executing step: ${errorMessage}`,\n level: 0,\n });\n\n throw error;\n }\n }\n\n private createInitialInputItems(instruction: string): AnthropicMessage[] {\n // For the initial request, we use a simple array with the user's instruction\n return [\n {\n role: \"system\",\n content: this.userProvidedInstructions,\n },\n {\n role: \"user\",\n content: instruction,\n },\n ];\n }\n\n async getAction(\n inputItems: ResponseInputItem[],\n logger?: (message: LogLine) => void,\n ): Promise<{\n content: AnthropicContentBlock[];\n id: string;\n usage: Record<string, number>;\n }> {\n try {\n // For the API request, we use the inputItems directly\n // These should already be properly formatted as a sequence of user/assistant messages\n const messages: AnthropicMessage[] = [];\n\n for (const item of inputItems) {\n if (\"role\" in item) {\n // Skip system messages as Anthropic requires system as a top-level parameter\n if (item.role !== \"system\") {\n messages.push(item);\n }\n }\n // Note: We don't need special handling for tool_result items here anymore\n // as they should already be properly wrapped in user messages\n }\n\n // Claude 4.6+ models require the newer computer_20251124 tool version\n // and support adaptive thinking instead of budget_tokens\n const modelBase = stripModelProvider(this.modelName);\n\n // Check if this is a Claude 4.6+ model that supports adaptive thinking\n // (shared source of truth with the hybrid path — see anthropicOptions.ts)\n const isAdaptiveThinkingModel =\n isAdaptiveThinkingAnthropicModel(modelBase);\n\n // claude-opus-4-5-20251101 uses the newer computer tool version but does\n // NOT support adaptive thinking — it still requires budget_tokens.\n const shouldUseNewToolVersion =\n isAdaptiveThinkingModel || modelBase === \"claude-opus-4-5-20251101\";\n\n // Configure thinking capability based on model version\n // - For 4.6 models: Use adaptive thinking with effort (recommended, defaults to \"medium\")\n // - For older models: Use enabled thinking with budget_tokens (deprecated)\n let thinking:\n | { type: \"adaptive\" }\n | { type: \"enabled\"; budget_tokens: number }\n | undefined;\n let outputConfig: { effort: Exclude<ThinkingEffort, \"none\"> } | undefined;\n let useAdaptiveThinking = false;\n\n if (isAdaptiveThinkingModel) {\n if (this.thinkingBudget) {\n logger?.({\n category: \"agent\",\n message: `thinkingBudget is ignored for ${this.modelName}; use thinkingEffort instead`,\n level: 2,\n });\n }\n\n if (this.thinkingEffort !== \"none\") {\n // Claude 4.6+ models use adaptive thinking with output_config.effort\n // Default to \"medium\" effort if not explicitly specified\n // See: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n thinking = { type: \"adaptive\" };\n // Clamp efforts the model rejects (e.g. xhigh on sonnet-4-6);\n // defaults to the shared \"medium\" (see anthropicOptions.ts).\n outputConfig = {\n effort: resolveAdaptiveEffort(modelBase, this.thinkingEffort),\n };\n useAdaptiveThinking = true;\n }\n } else if (this.thinkingBudget) {\n // Older models use enabled thinking with budget_tokens (deprecated for 4.6)\n thinking = { type: \"enabled\", budget_tokens: this.thinkingBudget };\n }\n\n const computerToolType = shouldUseNewToolVersion\n ? \"computer_20251124\"\n : \"computer_20250124\";\n const betaFlag = shouldUseNewToolVersion\n ? \"computer-use-2025-11-24\"\n : \"computer-use-2025-01-24\";\n\n // Create the request parameters\n const requestParams: Record<string, unknown> = {\n model: this.modelName,\n max_tokens: 4096,\n messages: messages,\n tools: [\n {\n type: computerToolType,\n name: \"computer\",\n display_width_px: this.currentViewport.width,\n display_height_px: this.currentViewport.height,\n display_number: 1,\n },\n ],\n betas: [betaFlag],\n };\n\n // Add custom tools if available\n if (this.tools && Object.keys(this.tools).length > 0) {\n const customTools = Object.entries(this.tools).map(([name, tool]) => {\n const schema = tool.inputSchema as StagehandZodSchema;\n\n // Convert Zod schema to proper JSON schema format for Anthropic\n const jsonSchema = toJsonSchema(schema) as {\n properties?: Record<string, unknown>;\n required?: string[];\n };\n\n const inputSchema = {\n type: \"object\",\n properties: jsonSchema.properties || {},\n required: jsonSchema.required || [],\n };\n\n return {\n name,\n description: tool.description,\n input_schema: inputSchema,\n };\n });\n\n requestParams.tools = [\n ...(requestParams.tools as Record<string, unknown>[]),\n ...customTools,\n ];\n }\n\n // Add system parameter if provided\n if (this.userProvidedInstructions) {\n requestParams.system = this.userProvidedInstructions;\n }\n\n // Add thinking parameter if available\n if (thinking) {\n requestParams.thinking = thinking;\n }\n\n // Add output_config for adaptive thinking (Claude 4.6+ models)\n if (outputConfig) {\n requestParams.output_config = outputConfig;\n }\n\n // Adaptive thinking requires temperature to be set to 1\n // See: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n if (useAdaptiveThinking) {\n if (this.userTemperature !== undefined && this.userTemperature !== 1) {\n logger?.({\n category: \"agent\",\n message: `Adaptive thinking requires temperature=1; overriding user-specified temperature=${this.userTemperature}`,\n level: 2,\n });\n }\n requestParams.temperature = 1;\n }\n\n // Log LLM request\n const llmRequestId = uuidv7();\n FlowLogger.logLlmRequest({\n requestId: llmRequestId,\n model: this.modelName,\n prompt: extractLlmCuaPromptSummary(messages),\n });\n\n const startTime = Date.now();\n // Create the message using the Anthropic Messages API\n // @ts-expect-error - The Anthropic SDK types are stricter than what we need\n const response = await this.client.beta.messages.create(requestParams);\n const endTime = Date.now();\n const elapsedMs = endTime - startTime;\n const usage = {\n input_tokens: response.usage.input_tokens,\n output_tokens: response.usage.output_tokens,\n inference_time_ms: elapsedMs,\n };\n\n // Log LLM response\n FlowLogger.logLlmResponse({\n requestId: llmRequestId,\n model: this.modelName,\n output: extractLlmCuaResponseSummary(response.content),\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n });\n\n // Store the message ID for future use\n this.lastMessageId = response.id;\n\n // Return the content and message ID\n return {\n // Cast the response content to our internal type\n content: response.content as unknown as AnthropicContentBlock[],\n id: response.id,\n usage,\n };\n } catch (error) {\n console.error(\"Error getting action from Anthropic:\", error);\n throw error;\n }\n }\n\n async takeAction(\n toolUseItems: ToolUseItem[],\n logger: (message: LogLine) => void,\n ): Promise<AnthropicToolResult[]> {\n const toolResults: AnthropicToolResult[] = [];\n\n logger({\n category: \"agent\",\n message: `Taking action on ${toolUseItems.length} tool use items`,\n level: 2,\n });\n\n // Process each tool use item\n for (const item of toolUseItems) {\n try {\n logger({\n category: \"agent\",\n message: `Processing tool use: ${item.name}, id: ${item.id}, action: ${JSON.stringify(item.input)}`,\n level: 2,\n });\n\n // TODO: Normalize and migrate to agentHandler\n\n // For computer tool, capture screenshot and return image\n if (item.name === \"computer\") {\n // Get action type\n const action = item.input.action as string;\n logger({\n category: \"agent\",\n message: `Computer action type: ${action}`,\n level: 2,\n });\n\n // Capture a screenshot for the response\n const screenshot = await this.captureScreenshot();\n logger({\n category: \"agent\",\n message: `Screenshot captured, length: ${screenshot.length}`,\n level: 2,\n });\n\n // Create proper image content block for Anthropic\n const imageContent = [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: \"image/png\",\n data: screenshot.replace(/^data:image\\/png;base64,/, \"\"),\n },\n },\n ];\n\n // Add current URL if available\n if (this.currentUrl) {\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n ...imageContent,\n {\n type: \"text\",\n text: `Current URL: ${this.currentUrl}`,\n },\n ],\n });\n } else {\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: imageContent,\n });\n }\n\n logger({\n category: \"agent\",\n message: `Added computer tool result for tool_use_id: ${item.id}`,\n level: 2,\n });\n } else {\n // Handle custom tools\n let toolResult = \"Tool executed successfully\";\n if (this.tools && item.name in this.tools) {\n try {\n const tool = this.tools[item.name];\n\n logger({\n category: \"agent\",\n message: `Executing tool call: ${item.name} with args: ${JSON.stringify(item.input)}`,\n level: 1,\n });\n\n const result = await tool.execute(item.input, {\n toolCallId: item.id,\n messages: [],\n });\n toolResult = JSON.stringify(result);\n\n logger({\n category: \"agent\",\n message: `Tool ${item.name} completed successfully. Result: ${toolResult}`,\n level: 1,\n });\n } catch (toolError) {\n const errorMessage =\n toolError instanceof Error\n ? toolError.message\n : String(toolError);\n toolResult = `Error executing tool: ${errorMessage}`;\n\n logger({\n category: \"agent\",\n message: `Error executing tool ${item.name}: ${errorMessage}`,\n level: 0,\n });\n }\n }\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: toolResult,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added custom tool result for tool ${item.name}, tool_use_id: ${item.id}`,\n level: 2,\n });\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n logger({\n category: \"agent\",\n message: `Error executing tool use: ${errorMessage}`,\n level: 0,\n });\n\n try {\n // For computer tool, try to capture a screenshot even on error\n if (item.name === \"computer\") {\n const screenshot = await this.captureScreenshot();\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: \"image/png\",\n data: screenshot.replace(/^data:image\\/png;base64,/, \"\"),\n },\n },\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added error tool result with screenshot for tool_use_id: ${item.id}`,\n level: 1,\n });\n } else {\n // For other tools, return an error message as a text content block\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added error tool result for tool_use_id: ${item.id}`,\n level: 1,\n });\n }\n } catch (screenshotError) {\n // If we can't capture a screenshot, just send the error\n logger({\n category: \"agent\",\n message: `Error capturing screenshot: ${String(screenshotError)}`,\n level: 0,\n });\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: item.id,\n content: [\n {\n type: \"text\",\n text: `Error: ${errorMessage}`,\n },\n ],\n });\n\n logger({\n category: \"agent\",\n message: `Added text error tool result for tool_use_id: ${item.id}`,\n level: 1,\n });\n }\n }\n }\n\n logger({\n category: \"agent\",\n message: `Prepared ${toolResults.length} tool results for next request`,\n level: 2,\n });\n\n return toolResults;\n }\n\n private convertToolUseToAction(item: ToolUseItem): AgentAction | null {\n try {\n const { name, input } = item;\n\n if (name === \"computer\") {\n // For computer actions, format according to the action type\n const action = input.action as string;\n\n if (!action) {\n console.warn(\"Missing action in tool use item:\", item);\n return null;\n }\n\n // Handle different action types specifically\n if (action === \"screenshot\") {\n return {\n type: \"screenshot\",\n ...input,\n };\n } else if (action === \"click\") {\n return {\n type: \"click\",\n x: input.x as number,\n y: input.y as number,\n button: (input.button as string) || \"left\",\n ...input,\n };\n } else if (action === \"type\") {\n return {\n type: \"type\",\n text: input.text as string,\n ...input,\n };\n } else if (action === \"keypress\" || action === \"key\") {\n return {\n type: \"keypress\",\n keys: [input.text as string],\n ...input,\n };\n } else if (action === \"double_click\" || action === \"doubleClick\") {\n return {\n type: \"doubleClick\",\n x:\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0),\n y:\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0),\n ...input,\n };\n } else if (action === \"triple_click\" || action === \"tripleClick\") {\n return {\n type: \"tripleClick\",\n x:\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0),\n y:\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0),\n ...input,\n };\n } else if (action === \"scroll\") {\n // Convert Anthropic's coordinate, scroll_amount and scroll_direction into scroll_x and scroll_y\n const x =\n (input.x as number) ||\n (input.coordinate ? (input.coordinate as number[])[0] : 0);\n const y =\n (input.y as number) ||\n (input.coordinate ? (input.coordinate as number[])[1] : 0);\n\n // Calculate scroll_x and scroll_y based on scroll_amount and scroll_direction\n let scroll_x = 0;\n let scroll_y = 0;\n\n const scrollAmount = (input.scroll_amount as number) || 5;\n const scrollMultiplier = 100; // Pixels per unit of scroll_amount\n\n if (input.scroll_direction) {\n const direction = input.scroll_direction as string;\n if (direction === \"down\") {\n scroll_y = scrollAmount * scrollMultiplier;\n } else if (direction === \"up\") {\n scroll_y = -scrollAmount * scrollMultiplier;\n } else if (direction === \"right\") {\n scroll_x = scrollAmount * scrollMultiplier;\n } else if (direction === \"left\") {\n scroll_x = -scrollAmount * scrollMultiplier;\n }\n } else {\n // Use direct scroll_x and scroll_y if provided\n scroll_x = (input.scroll_x as number) || 0;\n scroll_y = (input.scroll_y as number) || 0;\n }\n\n return {\n type: \"scroll\",\n x: x,\n y: y,\n scroll_x: scroll_x,\n scroll_y: scroll_y,\n ...input,\n };\n } else if (action === \"move\") {\n // Handle Anthropic's coordinate format\n const coordinates = input.coordinate as number[] | undefined;\n const x = coordinates ? coordinates[0] : (input.x as number) || 0;\n const y = coordinates ? coordinates[1] : (input.y as number) || 0;\n\n return {\n type: \"move\",\n x: x,\n y: y,\n ...input,\n };\n } else if (action === \"drag\" || action === \"left_click_drag\") {\n // Make sure path is properly formatted\n const path =\n (input.path as { x: number; y: number }[]) ||\n (input.coordinate\n ? [\n {\n x: (input.start_coordinate as number[])[0],\n y: (input.start_coordinate as number[])[1],\n },\n {\n x: (input.coordinate as number[])[0],\n y: (input.coordinate as number[])[1],\n },\n ]\n : []);\n\n return {\n type: \"drag\",\n path: path,\n ...input,\n };\n } else if (action === \"wait\") {\n return {\n type: \"wait\",\n ...input,\n };\n } else if (action === \"left_click\") {\n // Convert left_click to regular click\n const coordinates = input.coordinate as number[] | undefined;\n const x = coordinates ? coordinates[0] : (input.x as number) || 0;\n const y = coordinates ? coordinates[1] : (input.y as number) || 0;\n\n return {\n type: \"click\",\n x: x,\n y: y,\n button: \"left\",\n ...input,\n };\n } else {\n // For other computer actions, use the action type directly\n return {\n type: action,\n ...input,\n };\n }\n } else if (name === \"str_replace_editor\" || name === \"bash\") {\n // For editor or bash tools\n return {\n type: name,\n params: input,\n };\n } else if (this.tools && name in this.tools) {\n return null;\n }\n\n console.warn(`Unknown tool name: ${name}`);\n return null;\n } catch (error) {\n console.error(\"Error converting tool use to action:\", error);\n return null;\n }\n }\n\n async captureScreenshot(options?: {\n base64Image?: string;\n currentUrl?: string;\n }): Promise<string> {\n // Use provided options if available\n if (options?.base64Image) {\n return `data:image/png;base64,${options.base64Image}`;\n }\n\n // Use the screenshot provider if available\n if (this.screenshotProvider) {\n try {\n const base64Image = await this.screenshotProvider();\n return `data:image/png;base64,${base64Image}`;\n } catch (error) {\n console.error(\"Error capturing screenshot:\", error);\n throw error;\n }\n }\n\n throw new AgentScreenshotProviderError(\n \"`screenshotProvider` has not been set. \" +\n \"Please call `setScreenshotProvider()` with a valid function that returns a base64-encoded image\",\n );\n }\n}\n"]}
@@ -362,9 +362,14 @@ export class GoogleCUAClient extends AgentClient {
362
362
  }
363
363
  // Execute actions and collect function responses
364
364
  const functionResponses = [];
365
- if (result.actions.length > 0) {
365
+ // Always process the model's response, even when it produced no
366
+ // executable action (e.g. a standalone take_screenshot). The model
367
+ // expects exactly one function response — a fresh screenshot — per
368
+ // computer-use call; skipping it when there are 0 actions leaves the
369
+ // model blind and it gives up after one empty turn.
370
+ {
366
371
  let hasError = false;
367
- // Execute all actions
372
+ // Execute all actions (a no-op when there are none).
368
373
  for (let i = 0; i < result.actions.length; i++) {
369
374
  const action = result.actions[i];
370
375
  logger({
@@ -382,6 +387,15 @@ export class GoogleCUAClient extends AgentClient {
382
387
  level: 2,
383
388
  });
384
389
  }
390
+ else if (action.type === "screenshot") {
391
+ // No interaction to perform — the screenshot captured below is
392
+ // returned to the model as this call's function response.
393
+ logger({
394
+ category: "agent",
395
+ message: "take_screenshot: capturing current page",
396
+ level: 2,
397
+ });
398
+ }
385
399
  else if (action.type === "custom_tool") {
386
400
  const toolName = action.name;
387
401
  const toolArgs = action.arguments;
@@ -552,21 +566,24 @@ export class GoogleCUAClient extends AgentClient {
552
566
  // Convert function call to action(s)
553
567
  const action = this.convertFunctionCallToAction(part.functionCall);
554
568
  if (action) {
555
- // Special handling for type_text_at - we need to click first
556
- if (part.functionCall.name === "type_text_at" &&
557
- action.type === "type") {
569
+ // Special handling for type actions. gemini-2.5 type_text_at carries
570
+ // coordinates (click the field first); gemini-3.x `type` has none and
571
+ // types into the element the model already focused.
572
+ if (action.type === "type") {
558
573
  logger({
559
574
  category: "agent",
560
575
  message: `Adding action: ${JSON.stringify(action)}`,
561
576
  level: 2,
562
577
  });
563
- // First add a click action at the same coordinates
564
- actions.push({
565
- type: "click",
566
- x: action.x,
567
- y: action.y,
568
- button: "left",
569
- });
578
+ // Click the target first only when coordinates are provided.
579
+ if (typeof action.x === "number" && typeof action.y === "number") {
580
+ actions.push({
581
+ type: "click",
582
+ x: action.x,
583
+ y: action.y,
584
+ button: "left",
585
+ });
586
+ }
570
587
  // If clear_before_typing is true (default), add a select all
571
588
  if (action.clearBeforeTyping) {
572
589
  // Select all text in the field
@@ -621,16 +638,57 @@ export class GoogleCUAClient extends AgentClient {
621
638
  * Convert Google function call to Stagehand action
622
639
  */
623
640
  convertFunctionCallToAction(functionCall) {
624
- const { name, args } = functionCall;
625
- if (!name || !args) {
641
+ const { name: rawName } = functionCall;
642
+ // Default args to an empty object so no-argument predefined functions
643
+ // (e.g. take_screenshot, go_back) are not rejected by the guard below.
644
+ const args = functionCall.args ?? {};
645
+ if (!rawName) {
626
646
  return null;
627
647
  }
648
+ // The gemini-3.x computer-use tool renamed several of the predefined
649
+ // functions that gemini-2.5-computer-use-preview used, and adds a
650
+ // descriptive `intent` arg to every call. The argument fields are otherwise
651
+ // unchanged (confirmed for click/navigate). Normalize the 3.x names to the
652
+ // canonical 2.5 names so a single set of handlers serves both generations;
653
+ // `intent` is ignored since handlers only read the args they need.
654
+ // NOTE: click and take_screenshot are confirmed from live gemini-3.5-flash
655
+ // traffic; the rest are inferred from the same drop-the-qualifier pattern
656
+ // and are safe aliases (any unmapped name still hits the warning below).
657
+ const NAME_ALIASES = {
658
+ click: "click_at",
659
+ left_click: "click_at",
660
+ double_click: "click_at",
661
+ triple_click: "click_at",
662
+ type: "type_text_at",
663
+ type_text: "type_text_at",
664
+ hover: "hover_at",
665
+ scroll: "scroll_at",
666
+ drag: "drag_and_drop",
667
+ key: "key_combination",
668
+ keys: "key_combination",
669
+ key_press: "key_combination",
670
+ press_key: "key_combination",
671
+ press_keys: "key_combination",
672
+ hotkey: "key_combination",
673
+ screenshot: "take_screenshot",
674
+ wait: "wait_5_seconds",
675
+ };
676
+ const name = NAME_ALIASES[rawName] ?? rawName;
628
677
  switch (name) {
629
678
  case "open_web_browser":
630
679
  return {
631
680
  type: "open_web_browser",
632
681
  timestamp: Date.now(),
633
682
  };
683
+ case "take_screenshot":
684
+ // No UI interaction. The step loop captures a fresh screenshot and
685
+ // returns it to the model as this call's function response; marked as a
686
+ // recognized action (not null) so it isn't dropped, and skipped in the
687
+ // executor like open_web_browser.
688
+ return {
689
+ type: "screenshot",
690
+ timestamp: Date.now(),
691
+ };
634
692
  case "click_at": {
635
693
  const { x, y } = this.normalizeCoordinates(args.x, args.y);
636
694
  return {
@@ -641,27 +699,40 @@ export class GoogleCUAClient extends AgentClient {
641
699
  };
642
700
  }
643
701
  case "type_text_at": {
644
- const { x, y } = this.normalizeCoordinates(args.x, args.y);
645
- // Google's type_text_at includes press_enter and clear_before_typing parameters
702
+ // press_enter and clear_before_typing are shared across generations.
646
703
  const pressEnter = args.press_enter ?? false;
647
704
  const clearBeforeTyping = args.clear_before_typing ?? true;
648
- // For type_text_at, we need to click first then type
649
- // This matches the behavior expected by Google's CUA
650
- // We'll handle this in the executeStep method by converting to two actions
651
- return {
705
+ const base = {
652
706
  type: "type",
653
707
  text: args.text,
654
- x,
655
- y,
656
708
  pressEnter,
657
709
  clearBeforeTyping,
658
710
  };
711
+ // gemini-2.5 type_text_at carries x/y (click the field, then type).
712
+ // gemini-3.x `type` has no coordinates and types into the element the
713
+ // model already focused with a preceding click. Only attach coords when
714
+ // present so the executor doesn't click at NaN.
715
+ if (typeof args.x === "number" && typeof args.y === "number") {
716
+ const { x, y } = this.normalizeCoordinates(args.x, args.y);
717
+ return { ...base, x, y };
718
+ }
719
+ return base;
659
720
  }
660
721
  case "key_combination": {
661
- const keys = args.keys
662
- .split("+")
663
- .map((key) => key.trim())
722
+ // gemini-2.5 key_combination sends `keys` as a "+"-joined string;
723
+ // gemini-3.x `hotkey` sends a `keys` array, and `press_key` sends a
724
+ // single `key`. Accept all three.
725
+ const raw = args.keys !== undefined ? args.keys : args.key;
726
+ const parts = Array.isArray(raw)
727
+ ? raw
728
+ : String(raw ?? "").split("+");
729
+ const keys = parts
730
+ .map((key) => String(key).trim())
731
+ .filter(Boolean)
664
732
  .map((key) => mapKeyToPlaywright(key));
733
+ if (keys.length === 0) {
734
+ return null;
735
+ }
665
736
  return {
666
737
  type: "keypress",
667
738
  keys,
@@ -675,9 +746,22 @@ export class GoogleCUAClient extends AgentClient {
675
746
  };
676
747
  }
677
748
  case "scroll_at": {
749
+ // A coordinate-less `scroll` alias (gemini-3.x) scrolls the document.
750
+ if (typeof args.x !== "number" || typeof args.y !== "number") {
751
+ const dir = (args.direction || "down").toLowerCase();
752
+ return {
753
+ type: "keypress",
754
+ keys: [dir === "up" ? "PageUp" : "PageDown"],
755
+ };
756
+ }
678
757
  const { x, y } = this.normalizeCoordinates(args.x, args.y);
679
758
  const direction = (args.direction || "down").toLowerCase();
680
- const magnitude = typeof args.magnitude === "number" ? args.magnitude : 800;
759
+ // 2.5 uses `magnitude`; gemini-3.x `scroll` uses `magnitude_in_pixels`.
760
+ const magnitude = typeof args.magnitude === "number"
761
+ ? args.magnitude
762
+ : typeof args.magnitude_in_pixels === "number"
763
+ ? args.magnitude_in_pixels
764
+ : 800;
681
765
  let scroll_x = 0;
682
766
  let scroll_y = 0;
683
767
  if (direction === "up") {
@@ -736,8 +820,20 @@ export class GoogleCUAClient extends AgentClient {
736
820
  url: "https://www.google.com",
737
821
  };
738
822
  case "drag_and_drop": {
739
- const startPoint = this.normalizeCoordinates(args.x, args.y);
740
- const endPoint = this.normalizeCoordinates(args.destination_x, args.destination_y);
823
+ // 2.5 uses x/y + destination_x/destination_y; gemini-3.x `drag_and_drop`
824
+ // uses start_x/start_y + end_x/end_y. Accept either.
825
+ const sx = (args.x ?? args.start_x);
826
+ const sy = (args.y ?? args.start_y);
827
+ const ex = (args.destination_x ?? args.end_x);
828
+ const ey = (args.destination_y ?? args.end_y);
829
+ if (typeof sx !== "number" ||
830
+ typeof sy !== "number" ||
831
+ typeof ex !== "number" ||
832
+ typeof ey !== "number") {
833
+ return null;
834
+ }
835
+ const startPoint = this.normalizeCoordinates(sx, sy);
836
+ const endPoint = this.normalizeCoordinates(ex, ey);
741
837
  return {
742
838
  type: "drag",
743
839
  path: [