stagehand 3.20.0 → 3.21.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/stagehand/internal/transport/base_client.rb +2 -0
- data/lib/stagehand/internal/type/union.rb +11 -0
- data/lib/stagehand/models/model_config.rb +326 -56
- data/lib/stagehand/models/session_act_params.rb +331 -4
- data/lib/stagehand/models/session_execute_params.rb +663 -8
- data/lib/stagehand/models/session_extract_params.rb +344 -5
- data/lib/stagehand/models/session_observe_params.rb +340 -5
- data/lib/stagehand/version.rb +1 -1
- data/rbi/stagehand/models/model_config.rbi +644 -69
- data/rbi/stagehand/models/session_act_params.rbi +707 -5
- data/rbi/stagehand/models/session_execute_params.rbi +1412 -10
- data/rbi/stagehand/models/session_extract_params.rbi +720 -5
- data/rbi/stagehand/models/session_observe_params.rbi +718 -5
- data/sig/stagehand/models/model_config.rbs +310 -42
- data/sig/stagehand/models/session_act_params.rbs +324 -1
- data/sig/stagehand/models/session_execute_params.rbs +648 -2
- data/sig/stagehand/models/session_extract_params.rbs +331 -1
- data/sig/stagehand/models/session_observe_params.rbs +331 -1
- data/sig/stagehand/models.rbs +1 -1
- metadata +2 -2
|
@@ -119,14 +119,39 @@ module Stagehand
|
|
|
119
119
|
attr_writer :ignore_selectors
|
|
120
120
|
|
|
121
121
|
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
122
|
-
sig
|
|
122
|
+
sig do
|
|
123
|
+
returns(
|
|
124
|
+
T.nilable(
|
|
125
|
+
T.any(
|
|
126
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject,
|
|
127
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject,
|
|
128
|
+
String
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
)
|
|
132
|
+
end
|
|
123
133
|
attr_reader :model
|
|
124
134
|
|
|
125
135
|
sig do
|
|
126
|
-
params(
|
|
136
|
+
params(
|
|
137
|
+
model:
|
|
138
|
+
T.any(
|
|
139
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::OrHash,
|
|
140
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::OrHash,
|
|
141
|
+
String
|
|
142
|
+
)
|
|
143
|
+
).void
|
|
127
144
|
end
|
|
128
145
|
attr_writer :model
|
|
129
146
|
|
|
147
|
+
# When true, include a screenshot of the current viewport in the extraction LLM
|
|
148
|
+
# call. Defaults to false.
|
|
149
|
+
sig { returns(T.nilable(T::Boolean)) }
|
|
150
|
+
attr_reader :screenshot
|
|
151
|
+
|
|
152
|
+
sig { params(screenshot: T::Boolean).void }
|
|
153
|
+
attr_writer :screenshot
|
|
154
|
+
|
|
130
155
|
# CSS selector to scope extraction to a specific element
|
|
131
156
|
sig { returns(T.nilable(String)) }
|
|
132
157
|
attr_reader :selector
|
|
@@ -144,7 +169,13 @@ module Stagehand
|
|
|
144
169
|
sig do
|
|
145
170
|
params(
|
|
146
171
|
ignore_selectors: T::Array[String],
|
|
147
|
-
model:
|
|
172
|
+
model:
|
|
173
|
+
T.any(
|
|
174
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::OrHash,
|
|
175
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::OrHash,
|
|
176
|
+
String
|
|
177
|
+
),
|
|
178
|
+
screenshot: T::Boolean,
|
|
148
179
|
selector: String,
|
|
149
180
|
timeout: Float
|
|
150
181
|
).returns(T.attached_class)
|
|
@@ -154,6 +185,9 @@ module Stagehand
|
|
|
154
185
|
ignore_selectors: nil,
|
|
155
186
|
# Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
|
|
156
187
|
model: nil,
|
|
188
|
+
# When true, include a screenshot of the current viewport in the extraction LLM
|
|
189
|
+
# call. Defaults to false.
|
|
190
|
+
screenshot: nil,
|
|
157
191
|
# CSS selector to scope extraction to a specific element
|
|
158
192
|
selector: nil,
|
|
159
193
|
# Timeout in ms for the extraction
|
|
@@ -165,7 +199,13 @@ module Stagehand
|
|
|
165
199
|
override.returns(
|
|
166
200
|
{
|
|
167
201
|
ignore_selectors: T::Array[String],
|
|
168
|
-
model:
|
|
202
|
+
model:
|
|
203
|
+
T.any(
|
|
204
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject,
|
|
205
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject,
|
|
206
|
+
String
|
|
207
|
+
),
|
|
208
|
+
screenshot: T::Boolean,
|
|
169
209
|
selector: String,
|
|
170
210
|
timeout: Float
|
|
171
211
|
}
|
|
@@ -178,7 +218,682 @@ module Stagehand
|
|
|
178
218
|
module Model
|
|
179
219
|
extend Stagehand::Internal::Type::Union
|
|
180
220
|
|
|
181
|
-
Variants =
|
|
221
|
+
Variants =
|
|
222
|
+
T.type_alias do
|
|
223
|
+
T.any(
|
|
224
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject,
|
|
225
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject,
|
|
226
|
+
String
|
|
227
|
+
)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
|
|
231
|
+
OrHash =
|
|
232
|
+
T.type_alias do
|
|
233
|
+
T.any(
|
|
234
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject,
|
|
235
|
+
Stagehand::Internal::AnyHash
|
|
236
|
+
)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Vertex provider authentication configuration
|
|
240
|
+
sig do
|
|
241
|
+
returns(
|
|
242
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth
|
|
243
|
+
)
|
|
244
|
+
end
|
|
245
|
+
attr_reader :auth
|
|
246
|
+
|
|
247
|
+
sig do
|
|
248
|
+
params(
|
|
249
|
+
auth:
|
|
250
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::OrHash
|
|
251
|
+
).void
|
|
252
|
+
end
|
|
253
|
+
attr_writer :auth
|
|
254
|
+
|
|
255
|
+
# Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
|
|
256
|
+
sig { returns(String) }
|
|
257
|
+
attr_accessor :model_name
|
|
258
|
+
|
|
259
|
+
# Vertex AI model provider
|
|
260
|
+
sig { returns(Symbol) }
|
|
261
|
+
attr_accessor :provider
|
|
262
|
+
|
|
263
|
+
# Vertex provider-specific model configuration
|
|
264
|
+
sig do
|
|
265
|
+
returns(
|
|
266
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions
|
|
267
|
+
)
|
|
268
|
+
end
|
|
269
|
+
attr_reader :provider_options
|
|
270
|
+
|
|
271
|
+
sig do
|
|
272
|
+
params(
|
|
273
|
+
provider_options:
|
|
274
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash
|
|
275
|
+
).void
|
|
276
|
+
end
|
|
277
|
+
attr_writer :provider_options
|
|
278
|
+
|
|
279
|
+
# API key for the model provider
|
|
280
|
+
sig { returns(T.nilable(String)) }
|
|
281
|
+
attr_reader :api_key
|
|
282
|
+
|
|
283
|
+
sig { params(api_key: String).void }
|
|
284
|
+
attr_writer :api_key
|
|
285
|
+
|
|
286
|
+
# Base URL for the model provider
|
|
287
|
+
sig { returns(T.nilable(String)) }
|
|
288
|
+
attr_reader :base_url
|
|
289
|
+
|
|
290
|
+
sig { params(base_url: String).void }
|
|
291
|
+
attr_writer :base_url
|
|
292
|
+
|
|
293
|
+
# Custom headers sent with every request to the model provider
|
|
294
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
295
|
+
attr_reader :headers
|
|
296
|
+
|
|
297
|
+
sig { params(headers: T::Hash[Symbol, String]).void }
|
|
298
|
+
attr_writer :headers
|
|
299
|
+
|
|
300
|
+
sig do
|
|
301
|
+
params(
|
|
302
|
+
auth:
|
|
303
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::OrHash,
|
|
304
|
+
model_name: String,
|
|
305
|
+
provider_options:
|
|
306
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::OrHash,
|
|
307
|
+
api_key: String,
|
|
308
|
+
base_url: String,
|
|
309
|
+
headers: T::Hash[Symbol, String],
|
|
310
|
+
provider: Symbol
|
|
311
|
+
).returns(T.attached_class)
|
|
312
|
+
end
|
|
313
|
+
def self.new(
|
|
314
|
+
# Vertex provider authentication configuration
|
|
315
|
+
auth:,
|
|
316
|
+
# Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
|
|
317
|
+
model_name:,
|
|
318
|
+
# Vertex provider-specific model configuration
|
|
319
|
+
provider_options:,
|
|
320
|
+
# API key for the model provider
|
|
321
|
+
api_key: nil,
|
|
322
|
+
# Base URL for the model provider
|
|
323
|
+
base_url: nil,
|
|
324
|
+
# Custom headers sent with every request to the model provider
|
|
325
|
+
headers: nil,
|
|
326
|
+
# Vertex AI model provider
|
|
327
|
+
provider: :vertex
|
|
328
|
+
)
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
sig do
|
|
332
|
+
override.returns(
|
|
333
|
+
{
|
|
334
|
+
auth:
|
|
335
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth,
|
|
336
|
+
model_name: String,
|
|
337
|
+
provider: Symbol,
|
|
338
|
+
provider_options:
|
|
339
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions,
|
|
340
|
+
api_key: String,
|
|
341
|
+
base_url: String,
|
|
342
|
+
headers: T::Hash[Symbol, String]
|
|
343
|
+
}
|
|
344
|
+
)
|
|
345
|
+
end
|
|
346
|
+
def to_hash
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
class Auth < Stagehand::Internal::Type::BaseModel
|
|
350
|
+
OrHash =
|
|
351
|
+
T.type_alias do
|
|
352
|
+
T.any(
|
|
353
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth,
|
|
354
|
+
Stagehand::Internal::AnyHash
|
|
355
|
+
)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
# Google Cloud service account credentials
|
|
359
|
+
sig do
|
|
360
|
+
returns(
|
|
361
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials
|
|
362
|
+
)
|
|
363
|
+
end
|
|
364
|
+
attr_reader :credentials
|
|
365
|
+
|
|
366
|
+
sig do
|
|
367
|
+
params(
|
|
368
|
+
credentials:
|
|
369
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash
|
|
370
|
+
).void
|
|
371
|
+
end
|
|
372
|
+
attr_writer :credentials
|
|
373
|
+
|
|
374
|
+
# Use inline Google Cloud service account credentials for provider authentication
|
|
375
|
+
sig { returns(Symbol) }
|
|
376
|
+
attr_accessor :type
|
|
377
|
+
|
|
378
|
+
# Google Cloud project ID used by google-auth-library
|
|
379
|
+
sig { returns(T.nilable(String)) }
|
|
380
|
+
attr_reader :project_id
|
|
381
|
+
|
|
382
|
+
sig { params(project_id: String).void }
|
|
383
|
+
attr_writer :project_id
|
|
384
|
+
|
|
385
|
+
# Google auth scopes for the desired API request
|
|
386
|
+
sig do
|
|
387
|
+
returns(
|
|
388
|
+
T.nilable(
|
|
389
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants
|
|
390
|
+
)
|
|
391
|
+
)
|
|
392
|
+
end
|
|
393
|
+
attr_reader :scopes
|
|
394
|
+
|
|
395
|
+
sig do
|
|
396
|
+
params(
|
|
397
|
+
scopes:
|
|
398
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants
|
|
399
|
+
).void
|
|
400
|
+
end
|
|
401
|
+
attr_writer :scopes
|
|
402
|
+
|
|
403
|
+
# Google Cloud universe domain
|
|
404
|
+
sig { returns(T.nilable(String)) }
|
|
405
|
+
attr_reader :universe_domain
|
|
406
|
+
|
|
407
|
+
sig { params(universe_domain: String).void }
|
|
408
|
+
attr_writer :universe_domain
|
|
409
|
+
|
|
410
|
+
# Vertex provider authentication configuration
|
|
411
|
+
sig do
|
|
412
|
+
params(
|
|
413
|
+
credentials:
|
|
414
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::OrHash,
|
|
415
|
+
project_id: String,
|
|
416
|
+
scopes:
|
|
417
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants,
|
|
418
|
+
universe_domain: String,
|
|
419
|
+
type: Symbol
|
|
420
|
+
).returns(T.attached_class)
|
|
421
|
+
end
|
|
422
|
+
def self.new(
|
|
423
|
+
# Google Cloud service account credentials
|
|
424
|
+
credentials:,
|
|
425
|
+
# Google Cloud project ID used by google-auth-library
|
|
426
|
+
project_id: nil,
|
|
427
|
+
# Google auth scopes for the desired API request
|
|
428
|
+
scopes: nil,
|
|
429
|
+
# Google Cloud universe domain
|
|
430
|
+
universe_domain: nil,
|
|
431
|
+
# Use inline Google Cloud service account credentials for provider authentication
|
|
432
|
+
type: :googleServiceAccount
|
|
433
|
+
)
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
sig do
|
|
437
|
+
override.returns(
|
|
438
|
+
{
|
|
439
|
+
credentials:
|
|
440
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials,
|
|
441
|
+
type: Symbol,
|
|
442
|
+
project_id: String,
|
|
443
|
+
scopes:
|
|
444
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants,
|
|
445
|
+
universe_domain: String
|
|
446
|
+
}
|
|
447
|
+
)
|
|
448
|
+
end
|
|
449
|
+
def to_hash
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
class Credentials < Stagehand::Internal::Type::BaseModel
|
|
453
|
+
OrHash =
|
|
454
|
+
T.type_alias do
|
|
455
|
+
T.any(
|
|
456
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials,
|
|
457
|
+
Stagehand::Internal::AnyHash
|
|
458
|
+
)
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
sig { returns(String) }
|
|
462
|
+
attr_accessor :client_email
|
|
463
|
+
|
|
464
|
+
sig { returns(String) }
|
|
465
|
+
attr_accessor :private_key
|
|
466
|
+
|
|
467
|
+
sig { returns(T.nilable(String)) }
|
|
468
|
+
attr_reader :auth_provider_x509_cert_url
|
|
469
|
+
|
|
470
|
+
sig { params(auth_provider_x509_cert_url: String).void }
|
|
471
|
+
attr_writer :auth_provider_x509_cert_url
|
|
472
|
+
|
|
473
|
+
sig { returns(T.nilable(String)) }
|
|
474
|
+
attr_reader :auth_uri
|
|
475
|
+
|
|
476
|
+
sig { params(auth_uri: String).void }
|
|
477
|
+
attr_writer :auth_uri
|
|
478
|
+
|
|
479
|
+
sig { returns(T.nilable(String)) }
|
|
480
|
+
attr_reader :client_id
|
|
481
|
+
|
|
482
|
+
sig { params(client_id: String).void }
|
|
483
|
+
attr_writer :client_id
|
|
484
|
+
|
|
485
|
+
sig { returns(T.nilable(String)) }
|
|
486
|
+
attr_reader :client_x509_cert_url
|
|
487
|
+
|
|
488
|
+
sig { params(client_x509_cert_url: String).void }
|
|
489
|
+
attr_writer :client_x509_cert_url
|
|
490
|
+
|
|
491
|
+
sig { returns(T.nilable(String)) }
|
|
492
|
+
attr_reader :private_key_id
|
|
493
|
+
|
|
494
|
+
sig { params(private_key_id: String).void }
|
|
495
|
+
attr_writer :private_key_id
|
|
496
|
+
|
|
497
|
+
sig { returns(T.nilable(String)) }
|
|
498
|
+
attr_reader :project_id
|
|
499
|
+
|
|
500
|
+
sig { params(project_id: String).void }
|
|
501
|
+
attr_writer :project_id
|
|
502
|
+
|
|
503
|
+
sig { returns(T.nilable(String)) }
|
|
504
|
+
attr_reader :token_uri
|
|
505
|
+
|
|
506
|
+
sig { params(token_uri: String).void }
|
|
507
|
+
attr_writer :token_uri
|
|
508
|
+
|
|
509
|
+
sig do
|
|
510
|
+
returns(
|
|
511
|
+
T.nilable(
|
|
512
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
|
|
513
|
+
)
|
|
514
|
+
)
|
|
515
|
+
end
|
|
516
|
+
attr_reader :type
|
|
517
|
+
|
|
518
|
+
sig do
|
|
519
|
+
params(
|
|
520
|
+
type:
|
|
521
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
|
|
522
|
+
).void
|
|
523
|
+
end
|
|
524
|
+
attr_writer :type
|
|
525
|
+
|
|
526
|
+
sig { returns(T.nilable(String)) }
|
|
527
|
+
attr_reader :universe_domain
|
|
528
|
+
|
|
529
|
+
sig { params(universe_domain: String).void }
|
|
530
|
+
attr_writer :universe_domain
|
|
531
|
+
|
|
532
|
+
# Google Cloud service account credentials
|
|
533
|
+
sig do
|
|
534
|
+
params(
|
|
535
|
+
client_email: String,
|
|
536
|
+
private_key: String,
|
|
537
|
+
auth_provider_x509_cert_url: String,
|
|
538
|
+
auth_uri: String,
|
|
539
|
+
client_id: String,
|
|
540
|
+
client_x509_cert_url: String,
|
|
541
|
+
private_key_id: String,
|
|
542
|
+
project_id: String,
|
|
543
|
+
token_uri: String,
|
|
544
|
+
type:
|
|
545
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
|
|
546
|
+
universe_domain: String
|
|
547
|
+
).returns(T.attached_class)
|
|
548
|
+
end
|
|
549
|
+
def self.new(
|
|
550
|
+
client_email:,
|
|
551
|
+
private_key:,
|
|
552
|
+
auth_provider_x509_cert_url: nil,
|
|
553
|
+
auth_uri: nil,
|
|
554
|
+
client_id: nil,
|
|
555
|
+
client_x509_cert_url: nil,
|
|
556
|
+
private_key_id: nil,
|
|
557
|
+
project_id: nil,
|
|
558
|
+
token_uri: nil,
|
|
559
|
+
type: nil,
|
|
560
|
+
universe_domain: nil
|
|
561
|
+
)
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
sig do
|
|
565
|
+
override.returns(
|
|
566
|
+
{
|
|
567
|
+
client_email: String,
|
|
568
|
+
private_key: String,
|
|
569
|
+
auth_provider_x509_cert_url: String,
|
|
570
|
+
auth_uri: String,
|
|
571
|
+
client_id: String,
|
|
572
|
+
client_x509_cert_url: String,
|
|
573
|
+
private_key_id: String,
|
|
574
|
+
project_id: String,
|
|
575
|
+
token_uri: String,
|
|
576
|
+
type:
|
|
577
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
|
|
578
|
+
universe_domain: String
|
|
579
|
+
}
|
|
580
|
+
)
|
|
581
|
+
end
|
|
582
|
+
def to_hash
|
|
583
|
+
end
|
|
584
|
+
|
|
585
|
+
module Type
|
|
586
|
+
extend Stagehand::Internal::Type::Enum
|
|
587
|
+
|
|
588
|
+
TaggedSymbol =
|
|
589
|
+
T.type_alias do
|
|
590
|
+
T.all(
|
|
591
|
+
Symbol,
|
|
592
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type
|
|
593
|
+
)
|
|
594
|
+
end
|
|
595
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
596
|
+
|
|
597
|
+
SERVICE_ACCOUNT =
|
|
598
|
+
T.let(
|
|
599
|
+
:service_account,
|
|
600
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
sig do
|
|
604
|
+
override.returns(
|
|
605
|
+
T::Array[
|
|
606
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
|
|
607
|
+
]
|
|
608
|
+
)
|
|
609
|
+
end
|
|
610
|
+
def self.values
|
|
611
|
+
end
|
|
612
|
+
end
|
|
613
|
+
end
|
|
614
|
+
|
|
615
|
+
# Google auth scopes for the desired API request
|
|
616
|
+
module Scopes
|
|
617
|
+
extend Stagehand::Internal::Type::Union
|
|
618
|
+
|
|
619
|
+
Variants = T.type_alias { T.any(String, T::Array[String]) }
|
|
620
|
+
|
|
621
|
+
sig do
|
|
622
|
+
override.returns(
|
|
623
|
+
T::Array[
|
|
624
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::Auth::Scopes::Variants
|
|
625
|
+
]
|
|
626
|
+
)
|
|
627
|
+
end
|
|
628
|
+
def self.variants
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
StringArray =
|
|
632
|
+
T.let(
|
|
633
|
+
Stagehand::Internal::Type::ArrayOf[String],
|
|
634
|
+
Stagehand::Internal::Type::Converter
|
|
635
|
+
)
|
|
636
|
+
end
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
class ProviderOptions < Stagehand::Internal::Type::BaseModel
|
|
640
|
+
OrHash =
|
|
641
|
+
T.type_alias do
|
|
642
|
+
T.any(
|
|
643
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions,
|
|
644
|
+
Stagehand::Internal::AnyHash
|
|
645
|
+
)
|
|
646
|
+
end
|
|
647
|
+
|
|
648
|
+
# Vertex AI provider-specific settings
|
|
649
|
+
sig do
|
|
650
|
+
returns(
|
|
651
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
|
|
652
|
+
)
|
|
653
|
+
end
|
|
654
|
+
attr_reader :vertex
|
|
655
|
+
|
|
656
|
+
sig do
|
|
657
|
+
params(
|
|
658
|
+
vertex:
|
|
659
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
|
|
660
|
+
).void
|
|
661
|
+
end
|
|
662
|
+
attr_writer :vertex
|
|
663
|
+
|
|
664
|
+
# Vertex provider-specific model configuration
|
|
665
|
+
sig do
|
|
666
|
+
params(
|
|
667
|
+
vertex:
|
|
668
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
|
|
669
|
+
).returns(T.attached_class)
|
|
670
|
+
end
|
|
671
|
+
def self.new(
|
|
672
|
+
# Vertex AI provider-specific settings
|
|
673
|
+
vertex:
|
|
674
|
+
)
|
|
675
|
+
end
|
|
676
|
+
|
|
677
|
+
sig do
|
|
678
|
+
override.returns(
|
|
679
|
+
{
|
|
680
|
+
vertex:
|
|
681
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex
|
|
682
|
+
}
|
|
683
|
+
)
|
|
684
|
+
end
|
|
685
|
+
def to_hash
|
|
686
|
+
end
|
|
687
|
+
|
|
688
|
+
class Vertex < Stagehand::Internal::Type::BaseModel
|
|
689
|
+
OrHash =
|
|
690
|
+
T.type_alias do
|
|
691
|
+
T.any(
|
|
692
|
+
Stagehand::SessionExtractParams::Options::Model::VertexModelConfigObject::ProviderOptions::Vertex,
|
|
693
|
+
Stagehand::Internal::AnyHash
|
|
694
|
+
)
|
|
695
|
+
end
|
|
696
|
+
|
|
697
|
+
# Google Cloud location for Vertex AI models
|
|
698
|
+
sig { returns(String) }
|
|
699
|
+
attr_accessor :location
|
|
700
|
+
|
|
701
|
+
# Google Cloud project ID for Vertex AI models
|
|
702
|
+
sig { returns(String) }
|
|
703
|
+
attr_accessor :project
|
|
704
|
+
|
|
705
|
+
# Base URL for the Vertex AI provider
|
|
706
|
+
sig { returns(T.nilable(String)) }
|
|
707
|
+
attr_reader :base_url
|
|
708
|
+
|
|
709
|
+
sig { params(base_url: String).void }
|
|
710
|
+
attr_writer :base_url
|
|
711
|
+
|
|
712
|
+
# Custom headers sent with every request to the Vertex AI provider
|
|
713
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
714
|
+
attr_reader :headers
|
|
715
|
+
|
|
716
|
+
sig { params(headers: T::Hash[Symbol, String]).void }
|
|
717
|
+
attr_writer :headers
|
|
718
|
+
|
|
719
|
+
# Vertex AI provider-specific settings
|
|
720
|
+
sig do
|
|
721
|
+
params(
|
|
722
|
+
location: String,
|
|
723
|
+
project: String,
|
|
724
|
+
base_url: String,
|
|
725
|
+
headers: T::Hash[Symbol, String]
|
|
726
|
+
).returns(T.attached_class)
|
|
727
|
+
end
|
|
728
|
+
def self.new(
|
|
729
|
+
# Google Cloud location for Vertex AI models
|
|
730
|
+
location:,
|
|
731
|
+
# Google Cloud project ID for Vertex AI models
|
|
732
|
+
project:,
|
|
733
|
+
# Base URL for the Vertex AI provider
|
|
734
|
+
base_url: nil,
|
|
735
|
+
# Custom headers sent with every request to the Vertex AI provider
|
|
736
|
+
headers: nil
|
|
737
|
+
)
|
|
738
|
+
end
|
|
739
|
+
|
|
740
|
+
sig do
|
|
741
|
+
override.returns(
|
|
742
|
+
{
|
|
743
|
+
location: String,
|
|
744
|
+
project: String,
|
|
745
|
+
base_url: String,
|
|
746
|
+
headers: T::Hash[Symbol, String]
|
|
747
|
+
}
|
|
748
|
+
)
|
|
749
|
+
end
|
|
750
|
+
def to_hash
|
|
751
|
+
end
|
|
752
|
+
end
|
|
753
|
+
end
|
|
754
|
+
end
|
|
755
|
+
|
|
756
|
+
class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
|
|
757
|
+
OrHash =
|
|
758
|
+
T.type_alias do
|
|
759
|
+
T.any(
|
|
760
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject,
|
|
761
|
+
Stagehand::Internal::AnyHash
|
|
762
|
+
)
|
|
763
|
+
end
|
|
764
|
+
|
|
765
|
+
# Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
|
|
766
|
+
sig { returns(String) }
|
|
767
|
+
attr_accessor :model_name
|
|
768
|
+
|
|
769
|
+
# API key for the model provider
|
|
770
|
+
sig { returns(T.nilable(String)) }
|
|
771
|
+
attr_reader :api_key
|
|
772
|
+
|
|
773
|
+
sig { params(api_key: String).void }
|
|
774
|
+
attr_writer :api_key
|
|
775
|
+
|
|
776
|
+
# Base URL for the model provider
|
|
777
|
+
sig { returns(T.nilable(String)) }
|
|
778
|
+
attr_reader :base_url
|
|
779
|
+
|
|
780
|
+
sig { params(base_url: String).void }
|
|
781
|
+
attr_writer :base_url
|
|
782
|
+
|
|
783
|
+
# Custom headers sent with every request to the model provider
|
|
784
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
785
|
+
attr_reader :headers
|
|
786
|
+
|
|
787
|
+
sig { params(headers: T::Hash[Symbol, String]).void }
|
|
788
|
+
attr_writer :headers
|
|
789
|
+
|
|
790
|
+
# AI provider for the model (or provide a baseURL endpoint instead)
|
|
791
|
+
sig do
|
|
792
|
+
returns(
|
|
793
|
+
T.nilable(
|
|
794
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol
|
|
795
|
+
)
|
|
796
|
+
)
|
|
797
|
+
end
|
|
798
|
+
attr_reader :provider
|
|
799
|
+
|
|
800
|
+
sig do
|
|
801
|
+
params(
|
|
802
|
+
provider:
|
|
803
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol
|
|
804
|
+
).void
|
|
805
|
+
end
|
|
806
|
+
attr_writer :provider
|
|
807
|
+
|
|
808
|
+
sig do
|
|
809
|
+
params(
|
|
810
|
+
model_name: String,
|
|
811
|
+
api_key: String,
|
|
812
|
+
base_url: String,
|
|
813
|
+
headers: T::Hash[Symbol, String],
|
|
814
|
+
provider:
|
|
815
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol
|
|
816
|
+
).returns(T.attached_class)
|
|
817
|
+
end
|
|
818
|
+
def self.new(
|
|
819
|
+
# Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
|
|
820
|
+
model_name:,
|
|
821
|
+
# API key for the model provider
|
|
822
|
+
api_key: nil,
|
|
823
|
+
# Base URL for the model provider
|
|
824
|
+
base_url: nil,
|
|
825
|
+
# Custom headers sent with every request to the model provider
|
|
826
|
+
headers: nil,
|
|
827
|
+
# AI provider for the model (or provide a baseURL endpoint instead)
|
|
828
|
+
provider: nil
|
|
829
|
+
)
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
sig do
|
|
833
|
+
override.returns(
|
|
834
|
+
{
|
|
835
|
+
model_name: String,
|
|
836
|
+
api_key: String,
|
|
837
|
+
base_url: String,
|
|
838
|
+
headers: T::Hash[Symbol, String],
|
|
839
|
+
provider:
|
|
840
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::OrSymbol
|
|
841
|
+
}
|
|
842
|
+
)
|
|
843
|
+
end
|
|
844
|
+
def to_hash
|
|
845
|
+
end
|
|
846
|
+
|
|
847
|
+
# AI provider for the model (or provide a baseURL endpoint instead)
|
|
848
|
+
module Provider
|
|
849
|
+
extend Stagehand::Internal::Type::Enum
|
|
850
|
+
|
|
851
|
+
TaggedSymbol =
|
|
852
|
+
T.type_alias do
|
|
853
|
+
T.all(
|
|
854
|
+
Symbol,
|
|
855
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider
|
|
856
|
+
)
|
|
857
|
+
end
|
|
858
|
+
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
859
|
+
|
|
860
|
+
OPENAI =
|
|
861
|
+
T.let(
|
|
862
|
+
:openai,
|
|
863
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
864
|
+
)
|
|
865
|
+
ANTHROPIC =
|
|
866
|
+
T.let(
|
|
867
|
+
:anthropic,
|
|
868
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
869
|
+
)
|
|
870
|
+
GOOGLE =
|
|
871
|
+
T.let(
|
|
872
|
+
:google,
|
|
873
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
874
|
+
)
|
|
875
|
+
MICROSOFT =
|
|
876
|
+
T.let(
|
|
877
|
+
:microsoft,
|
|
878
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
879
|
+
)
|
|
880
|
+
BEDROCK =
|
|
881
|
+
T.let(
|
|
882
|
+
:bedrock,
|
|
883
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
884
|
+
)
|
|
885
|
+
|
|
886
|
+
sig do
|
|
887
|
+
override.returns(
|
|
888
|
+
T::Array[
|
|
889
|
+
Stagehand::SessionExtractParams::Options::Model::GenericModelConfigObject::Provider::TaggedSymbol
|
|
890
|
+
]
|
|
891
|
+
)
|
|
892
|
+
end
|
|
893
|
+
def self.values
|
|
894
|
+
end
|
|
895
|
+
end
|
|
896
|
+
end
|
|
182
897
|
|
|
183
898
|
sig do
|
|
184
899
|
override.returns(
|