@browserbasehq/orca 3.5.0-vertex-test → 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.
- package/README.md +7 -15
- package/dist/cjs/lib/utils.d.ts +8 -0
- package/dist/cjs/lib/utils.js +31 -0
- package/dist/cjs/lib/utils.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AgentProvider.js +5 -3
- package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -8
- package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +124 -28
- package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
- package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
- package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js +38 -0
- package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +10 -1
- package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
- package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
- package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js +54 -0
- package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
- package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js +62 -0
- package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
- package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
- package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js +25 -0
- package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
- package/dist/cjs/lib/v3/api.d.ts +1 -0
- package/dist/cjs/lib/v3/api.js +37 -16
- package/dist/cjs/lib/v3/api.js.map +1 -1
- package/dist/cjs/lib/v3/cache/ActCache.js +1 -1
- package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -1
- package/dist/cjs/lib/v3/cache/utils.d.ts +7 -0
- package/dist/cjs/lib/v3/cache/utils.js +19 -0
- package/dist/cjs/lib/v3/cache/utils.js.map +1 -1
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +24 -24
- package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
- package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +3 -1
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +108 -16
- package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
- package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/cjs/lib/v3/index.d.ts +13 -1
- package/dist/cjs/lib/v3/index.js +19 -1
- package/dist/cjs/lib/v3/index.js.map +1 -1
- package/dist/cjs/lib/v3/launch/local.js +1 -0
- package/dist/cjs/lib/v3/launch/local.js.map +1 -1
- package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +3 -0
- package/dist/cjs/lib/v3/llm/LLMProvider.js +45 -3
- package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/cjs/lib/v3/llm/aisdk.js +4 -0
- package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/cjs/lib/v3/llm/anthropicOptions.d.ts +57 -0
- package/dist/cjs/lib/v3/llm/anthropicOptions.js +115 -0
- package/dist/cjs/lib/v3/llm/anthropicOptions.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/agent.d.ts +8 -2
- package/dist/cjs/lib/v3/types/public/agent.js +3 -0
- package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
- package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js +15 -0
- package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/api.d.ts +925 -182
- package/dist/cjs/lib/v3/types/public/api.js +138 -20
- package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/clipboard.d.ts +15 -0
- package/dist/cjs/lib/v3/types/public/clipboard.js +3 -0
- package/dist/cjs/lib/v3/types/public/clipboard.js.map +1 -0
- package/dist/cjs/lib/v3/types/public/index.d.ts +2 -0
- package/dist/cjs/lib/v3/types/public/index.js +2 -0
- package/dist/cjs/lib/v3/types/public/index.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/model.d.ts +33 -8
- package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/page.d.ts +29 -0
- package/dist/cjs/lib/v3/types/public/page.js.map +1 -1
- package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +3 -0
- package/dist/cjs/lib/v3/types/public/sdkErrors.js +8 -2
- package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/clipboard.d.ts +24 -0
- package/dist/cjs/lib/v3/understudy/clipboard.js +166 -0
- package/dist/cjs/lib/v3/understudy/clipboard.js.map +1 -0
- package/dist/cjs/lib/v3/understudy/context.d.ts +3 -0
- package/dist/cjs/lib/v3/understudy/context.js +15 -0
- package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
- package/dist/cjs/lib/v3/understudy/page.d.ts +23 -1
- package/dist/cjs/lib/v3/understudy/page.js +283 -0
- package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
- package/dist/cjs/lib/v3/v3.js +19 -7
- package/dist/cjs/lib/v3/v3.js.map +1 -1
- package/dist/cjs/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
- package/dist/cjs/lib/v3/verifier/errorTaxonomy.js +291 -0
- package/dist/cjs/lib/v3/verifier/errorTaxonomy.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/evidence.d.ts +44 -0
- package/dist/cjs/lib/v3/verifier/evidence.js +432 -0
- package/dist/cjs/lib/v3/verifier/evidence.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
- package/dist/cjs/lib/v3/verifier/evidenceNormalization.js +100 -0
- package/dist/cjs/lib/v3/verifier/evidenceNormalization.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/index.d.ts +6 -0
- package/dist/cjs/lib/v3/verifier/index.js +16 -0
- package/dist/cjs/lib/v3/verifier/index.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
- package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js +71 -0
- package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
- package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js +166 -0
- package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js +158 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js +137 -0
- package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/index.d.ts +8 -0
- package/dist/cjs/lib/v3/verifier/prompts/index.js +22 -0
- package/dist/cjs/lib/v3/verifier/prompts/index.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
- package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js +77 -0
- package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/render.d.ts +23 -0
- package/dist/cjs/lib/v3/verifier/prompts/render.js +45 -0
- package/dist/cjs/lib/v3/verifier/prompts/render.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
- package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js +321 -0
- package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
- package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js +116 -0
- package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/rubricVerifier.d.ts +91 -0
- package/dist/cjs/lib/v3/verifier/rubricVerifier.js +1645 -0
- package/dist/cjs/lib/v3/verifier/rubricVerifier.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/trajectory.d.ts +50 -0
- package/dist/cjs/lib/v3/verifier/trajectory.js +316 -0
- package/dist/cjs/lib/v3/verifier/trajectory.js.map +1 -0
- package/dist/cjs/lib/v3/verifier/types.d.ts +429 -0
- package/dist/cjs/lib/v3/verifier/types.js +3 -0
- package/dist/cjs/lib/v3/verifier/types.js.map +1 -0
- package/dist/cjs/lib/v3Evaluator.d.ts +14 -4
- package/dist/cjs/lib/v3Evaluator.js +189 -1
- package/dist/cjs/lib/v3Evaluator.js.map +1 -1
- package/dist/cjs/lib/v3LegacyEvaluator.js +5 -1
- package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -1
- package/dist/cjs/lib/version.d.ts +1 -1
- package/dist/cjs/lib/version.js +1 -1
- package/dist/cjs/lib/version.js.map +1 -1
- package/dist/esm/lib/utils.d.ts +8 -0
- package/dist/esm/lib/utils.js +28 -0
- package/dist/esm/lib/utils.js.map +1 -1
- package/dist/esm/lib/v3/agent/AgentProvider.js +5 -3
- package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -8
- package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js +124 -28
- package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
- package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js +35 -0
- package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +10 -1
- package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
- package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
- package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js +50 -0
- package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
- package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js +59 -0
- package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
- package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
- package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js +22 -0
- package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
- package/dist/esm/lib/v3/api.d.ts +1 -0
- package/dist/esm/lib/v3/api.js +38 -17
- package/dist/esm/lib/v3/api.js.map +1 -1
- package/dist/esm/lib/v3/cache/ActCache.js +2 -2
- package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
- package/dist/esm/lib/v3/cache/utils.d.ts +7 -0
- package/dist/esm/lib/v3/cache/utils.js +18 -0
- package/dist/esm/lib/v3/cache/utils.js.map +1 -1
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +24 -24
- package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
- package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +3 -1
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js +108 -16
- package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
- package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
- package/dist/esm/lib/v3/index.d.ts +13 -1
- package/dist/esm/lib/v3/index.js +10 -0
- package/dist/esm/lib/v3/index.js.map +1 -1
- package/dist/esm/lib/v3/launch/local.js +1 -0
- package/dist/esm/lib/v3/launch/local.js.map +1 -1
- package/dist/esm/lib/v3/llm/LLMProvider.d.ts +3 -0
- package/dist/esm/lib/v3/llm/LLMProvider.js +44 -3
- package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
- package/dist/esm/lib/v3/llm/aisdk.js +4 -0
- package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
- package/dist/esm/lib/v3/llm/anthropicOptions.d.ts +57 -0
- package/dist/esm/lib/v3/llm/anthropicOptions.js +106 -0
- package/dist/esm/lib/v3/llm/anthropicOptions.js.map +1 -0
- package/dist/esm/lib/v3/types/public/agent.d.ts +8 -2
- package/dist/esm/lib/v3/types/public/agent.js +3 -0
- package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
- package/dist/esm/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
- package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js +14 -0
- package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
- package/dist/esm/lib/v3/types/public/api.d.ts +925 -182
- package/dist/esm/lib/v3/types/public/api.js +136 -18
- package/dist/esm/lib/v3/types/public/api.js.map +1 -1
- package/dist/esm/lib/v3/types/public/clipboard.d.ts +15 -0
- package/dist/esm/lib/v3/types/public/clipboard.js +2 -0
- package/dist/esm/lib/v3/types/public/clipboard.js.map +1 -0
- package/dist/esm/lib/v3/types/public/index.d.ts +2 -0
- package/dist/esm/lib/v3/types/public/index.js +2 -0
- package/dist/esm/lib/v3/types/public/index.js.map +1 -1
- package/dist/esm/lib/v3/types/public/model.d.ts +33 -8
- package/dist/esm/lib/v3/types/public/model.js.map +1 -1
- package/dist/esm/lib/v3/types/public/page.d.ts +29 -0
- package/dist/esm/lib/v3/types/public/page.js.map +1 -1
- package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +3 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js +5 -0
- package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
- package/dist/esm/lib/v3/understudy/clipboard.d.ts +24 -0
- package/dist/esm/lib/v3/understudy/clipboard.js +163 -0
- package/dist/esm/lib/v3/understudy/clipboard.js.map +1 -0
- package/dist/esm/lib/v3/understudy/context.d.ts +3 -0
- package/dist/esm/lib/v3/understudy/context.js +15 -0
- package/dist/esm/lib/v3/understudy/context.js.map +1 -1
- package/dist/esm/lib/v3/understudy/page.d.ts +23 -1
- package/dist/esm/lib/v3/understudy/page.js +284 -1
- package/dist/esm/lib/v3/understudy/page.js.map +1 -1
- package/dist/esm/lib/v3/v3.js +20 -8
- package/dist/esm/lib/v3/v3.js.map +1 -1
- package/dist/esm/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
- package/dist/esm/lib/v3/verifier/errorTaxonomy.js +285 -0
- package/dist/esm/lib/v3/verifier/errorTaxonomy.js.map +1 -0
- package/dist/esm/lib/v3/verifier/evidence.d.ts +44 -0
- package/dist/esm/lib/v3/verifier/evidence.js +393 -0
- package/dist/esm/lib/v3/verifier/evidence.js.map +1 -0
- package/dist/esm/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
- package/dist/esm/lib/v3/verifier/evidenceNormalization.js +93 -0
- package/dist/esm/lib/v3/verifier/evidenceNormalization.js.map +1 -0
- package/dist/esm/lib/v3/verifier/index.d.ts +6 -0
- package/dist/esm/lib/v3/verifier/index.js +3 -0
- package/dist/esm/lib/v3/verifier/index.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
- package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js +68 -0
- package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
- package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js +162 -0
- package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js +155 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js +134 -0
- package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/index.d.ts +8 -0
- package/dist/esm/lib/v3/verifier/prompts/index.js +9 -0
- package/dist/esm/lib/v3/verifier/prompts/index.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
- package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js +74 -0
- package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/render.d.ts +23 -0
- package/dist/esm/lib/v3/verifier/prompts/render.js +41 -0
- package/dist/esm/lib/v3/verifier/prompts/render.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
- package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js +318 -0
- package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
- package/dist/esm/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
- package/dist/esm/lib/v3/verifier/prompts/taskValidity.js +113 -0
- package/dist/esm/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
- package/dist/esm/lib/v3/verifier/rubricVerifier.d.ts +91 -0
- package/dist/esm/lib/v3/verifier/rubricVerifier.js +1640 -0
- package/dist/esm/lib/v3/verifier/rubricVerifier.js.map +1 -0
- package/dist/esm/lib/v3/verifier/trajectory.d.ts +50 -0
- package/dist/esm/lib/v3/verifier/trajectory.js +273 -0
- package/dist/esm/lib/v3/verifier/trajectory.js.map +1 -0
- package/dist/esm/lib/v3/verifier/types.d.ts +429 -0
- package/dist/esm/lib/v3/verifier/types.js +2 -0
- package/dist/esm/lib/v3/verifier/types.js.map +1 -0
- package/dist/esm/lib/v3Evaluator.d.ts +14 -4
- package/dist/esm/lib/v3Evaluator.js +189 -1
- package/dist/esm/lib/v3Evaluator.js.map +1 -1
- package/dist/esm/lib/v3LegacyEvaluator.js +5 -1
- package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -1
- package/dist/esm/lib/version.d.ts +1 -1
- package/dist/esm/lib/version.js +1 -1
- package/dist/esm/lib/version.js.map +1 -1
- package/package.json +18 -12
package/README.md
CHANGED
|
@@ -43,18 +43,6 @@ If you're looking for the Python implementation, you can find it
|
|
|
43
43
|
<a href="https://github.com/browserbase/stagehand-python"> here</a>
|
|
44
44
|
</p>
|
|
45
45
|
|
|
46
|
-
<div align="center" style="display: flex; align-items: center; justify-content: center; gap: 4px; margin-bottom: 0;">
|
|
47
|
-
<b>Vibe code</b>
|
|
48
|
-
<span style="font-size: 1.05em;"> Stagehand with </span>
|
|
49
|
-
<a href="https://director.ai" style="display: flex; align-items: center;">
|
|
50
|
-
<span>Director</span>
|
|
51
|
-
</a>
|
|
52
|
-
<span> </span>
|
|
53
|
-
<picture>
|
|
54
|
-
<img alt="Director" src="../../media/director_icon.svg" width="25" />
|
|
55
|
-
</picture>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
46
|
## What is Stagehand?
|
|
59
47
|
|
|
60
48
|
Stagehand is a browser automation framework used to control web browsers with natural language and code. By combining the power of AI with the precision of code, Stagehand makes web automation flexible, maintainable, and actually reliable.
|
|
@@ -126,12 +114,16 @@ nano .env # Edit the .env file to add API keys
|
|
|
126
114
|
|
|
127
115
|
### Installing from a branch
|
|
128
116
|
|
|
129
|
-
|
|
117
|
+
To install Stagehand directly from a GitHub branch, install the core package subdirectory:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pnpm add "github:browserbase/stagehand#<branchName>&path:/packages/core"
|
|
121
|
+
```
|
|
130
122
|
|
|
131
|
-
|
|
123
|
+
Or set it in your project's `package.json`:
|
|
132
124
|
|
|
133
125
|
```json
|
|
134
|
-
"@browserbasehq/stagehand": "
|
|
126
|
+
"@browserbasehq/stagehand": "github:browserbase/stagehand#<branchName>&path:/packages/core"
|
|
135
127
|
```
|
|
136
128
|
|
|
137
129
|
## Contributing
|
package/dist/cjs/lib/utils.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ import { ZodPathSegments } from "./v3/types/private/internal.js";
|
|
|
6
6
|
import type { StagehandZodSchema } from "./v3/zodCompat.js";
|
|
7
7
|
export declare function getZFactory(schema: StagehandZodSchema): typeof z;
|
|
8
8
|
export declare function validateZodSchema(schema: StagehandZodSchema, data: unknown): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Strip a leading `provider/` segment from a model id, e.g.
|
|
11
|
+
* "anthropic/claude-opus-4-8" -> "claude-opus-4-8". Ids without a
|
|
12
|
+
* provider prefix pass through unchanged.
|
|
13
|
+
*/
|
|
14
|
+
export declare function stripModelProvider(modelId: string): string;
|
|
9
15
|
/**
|
|
10
16
|
* Detects if the code is running in the Bun runtime environment.
|
|
11
17
|
* @returns {boolean} True if running in Bun, false otherwise.
|
|
@@ -45,6 +51,8 @@ export declare const providerEnvVarMap: Partial<Record<ModelProvider | string, s
|
|
|
45
51
|
* @returns The API key if found, undefined otherwise
|
|
46
52
|
*/
|
|
47
53
|
export declare function loadApiKeyFromEnv(provider: string | undefined, logger: (logLine: LogLine) => void): string | undefined;
|
|
54
|
+
export declare function hasModelProviderAuth(clientOptions: unknown): boolean;
|
|
55
|
+
export declare function getInheritableModelOptions<T extends object>(clientOptions: T | undefined): Partial<T> | undefined;
|
|
48
56
|
export declare function trimTrailingTextNode(path: string | undefined): string | undefined;
|
|
49
57
|
export declare function toTitleCase(str: string): string;
|
|
50
58
|
export interface JsonSchemaProperty {
|
package/dist/cjs/lib/utils.js
CHANGED
|
@@ -6,12 +6,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.providerEnvVarMap = void 0;
|
|
7
7
|
exports.getZFactory = getZFactory;
|
|
8
8
|
exports.validateZodSchema = validateZodSchema;
|
|
9
|
+
exports.stripModelProvider = stripModelProvider;
|
|
9
10
|
exports.isRunningInBun = isRunningInBun;
|
|
10
11
|
exports.toGeminiSchema = toGeminiSchema;
|
|
11
12
|
exports.getZodType = getZodType;
|
|
12
13
|
exports.transformSchema = transformSchema;
|
|
13
14
|
exports.injectUrls = injectUrls;
|
|
14
15
|
exports.loadApiKeyFromEnv = loadApiKeyFromEnv;
|
|
16
|
+
exports.hasModelProviderAuth = hasModelProviderAuth;
|
|
17
|
+
exports.getInheritableModelOptions = getInheritableModelOptions;
|
|
15
18
|
exports.trimTrailingTextNode = trimTrailingTextNode;
|
|
16
19
|
exports.toTitleCase = toTitleCase;
|
|
17
20
|
exports.jsonSchemaToZod = jsonSchemaToZod;
|
|
@@ -166,6 +169,16 @@ function validateZodSchema(schema, data) {
|
|
|
166
169
|
}
|
|
167
170
|
throw new sdkErrors_js_1.ZodSchemaValidationError(data, result.error.format());
|
|
168
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Strip a leading `provider/` segment from a model id, e.g.
|
|
174
|
+
* "anthropic/claude-opus-4-8" -> "claude-opus-4-8". Ids without a
|
|
175
|
+
* provider prefix pass through unchanged.
|
|
176
|
+
*/
|
|
177
|
+
function stripModelProvider(modelId) {
|
|
178
|
+
return modelId.includes("/")
|
|
179
|
+
? modelId.slice(modelId.indexOf("/") + 1)
|
|
180
|
+
: modelId;
|
|
181
|
+
}
|
|
169
182
|
/**
|
|
170
183
|
* Detects if the code is running in the Bun runtime environment.
|
|
171
184
|
* @returns {boolean} True if running in Bun, false otherwise.
|
|
@@ -583,6 +596,24 @@ function loadApiKeyFromEnv(provider, logger) {
|
|
|
583
596
|
// Don't log - this is expected when llmClient is provided or API key will be set later
|
|
584
597
|
return undefined;
|
|
585
598
|
}
|
|
599
|
+
function hasModelProviderAuth(clientOptions) {
|
|
600
|
+
if (!clientOptions || typeof clientOptions !== "object") {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
const auth = clientOptions.auth;
|
|
604
|
+
return auth !== undefined && auth !== null;
|
|
605
|
+
}
|
|
606
|
+
function getInheritableModelOptions(clientOptions) {
|
|
607
|
+
if (!clientOptions) {
|
|
608
|
+
return undefined;
|
|
609
|
+
}
|
|
610
|
+
const inheritableOptions = {
|
|
611
|
+
...clientOptions,
|
|
612
|
+
};
|
|
613
|
+
delete inheritableOptions.apiKey;
|
|
614
|
+
delete inheritableOptions.auth;
|
|
615
|
+
return inheritableOptions;
|
|
616
|
+
}
|
|
586
617
|
function trimTrailingTextNode(path) {
|
|
587
618
|
return path?.replace(/\/text\(\)(\[\d+\])?$/iu, "");
|
|
588
619
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodSchemaValidationError } from \"./v3/types/public/sdkErrors.js\";\nimport { Schema, Type } from \"@google/genai\";\nimport { z, ZodTypeAny } from \"zod\";\nimport z3 from \"zod/v3\";\nimport { LogLine } from \"./v3/types/public/logs.js\";\nimport { ModelProvider } from \"./v3/types/public/model.js\";\nimport { ZodPathSegments } from \"./v3/types/private/internal.js\";\nimport type { StagehandZodSchema } from \"./v3/zodCompat.js\";\nimport { isZod4Schema } from \"./v3/zodCompat.js\";\n\nconst ID_PATTERN = /^\\d+-\\d+$/;\n\nconst zFactories = {\n v4: z,\n v3: z3 as unknown as typeof z,\n};\n\nexport function getZFactory(schema: StagehandZodSchema): typeof z {\n return isZod4Schema(schema) ? zFactories.v4 : zFactories.v3;\n}\n\nconst TYPE_NAME_MAP: Record<string, string> = {\n ZodString: \"string\",\n string: \"string\",\n ZodNumber: \"number\",\n number: \"number\",\n ZodBoolean: \"boolean\",\n boolean: \"boolean\",\n ZodObject: \"object\",\n object: \"object\",\n ZodArray: \"array\",\n array: \"array\",\n ZodUnion: \"union\",\n union: \"union\",\n ZodIntersection: \"intersection\",\n intersection: \"intersection\",\n ZodOptional: \"optional\",\n optional: \"optional\",\n ZodNullable: \"nullable\",\n nullable: \"nullable\",\n ZodLiteral: \"literal\",\n literal: \"literal\",\n ZodEnum: \"enum\",\n enum: \"enum\",\n ZodDefault: \"default\",\n default: \"default\",\n ZodEffects: \"effects\",\n effects: \"effects\",\n pipe: \"pipe\",\n};\n\nfunction getZ4Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ4Bag(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.bag as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ3Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getObjectShape(\n schema: StagehandZodSchema,\n): Record<string, StagehandZodSchema> | undefined {\n const z4Shape = getZ4Def(schema)?.shape as\n | Record<string, StagehandZodSchema>\n | undefined;\n if (z4Shape) {\n return z4Shape;\n }\n\n const z3Shape = getZ3Def(schema)?.shape;\n if (!z3Shape) {\n return undefined;\n }\n\n if (typeof z3Shape === \"function\") {\n return (z3Shape as () => Record<string, StagehandZodSchema>)();\n }\n\n return z3Shape as Record<string, StagehandZodSchema>;\n}\n\nfunction getArrayElement(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.element ?? getZ3Def(schema)?.type) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getInnerType(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.innerType ?? getZ3Def(schema)?.innerType) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getUnionOptions(\n schema: StagehandZodSchema,\n): StagehandZodSchema[] | undefined {\n const z4Options = getZ4Def(schema)?.options;\n if (Array.isArray(z4Options)) {\n return z4Options as StagehandZodSchema[];\n }\n const z3Options = getZ3Def(schema)?.options;\n return Array.isArray(z3Options)\n ? (z3Options as StagehandZodSchema[])\n : undefined;\n}\n\nfunction getIntersectionSides(schema: StagehandZodSchema): {\n left?: StagehandZodSchema;\n right?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.left || z4Def?.right) {\n return {\n left: z4Def?.left as StagehandZodSchema | undefined,\n right: z4Def?.right as StagehandZodSchema | undefined,\n };\n }\n const z3Def = getZ3Def(schema);\n return {\n left: z3Def?.left as StagehandZodSchema | undefined,\n right: z3Def?.right as StagehandZodSchema | undefined,\n };\n}\n\nfunction getEnumValues(schema: StagehandZodSchema): string[] | undefined {\n const z4Entries = getZ4Def(schema)?.entries;\n if (z4Entries && typeof z4Entries === \"object\") {\n return Object.values(z4Entries as Record<string, string>);\n }\n const z3Values = getZ3Def(schema)?.values;\n return Array.isArray(z3Values) ? (z3Values as string[]) : undefined;\n}\n\nfunction getLiteralValues(schema: StagehandZodSchema): unknown[] {\n const z4Values = getZ4Def(schema)?.values;\n if (Array.isArray(z4Values)) {\n return z4Values as unknown[];\n }\n const value = getZ3Def(schema)?.value;\n return typeof value !== \"undefined\" ? [value] : [];\n}\n\nfunction getStringChecks(schema: StagehandZodSchema): unknown[] {\n const z4Checks = getZ4Def(schema)?.checks;\n if (Array.isArray(z4Checks)) {\n return z4Checks;\n }\n const z3Checks = getZ3Def(schema)?.checks;\n return Array.isArray(z3Checks) ? z3Checks : [];\n}\n\nfunction getStringFormat(schema: StagehandZodSchema): string | undefined {\n const bagFormat = getZ4Bag(schema)?.format;\n if (typeof bagFormat === \"string\") {\n return bagFormat;\n }\n const z4Format = getZ4Def(schema)?.format;\n if (typeof z4Format === \"string\") {\n return z4Format;\n }\n const z3Format = getZ3Def(schema)?.format;\n return typeof z3Format === \"string\" ? z3Format : undefined;\n}\n\nfunction getPipeEndpoints(schema: StagehandZodSchema): {\n in?: StagehandZodSchema;\n out?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.in || z4Def?.out) {\n return {\n in: z4Def?.in as StagehandZodSchema | undefined,\n out: z4Def?.out as StagehandZodSchema | undefined,\n };\n }\n return {};\n}\n\nfunction getEffectsBaseSchema(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return getZ3Def(schema)?.schema as StagehandZodSchema | undefined;\n}\n\ntype SchemaInternals = {\n _zod?: { def?: Record<string, unknown>; bag?: Record<string, unknown> };\n _def?: Record<string, unknown>;\n};\n\nexport function validateZodSchema(schema: StagehandZodSchema, data: unknown) {\n const result = schema.safeParse(data);\n\n if (result.success) {\n return true;\n }\n throw new ZodSchemaValidationError(data, result.error.format());\n}\n\n/**\n * Detects if the code is running in the Bun runtime environment.\n * @returns {boolean} True if running in Bun, false otherwise.\n */\nexport function isRunningInBun(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n \"bun\" in process.versions\n );\n}\n\n/*\n * Helper functions for converting between Gemini and Zod schemas\n */\nfunction decorateGeminiSchema(\n geminiSchema: Schema,\n zodSchema: z.ZodTypeAny,\n): Schema {\n if (geminiSchema.nullable === undefined) {\n geminiSchema.nullable = zodSchema.isOptional();\n }\n\n if (zodSchema.description) {\n geminiSchema.description = zodSchema.description;\n }\n\n return geminiSchema;\n}\n\nexport function toGeminiSchema(zodSchema: StagehandZodSchema): Schema {\n const normalizedSchema = zodSchema as z.ZodTypeAny;\n const zodType = getZodType(zodSchema);\n switch (zodType) {\n case \"array\": {\n const element = getArrayElement(zodSchema) ?? z.any();\n return decorateGeminiSchema(\n {\n type: Type.ARRAY,\n items: toGeminiSchema(element),\n },\n normalizedSchema,\n );\n }\n case \"object\": {\n const properties: Record<string, Schema> = {};\n const required: string[] = [];\n\n const shape = getObjectShape(zodSchema);\n if (shape) {\n Object.entries(shape).forEach(\n ([key, value]: [string, StagehandZodSchema]) => {\n properties[key] = toGeminiSchema(value);\n if (getZodType(value) !== \"optional\") {\n required.push(key);\n }\n },\n );\n }\n\n return decorateGeminiSchema(\n {\n type: Type.OBJECT,\n properties,\n required: required.length > 0 ? required : undefined,\n },\n normalizedSchema,\n );\n }\n case \"string\":\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n case \"number\":\n return decorateGeminiSchema(\n {\n type: Type.NUMBER,\n },\n normalizedSchema,\n );\n case \"boolean\":\n return decorateGeminiSchema(\n {\n type: Type.BOOLEAN,\n },\n normalizedSchema,\n );\n case \"enum\": {\n const values = getEnumValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values,\n },\n normalizedSchema,\n );\n }\n case \"default\":\n case \"nullable\":\n case \"optional\": {\n const innerType = getInnerType(zodSchema) ?? z.any();\n const innerSchema = toGeminiSchema(innerType);\n return decorateGeminiSchema(\n {\n ...innerSchema,\n nullable: true,\n },\n normalizedSchema,\n );\n }\n case \"literal\": {\n const values = getLiteralValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values as string[],\n },\n normalizedSchema,\n );\n }\n case \"pipe\": {\n const endpoints = getPipeEndpoints(zodSchema);\n if (endpoints.in) {\n return toGeminiSchema(endpoints.in);\n }\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n // Standalone transforms and any unknown types fall through to default\n default:\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n}\n\n// Helper function to check the type of Zod schema\nexport function getZodType(schema: StagehandZodSchema): string {\n const schemaWithDef = schema as SchemaInternals & {\n _zod?: { def?: { type?: string } };\n };\n const rawType =\n (schemaWithDef._zod?.def?.type as string | undefined) ??\n (schemaWithDef._def?.typeName as string | undefined) ??\n (schemaWithDef._def?.type as string | undefined);\n\n if (!rawType) {\n return \"unknown\";\n }\n\n return TYPE_NAME_MAP[rawType] ?? rawType;\n}\n\n/**\n * Recursively traverses a given Zod schema, scanning for any fields of type `z.string().url()`.\n * For each such field, it replaces the `z.string().url()` with `z.number()`.\n *\n * This function is used internally by higher-level utilities (e.g., transforming entire object schemas)\n * and handles nested objects, arrays, unions, intersections, optionals.\n *\n * @param schema - The Zod schema to transform.\n * @param currentPath - An array of string/number keys representing the current schema path (used internally for recursion).\n * @returns A two-element tuple:\n * 1. The updated Zod schema, with any `.url()` fields replaced by `z.number()`.\n * 2. An array of {@link ZodPathSegments} objects representing each replaced field, including the path segments.\n */\nexport function transformSchema(\n schema: StagehandZodSchema,\n currentPath: Array<string | number>,\n): [StagehandZodSchema, ZodPathSegments[]] {\n if (isKind(schema, \"string\")) {\n const checks = getStringChecks(schema);\n const format = getStringFormat(schema);\n const hasUrlCheck =\n checks.some((check) => {\n const candidate = check as {\n kind?: string;\n format?: string;\n _zod?: { def?: { check?: string; format?: string } };\n };\n return (\n candidate.kind === \"url\" ||\n candidate.format === \"url\" ||\n candidate._zod?.def?.check === \"url\" ||\n candidate._zod?.def?.format === \"url\"\n );\n }) || format === \"url\";\n\n if (hasUrlCheck) {\n return [makeIdStringSchema(schema), [{ segments: [] }]];\n }\n return [schema, []];\n }\n\n if (isKind(schema, \"object\")) {\n const shape = getObjectShape(schema);\n if (!shape) {\n return [schema, []];\n }\n const newShape: Record<string, StagehandZodSchema> = {};\n const urlPaths: ZodPathSegments[] = [];\n let changed = false;\n\n for (const key of Object.keys(shape)) {\n const child = shape[key];\n const [transformedChild, childPaths] = transformSchema(child, [\n ...currentPath,\n key,\n ]);\n if (transformedChild !== child) {\n changed = true;\n }\n newShape[key] = transformedChild;\n childPaths.forEach((cp) => {\n urlPaths.push({ segments: [key, ...cp.segments] });\n });\n }\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.object(newShape as Record<string, z.ZodTypeAny>),\n urlPaths,\n ];\n }\n return [schema, urlPaths];\n }\n\n if (isKind(schema, \"array\")) {\n const itemType = getArrayElement(schema);\n if (!itemType) {\n return [schema, []];\n }\n const [transformedItem, childPaths] = transformSchema(itemType, [\n ...currentPath,\n \"*\",\n ]);\n const arrayPaths: ZodPathSegments[] = childPaths.map((cp) => ({\n segments: [\"*\", ...cp.segments],\n }));\n if (transformedItem !== itemType) {\n const factory = getZFactory(schema);\n return [\n factory.array(transformedItem as unknown as z.ZodTypeAny),\n arrayPaths,\n ];\n }\n return [schema, arrayPaths];\n }\n\n if (isKind(schema, \"union\")) {\n const unionOptions = getUnionOptions(schema);\n if (!unionOptions || unionOptions.length === 0) {\n return [schema, []];\n }\n const newOptions: StagehandZodSchema[] = [];\n let changed = false;\n let allPaths: ZodPathSegments[] = [];\n\n unionOptions.forEach((option, idx) => {\n const [newOption, childPaths] = transformSchema(option, [\n ...currentPath,\n `union_${idx}`,\n ]);\n if (newOption !== option) {\n changed = true;\n }\n newOptions.push(newOption);\n allPaths = [...allPaths, ...childPaths];\n });\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.union(\n newOptions as unknown as [\n z.ZodTypeAny,\n z.ZodTypeAny,\n ...z.ZodTypeAny[],\n ],\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"intersection\")) {\n const { left, right } = getIntersectionSides(schema);\n if (!left || !right) {\n return [schema, []];\n }\n const [newLeft, leftPaths] = transformSchema(left, [\n ...currentPath,\n \"intersection_left\",\n ]);\n const [newRight, rightPaths] = transformSchema(right, [\n ...currentPath,\n \"intersection_right\",\n ]);\n const changed = newLeft !== left || newRight !== right;\n const allPaths = [...leftPaths, ...rightPaths];\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.intersection(\n newLeft as unknown as z.ZodTypeAny,\n newRight as unknown as z.ZodTypeAny,\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"optional\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).optional() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"nullable\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).nullable() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"pipe\") && isZod4Schema(schema)) {\n const { in: inSchema, out: outSchema } = getPipeEndpoints(schema);\n if (!inSchema || !outSchema) {\n return [schema, []];\n }\n\n const [newIn, inPaths] = transformSchema(inSchema, currentPath);\n const [newOut, outPaths] = transformSchema(outSchema, currentPath);\n const allPaths = [...inPaths, ...outPaths];\n\n if (newIn !== inSchema || newOut !== outSchema) {\n const result = z.pipe(\n newIn as unknown as z.ZodTypeAny,\n newOut as unknown as z.ZodTypeAny,\n ) as StagehandZodSchema;\n return [result, allPaths];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"effects\")) {\n const baseSchema = getEffectsBaseSchema(schema);\n if (!baseSchema) {\n return [schema, []];\n }\n return transformSchema(baseSchema, currentPath);\n }\n\n return [schema, []];\n}\n\n/**\n * Once we get the final extracted object that has numeric IDs in place of URLs,\n * use `injectUrls` to walk the object and replace numeric IDs\n * with the real URL strings from idToUrlMapping. The `path` may include `*`\n * for array indices (indicating \"all items in the array\").\n */\nexport function injectUrls(\n obj: unknown,\n path: Array<string | number>,\n idToUrlMapping: Record<string, string>,\n): void {\n if (path.length === 0) return;\n const toId = (value: unknown): string | undefined => {\n if (typeof value === \"number\") {\n return String(value);\n }\n if (typeof value === \"string\" && ID_PATTERN.test(value)) {\n return value;\n }\n return undefined;\n };\n const [key, ...rest] = path;\n\n if (key === \"*\") {\n if (Array.isArray(obj)) {\n if (rest.length === 0) {\n for (let i = 0; i < obj.length; i += 1) {\n const id = toId(obj[i]);\n if (id !== undefined) {\n obj[i] = idToUrlMapping[id] ?? \"\";\n }\n }\n } else {\n for (const item of obj) injectUrls(item, rest, idToUrlMapping);\n }\n }\n return;\n }\n\n if (obj && typeof obj === \"object\") {\n const record = obj as Record<string | number, unknown>;\n if (path.length === 1) {\n const fieldValue = record[key];\n const id = toId(fieldValue);\n if (id !== undefined) {\n record[key] = idToUrlMapping[id] ?? \"\";\n }\n } else {\n injectUrls(record[key], rest, idToUrlMapping);\n }\n }\n}\n\n// Helper to check if a schema is of a specific type\nfunction isKind(s: StagehandZodSchema, kind: string): boolean {\n try {\n return getZodType(s) === kind;\n } catch {\n return false;\n }\n}\n\nfunction makeIdStringSchema(orig: StagehandZodSchema): StagehandZodSchema {\n const userDesc =\n (orig as unknown as { description?: string }).description ?? \"\";\n\n const base =\n \"This field must be the element-ID in the form 'frameId-backendId' \" +\n '(e.g. \"0-432\").';\n const composed =\n userDesc.trim().length > 0\n ? `${base} that follows this user-defined description: ${userDesc}`\n : base;\n\n const factory = getZFactory(orig);\n return factory.string().regex(ID_PATTERN).describe(composed);\n}\n\n/**\n * Mapping from LLM provider names to their corresponding environment variable names for API keys.\n */\nexport const providerEnvVarMap: Partial<\n Record<ModelProvider | string, string | Array<string>>\n> = {\n openai: \"OPENAI_API_KEY\",\n anthropic: \"ANTHROPIC_API_KEY\",\n google: [\"GEMINI_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\", \"GOOGLE_API_KEY\"],\n vertex: \"GOOGLE_VERTEX_AI_API_KEY\",\n groq: \"GROQ_API_KEY\",\n cerebras: \"CEREBRAS_API_KEY\",\n togetherai: \"TOGETHER_AI_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n perplexity: \"PERPLEXITY_API_KEY\",\n azure: \"AZURE_API_KEY\",\n xai: \"XAI_API_KEY\",\n google_legacy: \"GOOGLE_API_KEY\",\n};\n\nconst providersWithoutApiKey = new Set([\"bedrock\", \"ollama\"]);\n\n/**\n * Loads an API key for a provider, checking environment variables.\n * @param provider The name of the provider (e.g., 'openai', 'anthropic')\n * @param logger Optional logger for info/error messages\n * @returns The API key if found, undefined otherwise\n */\nexport function loadApiKeyFromEnv(\n provider: string | undefined,\n logger: (logLine: LogLine) => void,\n): string | undefined {\n if (!provider) {\n return undefined;\n }\n\n const envVarName = providerEnvVarMap[provider];\n if (!envVarName) {\n if (!providersWithoutApiKey.has(provider)) {\n logger({\n category: \"init\",\n message: `No known environment variable for provider '${provider}'`,\n level: 0,\n });\n }\n return undefined;\n }\n\n const apiKeyFromEnv = Array.isArray(envVarName)\n ? envVarName\n .map((name) => process.env[name])\n .find((key) => key && key.length > 0)\n : process.env[envVarName as string];\n if (typeof apiKeyFromEnv === \"string\" && apiKeyFromEnv.length > 0) {\n return apiKeyFromEnv;\n }\n\n // Don't log - this is expected when llmClient is provided or API key will be set later\n return undefined;\n}\n\nexport function trimTrailingTextNode(\n path: string | undefined,\n): string | undefined {\n return path?.replace(/\\/text\\(\\)(\\[\\d+\\])?$/iu, \"\");\n}\n\nexport function toTitleCase(str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (text) => text.charAt(0).toUpperCase() + text.substring(1),\n );\n}\n\n// TODO: move to separate types file\nexport interface JsonSchemaProperty {\n type: string;\n enum?: unknown[];\n items?: JsonSchemaProperty;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n minimum?: number;\n maximum?: number;\n description?: string;\n format?: string; // JSON Schema format field (e.g., \"uri\", \"url\", \"email\", etc.)\n}\nexport interface JsonSchema extends JsonSchemaProperty {\n type: string;\n}\n\n/**\n * Converts a JSON Schema object to a Zod schema\n * @param schema The JSON Schema object to convert\n * @returns A Zod schema equivalent to the input JSON Schema\n */\nexport function jsonSchemaToZod(schema: JsonSchema): ZodTypeAny {\n switch (schema.type) {\n case \"object\":\n if (schema.properties) {\n const shape: Record<string, ZodTypeAny> = {};\n for (const key in schema.properties) {\n shape[key] = jsonSchemaToZod(schema.properties[key]);\n }\n let zodObject = z.object(shape);\n if (schema.required && Array.isArray(schema.required)) {\n const requiredFields = schema.required.reduce<Record<string, true>>(\n (acc, field) => ({ ...acc, [field]: true }),\n {},\n );\n zodObject = zodObject.partial().required(requiredFields);\n }\n if (schema.description) {\n zodObject = zodObject.describe(schema.description);\n }\n return zodObject;\n } else {\n return z.object({});\n }\n case \"array\":\n if (schema.items) {\n let zodArray = z.array(jsonSchemaToZod(schema.items));\n if (schema.description) {\n zodArray = zodArray.describe(schema.description);\n }\n return zodArray;\n } else {\n return z.array(z.any());\n }\n case \"string\": {\n if (schema.enum) {\n return z.string().refine((val) => schema.enum!.includes(val));\n }\n let zodString = z.string();\n\n // Handle JSON Schema format field\n if (schema.format === \"uri\" || schema.format === \"url\") {\n zodString = zodString.url();\n } else if (schema.format === \"email\") {\n zodString = zodString.email();\n } else if (schema.format === \"uuid\") {\n zodString = zodString.uuid();\n }\n // Add more format handlers as needed\n\n if (schema.description) {\n zodString = zodString.describe(schema.description);\n }\n return zodString;\n }\n case \"number\": {\n let zodNumber = z.number();\n if (schema.minimum !== undefined) {\n zodNumber = zodNumber.min(schema.minimum);\n }\n if (schema.maximum !== undefined) {\n zodNumber = zodNumber.max(schema.maximum);\n }\n if (schema.description) {\n zodNumber = zodNumber.describe(schema.description);\n }\n return zodNumber;\n }\n case \"boolean\": {\n let zodBoolean = z.boolean();\n if (schema.description) {\n zodBoolean = zodBoolean.describe(schema.description);\n }\n return zodBoolean;\n }\n default:\n return z.any();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodSchemaValidationError } from \"./v3/types/public/sdkErrors.js\";\nimport { Schema, Type } from \"@google/genai\";\nimport { z, ZodTypeAny } from \"zod\";\nimport z3 from \"zod/v3\";\nimport { LogLine } from \"./v3/types/public/logs.js\";\nimport { ModelProvider } from \"./v3/types/public/model.js\";\nimport { ZodPathSegments } from \"./v3/types/private/internal.js\";\nimport type { StagehandZodSchema } from \"./v3/zodCompat.js\";\nimport { isZod4Schema } from \"./v3/zodCompat.js\";\n\nconst ID_PATTERN = /^\\d+-\\d+$/;\n\nconst zFactories = {\n v4: z,\n v3: z3 as unknown as typeof z,\n};\n\nexport function getZFactory(schema: StagehandZodSchema): typeof z {\n return isZod4Schema(schema) ? zFactories.v4 : zFactories.v3;\n}\n\nconst TYPE_NAME_MAP: Record<string, string> = {\n ZodString: \"string\",\n string: \"string\",\n ZodNumber: \"number\",\n number: \"number\",\n ZodBoolean: \"boolean\",\n boolean: \"boolean\",\n ZodObject: \"object\",\n object: \"object\",\n ZodArray: \"array\",\n array: \"array\",\n ZodUnion: \"union\",\n union: \"union\",\n ZodIntersection: \"intersection\",\n intersection: \"intersection\",\n ZodOptional: \"optional\",\n optional: \"optional\",\n ZodNullable: \"nullable\",\n nullable: \"nullable\",\n ZodLiteral: \"literal\",\n literal: \"literal\",\n ZodEnum: \"enum\",\n enum: \"enum\",\n ZodDefault: \"default\",\n default: \"default\",\n ZodEffects: \"effects\",\n effects: \"effects\",\n pipe: \"pipe\",\n};\n\nfunction getZ4Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ4Bag(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._zod?.bag as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getZ3Def(schema: StagehandZodSchema) {\n return (schema as SchemaInternals)._def as\n | Record<string, unknown>\n | undefined;\n}\n\nfunction getObjectShape(\n schema: StagehandZodSchema,\n): Record<string, StagehandZodSchema> | undefined {\n const z4Shape = getZ4Def(schema)?.shape as\n | Record<string, StagehandZodSchema>\n | undefined;\n if (z4Shape) {\n return z4Shape;\n }\n\n const z3Shape = getZ3Def(schema)?.shape;\n if (!z3Shape) {\n return undefined;\n }\n\n if (typeof z3Shape === \"function\") {\n return (z3Shape as () => Record<string, StagehandZodSchema>)();\n }\n\n return z3Shape as Record<string, StagehandZodSchema>;\n}\n\nfunction getArrayElement(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.element ?? getZ3Def(schema)?.type) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getInnerType(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return (getZ4Def(schema)?.innerType ?? getZ3Def(schema)?.innerType) as\n | StagehandZodSchema\n | undefined;\n}\n\nfunction getUnionOptions(\n schema: StagehandZodSchema,\n): StagehandZodSchema[] | undefined {\n const z4Options = getZ4Def(schema)?.options;\n if (Array.isArray(z4Options)) {\n return z4Options as StagehandZodSchema[];\n }\n const z3Options = getZ3Def(schema)?.options;\n return Array.isArray(z3Options)\n ? (z3Options as StagehandZodSchema[])\n : undefined;\n}\n\nfunction getIntersectionSides(schema: StagehandZodSchema): {\n left?: StagehandZodSchema;\n right?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.left || z4Def?.right) {\n return {\n left: z4Def?.left as StagehandZodSchema | undefined,\n right: z4Def?.right as StagehandZodSchema | undefined,\n };\n }\n const z3Def = getZ3Def(schema);\n return {\n left: z3Def?.left as StagehandZodSchema | undefined,\n right: z3Def?.right as StagehandZodSchema | undefined,\n };\n}\n\nfunction getEnumValues(schema: StagehandZodSchema): string[] | undefined {\n const z4Entries = getZ4Def(schema)?.entries;\n if (z4Entries && typeof z4Entries === \"object\") {\n return Object.values(z4Entries as Record<string, string>);\n }\n const z3Values = getZ3Def(schema)?.values;\n return Array.isArray(z3Values) ? (z3Values as string[]) : undefined;\n}\n\nfunction getLiteralValues(schema: StagehandZodSchema): unknown[] {\n const z4Values = getZ4Def(schema)?.values;\n if (Array.isArray(z4Values)) {\n return z4Values as unknown[];\n }\n const value = getZ3Def(schema)?.value;\n return typeof value !== \"undefined\" ? [value] : [];\n}\n\nfunction getStringChecks(schema: StagehandZodSchema): unknown[] {\n const z4Checks = getZ4Def(schema)?.checks;\n if (Array.isArray(z4Checks)) {\n return z4Checks;\n }\n const z3Checks = getZ3Def(schema)?.checks;\n return Array.isArray(z3Checks) ? z3Checks : [];\n}\n\nfunction getStringFormat(schema: StagehandZodSchema): string | undefined {\n const bagFormat = getZ4Bag(schema)?.format;\n if (typeof bagFormat === \"string\") {\n return bagFormat;\n }\n const z4Format = getZ4Def(schema)?.format;\n if (typeof z4Format === \"string\") {\n return z4Format;\n }\n const z3Format = getZ3Def(schema)?.format;\n return typeof z3Format === \"string\" ? z3Format : undefined;\n}\n\nfunction getPipeEndpoints(schema: StagehandZodSchema): {\n in?: StagehandZodSchema;\n out?: StagehandZodSchema;\n} {\n const z4Def = getZ4Def(schema);\n if (z4Def?.in || z4Def?.out) {\n return {\n in: z4Def?.in as StagehandZodSchema | undefined,\n out: z4Def?.out as StagehandZodSchema | undefined,\n };\n }\n return {};\n}\n\nfunction getEffectsBaseSchema(\n schema: StagehandZodSchema,\n): StagehandZodSchema | undefined {\n return getZ3Def(schema)?.schema as StagehandZodSchema | undefined;\n}\n\ntype SchemaInternals = {\n _zod?: { def?: Record<string, unknown>; bag?: Record<string, unknown> };\n _def?: Record<string, unknown>;\n};\n\nexport function validateZodSchema(schema: StagehandZodSchema, data: unknown) {\n const result = schema.safeParse(data);\n\n if (result.success) {\n return true;\n }\n throw new ZodSchemaValidationError(data, result.error.format());\n}\n\n/**\n * Strip a leading `provider/` segment from a model id, e.g.\n * \"anthropic/claude-opus-4-8\" -> \"claude-opus-4-8\". Ids without a\n * provider prefix pass through unchanged.\n */\nexport function stripModelProvider(modelId: string): string {\n return modelId.includes(\"/\")\n ? modelId.slice(modelId.indexOf(\"/\") + 1)\n : modelId;\n}\n\n/**\n * Detects if the code is running in the Bun runtime environment.\n * @returns {boolean} True if running in Bun, false otherwise.\n */\nexport function isRunningInBun(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n \"bun\" in process.versions\n );\n}\n\n/*\n * Helper functions for converting between Gemini and Zod schemas\n */\nfunction decorateGeminiSchema(\n geminiSchema: Schema,\n zodSchema: z.ZodTypeAny,\n): Schema {\n if (geminiSchema.nullable === undefined) {\n geminiSchema.nullable = zodSchema.isOptional();\n }\n\n if (zodSchema.description) {\n geminiSchema.description = zodSchema.description;\n }\n\n return geminiSchema;\n}\n\nexport function toGeminiSchema(zodSchema: StagehandZodSchema): Schema {\n const normalizedSchema = zodSchema as z.ZodTypeAny;\n const zodType = getZodType(zodSchema);\n switch (zodType) {\n case \"array\": {\n const element = getArrayElement(zodSchema) ?? z.any();\n return decorateGeminiSchema(\n {\n type: Type.ARRAY,\n items: toGeminiSchema(element),\n },\n normalizedSchema,\n );\n }\n case \"object\": {\n const properties: Record<string, Schema> = {};\n const required: string[] = [];\n\n const shape = getObjectShape(zodSchema);\n if (shape) {\n Object.entries(shape).forEach(\n ([key, value]: [string, StagehandZodSchema]) => {\n properties[key] = toGeminiSchema(value);\n if (getZodType(value) !== \"optional\") {\n required.push(key);\n }\n },\n );\n }\n\n return decorateGeminiSchema(\n {\n type: Type.OBJECT,\n properties,\n required: required.length > 0 ? required : undefined,\n },\n normalizedSchema,\n );\n }\n case \"string\":\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n case \"number\":\n return decorateGeminiSchema(\n {\n type: Type.NUMBER,\n },\n normalizedSchema,\n );\n case \"boolean\":\n return decorateGeminiSchema(\n {\n type: Type.BOOLEAN,\n },\n normalizedSchema,\n );\n case \"enum\": {\n const values = getEnumValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values,\n },\n normalizedSchema,\n );\n }\n case \"default\":\n case \"nullable\":\n case \"optional\": {\n const innerType = getInnerType(zodSchema) ?? z.any();\n const innerSchema = toGeminiSchema(innerType);\n return decorateGeminiSchema(\n {\n ...innerSchema,\n nullable: true,\n },\n normalizedSchema,\n );\n }\n case \"literal\": {\n const values = getLiteralValues(zodSchema);\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n enum: values as string[],\n },\n normalizedSchema,\n );\n }\n case \"pipe\": {\n const endpoints = getPipeEndpoints(zodSchema);\n if (endpoints.in) {\n return toGeminiSchema(endpoints.in);\n }\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n // Standalone transforms and any unknown types fall through to default\n default:\n return decorateGeminiSchema(\n {\n type: Type.STRING,\n },\n normalizedSchema,\n );\n }\n}\n\n// Helper function to check the type of Zod schema\nexport function getZodType(schema: StagehandZodSchema): string {\n const schemaWithDef = schema as SchemaInternals & {\n _zod?: { def?: { type?: string } };\n };\n const rawType =\n (schemaWithDef._zod?.def?.type as string | undefined) ??\n (schemaWithDef._def?.typeName as string | undefined) ??\n (schemaWithDef._def?.type as string | undefined);\n\n if (!rawType) {\n return \"unknown\";\n }\n\n return TYPE_NAME_MAP[rawType] ?? rawType;\n}\n\n/**\n * Recursively traverses a given Zod schema, scanning for any fields of type `z.string().url()`.\n * For each such field, it replaces the `z.string().url()` with `z.number()`.\n *\n * This function is used internally by higher-level utilities (e.g., transforming entire object schemas)\n * and handles nested objects, arrays, unions, intersections, optionals.\n *\n * @param schema - The Zod schema to transform.\n * @param currentPath - An array of string/number keys representing the current schema path (used internally for recursion).\n * @returns A two-element tuple:\n * 1. The updated Zod schema, with any `.url()` fields replaced by `z.number()`.\n * 2. An array of {@link ZodPathSegments} objects representing each replaced field, including the path segments.\n */\nexport function transformSchema(\n schema: StagehandZodSchema,\n currentPath: Array<string | number>,\n): [StagehandZodSchema, ZodPathSegments[]] {\n if (isKind(schema, \"string\")) {\n const checks = getStringChecks(schema);\n const format = getStringFormat(schema);\n const hasUrlCheck =\n checks.some((check) => {\n const candidate = check as {\n kind?: string;\n format?: string;\n _zod?: { def?: { check?: string; format?: string } };\n };\n return (\n candidate.kind === \"url\" ||\n candidate.format === \"url\" ||\n candidate._zod?.def?.check === \"url\" ||\n candidate._zod?.def?.format === \"url\"\n );\n }) || format === \"url\";\n\n if (hasUrlCheck) {\n return [makeIdStringSchema(schema), [{ segments: [] }]];\n }\n return [schema, []];\n }\n\n if (isKind(schema, \"object\")) {\n const shape = getObjectShape(schema);\n if (!shape) {\n return [schema, []];\n }\n const newShape: Record<string, StagehandZodSchema> = {};\n const urlPaths: ZodPathSegments[] = [];\n let changed = false;\n\n for (const key of Object.keys(shape)) {\n const child = shape[key];\n const [transformedChild, childPaths] = transformSchema(child, [\n ...currentPath,\n key,\n ]);\n if (transformedChild !== child) {\n changed = true;\n }\n newShape[key] = transformedChild;\n childPaths.forEach((cp) => {\n urlPaths.push({ segments: [key, ...cp.segments] });\n });\n }\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.object(newShape as Record<string, z.ZodTypeAny>),\n urlPaths,\n ];\n }\n return [schema, urlPaths];\n }\n\n if (isKind(schema, \"array\")) {\n const itemType = getArrayElement(schema);\n if (!itemType) {\n return [schema, []];\n }\n const [transformedItem, childPaths] = transformSchema(itemType, [\n ...currentPath,\n \"*\",\n ]);\n const arrayPaths: ZodPathSegments[] = childPaths.map((cp) => ({\n segments: [\"*\", ...cp.segments],\n }));\n if (transformedItem !== itemType) {\n const factory = getZFactory(schema);\n return [\n factory.array(transformedItem as unknown as z.ZodTypeAny),\n arrayPaths,\n ];\n }\n return [schema, arrayPaths];\n }\n\n if (isKind(schema, \"union\")) {\n const unionOptions = getUnionOptions(schema);\n if (!unionOptions || unionOptions.length === 0) {\n return [schema, []];\n }\n const newOptions: StagehandZodSchema[] = [];\n let changed = false;\n let allPaths: ZodPathSegments[] = [];\n\n unionOptions.forEach((option, idx) => {\n const [newOption, childPaths] = transformSchema(option, [\n ...currentPath,\n `union_${idx}`,\n ]);\n if (newOption !== option) {\n changed = true;\n }\n newOptions.push(newOption);\n allPaths = [...allPaths, ...childPaths];\n });\n\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.union(\n newOptions as unknown as [\n z.ZodTypeAny,\n z.ZodTypeAny,\n ...z.ZodTypeAny[],\n ],\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"intersection\")) {\n const { left, right } = getIntersectionSides(schema);\n if (!left || !right) {\n return [schema, []];\n }\n const [newLeft, leftPaths] = transformSchema(left, [\n ...currentPath,\n \"intersection_left\",\n ]);\n const [newRight, rightPaths] = transformSchema(right, [\n ...currentPath,\n \"intersection_right\",\n ]);\n const changed = newLeft !== left || newRight !== right;\n const allPaths = [...leftPaths, ...rightPaths];\n if (changed) {\n const factory = getZFactory(schema);\n return [\n factory.intersection(\n newLeft as unknown as z.ZodTypeAny,\n newRight as unknown as z.ZodTypeAny,\n ),\n allPaths,\n ];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"optional\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).optional() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"nullable\")) {\n const innerType = getInnerType(schema);\n if (!innerType) {\n return [schema, []];\n }\n const [inner, innerPaths] = transformSchema(innerType, currentPath);\n if (inner !== innerType) {\n return [\n (inner as z.ZodTypeAny).nullable() as unknown as StagehandZodSchema,\n innerPaths,\n ];\n }\n return [schema, innerPaths];\n }\n\n if (isKind(schema, \"pipe\") && isZod4Schema(schema)) {\n const { in: inSchema, out: outSchema } = getPipeEndpoints(schema);\n if (!inSchema || !outSchema) {\n return [schema, []];\n }\n\n const [newIn, inPaths] = transformSchema(inSchema, currentPath);\n const [newOut, outPaths] = transformSchema(outSchema, currentPath);\n const allPaths = [...inPaths, ...outPaths];\n\n if (newIn !== inSchema || newOut !== outSchema) {\n const result = z.pipe(\n newIn as unknown as z.ZodTypeAny,\n newOut as unknown as z.ZodTypeAny,\n ) as StagehandZodSchema;\n return [result, allPaths];\n }\n return [schema, allPaths];\n }\n\n if (isKind(schema, \"effects\")) {\n const baseSchema = getEffectsBaseSchema(schema);\n if (!baseSchema) {\n return [schema, []];\n }\n return transformSchema(baseSchema, currentPath);\n }\n\n return [schema, []];\n}\n\n/**\n * Once we get the final extracted object that has numeric IDs in place of URLs,\n * use `injectUrls` to walk the object and replace numeric IDs\n * with the real URL strings from idToUrlMapping. The `path` may include `*`\n * for array indices (indicating \"all items in the array\").\n */\nexport function injectUrls(\n obj: unknown,\n path: Array<string | number>,\n idToUrlMapping: Record<string, string>,\n): void {\n if (path.length === 0) return;\n const toId = (value: unknown): string | undefined => {\n if (typeof value === \"number\") {\n return String(value);\n }\n if (typeof value === \"string\" && ID_PATTERN.test(value)) {\n return value;\n }\n return undefined;\n };\n const [key, ...rest] = path;\n\n if (key === \"*\") {\n if (Array.isArray(obj)) {\n if (rest.length === 0) {\n for (let i = 0; i < obj.length; i += 1) {\n const id = toId(obj[i]);\n if (id !== undefined) {\n obj[i] = idToUrlMapping[id] ?? \"\";\n }\n }\n } else {\n for (const item of obj) injectUrls(item, rest, idToUrlMapping);\n }\n }\n return;\n }\n\n if (obj && typeof obj === \"object\") {\n const record = obj as Record<string | number, unknown>;\n if (path.length === 1) {\n const fieldValue = record[key];\n const id = toId(fieldValue);\n if (id !== undefined) {\n record[key] = idToUrlMapping[id] ?? \"\";\n }\n } else {\n injectUrls(record[key], rest, idToUrlMapping);\n }\n }\n}\n\n// Helper to check if a schema is of a specific type\nfunction isKind(s: StagehandZodSchema, kind: string): boolean {\n try {\n return getZodType(s) === kind;\n } catch {\n return false;\n }\n}\n\nfunction makeIdStringSchema(orig: StagehandZodSchema): StagehandZodSchema {\n const userDesc =\n (orig as unknown as { description?: string }).description ?? \"\";\n\n const base =\n \"This field must be the element-ID in the form 'frameId-backendId' \" +\n '(e.g. \"0-432\").';\n const composed =\n userDesc.trim().length > 0\n ? `${base} that follows this user-defined description: ${userDesc}`\n : base;\n\n const factory = getZFactory(orig);\n return factory.string().regex(ID_PATTERN).describe(composed);\n}\n\n/**\n * Mapping from LLM provider names to their corresponding environment variable names for API keys.\n */\nexport const providerEnvVarMap: Partial<\n Record<ModelProvider | string, string | Array<string>>\n> = {\n openai: \"OPENAI_API_KEY\",\n anthropic: \"ANTHROPIC_API_KEY\",\n google: [\"GEMINI_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\", \"GOOGLE_API_KEY\"],\n vertex: \"GOOGLE_VERTEX_AI_API_KEY\",\n groq: \"GROQ_API_KEY\",\n cerebras: \"CEREBRAS_API_KEY\",\n togetherai: \"TOGETHER_AI_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n perplexity: \"PERPLEXITY_API_KEY\",\n azure: \"AZURE_API_KEY\",\n xai: \"XAI_API_KEY\",\n google_legacy: \"GOOGLE_API_KEY\",\n};\n\nconst providersWithoutApiKey = new Set([\"bedrock\", \"ollama\"]);\n\n/**\n * Loads an API key for a provider, checking environment variables.\n * @param provider The name of the provider (e.g., 'openai', 'anthropic')\n * @param logger Optional logger for info/error messages\n * @returns The API key if found, undefined otherwise\n */\nexport function loadApiKeyFromEnv(\n provider: string | undefined,\n logger: (logLine: LogLine) => void,\n): string | undefined {\n if (!provider) {\n return undefined;\n }\n\n const envVarName = providerEnvVarMap[provider];\n if (!envVarName) {\n if (!providersWithoutApiKey.has(provider)) {\n logger({\n category: \"init\",\n message: `No known environment variable for provider '${provider}'`,\n level: 0,\n });\n }\n return undefined;\n }\n\n const apiKeyFromEnv = Array.isArray(envVarName)\n ? envVarName\n .map((name) => process.env[name])\n .find((key) => key && key.length > 0)\n : process.env[envVarName as string];\n if (typeof apiKeyFromEnv === \"string\" && apiKeyFromEnv.length > 0) {\n return apiKeyFromEnv;\n }\n\n // Don't log - this is expected when llmClient is provided or API key will be set later\n return undefined;\n}\n\nexport function hasModelProviderAuth(clientOptions: unknown): boolean {\n if (!clientOptions || typeof clientOptions !== \"object\") {\n return false;\n }\n\n const auth = (clientOptions as { auth?: unknown }).auth;\n return auth !== undefined && auth !== null;\n}\n\nexport function getInheritableModelOptions<T extends object>(\n clientOptions: T | undefined,\n): Partial<T> | undefined {\n if (!clientOptions) {\n return undefined;\n }\n\n const inheritableOptions = {\n ...(clientOptions as Record<string, unknown>),\n };\n delete inheritableOptions.apiKey;\n delete inheritableOptions.auth;\n\n return inheritableOptions as Partial<T>;\n}\n\nexport function trimTrailingTextNode(\n path: string | undefined,\n): string | undefined {\n return path?.replace(/\\/text\\(\\)(\\[\\d+\\])?$/iu, \"\");\n}\n\nexport function toTitleCase(str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (text) => text.charAt(0).toUpperCase() + text.substring(1),\n );\n}\n\n// TODO: move to separate types file\nexport interface JsonSchemaProperty {\n type: string;\n enum?: unknown[];\n items?: JsonSchemaProperty;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n minimum?: number;\n maximum?: number;\n description?: string;\n format?: string; // JSON Schema format field (e.g., \"uri\", \"url\", \"email\", etc.)\n}\nexport interface JsonSchema extends JsonSchemaProperty {\n type: string;\n}\n\n/**\n * Converts a JSON Schema object to a Zod schema\n * @param schema The JSON Schema object to convert\n * @returns A Zod schema equivalent to the input JSON Schema\n */\nexport function jsonSchemaToZod(schema: JsonSchema): ZodTypeAny {\n switch (schema.type) {\n case \"object\":\n if (schema.properties) {\n const shape: Record<string, ZodTypeAny> = {};\n for (const key in schema.properties) {\n shape[key] = jsonSchemaToZod(schema.properties[key]);\n }\n let zodObject = z.object(shape);\n if (schema.required && Array.isArray(schema.required)) {\n const requiredFields = schema.required.reduce<Record<string, true>>(\n (acc, field) => ({ ...acc, [field]: true }),\n {},\n );\n zodObject = zodObject.partial().required(requiredFields);\n }\n if (schema.description) {\n zodObject = zodObject.describe(schema.description);\n }\n return zodObject;\n } else {\n return z.object({});\n }\n case \"array\":\n if (schema.items) {\n let zodArray = z.array(jsonSchemaToZod(schema.items));\n if (schema.description) {\n zodArray = zodArray.describe(schema.description);\n }\n return zodArray;\n } else {\n return z.array(z.any());\n }\n case \"string\": {\n if (schema.enum) {\n return z.string().refine((val) => schema.enum!.includes(val));\n }\n let zodString = z.string();\n\n // Handle JSON Schema format field\n if (schema.format === \"uri\" || schema.format === \"url\") {\n zodString = zodString.url();\n } else if (schema.format === \"email\") {\n zodString = zodString.email();\n } else if (schema.format === \"uuid\") {\n zodString = zodString.uuid();\n }\n // Add more format handlers as needed\n\n if (schema.description) {\n zodString = zodString.describe(schema.description);\n }\n return zodString;\n }\n case \"number\": {\n let zodNumber = z.number();\n if (schema.minimum !== undefined) {\n zodNumber = zodNumber.min(schema.minimum);\n }\n if (schema.maximum !== undefined) {\n zodNumber = zodNumber.max(schema.maximum);\n }\n if (schema.description) {\n zodNumber = zodNumber.describe(schema.description);\n }\n return zodNumber;\n }\n case \"boolean\": {\n let zodBoolean = z.boolean();\n if (schema.description) {\n zodBoolean = zodBoolean.describe(schema.description);\n }\n return zodBoolean;\n }\n default:\n return z.any();\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AgentProvider = exports.modelToAgentProviderMap = void 0;
|
|
4
|
+
const utils_js_1 = require("../../utils.js");
|
|
4
5
|
const sdkErrors_js_1 = require("../types/public/sdkErrors.js");
|
|
5
6
|
const AnthropicCUAClient_js_1 = require("./AnthropicCUAClient.js");
|
|
6
7
|
const OpenAICUAClient_js_1 = require("./OpenAICUAClient.js");
|
|
@@ -17,11 +18,14 @@ exports.modelToAgentProviderMap = {
|
|
|
17
18
|
"claude-sonnet-4-5-20250929": "anthropic",
|
|
18
19
|
"claude-opus-4-5-20251101": "anthropic",
|
|
19
20
|
"claude-opus-4-6": "anthropic",
|
|
21
|
+
"claude-opus-4-8": "anthropic",
|
|
20
22
|
"claude-sonnet-4-6": "anthropic",
|
|
21
23
|
"claude-haiku-4-5": "anthropic",
|
|
22
24
|
"claude-haiku-4-5-20251001": "anthropic",
|
|
25
|
+
"claude-fable-5": "anthropic",
|
|
23
26
|
"gemini-2.5-computer-use-preview-10-2025": "google",
|
|
24
27
|
"gemini-3-flash-preview": "google",
|
|
28
|
+
"gemini-3.5-flash": "google",
|
|
25
29
|
"gemini-3-pro-preview": "google",
|
|
26
30
|
"fara-7b": "microsoft",
|
|
27
31
|
};
|
|
@@ -72,9 +76,7 @@ class AgentProvider {
|
|
|
72
76
|
}
|
|
73
77
|
}
|
|
74
78
|
static getAgentProvider(modelName) {
|
|
75
|
-
const normalized =
|
|
76
|
-
? modelName.split("/")[1]
|
|
77
|
-
: modelName;
|
|
79
|
+
const normalized = (0, utils_js_1.stripModelProvider)(modelName);
|
|
78
80
|
if (normalized in exports.modelToAgentProviderMap) {
|
|
79
81
|
return exports.modelToAgentProviderMap[normalized];
|
|
80
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AgentProvider.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../../../../lib/v3/agent/AgentProvider.ts"],"names":[],"mappings":"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","sourcesContent":["import { ToolSet } from \"ai\";\nimport { stripModelProvider } from \"../../utils.js\";\nimport { AgentProviderType } from \"../types/public/agent.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { ClientOptions } from \"../types/public/model.js\";\nimport {\n UnsupportedModelError,\n UnsupportedModelProviderError,\n} from \"../types/public/sdkErrors.js\";\nimport { AgentClient } from \"./AgentClient.js\";\nimport { AnthropicCUAClient } from \"./AnthropicCUAClient.js\";\nimport { OpenAICUAClient } from \"./OpenAICUAClient.js\";\nimport { GoogleCUAClient } from \"./GoogleCUAClient.js\";\nimport { MicrosoftCUAClient } from \"./MicrosoftCUAClient.js\";\n\n// Map model names to their provider types\nexport const modelToAgentProviderMap: Record<string, AgentProviderType> = {\n \"gpt-5.4\": \"openai\",\n \"gpt-5.4-mini\": \"openai\",\n \"gpt-5.5\": \"openai\",\n \"computer-use-preview\": \"openai\",\n \"computer-use-preview-2025-03-11\": \"openai\",\n \"claude-sonnet-4-20250514\": \"anthropic\",\n \"claude-sonnet-4-5-20250929\": \"anthropic\",\n \"claude-opus-4-5-20251101\": \"anthropic\",\n \"claude-opus-4-6\": \"anthropic\",\n \"claude-opus-4-8\": \"anthropic\",\n \"claude-sonnet-4-6\": \"anthropic\",\n \"claude-haiku-4-5\": \"anthropic\",\n \"claude-haiku-4-5-20251001\": \"anthropic\",\n \"claude-fable-5\": \"anthropic\",\n \"gemini-2.5-computer-use-preview-10-2025\": \"google\",\n \"gemini-3-flash-preview\": \"google\",\n \"gemini-3.5-flash\": \"google\",\n \"gemini-3-pro-preview\": \"google\",\n \"fara-7b\": \"microsoft\",\n};\n\n/**\n * Provider for agent clients\n * This class is responsible for creating the appropriate agent client\n * based on the provider type\n */\nexport class AgentProvider {\n private logger: (message: LogLine) => void;\n\n /**\n * Create a new agent provider\n */\n constructor(logger: (message: LogLine) => void) {\n this.logger = logger;\n }\n\n getClient(\n modelName: string,\n clientOptions?: ClientOptions,\n userProvidedInstructions?: string,\n tools?: ToolSet,\n ): AgentClient {\n // Check if provider is explicitly set in clientOptions\n const explicitProvider = clientOptions?.provider as\n | AgentProviderType\n | undefined;\n const type = explicitProvider || AgentProvider.getAgentProvider(modelName);\n\n this.logger({\n category: \"agent\",\n message: `Getting agent client for type: ${type}, model: ${modelName}${explicitProvider ? \" (explicit provider)\" : \"\"}`,\n level: 2,\n });\n\n try {\n switch (type) {\n case \"openai\":\n return new OpenAICUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"anthropic\":\n return new AnthropicCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"google\":\n return new GoogleCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n tools,\n );\n case \"microsoft\":\n return new MicrosoftCUAClient(\n type,\n modelName,\n userProvidedInstructions,\n clientOptions,\n );\n default:\n throw new UnsupportedModelProviderError(\n [\"openai\", \"anthropic\", \"google\", \"microsoft\"],\n \"Computer Use Agent\",\n );\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error creating agent client: ${errorMessage}`,\n level: 0,\n });\n throw error;\n }\n }\n\n static getAgentProvider(modelName: string): AgentProviderType {\n const normalized = stripModelProvider(modelName);\n\n if (normalized in modelToAgentProviderMap) {\n return modelToAgentProviderMap[normalized];\n }\n\n throw new UnsupportedModelError(\n Object.keys(modelToAgentProviderMap),\n \"Computer Use Agent\",\n );\n }\n}\n"]}
|
|
@@ -10,6 +10,8 @@ const AgentClient_js_1 = require("./AgentClient.js");
|
|
|
10
10
|
const imageCompression_js_1 = require("./utils/imageCompression.js");
|
|
11
11
|
const zodCompat_js_1 = require("../zodCompat.js");
|
|
12
12
|
const FlowLogger_js_1 = require("../flowlogger/FlowLogger.js");
|
|
13
|
+
const anthropicOptions_js_1 = require("../llm/anthropicOptions.js");
|
|
14
|
+
const utils_js_1 = require("../../utils.js");
|
|
13
15
|
const uuid_1 = require("uuid");
|
|
14
16
|
/**
|
|
15
17
|
* Client for Anthropic's Computer Use API
|
|
@@ -348,14 +350,10 @@ class AnthropicCUAClient extends AgentClient_js_1.AgentClient {
|
|
|
348
350
|
}
|
|
349
351
|
// Claude 4.6+ models require the newer computer_20251124 tool version
|
|
350
352
|
// and support adaptive thinking instead of budget_tokens
|
|
351
|
-
const modelBase = this.modelName
|
|
352
|
-
? this.modelName.split("/")[1]
|
|
353
|
-
: this.modelName;
|
|
353
|
+
const modelBase = (0, utils_js_1.stripModelProvider)(this.modelName);
|
|
354
354
|
// Check if this is a Claude 4.6+ model that supports adaptive thinking
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
"claude-sonnet-4-6",
|
|
358
|
-
].includes(modelBase);
|
|
355
|
+
// (shared source of truth with the hybrid path — see anthropicOptions.ts)
|
|
356
|
+
const isAdaptiveThinkingModel = (0, anthropicOptions_js_1.isAdaptiveThinkingAnthropicModel)(modelBase);
|
|
359
357
|
// claude-opus-4-5-20251101 uses the newer computer tool version but does
|
|
360
358
|
// NOT support adaptive thinking — it still requires budget_tokens.
|
|
361
359
|
const shouldUseNewToolVersion = isAdaptiveThinkingModel || modelBase === "claude-opus-4-5-20251101";
|
|
@@ -378,7 +376,11 @@ class AnthropicCUAClient extends AgentClient_js_1.AgentClient {
|
|
|
378
376
|
// Default to "medium" effort if not explicitly specified
|
|
379
377
|
// See: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking
|
|
380
378
|
thinking = { type: "adaptive" };
|
|
381
|
-
|
|
379
|
+
// Clamp efforts the model rejects (e.g. xhigh on sonnet-4-6);
|
|
380
|
+
// defaults to the shared "medium" (see anthropicOptions.ts).
|
|
381
|
+
outputConfig = {
|
|
382
|
+
effort: (0, anthropicOptions_js_1.resolveAdaptiveEffort)(modelBase, this.thinkingEffort),
|
|
383
|
+
};
|
|
382
384
|
useAdaptiveThinking = true;
|
|
383
385
|
}
|
|
384
386
|
}
|