@browserbasehq/orca 3.5.0-vertex-test → 3.5.1-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/README.md +7 -3
  2. package/dist/cjs/lib/utils.d.ts +2 -0
  3. package/dist/cjs/lib/utils.js +20 -0
  4. package/dist/cjs/lib/utils.js.map +1 -1
  5. package/dist/cjs/lib/v3/agent/AgentProvider.js +1 -0
  6. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +1 -0
  8. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
  10. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js +38 -0
  11. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
  12. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  13. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js +54 -0
  14. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  15. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  16. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js +62 -0
  17. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  18. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  19. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js +25 -0
  20. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  21. package/dist/cjs/lib/v3/api.d.ts +1 -0
  22. package/dist/cjs/lib/v3/api.js +37 -16
  23. package/dist/cjs/lib/v3/api.js.map +1 -1
  24. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
  25. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +24 -24
  26. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
  27. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.d.ts +24 -0
  28. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js +31 -0
  29. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js.map +1 -0
  30. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
  31. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
  32. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +1 -0
  33. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +83 -7
  34. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  35. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  36. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
  37. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  38. package/dist/cjs/lib/v3/index.d.ts +13 -1
  39. package/dist/cjs/lib/v3/index.js +19 -1
  40. package/dist/cjs/lib/v3/index.js.map +1 -1
  41. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +3 -0
  42. package/dist/cjs/lib/v3/llm/LLMProvider.js +44 -3
  43. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  44. package/dist/cjs/lib/v3/types/public/agent.d.ts +8 -2
  45. package/dist/cjs/lib/v3/types/public/agent.js +1 -0
  46. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  47. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  48. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js +15 -0
  49. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  50. package/dist/cjs/lib/v3/types/public/api.d.ts +925 -182
  51. package/dist/cjs/lib/v3/types/public/api.js +138 -20
  52. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  53. package/dist/cjs/lib/v3/types/public/clipboard.d.ts +15 -0
  54. package/dist/cjs/lib/v3/types/public/clipboard.js +3 -0
  55. package/dist/cjs/lib/v3/types/public/clipboard.js.map +1 -0
  56. package/dist/cjs/lib/v3/types/public/index.d.ts +2 -0
  57. package/dist/cjs/lib/v3/types/public/index.js +2 -0
  58. package/dist/cjs/lib/v3/types/public/index.js.map +1 -1
  59. package/dist/cjs/lib/v3/types/public/model.d.ts +30 -6
  60. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  61. package/dist/cjs/lib/v3/types/public/page.d.ts +29 -0
  62. package/dist/cjs/lib/v3/types/public/page.js.map +1 -1
  63. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +3 -0
  64. package/dist/cjs/lib/v3/types/public/sdkErrors.js +8 -2
  65. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -1
  66. package/dist/cjs/lib/v3/understudy/clipboard.d.ts +24 -0
  67. package/dist/cjs/lib/v3/understudy/clipboard.js +166 -0
  68. package/dist/cjs/lib/v3/understudy/clipboard.js.map +1 -0
  69. package/dist/cjs/lib/v3/understudy/context.d.ts +3 -0
  70. package/dist/cjs/lib/v3/understudy/context.js +15 -0
  71. package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
  72. package/dist/cjs/lib/v3/understudy/page.d.ts +23 -1
  73. package/dist/cjs/lib/v3/understudy/page.js +283 -0
  74. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  75. package/dist/cjs/lib/v3/v3.js +15 -6
  76. package/dist/cjs/lib/v3/v3.js.map +1 -1
  77. package/dist/cjs/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  78. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js +100 -0
  79. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  80. package/dist/cjs/lib/v3/verifier/index.d.ts +6 -0
  81. package/dist/cjs/lib/v3/verifier/index.js +16 -0
  82. package/dist/cjs/lib/v3/verifier/index.js.map +1 -0
  83. package/dist/cjs/lib/v3/verifier/trajectory.d.ts +50 -0
  84. package/dist/cjs/lib/v3/verifier/trajectory.js +316 -0
  85. package/dist/cjs/lib/v3/verifier/trajectory.js.map +1 -0
  86. package/dist/cjs/lib/v3/verifier/types.d.ts +281 -0
  87. package/dist/cjs/lib/v3/verifier/types.js +10 -0
  88. package/dist/cjs/lib/v3/verifier/types.js.map +1 -0
  89. package/dist/cjs/lib/v3Evaluator.d.ts +9 -4
  90. package/dist/cjs/lib/v3Evaluator.js +148 -0
  91. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  92. package/dist/cjs/lib/v3LegacyEvaluator.js +5 -1
  93. package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -1
  94. package/dist/cjs/lib/version.d.ts +1 -1
  95. package/dist/cjs/lib/version.js +1 -1
  96. package/dist/cjs/lib/version.js.map +1 -1
  97. package/dist/esm/lib/utils.d.ts +2 -0
  98. package/dist/esm/lib/utils.js +18 -0
  99. package/dist/esm/lib/utils.js.map +1 -1
  100. package/dist/esm/lib/v3/agent/AgentProvider.js +1 -0
  101. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  102. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +1 -0
  103. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  104. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
  105. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js +35 -0
  106. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
  107. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  108. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js +50 -0
  109. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  110. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  111. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js +59 -0
  112. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  113. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  114. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js +22 -0
  115. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  116. package/dist/esm/lib/v3/api.d.ts +1 -0
  117. package/dist/esm/lib/v3/api.js +38 -17
  118. package/dist/esm/lib/v3/api.js.map +1 -1
  119. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
  120. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +24 -24
  121. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
  122. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.d.ts +24 -0
  123. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js +28 -0
  124. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js.map +1 -0
  125. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
  126. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
  127. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +1 -0
  128. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +83 -7
  129. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  130. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  131. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
  132. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  133. package/dist/esm/lib/v3/index.d.ts +13 -1
  134. package/dist/esm/lib/v3/index.js +10 -0
  135. package/dist/esm/lib/v3/index.js.map +1 -1
  136. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +3 -0
  137. package/dist/esm/lib/v3/llm/LLMProvider.js +43 -3
  138. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  139. package/dist/esm/lib/v3/types/public/agent.d.ts +8 -2
  140. package/dist/esm/lib/v3/types/public/agent.js +1 -0
  141. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  142. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  143. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js +14 -0
  144. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  145. package/dist/esm/lib/v3/types/public/api.d.ts +925 -182
  146. package/dist/esm/lib/v3/types/public/api.js +136 -18
  147. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  148. package/dist/esm/lib/v3/types/public/clipboard.d.ts +15 -0
  149. package/dist/esm/lib/v3/types/public/clipboard.js +2 -0
  150. package/dist/esm/lib/v3/types/public/clipboard.js.map +1 -0
  151. package/dist/esm/lib/v3/types/public/index.d.ts +2 -0
  152. package/dist/esm/lib/v3/types/public/index.js +2 -0
  153. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  154. package/dist/esm/lib/v3/types/public/model.d.ts +30 -6
  155. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  156. package/dist/esm/lib/v3/types/public/page.d.ts +29 -0
  157. package/dist/esm/lib/v3/types/public/page.js.map +1 -1
  158. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +3 -0
  159. package/dist/esm/lib/v3/types/public/sdkErrors.js +5 -0
  160. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  161. package/dist/esm/lib/v3/understudy/clipboard.d.ts +24 -0
  162. package/dist/esm/lib/v3/understudy/clipboard.js +163 -0
  163. package/dist/esm/lib/v3/understudy/clipboard.js.map +1 -0
  164. package/dist/esm/lib/v3/understudy/context.d.ts +3 -0
  165. package/dist/esm/lib/v3/understudy/context.js +15 -0
  166. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  167. package/dist/esm/lib/v3/understudy/page.d.ts +23 -1
  168. package/dist/esm/lib/v3/understudy/page.js +284 -1
  169. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  170. package/dist/esm/lib/v3/v3.js +16 -7
  171. package/dist/esm/lib/v3/v3.js.map +1 -1
  172. package/dist/esm/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  173. package/dist/esm/lib/v3/verifier/evidenceNormalization.js +93 -0
  174. package/dist/esm/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  175. package/dist/esm/lib/v3/verifier/index.d.ts +6 -0
  176. package/dist/esm/lib/v3/verifier/index.js +3 -0
  177. package/dist/esm/lib/v3/verifier/index.js.map +1 -0
  178. package/dist/esm/lib/v3/verifier/trajectory.d.ts +50 -0
  179. package/dist/esm/lib/v3/verifier/trajectory.js +273 -0
  180. package/dist/esm/lib/v3/verifier/trajectory.js.map +1 -0
  181. package/dist/esm/lib/v3/verifier/types.d.ts +281 -0
  182. package/dist/esm/lib/v3/verifier/types.js +9 -0
  183. package/dist/esm/lib/v3/verifier/types.js.map +1 -0
  184. package/dist/esm/lib/v3Evaluator.d.ts +9 -4
  185. package/dist/esm/lib/v3Evaluator.js +148 -0
  186. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  187. package/dist/esm/lib/v3LegacyEvaluator.js +5 -1
  188. package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -1
  189. package/dist/esm/lib/version.d.ts +1 -1
  190. package/dist/esm/lib/version.js +1 -1
  191. package/dist/esm/lib/version.js.map +1 -1
  192. package/package.json +16 -10
@@ -1,7 +1,9 @@
1
1
  export * from "./agent.js";
2
+ export * from "./agentEvidenceEvents.js";
2
3
  export * as Api from "./api.js";
3
4
  export type { BrowserbaseRegion } from "./api.js";
4
5
  export * from "./apiErrors.js";
6
+ export * from "./clipboard.js";
5
7
  export * from "./logs.js";
6
8
  export * from "./methods.js";
7
9
  export * from "./metrics.js";
@@ -38,9 +38,11 @@ var __importStar = (this && this.__importStar) || (function () {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.CustomOpenAIClient = exports.AISdkClient = exports.Api = void 0;
40
40
  __exportStar(require("./agent.js"), exports);
41
+ __exportStar(require("./agentEvidenceEvents.js"), exports);
41
42
  // Export api.ts under namespace to avoid conflicts with methods.ts types
42
43
  exports.Api = __importStar(require("./api.js"));
43
44
  __exportStar(require("./apiErrors.js"), exports);
45
+ __exportStar(require("./clipboard.js"), exports);
44
46
  __exportStar(require("./logs.js"), exports);
45
47
  __exportStar(require("./methods.js"), exports);
46
48
  __exportStar(require("./metrics.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,yEAAyE;AACzE,gDAAgC;AAGhC,iDAA+B;AAC/B,4CAA0B;AAC1B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,4DAA8D;AAArD,uGAAA,WAAW,OAAA;AACpB,0EAA4E;AAAnE,qHAAA,kBAAkB,OAAA","sourcesContent":["export * from \"./agent.js\";\n// Export api.ts under namespace to avoid conflicts with methods.ts types\nexport * as Api from \"./api.js\";\n// Also export BrowserbaseRegion directly for convenience\nexport type { BrowserbaseRegion } from \"./api.js\";\nexport * from \"./apiErrors.js\";\nexport * from \"./logs.js\";\nexport * from \"./methods.js\";\nexport * from \"./metrics.js\";\nexport * from \"./model.js\";\nexport * from \"./options.js\";\nexport * from \"./page.js\";\nexport * from \"./sdkErrors.js\";\nexport * from \"./context.js\";\nexport { AISdkClient } from \"../../external_clients/aisdk.js\";\nexport { CustomOpenAIClient } from \"../../external_clients/customOpenAI.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2DAAyC;AACzC,yEAAyE;AACzE,gDAAgC;AAGhC,iDAA+B;AAC/B,iDAA+B;AAC/B,4CAA0B;AAC1B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,+CAA6B;AAC7B,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,4DAA8D;AAArD,uGAAA,WAAW,OAAA;AACpB,0EAA4E;AAAnE,qHAAA,kBAAkB,OAAA","sourcesContent":["export * from \"./agent.js\";\nexport * from \"./agentEvidenceEvents.js\";\n// Export api.ts under namespace to avoid conflicts with methods.ts types\nexport * as Api from \"./api.js\";\n// Also export BrowserbaseRegion directly for convenience\nexport type { BrowserbaseRegion } from \"./api.js\";\nexport * from \"./apiErrors.js\";\nexport * from \"./clipboard.js\";\nexport * from \"./logs.js\";\nexport * from \"./methods.js\";\nexport * from \"./metrics.js\";\nexport * from \"./model.js\";\nexport * from \"./options.js\";\nexport * from \"./page.js\";\nexport * from \"./sdkErrors.js\";\nexport * from \"./context.js\";\nexport { AISdkClient } from \"../../external_clients/aisdk.js\";\nexport { CustomOpenAIClient } from \"../../external_clients/customOpenAI.js\";\n"]}
@@ -1,5 +1,4 @@
1
1
  import type { ClientOptions as AnthropicClientOptionsBase } from "@anthropic-ai/sdk";
2
- import type { GoogleVertexProviderSettings as GoogleVertexProviderSettingsBase } from "@ai-sdk/google-vertex";
3
2
  import type { LanguageModelV2, LanguageModelV2Middleware } from "@ai-sdk/provider";
4
3
  import type { ClientOptions as OpenAIClientOptionsBase } from "openai";
5
4
  import type { AgentProviderType } from "./agent.js";
@@ -18,14 +17,37 @@ export interface GoogleServiceAccountCredentials {
18
17
  client_x509_cert_url?: string;
19
18
  universe_domain?: string;
20
19
  }
21
- export interface GoogleVertexAuthOptions {
22
- credentials?: GoogleServiceAccountCredentials;
20
+ export interface GoogleServiceAccountAuth {
21
+ type: "googleServiceAccount";
22
+ credentials: GoogleServiceAccountCredentials;
23
23
  scopes?: string | string[];
24
24
  projectId?: string;
25
25
  universeDomain?: string;
26
26
  }
27
- export type GoogleVertexProviderSettings = Pick<GoogleVertexProviderSettingsBase, "project" | "location" | "headers" | "baseURL"> & {
28
- googleAuthOptions?: GoogleVertexAuthOptions;
27
+ export interface AzureEntraIdAuth {
28
+ type: "azureEntraId";
29
+ token: string;
30
+ }
31
+ export type ModelAuth = GoogleServiceAccountAuth | AzureEntraIdAuth;
32
+ export interface VertexProviderOptions {
33
+ project: string;
34
+ location: string;
35
+ baseURL?: string;
36
+ headers?: Record<string, string>;
37
+ }
38
+ export interface AzureProviderOptions {
39
+ resourceName?: string;
40
+ baseURL?: string;
41
+ apiVersion?: string;
42
+ useDeploymentBasedUrls?: boolean;
43
+ headers?: Record<string, string>;
44
+ }
45
+ export type ModelProviderOptions = {
46
+ vertex: VertexProviderOptions;
47
+ azure?: never;
48
+ } | {
49
+ azure: AzureProviderOptions;
50
+ vertex?: never;
29
51
  };
30
52
  export type AnthropicJsonSchemaObject = {
31
53
  definitions?: {
@@ -57,9 +79,11 @@ export type ModelProvider = "openai" | "anthropic" | "cerebras" | "groq" | "goog
57
79
  * - "max": Claude always thinks with no constraints (Opus 4.6 only)
58
80
  */
59
81
  export type ThinkingEffort = "none" | "low" | "medium" | "high" | "max";
60
- export type ClientOptions = (OpenAIClientOptions | AnthropicClientOptions | GoogleVertexProviderSettings) & {
82
+ export type ClientOptions = (OpenAIClientOptions | AnthropicClientOptions) & {
61
83
  apiKey?: string;
62
84
  provider?: AgentProviderType;
85
+ auth?: ModelAuth;
86
+ providerOptions?: ModelProviderOptions;
63
87
  baseURL?: string;
64
88
  /** OpenAI organization ID */
65
89
  organization?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/model.ts"],"names":[],"mappings":"","sourcesContent":["import type { ClientOptions as AnthropicClientOptionsBase } from \"@anthropic-ai/sdk\";\nimport type { GoogleVertexProviderSettings as GoogleVertexProviderSettingsBase } from \"@ai-sdk/google-vertex\";\nimport type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n} from \"@ai-sdk/provider\";\nimport type { ClientOptions as OpenAIClientOptionsBase } from \"openai\";\nimport type { AgentProviderType } from \"./agent.js\";\n\nexport type OpenAIClientOptions = Pick<\n OpenAIClientOptionsBase,\n \"baseURL\" | \"apiKey\"\n>;\n\nexport type AnthropicClientOptions = Pick<\n AnthropicClientOptionsBase,\n \"baseURL\" | \"apiKey\"\n>;\n\nexport interface GoogleServiceAccountCredentials {\n type?: \"service_account\";\n project_id?: string;\n private_key_id?: string;\n private_key: string;\n client_email: string;\n client_id?: string;\n auth_uri?: string;\n token_uri?: string;\n auth_provider_x509_cert_url?: string;\n client_x509_cert_url?: string;\n universe_domain?: string;\n}\n\nexport interface GoogleVertexAuthOptions {\n credentials?: GoogleServiceAccountCredentials;\n scopes?: string | string[];\n projectId?: string;\n universeDomain?: string;\n}\n\nexport type GoogleVertexProviderSettings = Pick<\n GoogleVertexProviderSettingsBase,\n \"project\" | \"location\" | \"headers\" | \"baseURL\"\n> & {\n googleAuthOptions?: GoogleVertexAuthOptions;\n};\n\nexport type AnthropicJsonSchemaObject = {\n definitions?: {\n MySchema?: {\n properties?: Record<string, unknown>;\n required?: string[];\n };\n };\n properties?: Record<string, unknown>;\n required?: string[];\n} & Record<string, unknown>;\n\nexport interface LLMTool {\n type: \"function\";\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}\n\nexport type AISDKProvider = (modelName: string) => LanguageModelV2;\n// Represents a function that takes options (like apiKey) and returns an AISDKProvider\nexport type AISDKCustomProvider = (options: ClientOptions) => AISDKProvider;\n\nexport type AvailableModel =\n | \"gpt-4.1\"\n | \"gpt-4.1-mini\"\n | \"gpt-4.1-nano\"\n | \"o4-mini\"\n | \"o3\"\n | \"o3-mini\"\n | \"o1\"\n | \"o1-mini\"\n | \"gpt-4o\"\n | \"gpt-4o-mini\"\n | \"gpt-4o-2024-08-06\"\n | \"gpt-4.5-preview\"\n | \"o1-preview\"\n | \"cerebras-llama-3.3-70b\"\n | \"cerebras-llama-3.1-8b\"\n | \"groq-llama-3.3-70b-versatile\"\n | \"groq-llama-3.3-70b-specdec\"\n | \"gemini-1.5-flash\"\n | \"gemini-1.5-pro\"\n | \"gemini-1.5-flash-8b\"\n | \"gemini-2.0-flash-lite\"\n | \"gemini-2.0-flash\"\n | \"gemini-2.5-flash-preview-04-17\"\n | \"gemini-2.5-pro-preview-03-25\"\n | string;\n\nexport type ModelProvider =\n | \"openai\"\n | \"anthropic\"\n | \"cerebras\"\n | \"groq\"\n | \"google\"\n | \"aisdk\";\n\n/**\n * Effort levels for Claude adaptive thinking.\n * Used with Claude 4.6+ models (claude-opus-4-6, claude-sonnet-4-6).\n * - \"none\": Disable adaptive thinking entirely\n * - \"low\": Claude minimizes thinking, skips for simple tasks\n * - \"medium\": Claude uses moderate thinking, may skip for simple queries (default)\n * - \"high\": Claude always thinks with deep reasoning\n * - \"max\": Claude always thinks with no constraints (Opus 4.6 only)\n */\nexport type ThinkingEffort = \"none\" | \"low\" | \"medium\" | \"high\" | \"max\";\n\nexport type ClientOptions = (\n | OpenAIClientOptions\n | AnthropicClientOptions\n | GoogleVertexProviderSettings\n) & {\n apiKey?: string;\n provider?: AgentProviderType;\n baseURL?: string;\n /** OpenAI organization ID */\n organization?: string;\n /** Delay between agent actions in ms */\n waitBetweenActions?: number;\n /**\n * @deprecated For Claude 4.6+ models, use `thinkingEffort` instead.\n * Anthropic thinking budget for extended thinking (used with older Claude models like 4.5).\n * Sets `thinking.type: \"enabled\"` with the specified `budget_tokens`.\n */\n thinkingBudget?: number;\n /**\n * Effort level for Claude adaptive thinking (Claude 4.6+ models only).\n * Uses `thinking.type: \"adaptive\"` with `output_config.effort`.\n * This is the recommended approach for Claude Opus 4.6 and Sonnet 4.6.\n * @see https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n */\n thinkingEffort?: ThinkingEffort;\n /** Environment type for CUA agents (browser, mac, windows, ubuntu) */\n environment?: string;\n /** Max images for Microsoft FARA agent */\n maxImages?: number;\n /** Temperature for model inference */\n temperature?: number;\n /** Custom headers sent with every request to the provider */\n headers?: Record<string, string>;\n /** Reasoning effort for reasoning-capable models (e.g., \"none\", \"low\", \"medium\", \"high\") */\n reasoningEffort?: string;\n};\n\nexport type ModelConfiguration =\n | AvailableModel\n | (ClientOptions & {\n modelName: AvailableModel;\n /**\n * Optional AI SDK middleware applied to every LanguageModelV2 created for this model.\n * Use this to intercept LLM calls for usage tracking, logging, request transforms, etc.\n *\n * Only effective when running locally (direct mode). Cannot be serialized over HTTP,\n */\n middleware?: LanguageModelV2Middleware;\n });\n"]}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/model.ts"],"names":[],"mappings":"","sourcesContent":["import type { ClientOptions as AnthropicClientOptionsBase } from \"@anthropic-ai/sdk\";\nimport type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n} from \"@ai-sdk/provider\";\nimport type { ClientOptions as OpenAIClientOptionsBase } from \"openai\";\nimport type { AgentProviderType } from \"./agent.js\";\n\nexport type OpenAIClientOptions = Pick<\n OpenAIClientOptionsBase,\n \"baseURL\" | \"apiKey\"\n>;\n\nexport type AnthropicClientOptions = Pick<\n AnthropicClientOptionsBase,\n \"baseURL\" | \"apiKey\"\n>;\n\nexport interface GoogleServiceAccountCredentials {\n type?: \"service_account\";\n project_id?: string;\n private_key_id?: string;\n private_key: string;\n client_email: string;\n client_id?: string;\n auth_uri?: string;\n token_uri?: string;\n auth_provider_x509_cert_url?: string;\n client_x509_cert_url?: string;\n universe_domain?: string;\n}\n\nexport interface GoogleServiceAccountAuth {\n type: \"googleServiceAccount\";\n credentials: GoogleServiceAccountCredentials;\n scopes?: string | string[];\n projectId?: string;\n universeDomain?: string;\n}\n\nexport interface AzureEntraIdAuth {\n type: \"azureEntraId\";\n token: string;\n}\n\nexport type ModelAuth = GoogleServiceAccountAuth | AzureEntraIdAuth;\n\nexport interface VertexProviderOptions {\n project: string;\n location: string;\n baseURL?: string;\n headers?: Record<string, string>;\n}\n\nexport interface AzureProviderOptions {\n resourceName?: string;\n baseURL?: string;\n apiVersion?: string;\n useDeploymentBasedUrls?: boolean;\n headers?: Record<string, string>;\n}\n\nexport type ModelProviderOptions =\n | { vertex: VertexProviderOptions; azure?: never }\n | { azure: AzureProviderOptions; vertex?: never };\n\nexport type AnthropicJsonSchemaObject = {\n definitions?: {\n MySchema?: {\n properties?: Record<string, unknown>;\n required?: string[];\n };\n };\n properties?: Record<string, unknown>;\n required?: string[];\n} & Record<string, unknown>;\n\nexport interface LLMTool {\n type: \"function\";\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}\n\nexport type AISDKProvider = (modelName: string) => LanguageModelV2;\n// Represents a function that takes options (like apiKey) and returns an AISDKProvider\nexport type AISDKCustomProvider = (options: ClientOptions) => AISDKProvider;\n\nexport type AvailableModel =\n | \"gpt-4.1\"\n | \"gpt-4.1-mini\"\n | \"gpt-4.1-nano\"\n | \"o4-mini\"\n | \"o3\"\n | \"o3-mini\"\n | \"o1\"\n | \"o1-mini\"\n | \"gpt-4o\"\n | \"gpt-4o-mini\"\n | \"gpt-4o-2024-08-06\"\n | \"gpt-4.5-preview\"\n | \"o1-preview\"\n | \"cerebras-llama-3.3-70b\"\n | \"cerebras-llama-3.1-8b\"\n | \"groq-llama-3.3-70b-versatile\"\n | \"groq-llama-3.3-70b-specdec\"\n | \"gemini-1.5-flash\"\n | \"gemini-1.5-pro\"\n | \"gemini-1.5-flash-8b\"\n | \"gemini-2.0-flash-lite\"\n | \"gemini-2.0-flash\"\n | \"gemini-2.5-flash-preview-04-17\"\n | \"gemini-2.5-pro-preview-03-25\"\n | string;\n\nexport type ModelProvider =\n | \"openai\"\n | \"anthropic\"\n | \"cerebras\"\n | \"groq\"\n | \"google\"\n | \"aisdk\";\n\n/**\n * Effort levels for Claude adaptive thinking.\n * Used with Claude 4.6+ models (claude-opus-4-6, claude-sonnet-4-6).\n * - \"none\": Disable adaptive thinking entirely\n * - \"low\": Claude minimizes thinking, skips for simple tasks\n * - \"medium\": Claude uses moderate thinking, may skip for simple queries (default)\n * - \"high\": Claude always thinks with deep reasoning\n * - \"max\": Claude always thinks with no constraints (Opus 4.6 only)\n */\nexport type ThinkingEffort = \"none\" | \"low\" | \"medium\" | \"high\" | \"max\";\n\nexport type ClientOptions = (OpenAIClientOptions | AnthropicClientOptions) & {\n apiKey?: string;\n provider?: AgentProviderType;\n auth?: ModelAuth;\n providerOptions?: ModelProviderOptions;\n baseURL?: string;\n /** OpenAI organization ID */\n organization?: string;\n /** Delay between agent actions in ms */\n waitBetweenActions?: number;\n /**\n * @deprecated For Claude 4.6+ models, use `thinkingEffort` instead.\n * Anthropic thinking budget for extended thinking (used with older Claude models like 4.5).\n * Sets `thinking.type: \"enabled\"` with the specified `budget_tokens`.\n */\n thinkingBudget?: number;\n /**\n * Effort level for Claude adaptive thinking (Claude 4.6+ models only).\n * Uses `thinking.type: \"adaptive\"` with `output_config.effort`.\n * This is the recommended approach for Claude Opus 4.6 and Sonnet 4.6.\n * @see https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking\n */\n thinkingEffort?: ThinkingEffort;\n /** Environment type for CUA agents (browser, mac, windows, ubuntu) */\n environment?: string;\n /** Max images for Microsoft FARA agent */\n maxImages?: number;\n /** Temperature for model inference */\n temperature?: number;\n /** Custom headers sent with every request to the provider */\n headers?: Record<string, string>;\n /** Reasoning effort for reasoning-capable models (e.g., \"none\", \"low\", \"medium\", \"high\") */\n reasoningEffort?: string;\n};\n\nexport type ModelConfiguration =\n | AvailableModel\n | (ClientOptions & {\n modelName: AvailableModel;\n /**\n * Optional AI SDK middleware applied to every LanguageModelV2 created for this model.\n * Use this to intercept LLM calls for usage tracking, logging, request transforms, etc.\n *\n * Only effective when running locally (direct mode). Cannot be serialized over HTTP,\n */\n middleware?: LanguageModelV2Middleware;\n });\n"]}
@@ -16,3 +16,32 @@ export type SnapshotResult = {
16
16
  export type PageSnapshotOptions = {
17
17
  includeIframes?: boolean;
18
18
  };
19
+ export type WebMCPTool = {
20
+ name: string;
21
+ description?: string;
22
+ inputSchema?: string | Record<string, unknown>;
23
+ annotations?: Record<string, unknown>;
24
+ frameId: string;
25
+ };
26
+ export type WebMCPToolInvocationStatus = "Completed" | "Canceled" | "Error";
27
+ export type WebMCPToolResult = {
28
+ invocationId: string;
29
+ status: WebMCPToolInvocationStatus;
30
+ output?: unknown;
31
+ errorText?: string;
32
+ exception?: unknown;
33
+ };
34
+ export type WebMCPToolInvocation = {
35
+ invocationId: string;
36
+ toolName: string;
37
+ frameId: string;
38
+ result: Promise<WebMCPToolResult>;
39
+ cancel: () => Promise<void>;
40
+ };
41
+ export type WebMCPListToolsOptions = {
42
+ timeoutMs?: number;
43
+ };
44
+ export type WebMCPToolInvocationOptions = {
45
+ frameId?: string;
46
+ timeoutMs?: number;
47
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/page.ts"],"names":[],"mappings":";;;AAQA,wEAAoE;AAA3D,mHAAA,cAAc,OAAA;AAIvB,4DAAwD;AAA/C,uGAAA,QAAQ,OAAA","sourcesContent":["import { Page } from \"../../understudy/page.js\";\nimport { Page as PlaywrightPage } from \"playwright-core\";\nimport { Page as PatchrightPage } from \"patchright-core\";\nimport { Page as PuppeteerPage } from \"puppeteer-core\";\n\nexport type { PlaywrightPage, PatchrightPage, PuppeteerPage, Page };\nexport type AnyPage = PlaywrightPage | PuppeteerPage | PatchrightPage | Page;\n\nexport { ConsoleMessage } from \"../../understudy/consoleMessage.js\";\nexport type { ConsoleListener } from \"../../understudy/consoleMessage.js\";\n\nexport type LoadState = \"load\" | \"domcontentloaded\" | \"networkidle\";\nexport { Response } from \"../../understudy/response.js\";\n\nexport type SnapshotResult = {\n formattedTree: string;\n xpathMap: Record<string, string>;\n urlMap: Record<string, string>;\n};\n\nexport type PageSnapshotOptions = {\n includeIframes?: boolean;\n};\n"]}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/page.ts"],"names":[],"mappings":";;;AAQA,wEAAoE;AAA3D,mHAAA,cAAc,OAAA;AAIvB,4DAAwD;AAA/C,uGAAA,QAAQ,OAAA","sourcesContent":["import { Page } from \"../../understudy/page.js\";\nimport { Page as PlaywrightPage } from \"playwright-core\";\nimport { Page as PatchrightPage } from \"patchright-core\";\nimport { Page as PuppeteerPage } from \"puppeteer-core\";\n\nexport type { PlaywrightPage, PatchrightPage, PuppeteerPage, Page };\nexport type AnyPage = PlaywrightPage | PuppeteerPage | PatchrightPage | Page;\n\nexport { ConsoleMessage } from \"../../understudy/consoleMessage.js\";\nexport type { ConsoleListener } from \"../../understudy/consoleMessage.js\";\n\nexport type LoadState = \"load\" | \"domcontentloaded\" | \"networkidle\";\nexport { Response } from \"../../understudy/response.js\";\n\nexport type SnapshotResult = {\n formattedTree: string;\n xpathMap: Record<string, string>;\n urlMap: Record<string, string>;\n};\n\nexport type PageSnapshotOptions = {\n includeIframes?: boolean;\n};\n\nexport type WebMCPTool = {\n name: string;\n description?: string;\n inputSchema?: string | Record<string, unknown>;\n annotations?: Record<string, unknown>;\n frameId: string;\n};\n\nexport type WebMCPToolInvocationStatus = \"Completed\" | \"Canceled\" | \"Error\";\n\nexport type WebMCPToolResult = {\n invocationId: string;\n status: WebMCPToolInvocationStatus;\n output?: unknown;\n errorText?: string;\n exception?: unknown;\n};\n\nexport type WebMCPToolInvocation = {\n invocationId: string;\n toolName: string;\n frameId: string;\n result: Promise<WebMCPToolResult>;\n cancel: () => Promise<void>;\n};\n\nexport type WebMCPListToolsOptions = {\n timeoutMs?: number;\n};\n\nexport type WebMCPToolInvocationOptions = {\n frameId?: string;\n timeoutMs?: number;\n};\n"]}
@@ -21,6 +21,9 @@ export declare class UnsupportedModelProviderError extends StagehandError {
21
21
  export declare class UnsupportedAISDKModelProviderError extends StagehandError {
22
22
  constructor(provider: string, supportedProviders: string[]);
23
23
  }
24
+ export declare class StagehandUnsupportedBrowserFeatureError extends StagehandError {
25
+ constructor(feature: string, message: string, cause?: unknown);
26
+ }
24
27
  export declare class InvalidAISDKModelFormatError extends StagehandError {
25
28
  constructor(modelName: string);
26
29
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CdpConnectionClosedError = exports.StagehandClosedError = exports.AgentAbortError = exports.StreamingCallbacksInNonStreamingModeError = exports.ConnectionTimeoutError = exports.PageNotFoundError = exports.ObserveTimeoutError = exports.ExtractTimeoutError = exports.ActTimeoutError = exports.TimeoutError = exports.ResponseParseError = exports.ResponseBodyError = exports.ElementNotVisibleError = exports.StagehandShadowSegmentNotFoundError = exports.StagehandShadowSegmentEmptyError = exports.StagehandShadowRootMissingError = exports.MCPConnectionError = exports.StagehandInitError = exports.ZodSchemaValidationError = exports.CuaModelRequiredError = exports.ExperimentalNotConfiguredError = exports.ExperimentalApiConflictError = exports.XPathResolutionError = exports.ContentFrameNotFoundError = exports.StagehandIframeError = exports.LLMResponseError = exports.StagehandClickError = exports.StagehandLocatorError = exports.StagehandDomProcessError = exports.StagehandEvalError = exports.CreateChatCompletionResponseError = exports.StagehandMissingArgumentError = exports.AgentScreenshotProviderError = exports.StagehandElementNotFoundError = exports.CookieSetError = exports.CookieValidationError = exports.StagehandInvalidArgumentError = exports.HandlerNotInitializedError = exports.MissingLLMConfigurationError = exports.CaptchaTimeoutError = exports.BrowserbaseSessionNotFoundError = exports.StagehandNotInitializedError = exports.InvalidAISDKModelFormatError = exports.UnsupportedAISDKModelProviderError = exports.UnsupportedModelProviderError = exports.UnsupportedModelError = exports.MissingEnvironmentVariableError = exports.StagehandEnvironmentError = exports.StagehandDefaultError = exports.StagehandError = void 0;
4
- exports.UnderstudyCommandException = exports.StagehandSnapshotError = exports.StagehandSetExtraHTTPHeadersError = void 0;
3
+ exports.StagehandClosedError = exports.AgentAbortError = exports.StreamingCallbacksInNonStreamingModeError = exports.ConnectionTimeoutError = exports.PageNotFoundError = exports.ObserveTimeoutError = exports.ExtractTimeoutError = exports.ActTimeoutError = exports.TimeoutError = exports.ResponseParseError = exports.ResponseBodyError = exports.ElementNotVisibleError = exports.StagehandShadowSegmentNotFoundError = exports.StagehandShadowSegmentEmptyError = exports.StagehandShadowRootMissingError = exports.MCPConnectionError = exports.StagehandInitError = exports.ZodSchemaValidationError = exports.CuaModelRequiredError = exports.ExperimentalNotConfiguredError = exports.ExperimentalApiConflictError = exports.XPathResolutionError = exports.ContentFrameNotFoundError = exports.StagehandIframeError = exports.LLMResponseError = exports.StagehandClickError = exports.StagehandLocatorError = exports.StagehandDomProcessError = exports.StagehandEvalError = exports.CreateChatCompletionResponseError = exports.StagehandMissingArgumentError = exports.AgentScreenshotProviderError = exports.StagehandElementNotFoundError = exports.CookieSetError = exports.CookieValidationError = exports.StagehandInvalidArgumentError = exports.HandlerNotInitializedError = exports.MissingLLMConfigurationError = exports.CaptchaTimeoutError = exports.BrowserbaseSessionNotFoundError = exports.StagehandNotInitializedError = exports.InvalidAISDKModelFormatError = exports.StagehandUnsupportedBrowserFeatureError = exports.UnsupportedAISDKModelProviderError = exports.UnsupportedModelProviderError = exports.UnsupportedModelError = exports.MissingEnvironmentVariableError = exports.StagehandEnvironmentError = exports.StagehandDefaultError = exports.StagehandError = void 0;
4
+ exports.UnderstudyCommandException = exports.StagehandSnapshotError = exports.StagehandSetExtraHTTPHeadersError = exports.CdpConnectionClosedError = void 0;
5
5
  // Avoid .js extension so bundlers resolve TS source
6
6
  const version_js_1 = require("../../../version.js");
7
7
  class StagehandError extends Error {
@@ -62,6 +62,12 @@ class UnsupportedAISDKModelProviderError extends StagehandError {
62
62
  }
63
63
  }
64
64
  exports.UnsupportedAISDKModelProviderError = UnsupportedAISDKModelProviderError;
65
+ class StagehandUnsupportedBrowserFeatureError extends StagehandError {
66
+ constructor(feature, message, cause) {
67
+ super(`Unsupported browser feature "${feature}": ${message}`, cause);
68
+ }
69
+ }
70
+ exports.StagehandUnsupportedBrowserFeatureError = StagehandUnsupportedBrowserFeatureError;
65
71
  class InvalidAISDKModelFormatError extends StagehandError {
66
72
  constructor(modelName) {
67
73
  super(`${modelName} does not follow correct format for specifying aiSDK models. Please define your model as 'provider/model-name'. For example: \`model: 'openai/gpt-4o-mini'\``);
@@ -1 +1 @@
1
- {"version":3,"file":"sdkErrors.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/sdkErrors.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodError } from \"zod\";\n// Avoid .js extension so bundlers resolve TS source\nimport { STAGEHAND_VERSION } from \"../../../version.js\";\n\nexport class StagehandError extends Error {\n public readonly cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = this.constructor.name;\n if (cause !== undefined) {\n this.cause = cause;\n }\n }\n}\n\nexport class StagehandDefaultError extends StagehandError {\n constructor(error?: unknown) {\n if (error instanceof Error || error instanceof StagehandError) {\n super(\n `\\nHey! We're sorry you ran into an error. \\nStagehand version: ${STAGEHAND_VERSION} \\nIf you need help, please open a Github issue or reach out to us on Discord: https://stagehand.dev/discord\\n\\nFull error:\\n${error.message}`,\n );\n }\n }\n}\n\nexport class StagehandEnvironmentError extends StagehandError {\n constructor(\n currentEnvironment: string,\n requiredEnvironment: string,\n feature: string,\n ) {\n super(\n `You seem to be setting the current environment to ${currentEnvironment}.` +\n `Ensure the environment is set to ${requiredEnvironment} if you want to use ${feature}.`,\n );\n }\n}\n\nexport class MissingEnvironmentVariableError extends StagehandError {\n constructor(missingEnvironmentVariable: string, feature: string) {\n super(\n `${missingEnvironmentVariable} is required to use ${feature}.` +\n `Please set ${missingEnvironmentVariable} in your environment.`,\n );\n }\n}\n\nexport class UnsupportedModelError extends StagehandError {\n constructor(supportedModels: string[], feature?: string) {\n const message = feature\n ? `${feature} requires a valid model.`\n : `Unsupported model.`;\n\n const guidance =\n `\\n\\nPlease use the provider/model format (e.g., \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-5\", \"google/gemini-3-flash-preview\").` +\n `\\n\\nFor a complete list of supported models and providers, see: https://docs.stagehand.dev/v3/configuration/models#configuration-setup`;\n\n super(`${message}${guidance}`);\n }\n}\n\nexport class UnsupportedModelProviderError extends StagehandError {\n constructor(supportedProviders: string[], feature?: string) {\n super(\n feature\n ? `${feature} requires one of the following model providers: ${supportedProviders}`\n : `please use one of the supported model providers: ${supportedProviders}`,\n );\n }\n}\n\nexport class UnsupportedAISDKModelProviderError extends StagehandError {\n constructor(provider: string, supportedProviders: string[]) {\n super(\n `${provider} is not currently supported for aiSDK. please use one of the supported model providers: ${supportedProviders}`,\n );\n }\n}\n\nexport class InvalidAISDKModelFormatError extends StagehandError {\n constructor(modelName: string) {\n super(\n `${modelName} does not follow correct format for specifying aiSDK models. Please define your model as 'provider/model-name'. For example: \\`model: 'openai/gpt-4o-mini'\\``,\n );\n }\n}\n\nexport class StagehandNotInitializedError extends StagehandError {\n constructor(prop: string) {\n super(\n `You seem to be calling \\`${prop}\\` on a page in an uninitialized \\`Stagehand\\` object. ` +\n `Ensure you are running \\`await stagehand.init()\\` on the Stagehand object before ` +\n `referencing the \\`page\\` object.`,\n );\n }\n}\n\nexport class BrowserbaseSessionNotFoundError extends StagehandError {\n constructor() {\n super(\"No Browserbase session ID found\");\n }\n}\n\nexport class CaptchaTimeoutError extends StagehandError {\n constructor() {\n super(\"Captcha timeout\");\n }\n}\n\nexport class MissingLLMConfigurationError extends StagehandError {\n constructor() {\n super(\n \"No LLM API key or LLM Client configured. An LLM API key or a custom LLM Client \" +\n \"is required to use act, extract, or observe.\",\n );\n }\n}\n\nexport class HandlerNotInitializedError extends StagehandError {\n constructor(handlerType: string) {\n super(`${handlerType} handler not initialized`);\n }\n}\n\nexport class StagehandInvalidArgumentError extends StagehandError {\n constructor(message: string) {\n super(`InvalidArgumentError: ${message}`);\n }\n}\n\nexport class CookieValidationError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class CookieSetError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class StagehandElementNotFoundError extends StagehandError {\n constructor(xpaths: string[]) {\n super(`Could not find an element for the given xPath(s): ${xpaths}`);\n }\n}\n\nexport class AgentScreenshotProviderError extends StagehandError {\n constructor(message: string) {\n super(`ScreenshotProviderError: ${message}`);\n }\n}\n\nexport class StagehandMissingArgumentError extends StagehandError {\n constructor(message: string) {\n super(`MissingArgumentError: ${message}`);\n }\n}\n\nexport class CreateChatCompletionResponseError extends StagehandError {\n constructor(message: string) {\n super(`CreateChatCompletionResponseError: ${message}`);\n }\n}\n\nexport class StagehandEvalError extends StagehandError {\n constructor(message: string) {\n super(`StagehandEvalError: ${message}`);\n }\n}\n\nexport class StagehandDomProcessError extends StagehandError {\n constructor(message: string) {\n super(`Error Processing Dom: ${message}`);\n }\n}\n\nexport class StagehandLocatorError extends StagehandError {\n constructor(action: string, selector: string, message: string) {\n super(\n `Error ${action} Element with selector: ${selector} Reason: ${message}`,\n );\n }\n}\n\nexport class StagehandClickError extends StagehandError {\n constructor(message: string, selector: string) {\n super(\n `Error Clicking Element with selector: ${selector} Reason: ${message}`,\n );\n }\n}\n\nexport class LLMResponseError extends StagehandError {\n constructor(primitive: string, message: string) {\n super(`${primitive} LLM response error: ${message}`);\n }\n}\n\nexport class StagehandIframeError extends StagehandError {\n constructor(frameUrl: string, message: string) {\n super(\n `Unable to resolve frameId for iframe with URL: ${frameUrl} Full error: ${message}`,\n );\n }\n}\n\nexport class ContentFrameNotFoundError extends StagehandError {\n constructor(selector: string) {\n super(`Unable to obtain a content frame for selector: ${selector}`);\n }\n}\n\nexport class XPathResolutionError extends StagehandError {\n constructor(xpath: string) {\n super(`XPath \"${xpath}\" does not resolve in the current page or frames`);\n }\n}\n\nexport class ExperimentalApiConflictError extends StagehandError {\n constructor() {\n super(\n \"`experimental` mode cannot be used together with the Stagehand API. \" +\n \"To use experimental features, set experimental: true and disableAPI: true in the stagehand constructor. \" +\n \"To use the Stagehand API, set experimental: false and disableAPI: false (or omit it) in the stagehand constructor.\",\n );\n }\n}\n\nexport class ExperimentalNotConfiguredError extends StagehandError {\n constructor(featureName: string) {\n super(`Feature \"${featureName}\" is an experimental feature, and cannot be configured when disableAPI: false.\n Please set experimental: true and disableAPI: true in the stagehand constructor to use this feature.\n If you wish to use the Stagehand API, please ensure ${featureName} is not defined in your function call,\n and set experimental: false, disableAPI: false (or omit it) in the Stagehand constructor.`);\n }\n}\n\nexport class CuaModelRequiredError extends StagehandError {\n constructor(availableModels: readonly string[]) {\n super(\n `To use the computer use agent (CUA), please provide a CUA model in the agent constructor or stagehand config. ` +\n `Try one of our supported CUA models: ${availableModels.join(\", \")}`,\n );\n }\n}\n\nexport class ZodSchemaValidationError extends Error {\n constructor(\n public readonly received: unknown,\n public readonly issues: ReturnType<ZodError[\"format\"]>,\n ) {\n super(`Zod schema validation failed\n\n— Received —\n${JSON.stringify(received, null, 2)}\n\n— Issues —\n${JSON.stringify(issues, null, 2)}`);\n this.name = \"ZodSchemaValidationError\";\n }\n}\n\nexport class StagehandInitError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class MCPConnectionError extends StagehandError {\n public readonly serverUrl: string;\n public readonly originalError: unknown;\n\n constructor(serverUrl: string, originalError: unknown) {\n const errorMessage =\n originalError instanceof Error\n ? originalError.message\n : String(originalError);\n\n super(\n `Failed to connect to MCP server at \"${serverUrl}\". ${errorMessage}. ` +\n `Please verify the server URL is correct and the server is running.`,\n );\n\n this.serverUrl = serverUrl;\n this.originalError = originalError;\n }\n}\n\nexport class StagehandShadowRootMissingError extends StagehandError {\n constructor(detail?: string) {\n super(\n `No shadow root present on the resolved host` +\n (detail ? `: ${detail}` : \"\"),\n );\n }\n}\n\nexport class StagehandShadowSegmentEmptyError extends StagehandError {\n constructor() {\n super(`Empty selector segment after shadow-DOM hop (\"//\")`);\n }\n}\n\nexport class StagehandShadowSegmentNotFoundError extends StagehandError {\n constructor(segment: string, hint?: string) {\n super(\n `Shadow segment '${segment}' matched no element inside shadow root` +\n (hint ? ` ${hint}` : \"\"),\n );\n }\n}\n\nexport class ElementNotVisibleError extends StagehandError {\n constructor(selector: string) {\n super(`Element not visible (no box model): ${selector}`);\n }\n}\n\nexport class ResponseBodyError extends StagehandError {\n constructor(message: string) {\n super(`Failed to retrieve response body: ${message}`);\n }\n}\n\nexport class ResponseParseError extends StagehandError {\n constructor(message: string) {\n super(`Failed to parse response: ${message}`);\n }\n}\n\nexport class TimeoutError extends StagehandError {\n constructor(operation: string, timeoutMs: number) {\n super(`${operation} timed out after ${timeoutMs}ms`);\n }\n}\n\nexport class ActTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"act()\", timeoutMs);\n this.name = \"ActTimeoutError\";\n }\n}\n\nexport class ExtractTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"extract()\", timeoutMs);\n this.name = \"ExtractTimeoutError\";\n }\n}\n\nexport class ObserveTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"observe()\", timeoutMs);\n this.name = \"ObserveTimeoutError\";\n }\n}\n\nexport class PageNotFoundError extends StagehandError {\n constructor(identifier: string) {\n super(`No Page found for ${identifier}`);\n }\n}\n\nexport class ConnectionTimeoutError extends StagehandError {\n constructor(message: string) {\n super(`Connection timeout: ${message}`);\n }\n}\n\nexport class StreamingCallbacksInNonStreamingModeError extends StagehandError {\n public readonly invalidCallbacks: string[];\n\n constructor(invalidCallbacks: string[]) {\n super(\n `Streaming-only callback(s) \"${invalidCallbacks.join('\", \"')}\" cannot be used in non-streaming mode. ` +\n `Set 'stream: true' in AgentConfig to use these callbacks.`,\n );\n this.invalidCallbacks = invalidCallbacks;\n }\n}\n\nexport class AgentAbortError extends StagehandError {\n public readonly reason: string;\n\n constructor(reason?: string) {\n const message = reason\n ? `Agent execution was aborted: ${reason}`\n : \"Agent execution was aborted\";\n super(message);\n this.reason = reason || \"aborted\";\n }\n}\n\nexport class StagehandClosedError extends StagehandError {\n constructor() {\n super(\"Stagehand session was closed\");\n }\n}\n\nexport class CdpConnectionClosedError extends StagehandError {\n constructor(reason: string) {\n super(`CDP connection closed: ${reason}`);\n }\n}\n\nexport class StagehandSetExtraHTTPHeadersError extends StagehandError {\n public readonly failures: string[];\n\n constructor(failures: string[]) {\n super(\n `setExtraHTTPHeaders failed for ${failures.length} session(s): ${failures.join(\", \")}`,\n );\n this.failures = failures;\n }\n}\n\nexport class StagehandSnapshotError extends StagehandError {\n constructor(cause?: unknown) {\n const suffix =\n cause instanceof Error\n ? `: ${cause.message}`\n : cause\n ? `: ${String(cause)}`\n : \"\";\n super(`error taking snapshot${suffix}`, cause);\n }\n}\n\nexport class UnderstudyCommandException extends StagehandError {\n constructor(message: string, cause?: unknown) {\n super(message, cause);\n this.name = \"UnderstudyCommandException\";\n }\n}\n"]}
1
+ {"version":3,"file":"sdkErrors.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/sdkErrors.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZodError } from \"zod\";\n// Avoid .js extension so bundlers resolve TS source\nimport { STAGEHAND_VERSION } from \"../../../version.js\";\n\nexport class StagehandError extends Error {\n public readonly cause?: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = this.constructor.name;\n if (cause !== undefined) {\n this.cause = cause;\n }\n }\n}\n\nexport class StagehandDefaultError extends StagehandError {\n constructor(error?: unknown) {\n if (error instanceof Error || error instanceof StagehandError) {\n super(\n `\\nHey! We're sorry you ran into an error. \\nStagehand version: ${STAGEHAND_VERSION} \\nIf you need help, please open a Github issue or reach out to us on Discord: https://stagehand.dev/discord\\n\\nFull error:\\n${error.message}`,\n );\n }\n }\n}\n\nexport class StagehandEnvironmentError extends StagehandError {\n constructor(\n currentEnvironment: string,\n requiredEnvironment: string,\n feature: string,\n ) {\n super(\n `You seem to be setting the current environment to ${currentEnvironment}.` +\n `Ensure the environment is set to ${requiredEnvironment} if you want to use ${feature}.`,\n );\n }\n}\n\nexport class MissingEnvironmentVariableError extends StagehandError {\n constructor(missingEnvironmentVariable: string, feature: string) {\n super(\n `${missingEnvironmentVariable} is required to use ${feature}.` +\n `Please set ${missingEnvironmentVariable} in your environment.`,\n );\n }\n}\n\nexport class UnsupportedModelError extends StagehandError {\n constructor(supportedModels: string[], feature?: string) {\n const message = feature\n ? `${feature} requires a valid model.`\n : `Unsupported model.`;\n\n const guidance =\n `\\n\\nPlease use the provider/model format (e.g., \"openai/gpt-4o\", \"anthropic/claude-sonnet-4-5\", \"google/gemini-3-flash-preview\").` +\n `\\n\\nFor a complete list of supported models and providers, see: https://docs.stagehand.dev/v3/configuration/models#configuration-setup`;\n\n super(`${message}${guidance}`);\n }\n}\n\nexport class UnsupportedModelProviderError extends StagehandError {\n constructor(supportedProviders: string[], feature?: string) {\n super(\n feature\n ? `${feature} requires one of the following model providers: ${supportedProviders}`\n : `please use one of the supported model providers: ${supportedProviders}`,\n );\n }\n}\n\nexport class UnsupportedAISDKModelProviderError extends StagehandError {\n constructor(provider: string, supportedProviders: string[]) {\n super(\n `${provider} is not currently supported for aiSDK. please use one of the supported model providers: ${supportedProviders}`,\n );\n }\n}\n\nexport class StagehandUnsupportedBrowserFeatureError extends StagehandError {\n constructor(feature: string, message: string, cause?: unknown) {\n super(`Unsupported browser feature \"${feature}\": ${message}`, cause);\n }\n}\n\nexport class InvalidAISDKModelFormatError extends StagehandError {\n constructor(modelName: string) {\n super(\n `${modelName} does not follow correct format for specifying aiSDK models. Please define your model as 'provider/model-name'. For example: \\`model: 'openai/gpt-4o-mini'\\``,\n );\n }\n}\n\nexport class StagehandNotInitializedError extends StagehandError {\n constructor(prop: string) {\n super(\n `You seem to be calling \\`${prop}\\` on a page in an uninitialized \\`Stagehand\\` object. ` +\n `Ensure you are running \\`await stagehand.init()\\` on the Stagehand object before ` +\n `referencing the \\`page\\` object.`,\n );\n }\n}\n\nexport class BrowserbaseSessionNotFoundError extends StagehandError {\n constructor() {\n super(\"No Browserbase session ID found\");\n }\n}\n\nexport class CaptchaTimeoutError extends StagehandError {\n constructor() {\n super(\"Captcha timeout\");\n }\n}\n\nexport class MissingLLMConfigurationError extends StagehandError {\n constructor() {\n super(\n \"No LLM API key or LLM Client configured. An LLM API key or a custom LLM Client \" +\n \"is required to use act, extract, or observe.\",\n );\n }\n}\n\nexport class HandlerNotInitializedError extends StagehandError {\n constructor(handlerType: string) {\n super(`${handlerType} handler not initialized`);\n }\n}\n\nexport class StagehandInvalidArgumentError extends StagehandError {\n constructor(message: string) {\n super(`InvalidArgumentError: ${message}`);\n }\n}\n\nexport class CookieValidationError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class CookieSetError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class StagehandElementNotFoundError extends StagehandError {\n constructor(xpaths: string[]) {\n super(`Could not find an element for the given xPath(s): ${xpaths}`);\n }\n}\n\nexport class AgentScreenshotProviderError extends StagehandError {\n constructor(message: string) {\n super(`ScreenshotProviderError: ${message}`);\n }\n}\n\nexport class StagehandMissingArgumentError extends StagehandError {\n constructor(message: string) {\n super(`MissingArgumentError: ${message}`);\n }\n}\n\nexport class CreateChatCompletionResponseError extends StagehandError {\n constructor(message: string) {\n super(`CreateChatCompletionResponseError: ${message}`);\n }\n}\n\nexport class StagehandEvalError extends StagehandError {\n constructor(message: string) {\n super(`StagehandEvalError: ${message}`);\n }\n}\n\nexport class StagehandDomProcessError extends StagehandError {\n constructor(message: string) {\n super(`Error Processing Dom: ${message}`);\n }\n}\n\nexport class StagehandLocatorError extends StagehandError {\n constructor(action: string, selector: string, message: string) {\n super(\n `Error ${action} Element with selector: ${selector} Reason: ${message}`,\n );\n }\n}\n\nexport class StagehandClickError extends StagehandError {\n constructor(message: string, selector: string) {\n super(\n `Error Clicking Element with selector: ${selector} Reason: ${message}`,\n );\n }\n}\n\nexport class LLMResponseError extends StagehandError {\n constructor(primitive: string, message: string) {\n super(`${primitive} LLM response error: ${message}`);\n }\n}\n\nexport class StagehandIframeError extends StagehandError {\n constructor(frameUrl: string, message: string) {\n super(\n `Unable to resolve frameId for iframe with URL: ${frameUrl} Full error: ${message}`,\n );\n }\n}\n\nexport class ContentFrameNotFoundError extends StagehandError {\n constructor(selector: string) {\n super(`Unable to obtain a content frame for selector: ${selector}`);\n }\n}\n\nexport class XPathResolutionError extends StagehandError {\n constructor(xpath: string) {\n super(`XPath \"${xpath}\" does not resolve in the current page or frames`);\n }\n}\n\nexport class ExperimentalApiConflictError extends StagehandError {\n constructor() {\n super(\n \"`experimental` mode cannot be used together with the Stagehand API. \" +\n \"To use experimental features, set experimental: true and disableAPI: true in the stagehand constructor. \" +\n \"To use the Stagehand API, set experimental: false and disableAPI: false (or omit it) in the stagehand constructor.\",\n );\n }\n}\n\nexport class ExperimentalNotConfiguredError extends StagehandError {\n constructor(featureName: string) {\n super(`Feature \"${featureName}\" is an experimental feature, and cannot be configured when disableAPI: false.\n Please set experimental: true and disableAPI: true in the stagehand constructor to use this feature.\n If you wish to use the Stagehand API, please ensure ${featureName} is not defined in your function call,\n and set experimental: false, disableAPI: false (or omit it) in the Stagehand constructor.`);\n }\n}\n\nexport class CuaModelRequiredError extends StagehandError {\n constructor(availableModels: readonly string[]) {\n super(\n `To use the computer use agent (CUA), please provide a CUA model in the agent constructor or stagehand config. ` +\n `Try one of our supported CUA models: ${availableModels.join(\", \")}`,\n );\n }\n}\n\nexport class ZodSchemaValidationError extends Error {\n constructor(\n public readonly received: unknown,\n public readonly issues: ReturnType<ZodError[\"format\"]>,\n ) {\n super(`Zod schema validation failed\n\n— Received —\n${JSON.stringify(received, null, 2)}\n\n— Issues —\n${JSON.stringify(issues, null, 2)}`);\n this.name = \"ZodSchemaValidationError\";\n }\n}\n\nexport class StagehandInitError extends StagehandError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class MCPConnectionError extends StagehandError {\n public readonly serverUrl: string;\n public readonly originalError: unknown;\n\n constructor(serverUrl: string, originalError: unknown) {\n const errorMessage =\n originalError instanceof Error\n ? originalError.message\n : String(originalError);\n\n super(\n `Failed to connect to MCP server at \"${serverUrl}\". ${errorMessage}. ` +\n `Please verify the server URL is correct and the server is running.`,\n );\n\n this.serverUrl = serverUrl;\n this.originalError = originalError;\n }\n}\n\nexport class StagehandShadowRootMissingError extends StagehandError {\n constructor(detail?: string) {\n super(\n `No shadow root present on the resolved host` +\n (detail ? `: ${detail}` : \"\"),\n );\n }\n}\n\nexport class StagehandShadowSegmentEmptyError extends StagehandError {\n constructor() {\n super(`Empty selector segment after shadow-DOM hop (\"//\")`);\n }\n}\n\nexport class StagehandShadowSegmentNotFoundError extends StagehandError {\n constructor(segment: string, hint?: string) {\n super(\n `Shadow segment '${segment}' matched no element inside shadow root` +\n (hint ? ` ${hint}` : \"\"),\n );\n }\n}\n\nexport class ElementNotVisibleError extends StagehandError {\n constructor(selector: string) {\n super(`Element not visible (no box model): ${selector}`);\n }\n}\n\nexport class ResponseBodyError extends StagehandError {\n constructor(message: string) {\n super(`Failed to retrieve response body: ${message}`);\n }\n}\n\nexport class ResponseParseError extends StagehandError {\n constructor(message: string) {\n super(`Failed to parse response: ${message}`);\n }\n}\n\nexport class TimeoutError extends StagehandError {\n constructor(operation: string, timeoutMs: number) {\n super(`${operation} timed out after ${timeoutMs}ms`);\n }\n}\n\nexport class ActTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"act()\", timeoutMs);\n this.name = \"ActTimeoutError\";\n }\n}\n\nexport class ExtractTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"extract()\", timeoutMs);\n this.name = \"ExtractTimeoutError\";\n }\n}\n\nexport class ObserveTimeoutError extends TimeoutError {\n constructor(timeoutMs: number) {\n super(\"observe()\", timeoutMs);\n this.name = \"ObserveTimeoutError\";\n }\n}\n\nexport class PageNotFoundError extends StagehandError {\n constructor(identifier: string) {\n super(`No Page found for ${identifier}`);\n }\n}\n\nexport class ConnectionTimeoutError extends StagehandError {\n constructor(message: string) {\n super(`Connection timeout: ${message}`);\n }\n}\n\nexport class StreamingCallbacksInNonStreamingModeError extends StagehandError {\n public readonly invalidCallbacks: string[];\n\n constructor(invalidCallbacks: string[]) {\n super(\n `Streaming-only callback(s) \"${invalidCallbacks.join('\", \"')}\" cannot be used in non-streaming mode. ` +\n `Set 'stream: true' in AgentConfig to use these callbacks.`,\n );\n this.invalidCallbacks = invalidCallbacks;\n }\n}\n\nexport class AgentAbortError extends StagehandError {\n public readonly reason: string;\n\n constructor(reason?: string) {\n const message = reason\n ? `Agent execution was aborted: ${reason}`\n : \"Agent execution was aborted\";\n super(message);\n this.reason = reason || \"aborted\";\n }\n}\n\nexport class StagehandClosedError extends StagehandError {\n constructor() {\n super(\"Stagehand session was closed\");\n }\n}\n\nexport class CdpConnectionClosedError extends StagehandError {\n constructor(reason: string) {\n super(`CDP connection closed: ${reason}`);\n }\n}\n\nexport class StagehandSetExtraHTTPHeadersError extends StagehandError {\n public readonly failures: string[];\n\n constructor(failures: string[]) {\n super(\n `setExtraHTTPHeaders failed for ${failures.length} session(s): ${failures.join(\", \")}`,\n );\n this.failures = failures;\n }\n}\n\nexport class StagehandSnapshotError extends StagehandError {\n constructor(cause?: unknown) {\n const suffix =\n cause instanceof Error\n ? `: ${cause.message}`\n : cause\n ? `: ${String(cause)}`\n : \"\";\n super(`error taking snapshot${suffix}`, cause);\n }\n}\n\nexport class UnderstudyCommandException extends StagehandError {\n constructor(message: string, cause?: unknown) {\n super(message, cause);\n this.name = \"UnderstudyCommandException\";\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import type { V3Context } from "./context.js";
2
+ import type { Page } from "./page.js";
3
+ import type { BrowserClipboard, ClipboardOptions, ClipboardPasteOptions } from "../types/public/clipboard.js";
4
+ type ContextClipboardParams = {
5
+ context: V3Context;
6
+ resolvePage: (page?: Page) => Promise<Page>;
7
+ };
8
+ export declare class ContextClipboard implements BrowserClipboard {
9
+ private readonly params;
10
+ constructor(params: ContextClipboardParams);
11
+ writeText(text: string, options?: ClipboardOptions): Promise<void>;
12
+ private writeTextInternal;
13
+ readText(options?: ClipboardOptions): Promise<string>;
14
+ clear(options?: ClipboardOptions): Promise<void>;
15
+ paste(options?: ClipboardPasteOptions): Promise<void>;
16
+ copy(options?: ClipboardOptions): Promise<void>;
17
+ cut(options?: ClipboardOptions): Promise<void>;
18
+ private resolvePage;
19
+ private grantClipboardPermissions;
20
+ private ensurePageFocused;
21
+ private originForPage;
22
+ private throwIfEvaluationFailed;
23
+ }
24
+ export {};
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
9
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
10
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
11
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
12
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
13
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
14
+ var _, done = false;
15
+ for (var i = decorators.length - 1; i >= 0; i--) {
16
+ var context = {};
17
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
18
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
19
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
20
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
21
+ if (kind === "accessor") {
22
+ if (result === void 0) continue;
23
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
24
+ if (_ = accept(result.get)) descriptor.get = _;
25
+ if (_ = accept(result.set)) descriptor.set = _;
26
+ if (_ = accept(result.init)) initializers.unshift(_);
27
+ }
28
+ else if (_ = accept(result)) {
29
+ if (kind === "field") initializers.unshift(_);
30
+ else descriptor[key] = _;
31
+ }
32
+ }
33
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
+ done = true;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ContextClipboard = void 0;
38
+ const sdkErrors_js_1 = require("../types/public/sdkErrors.js");
39
+ const FlowLogger_js_1 = require("../flowlogger/FlowLogger.js");
40
+ let ContextClipboard = (() => {
41
+ let _instanceExtraInitializers = [];
42
+ let _writeText_decorators;
43
+ let _readText_decorators;
44
+ let _clear_decorators;
45
+ let _paste_decorators;
46
+ let _copy_decorators;
47
+ let _cut_decorators;
48
+ return class ContextClipboard {
49
+ static {
50
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
51
+ _writeText_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardWriteText" })];
52
+ _readText_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardReadText" })];
53
+ _clear_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardClear" })];
54
+ _paste_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardPaste" })];
55
+ _copy_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardCopy" })];
56
+ _cut_decorators = [FlowLogger_js_1.FlowLogger.wrapWithLogging({ eventType: "ClipboardCut" })];
57
+ __esDecorate(this, null, _writeText_decorators, { kind: "method", name: "writeText", static: false, private: false, access: { has: obj => "writeText" in obj, get: obj => obj.writeText }, metadata: _metadata }, null, _instanceExtraInitializers);
58
+ __esDecorate(this, null, _readText_decorators, { kind: "method", name: "readText", static: false, private: false, access: { has: obj => "readText" in obj, get: obj => obj.readText }, metadata: _metadata }, null, _instanceExtraInitializers);
59
+ __esDecorate(this, null, _clear_decorators, { kind: "method", name: "clear", static: false, private: false, access: { has: obj => "clear" in obj, get: obj => obj.clear }, metadata: _metadata }, null, _instanceExtraInitializers);
60
+ __esDecorate(this, null, _paste_decorators, { kind: "method", name: "paste", static: false, private: false, access: { has: obj => "paste" in obj, get: obj => obj.paste }, metadata: _metadata }, null, _instanceExtraInitializers);
61
+ __esDecorate(this, null, _copy_decorators, { kind: "method", name: "copy", static: false, private: false, access: { has: obj => "copy" in obj, get: obj => obj.copy }, metadata: _metadata }, null, _instanceExtraInitializers);
62
+ __esDecorate(this, null, _cut_decorators, { kind: "method", name: "cut", static: false, private: false, access: { has: obj => "cut" in obj, get: obj => obj.cut }, metadata: _metadata }, null, _instanceExtraInitializers);
63
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
64
+ }
65
+ params = __runInitializers(this, _instanceExtraInitializers);
66
+ constructor(params) {
67
+ this.params = params;
68
+ }
69
+ async writeText(text, options) {
70
+ await this.writeTextInternal(text, options);
71
+ }
72
+ async writeTextInternal(text, options) {
73
+ const page = await this.resolvePage(options?.page);
74
+ await this.ensurePageFocused(page);
75
+ await this.grantClipboardPermissions(page);
76
+ await page.sendCDP("Runtime.enable").catch(() => { });
77
+ const response = await page.sendCDP("Runtime.evaluate", {
78
+ expression: `navigator.clipboard.writeText(${JSON.stringify(text)})`,
79
+ awaitPromise: true,
80
+ returnByValue: true,
81
+ userGesture: true,
82
+ });
83
+ this.throwIfEvaluationFailed("write clipboard text", response);
84
+ }
85
+ async readText(options) {
86
+ const page = await this.resolvePage(options?.page);
87
+ await this.ensurePageFocused(page);
88
+ await this.grantClipboardPermissions(page);
89
+ await page.sendCDP("Runtime.enable").catch(() => { });
90
+ const response = await page.sendCDP("Runtime.evaluate", {
91
+ expression: "navigator.clipboard.readText()",
92
+ awaitPromise: true,
93
+ returnByValue: true,
94
+ userGesture: true,
95
+ });
96
+ this.throwIfEvaluationFailed("read clipboard text", response);
97
+ return String(response.result?.value ?? "");
98
+ }
99
+ async clear(options) {
100
+ await this.writeTextInternal("", options);
101
+ }
102
+ async paste(options) {
103
+ const page = await this.resolvePage(options?.page);
104
+ await this.ensurePageFocused(page);
105
+ await page.keyPress(options?.shortcut ?? "ControlOrMeta+V");
106
+ }
107
+ async copy(options) {
108
+ const page = await this.resolvePage(options?.page);
109
+ await this.ensurePageFocused(page);
110
+ await page.keyPress("ControlOrMeta+C");
111
+ }
112
+ async cut(options) {
113
+ const page = await this.resolvePage(options?.page);
114
+ await this.ensurePageFocused(page);
115
+ await page.keyPress("ControlOrMeta+X");
116
+ }
117
+ async resolvePage(page) {
118
+ return await this.params.resolvePage(page);
119
+ }
120
+ async grantClipboardPermissions(page) {
121
+ const origin = this.originForPage(page);
122
+ if (!origin)
123
+ return;
124
+ await this.params.context.conn
125
+ .send("Browser.grantPermissions", {
126
+ origin,
127
+ permissions: ["clipboardReadWrite", "clipboardSanitizedWrite"],
128
+ })
129
+ .catch(() => { });
130
+ }
131
+ async ensurePageFocused(page) {
132
+ this.params.context.setActivePage(page);
133
+ await page.sendCDP("Page.bringToFront").catch(() => { });
134
+ await page.sendCDP("Runtime.enable").catch(() => { });
135
+ await page
136
+ .sendCDP("Runtime.evaluate", {
137
+ expression: "window.focus()",
138
+ awaitPromise: true,
139
+ userGesture: true,
140
+ })
141
+ .catch(() => { });
142
+ }
143
+ originForPage(page) {
144
+ try {
145
+ const parsed = new URL(page.url());
146
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
147
+ return undefined;
148
+ }
149
+ return parsed.origin;
150
+ }
151
+ catch {
152
+ return undefined;
153
+ }
154
+ }
155
+ throwIfEvaluationFailed(operation, response) {
156
+ if (!response.exceptionDetails)
157
+ return;
158
+ const message = response.exceptionDetails.exception?.description ??
159
+ response.exceptionDetails.text ??
160
+ "Runtime.evaluate failed";
161
+ throw new sdkErrors_js_1.StagehandEvalError(`Failed to ${operation}: ${message}`);
162
+ }
163
+ };
164
+ })();
165
+ exports.ContextClipboard = ContextClipboard;
166
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../../../lib/v3/understudy/clipboard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Protocol } from \"devtools-protocol\";\nimport type { V3Context } from \"./context.js\";\nimport type { Page } from \"./page.js\";\nimport type {\n BrowserClipboard,\n ClipboardOptions,\n ClipboardPasteOptions,\n} from \"../types/public/clipboard.js\";\nimport { StagehandEvalError } from \"../types/public/sdkErrors.js\";\nimport { FlowLogger } from \"../flowlogger/FlowLogger.js\";\n\ntype ContextClipboardParams = {\n context: V3Context;\n resolvePage: (page?: Page) => Promise<Page>;\n};\n\nexport class ContextClipboard implements BrowserClipboard {\n constructor(private readonly params: ContextClipboardParams) {}\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardWriteText\" })\n async writeText(text: string, options?: ClipboardOptions): Promise<void> {\n await this.writeTextInternal(text, options);\n }\n\n private async writeTextInternal(\n text: string,\n options?: ClipboardOptions,\n ): Promise<void> {\n const page = await this.resolvePage(options?.page);\n await this.ensurePageFocused(page);\n await this.grantClipboardPermissions(page);\n await page.sendCDP(\"Runtime.enable\").catch(() => {});\n const response = await page.sendCDP<Protocol.Runtime.EvaluateResponse>(\n \"Runtime.evaluate\",\n {\n expression: `navigator.clipboard.writeText(${JSON.stringify(text)})`,\n awaitPromise: true,\n returnByValue: true,\n userGesture: true,\n },\n );\n this.throwIfEvaluationFailed(\"write clipboard text\", response);\n }\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardReadText\" })\n async readText(options?: ClipboardOptions): Promise<string> {\n const page = await this.resolvePage(options?.page);\n await this.ensurePageFocused(page);\n await this.grantClipboardPermissions(page);\n await page.sendCDP(\"Runtime.enable\").catch(() => {});\n const response = await page.sendCDP<Protocol.Runtime.EvaluateResponse>(\n \"Runtime.evaluate\",\n {\n expression: \"navigator.clipboard.readText()\",\n awaitPromise: true,\n returnByValue: true,\n userGesture: true,\n },\n );\n this.throwIfEvaluationFailed(\"read clipboard text\", response);\n\n return String(response.result?.value ?? \"\");\n }\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardClear\" })\n async clear(options?: ClipboardOptions): Promise<void> {\n await this.writeTextInternal(\"\", options);\n }\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardPaste\" })\n async paste(options?: ClipboardPasteOptions): Promise<void> {\n const page = await this.resolvePage(options?.page);\n await this.ensurePageFocused(page);\n await page.keyPress(options?.shortcut ?? \"ControlOrMeta+V\");\n }\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardCopy\" })\n async copy(options?: ClipboardOptions): Promise<void> {\n const page = await this.resolvePage(options?.page);\n await this.ensurePageFocused(page);\n await page.keyPress(\"ControlOrMeta+C\");\n }\n\n @FlowLogger.wrapWithLogging({ eventType: \"ClipboardCut\" })\n async cut(options?: ClipboardOptions): Promise<void> {\n const page = await this.resolvePage(options?.page);\n await this.ensurePageFocused(page);\n await page.keyPress(\"ControlOrMeta+X\");\n }\n\n private async resolvePage(page?: Page): Promise<Page> {\n return await this.params.resolvePage(page);\n }\n\n private async grantClipboardPermissions(page: Page): Promise<void> {\n const origin = this.originForPage(page);\n if (!origin) return;\n\n await this.params.context.conn\n .send(\"Browser.grantPermissions\", {\n origin,\n permissions: [\"clipboardReadWrite\", \"clipboardSanitizedWrite\"],\n })\n .catch(() => {});\n }\n\n private async ensurePageFocused(page: Page): Promise<void> {\n this.params.context.setActivePage(page);\n await page.sendCDP(\"Page.bringToFront\").catch(() => {});\n await page.sendCDP(\"Runtime.enable\").catch(() => {});\n await page\n .sendCDP(\"Runtime.evaluate\", {\n expression: \"window.focus()\",\n awaitPromise: true,\n userGesture: true,\n })\n .catch(() => {});\n }\n\n private originForPage(page: Page): string | undefined {\n try {\n const parsed = new URL(page.url());\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return undefined;\n }\n return parsed.origin;\n } catch {\n return undefined;\n }\n }\n\n private throwIfEvaluationFailed(\n operation: string,\n response: Protocol.Runtime.EvaluateResponse,\n ): void {\n if (!response.exceptionDetails) return;\n\n const message =\n response.exceptionDetails.exception?.description ??\n response.exceptionDetails.text ??\n \"Runtime.evaluate failed\";\n throw new StagehandEvalError(`Failed to ${operation}: ${message}`);\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { CdpConnection } from "./cdp.js";
3
3
  import { Page } from "./page.js";
4
4
  import type { StagehandAPIClient } from "../api.js";
5
5
  import { LocalBrowserLaunchOptions } from "../types/public/index.js";
6
+ import type { BrowserClipboard } from "../types/public/clipboard.js";
6
7
  import { InitScriptSource } from "../types/private/index.js";
7
8
  import { Cookie, ClearCookieOptions, CookieParam } from "../types/public/context.js";
8
9
  /**
@@ -37,6 +38,7 @@ export declare class V3Context {
37
38
  private pendingCreatedTargetUrl;
38
39
  private readonly initScripts;
39
40
  private extraHttpHeaders;
41
+ private _clipboard?;
40
42
  private installTargetSessionListeners;
41
43
  /**
42
44
  * Create a Context for a given CDP websocket URL and bootstrap target wiring.
@@ -66,6 +68,7 @@ export declare class V3Context {
66
68
  setActivePage(page: Page): void;
67
69
  addInitScript<Arg>(script: InitScriptSource<Arg>, arg?: Arg): Promise<void>;
68
70
  setExtraHTTPHeaders(headers: Record<string, string>): Promise<void>;
71
+ get clipboard(): BrowserClipboard;
69
72
  /**
70
73
  * Return top-level `Page`s (oldest → newest). OOPIF targets are not included.
71
74
  */
@@ -8,6 +8,7 @@ const piercer_js_1 = require("./piercer.js");
8
8
  const scriptV3Content_js_1 = require("../dom/build/scriptV3Content.js");
9
9
  const executionContextRegistry_js_1 = require("./executionContextRegistry.js");
10
10
  const initScripts_js_1 = require("./initScripts.js");
11
+ const clipboard_js_1 = require("./clipboard.js");
11
12
  const sdkErrors_js_1 = require("../types/public/sdkErrors.js");
12
13
  const timeoutConfig_js_1 = require("../timeoutConfig.js");
13
14
  const cookies_js_1 = require("./cookies.js");
@@ -93,6 +94,7 @@ class V3Context {
93
94
  pendingCreatedTargetUrl = new Map();
94
95
  initScripts = [];
95
96
  extraHttpHeaders = null;
97
+ _clipboard;
96
98
  installTargetSessionListeners(session) {
97
99
  const sessionId = session.id;
98
100
  if (!sessionId)
@@ -330,6 +332,19 @@ class V3Context {
330
332
  throw new sdkErrors_js_1.StagehandSetExtraHTTPHeadersError(failures);
331
333
  }
332
334
  }
335
+ get clipboard() {
336
+ return (this._clipboard ??= new clipboard_js_1.ContextClipboard({
337
+ context: this,
338
+ resolvePage: async (page) => {
339
+ if (page)
340
+ return page;
341
+ const active = this.activePage();
342
+ if (!active)
343
+ throw new sdkErrors_js_1.PageNotFoundError("active page");
344
+ return active;
345
+ },
346
+ }));
347
+ }
333
348
  /**
334
349
  * Return top-level `Page`s (oldest → newest). OOPIF targets are not included.
335
350
  */