stagehand 3.19.3 → 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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/README.md +2 -3
  4. data/lib/stagehand/client.rb +25 -13
  5. data/lib/stagehand/internal/transport/base_client.rb +2 -0
  6. data/lib/stagehand/internal/type/union.rb +11 -0
  7. data/lib/stagehand/internal/util.rb +3 -1
  8. data/lib/stagehand/local.rb +3 -12
  9. data/lib/stagehand/models/model_config.rb +326 -56
  10. data/lib/stagehand/models/session_act_params.rb +331 -4
  11. data/lib/stagehand/models/session_execute_params.rb +719 -9
  12. data/lib/stagehand/models/session_extract_params.rb +352 -5
  13. data/lib/stagehand/models/session_observe_params.rb +340 -5
  14. data/lib/stagehand/models/session_start_params.rb +56 -2
  15. data/lib/stagehand/resources/sessions.rb +16 -4
  16. data/lib/stagehand/version.rb +1 -1
  17. data/rbi/stagehand/client.rbi +6 -6
  18. data/rbi/stagehand/models/model_config.rbi +644 -69
  19. data/rbi/stagehand/models/session_act_params.rbi +707 -5
  20. data/rbi/stagehand/models/session_execute_params.rbi +1556 -13
  21. data/rbi/stagehand/models/session_extract_params.rbi +731 -5
  22. data/rbi/stagehand/models/session_observe_params.rbi +718 -5
  23. data/rbi/stagehand/models/session_start_params.rbi +102 -0
  24. data/sig/stagehand/models/model_config.rbs +310 -42
  25. data/sig/stagehand/models/session_act_params.rbs +324 -1
  26. data/sig/stagehand/models/session_execute_params.rbs +704 -5
  27. data/sig/stagehand/models/session_extract_params.rbs +338 -1
  28. data/sig/stagehand/models/session_observe_params.rbs +331 -1
  29. data/sig/stagehand/models/session_start_params.rbs +44 -0
  30. data/sig/stagehand/models.rbs +1 -1
  31. metadata +2 -2
@@ -2,105 +2,680 @@
2
2
 
3
3
  module Stagehand
4
4
  module Models
5
- class ModelConfig < Stagehand::Internal::Type::BaseModel
6
- OrHash =
5
+ module ModelConfig
6
+ extend Stagehand::Internal::Type::Union
7
+
8
+ Variants =
7
9
  T.type_alias do
8
- T.any(Stagehand::ModelConfig, Stagehand::Internal::AnyHash)
10
+ T.any(
11
+ Stagehand::ModelConfig::VertexModelConfigObject,
12
+ Stagehand::ModelConfig::GenericModelConfigObject
13
+ )
9
14
  end
10
15
 
11
- # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
12
- sig { returns(String) }
13
- attr_accessor :model_name
16
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
17
+ OrHash =
18
+ T.type_alias do
19
+ T.any(
20
+ Stagehand::ModelConfig::VertexModelConfigObject,
21
+ Stagehand::Internal::AnyHash
22
+ )
23
+ end
14
24
 
15
- # API key for the model provider
16
- sig { returns(T.nilable(String)) }
17
- attr_reader :api_key
25
+ # Vertex provider authentication configuration
26
+ sig { returns(Stagehand::ModelConfig::VertexModelConfigObject::Auth) }
27
+ attr_reader :auth
18
28
 
19
- sig { params(api_key: String).void }
20
- attr_writer :api_key
29
+ sig do
30
+ params(
31
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth::OrHash
32
+ ).void
33
+ end
34
+ attr_writer :auth
21
35
 
22
- # Base URL for the model provider
23
- sig { returns(T.nilable(String)) }
24
- attr_reader :base_url
36
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
37
+ sig { returns(String) }
38
+ attr_accessor :model_name
25
39
 
26
- sig { params(base_url: String).void }
27
- attr_writer :base_url
40
+ # Vertex AI model provider
41
+ sig { returns(Symbol) }
42
+ attr_accessor :provider
28
43
 
29
- # Custom headers sent with every request to the model provider
30
- sig { returns(T.nilable(T::Hash[Symbol, String])) }
31
- attr_reader :headers
44
+ # Vertex provider-specific model configuration
45
+ sig do
46
+ returns(
47
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions
48
+ )
49
+ end
50
+ attr_reader :provider_options
32
51
 
33
- sig { params(headers: T::Hash[Symbol, String]).void }
34
- attr_writer :headers
52
+ sig do
53
+ params(
54
+ provider_options:
55
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::OrHash
56
+ ).void
57
+ end
58
+ attr_writer :provider_options
35
59
 
36
- # AI provider for the model (or provide a baseURL endpoint instead)
37
- sig { returns(T.nilable(Stagehand::ModelConfig::Provider::OrSymbol)) }
38
- attr_reader :provider
60
+ # API key for the model provider
61
+ sig { returns(T.nilable(String)) }
62
+ attr_reader :api_key
39
63
 
40
- sig { params(provider: Stagehand::ModelConfig::Provider::OrSymbol).void }
41
- attr_writer :provider
64
+ sig { params(api_key: String).void }
65
+ attr_writer :api_key
42
66
 
43
- sig do
44
- params(
45
- model_name: String,
46
- api_key: String,
47
- base_url: String,
48
- headers: T::Hash[Symbol, String],
49
- provider: Stagehand::ModelConfig::Provider::OrSymbol
50
- ).returns(T.attached_class)
51
- end
52
- def self.new(
53
- # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
54
- model_name:,
55
- # API key for the model provider
56
- api_key: nil,
57
67
  # Base URL for the model provider
58
- base_url: nil,
68
+ sig { returns(T.nilable(String)) }
69
+ attr_reader :base_url
70
+
71
+ sig { params(base_url: String).void }
72
+ attr_writer :base_url
73
+
59
74
  # Custom headers sent with every request to the model provider
60
- headers: nil,
61
- # AI provider for the model (or provide a baseURL endpoint instead)
62
- provider: nil
63
- )
64
- end
75
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
76
+ attr_reader :headers
65
77
 
66
- sig do
67
- override.returns(
68
- {
78
+ sig { params(headers: T::Hash[Symbol, String]).void }
79
+ attr_writer :headers
80
+
81
+ sig do
82
+ params(
83
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth::OrHash,
69
84
  model_name: String,
85
+ provider_options:
86
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::OrHash,
70
87
  api_key: String,
71
88
  base_url: String,
72
89
  headers: T::Hash[Symbol, String],
73
- provider: Stagehand::ModelConfig::Provider::OrSymbol
74
- }
90
+ provider: Symbol
91
+ ).returns(T.attached_class)
92
+ end
93
+ def self.new(
94
+ # Vertex provider authentication configuration
95
+ auth:,
96
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
97
+ model_name:,
98
+ # Vertex provider-specific model configuration
99
+ provider_options:,
100
+ # API key for the model provider
101
+ api_key: nil,
102
+ # Base URL for the model provider
103
+ base_url: nil,
104
+ # Custom headers sent with every request to the model provider
105
+ headers: nil,
106
+ # Vertex AI model provider
107
+ provider: :vertex
75
108
  )
109
+ end
110
+
111
+ sig do
112
+ override.returns(
113
+ {
114
+ auth: Stagehand::ModelConfig::VertexModelConfigObject::Auth,
115
+ model_name: String,
116
+ provider: Symbol,
117
+ provider_options:
118
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions,
119
+ api_key: String,
120
+ base_url: String,
121
+ headers: T::Hash[Symbol, String]
122
+ }
123
+ )
124
+ end
125
+ def to_hash
126
+ end
127
+
128
+ class Auth < Stagehand::Internal::Type::BaseModel
129
+ OrHash =
130
+ T.type_alias do
131
+ T.any(
132
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth,
133
+ Stagehand::Internal::AnyHash
134
+ )
135
+ end
136
+
137
+ # Google Cloud service account credentials
138
+ sig do
139
+ returns(
140
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials
141
+ )
142
+ end
143
+ attr_reader :credentials
144
+
145
+ sig do
146
+ params(
147
+ credentials:
148
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash
149
+ ).void
150
+ end
151
+ attr_writer :credentials
152
+
153
+ # Use inline Google Cloud service account credentials for provider authentication
154
+ sig { returns(Symbol) }
155
+ attr_accessor :type
156
+
157
+ # Google Cloud project ID used by google-auth-library
158
+ sig { returns(T.nilable(String)) }
159
+ attr_reader :project_id
160
+
161
+ sig { params(project_id: String).void }
162
+ attr_writer :project_id
163
+
164
+ # Google auth scopes for the desired API request
165
+ sig do
166
+ returns(
167
+ T.nilable(
168
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants
169
+ )
170
+ )
171
+ end
172
+ attr_reader :scopes
173
+
174
+ sig do
175
+ params(
176
+ scopes:
177
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants
178
+ ).void
179
+ end
180
+ attr_writer :scopes
181
+
182
+ # Google Cloud universe domain
183
+ sig { returns(T.nilable(String)) }
184
+ attr_reader :universe_domain
185
+
186
+ sig { params(universe_domain: String).void }
187
+ attr_writer :universe_domain
188
+
189
+ # Vertex provider authentication configuration
190
+ sig do
191
+ params(
192
+ credentials:
193
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::OrHash,
194
+ project_id: String,
195
+ scopes:
196
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants,
197
+ universe_domain: String,
198
+ type: Symbol
199
+ ).returns(T.attached_class)
200
+ end
201
+ def self.new(
202
+ # Google Cloud service account credentials
203
+ credentials:,
204
+ # Google Cloud project ID used by google-auth-library
205
+ project_id: nil,
206
+ # Google auth scopes for the desired API request
207
+ scopes: nil,
208
+ # Google Cloud universe domain
209
+ universe_domain: nil,
210
+ # Use inline Google Cloud service account credentials for provider authentication
211
+ type: :googleServiceAccount
212
+ )
213
+ end
214
+
215
+ sig do
216
+ override.returns(
217
+ {
218
+ credentials:
219
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials,
220
+ type: Symbol,
221
+ project_id: String,
222
+ scopes:
223
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants,
224
+ universe_domain: String
225
+ }
226
+ )
227
+ end
228
+ def to_hash
229
+ end
230
+
231
+ class Credentials < Stagehand::Internal::Type::BaseModel
232
+ OrHash =
233
+ T.type_alias do
234
+ T.any(
235
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials,
236
+ Stagehand::Internal::AnyHash
237
+ )
238
+ end
239
+
240
+ sig { returns(String) }
241
+ attr_accessor :client_email
242
+
243
+ sig { returns(String) }
244
+ attr_accessor :private_key
245
+
246
+ sig { returns(T.nilable(String)) }
247
+ attr_reader :auth_provider_x509_cert_url
248
+
249
+ sig { params(auth_provider_x509_cert_url: String).void }
250
+ attr_writer :auth_provider_x509_cert_url
251
+
252
+ sig { returns(T.nilable(String)) }
253
+ attr_reader :auth_uri
254
+
255
+ sig { params(auth_uri: String).void }
256
+ attr_writer :auth_uri
257
+
258
+ sig { returns(T.nilable(String)) }
259
+ attr_reader :client_id
260
+
261
+ sig { params(client_id: String).void }
262
+ attr_writer :client_id
263
+
264
+ sig { returns(T.nilable(String)) }
265
+ attr_reader :client_x509_cert_url
266
+
267
+ sig { params(client_x509_cert_url: String).void }
268
+ attr_writer :client_x509_cert_url
269
+
270
+ sig { returns(T.nilable(String)) }
271
+ attr_reader :private_key_id
272
+
273
+ sig { params(private_key_id: String).void }
274
+ attr_writer :private_key_id
275
+
276
+ sig { returns(T.nilable(String)) }
277
+ attr_reader :project_id
278
+
279
+ sig { params(project_id: String).void }
280
+ attr_writer :project_id
281
+
282
+ sig { returns(T.nilable(String)) }
283
+ attr_reader :token_uri
284
+
285
+ sig { params(token_uri: String).void }
286
+ attr_writer :token_uri
287
+
288
+ sig do
289
+ returns(
290
+ T.nilable(
291
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
292
+ )
293
+ )
294
+ end
295
+ attr_reader :type
296
+
297
+ sig do
298
+ params(
299
+ type:
300
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
301
+ ).void
302
+ end
303
+ attr_writer :type
304
+
305
+ sig { returns(T.nilable(String)) }
306
+ attr_reader :universe_domain
307
+
308
+ sig { params(universe_domain: String).void }
309
+ attr_writer :universe_domain
310
+
311
+ # Google Cloud service account credentials
312
+ sig do
313
+ params(
314
+ client_email: String,
315
+ private_key: String,
316
+ auth_provider_x509_cert_url: String,
317
+ auth_uri: String,
318
+ client_id: String,
319
+ client_x509_cert_url: String,
320
+ private_key_id: String,
321
+ project_id: String,
322
+ token_uri: String,
323
+ type:
324
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
325
+ universe_domain: String
326
+ ).returns(T.attached_class)
327
+ end
328
+ def self.new(
329
+ client_email:,
330
+ private_key:,
331
+ auth_provider_x509_cert_url: nil,
332
+ auth_uri: nil,
333
+ client_id: nil,
334
+ client_x509_cert_url: nil,
335
+ private_key_id: nil,
336
+ project_id: nil,
337
+ token_uri: nil,
338
+ type: nil,
339
+ universe_domain: nil
340
+ )
341
+ end
342
+
343
+ sig do
344
+ override.returns(
345
+ {
346
+ client_email: String,
347
+ private_key: String,
348
+ auth_provider_x509_cert_url: String,
349
+ auth_uri: String,
350
+ client_id: String,
351
+ client_x509_cert_url: String,
352
+ private_key_id: String,
353
+ project_id: String,
354
+ token_uri: String,
355
+ type:
356
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
357
+ universe_domain: String
358
+ }
359
+ )
360
+ end
361
+ def to_hash
362
+ end
363
+
364
+ module Type
365
+ extend Stagehand::Internal::Type::Enum
366
+
367
+ TaggedSymbol =
368
+ T.type_alias do
369
+ T.all(
370
+ Symbol,
371
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type
372
+ )
373
+ end
374
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
375
+
376
+ SERVICE_ACCOUNT =
377
+ T.let(
378
+ :service_account,
379
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
380
+ )
381
+
382
+ sig do
383
+ override.returns(
384
+ T::Array[
385
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
386
+ ]
387
+ )
388
+ end
389
+ def self.values
390
+ end
391
+ end
392
+ end
393
+
394
+ # Google auth scopes for the desired API request
395
+ module Scopes
396
+ extend Stagehand::Internal::Type::Union
397
+
398
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
399
+
400
+ sig do
401
+ override.returns(
402
+ T::Array[
403
+ Stagehand::ModelConfig::VertexModelConfigObject::Auth::Scopes::Variants
404
+ ]
405
+ )
406
+ end
407
+ def self.variants
408
+ end
409
+
410
+ StringArray =
411
+ T.let(
412
+ Stagehand::Internal::Type::ArrayOf[String],
413
+ Stagehand::Internal::Type::Converter
414
+ )
415
+ end
416
+ end
417
+
418
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
419
+ OrHash =
420
+ T.type_alias do
421
+ T.any(
422
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions,
423
+ Stagehand::Internal::AnyHash
424
+ )
425
+ end
426
+
427
+ # Vertex AI provider-specific settings
428
+ sig do
429
+ returns(
430
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
431
+ )
432
+ end
433
+ attr_reader :vertex
434
+
435
+ sig do
436
+ params(
437
+ vertex:
438
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
439
+ ).void
440
+ end
441
+ attr_writer :vertex
442
+
443
+ # Vertex provider-specific model configuration
444
+ sig do
445
+ params(
446
+ vertex:
447
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
448
+ ).returns(T.attached_class)
449
+ end
450
+ def self.new(
451
+ # Vertex AI provider-specific settings
452
+ vertex:
453
+ )
454
+ end
455
+
456
+ sig do
457
+ override.returns(
458
+ {
459
+ vertex:
460
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex
461
+ }
462
+ )
463
+ end
464
+ def to_hash
465
+ end
466
+
467
+ class Vertex < Stagehand::Internal::Type::BaseModel
468
+ OrHash =
469
+ T.type_alias do
470
+ T.any(
471
+ Stagehand::ModelConfig::VertexModelConfigObject::ProviderOptions::Vertex,
472
+ Stagehand::Internal::AnyHash
473
+ )
474
+ end
475
+
476
+ # Google Cloud location for Vertex AI models
477
+ sig { returns(String) }
478
+ attr_accessor :location
479
+
480
+ # Google Cloud project ID for Vertex AI models
481
+ sig { returns(String) }
482
+ attr_accessor :project
483
+
484
+ # Base URL for the Vertex AI provider
485
+ sig { returns(T.nilable(String)) }
486
+ attr_reader :base_url
487
+
488
+ sig { params(base_url: String).void }
489
+ attr_writer :base_url
490
+
491
+ # Custom headers sent with every request to the Vertex AI provider
492
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
493
+ attr_reader :headers
494
+
495
+ sig { params(headers: T::Hash[Symbol, String]).void }
496
+ attr_writer :headers
497
+
498
+ # Vertex AI provider-specific settings
499
+ sig do
500
+ params(
501
+ location: String,
502
+ project: String,
503
+ base_url: String,
504
+ headers: T::Hash[Symbol, String]
505
+ ).returns(T.attached_class)
506
+ end
507
+ def self.new(
508
+ # Google Cloud location for Vertex AI models
509
+ location:,
510
+ # Google Cloud project ID for Vertex AI models
511
+ project:,
512
+ # Base URL for the Vertex AI provider
513
+ base_url: nil,
514
+ # Custom headers sent with every request to the Vertex AI provider
515
+ headers: nil
516
+ )
517
+ end
518
+
519
+ sig do
520
+ override.returns(
521
+ {
522
+ location: String,
523
+ project: String,
524
+ base_url: String,
525
+ headers: T::Hash[Symbol, String]
526
+ }
527
+ )
528
+ end
529
+ def to_hash
530
+ end
531
+ end
532
+ end
76
533
  end
77
- def to_hash
78
- end
79
534
 
80
- # AI provider for the model (or provide a baseURL endpoint instead)
81
- module Provider
82
- extend Stagehand::Internal::Type::Enum
535
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
536
+ OrHash =
537
+ T.type_alias do
538
+ T.any(
539
+ Stagehand::ModelConfig::GenericModelConfigObject,
540
+ Stagehand::Internal::AnyHash
541
+ )
542
+ end
543
+
544
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
545
+ sig { returns(String) }
546
+ attr_accessor :model_name
547
+
548
+ # API key for the model provider
549
+ sig { returns(T.nilable(String)) }
550
+ attr_reader :api_key
551
+
552
+ sig { params(api_key: String).void }
553
+ attr_writer :api_key
554
+
555
+ # Base URL for the model provider
556
+ sig { returns(T.nilable(String)) }
557
+ attr_reader :base_url
558
+
559
+ sig { params(base_url: String).void }
560
+ attr_writer :base_url
561
+
562
+ # Custom headers sent with every request to the model provider
563
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
564
+ attr_reader :headers
565
+
566
+ sig { params(headers: T::Hash[Symbol, String]).void }
567
+ attr_writer :headers
83
568
 
84
- TaggedSymbol =
85
- T.type_alias { T.all(Symbol, Stagehand::ModelConfig::Provider) }
86
- OrSymbol = T.type_alias { T.any(Symbol, String) }
569
+ # AI provider for the model (or provide a baseURL endpoint instead)
570
+ sig do
571
+ returns(
572
+ T.nilable(
573
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol
574
+ )
575
+ )
576
+ end
577
+ attr_reader :provider
87
578
 
88
- OPENAI = T.let(:openai, Stagehand::ModelConfig::Provider::TaggedSymbol)
89
- ANTHROPIC =
90
- T.let(:anthropic, Stagehand::ModelConfig::Provider::TaggedSymbol)
91
- GOOGLE = T.let(:google, Stagehand::ModelConfig::Provider::TaggedSymbol)
92
- MICROSOFT =
93
- T.let(:microsoft, Stagehand::ModelConfig::Provider::TaggedSymbol)
94
- BEDROCK =
95
- T.let(:bedrock, Stagehand::ModelConfig::Provider::TaggedSymbol)
579
+ sig do
580
+ params(
581
+ provider:
582
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol
583
+ ).void
584
+ end
585
+ attr_writer :provider
586
+
587
+ sig do
588
+ params(
589
+ model_name: String,
590
+ api_key: String,
591
+ base_url: String,
592
+ headers: T::Hash[Symbol, String],
593
+ provider:
594
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol
595
+ ).returns(T.attached_class)
596
+ end
597
+ def self.new(
598
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
599
+ model_name:,
600
+ # API key for the model provider
601
+ api_key: nil,
602
+ # Base URL for the model provider
603
+ base_url: nil,
604
+ # Custom headers sent with every request to the model provider
605
+ headers: nil,
606
+ # AI provider for the model (or provide a baseURL endpoint instead)
607
+ provider: nil
608
+ )
609
+ end
96
610
 
97
611
  sig do
98
612
  override.returns(
99
- T::Array[Stagehand::ModelConfig::Provider::TaggedSymbol]
613
+ {
614
+ model_name: String,
615
+ api_key: String,
616
+ base_url: String,
617
+ headers: T::Hash[Symbol, String],
618
+ provider:
619
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::OrSymbol
620
+ }
100
621
  )
101
622
  end
102
- def self.values
623
+ def to_hash
103
624
  end
625
+
626
+ # AI provider for the model (or provide a baseURL endpoint instead)
627
+ module Provider
628
+ extend Stagehand::Internal::Type::Enum
629
+
630
+ TaggedSymbol =
631
+ T.type_alias do
632
+ T.all(
633
+ Symbol,
634
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider
635
+ )
636
+ end
637
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
638
+
639
+ OPENAI =
640
+ T.let(
641
+ :openai,
642
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
643
+ )
644
+ ANTHROPIC =
645
+ T.let(
646
+ :anthropic,
647
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
648
+ )
649
+ GOOGLE =
650
+ T.let(
651
+ :google,
652
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
653
+ )
654
+ MICROSOFT =
655
+ T.let(
656
+ :microsoft,
657
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
658
+ )
659
+ BEDROCK =
660
+ T.let(
661
+ :bedrock,
662
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
663
+ )
664
+
665
+ sig do
666
+ override.returns(
667
+ T::Array[
668
+ Stagehand::ModelConfig::GenericModelConfigObject::Provider::TaggedSymbol
669
+ ]
670
+ )
671
+ end
672
+ def self.values
673
+ end
674
+ end
675
+ end
676
+
677
+ sig { override.returns(T::Array[Stagehand::ModelConfig::Variants]) }
678
+ def self.variants
104
679
  end
105
680
  end
106
681
  end