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.
@@ -128,12 +128,27 @@ module Stagehand
128
128
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano') for
129
129
  # tool execution (observe/act calls within agent tools). If not specified,
130
130
  # inherits from the main model configuration.
131
- sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) }
131
+ sig do
132
+ returns(
133
+ T.nilable(
134
+ T.any(
135
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject,
136
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject,
137
+ String
138
+ )
139
+ )
140
+ )
141
+ end
132
142
  attr_reader :execution_model
133
143
 
134
144
  sig do
135
145
  params(
136
- execution_model: T.any(Stagehand::ModelConfig::OrHash, String)
146
+ execution_model:
147
+ T.any(
148
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::OrHash,
149
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::OrHash,
150
+ String
151
+ )
137
152
  ).void
138
153
  end
139
154
  attr_writer :execution_model
@@ -156,11 +171,28 @@ module Stagehand
156
171
  attr_writer :mode
157
172
 
158
173
  # Model configuration object or model name string (e.g., 'openai/gpt-5-nano')
159
- sig { returns(T.nilable(T.any(Stagehand::ModelConfig, String))) }
174
+ sig do
175
+ returns(
176
+ T.nilable(
177
+ T.any(
178
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject,
179
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject,
180
+ String
181
+ )
182
+ )
183
+ )
184
+ end
160
185
  attr_reader :model
161
186
 
162
187
  sig do
163
- params(model: T.any(Stagehand::ModelConfig::OrHash, String)).void
188
+ params(
189
+ model:
190
+ T.any(
191
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::OrHash,
192
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::OrHash,
193
+ String
194
+ )
195
+ ).void
164
196
  end
165
197
  attr_writer :model
166
198
 
@@ -192,9 +224,19 @@ module Stagehand
192
224
  sig do
193
225
  params(
194
226
  cua: T::Boolean,
195
- execution_model: T.any(Stagehand::ModelConfig::OrHash, String),
227
+ execution_model:
228
+ T.any(
229
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::OrHash,
230
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::OrHash,
231
+ String
232
+ ),
196
233
  mode: Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol,
197
- model: T.any(Stagehand::ModelConfig::OrHash, String),
234
+ model:
235
+ T.any(
236
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::OrHash,
237
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::OrHash,
238
+ String
239
+ ),
198
240
  provider:
199
241
  Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol,
200
242
  system_prompt: String
@@ -223,10 +265,20 @@ module Stagehand
223
265
  override.returns(
224
266
  {
225
267
  cua: T::Boolean,
226
- execution_model: T.any(Stagehand::ModelConfig, String),
268
+ execution_model:
269
+ T.any(
270
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject,
271
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject,
272
+ String
273
+ ),
227
274
  mode:
228
275
  Stagehand::SessionExecuteParams::AgentConfig::Mode::OrSymbol,
229
- model: T.any(Stagehand::ModelConfig, String),
276
+ model:
277
+ T.any(
278
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject,
279
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject,
280
+ String
281
+ ),
230
282
  provider:
231
283
  Stagehand::SessionExecuteParams::AgentConfig::Provider::OrSymbol,
232
284
  system_prompt: String
@@ -242,7 +294,682 @@ module Stagehand
242
294
  module ExecutionModel
243
295
  extend Stagehand::Internal::Type::Union
244
296
 
245
- Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) }
297
+ Variants =
298
+ T.type_alias do
299
+ T.any(
300
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject,
301
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject,
302
+ String
303
+ )
304
+ end
305
+
306
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
307
+ OrHash =
308
+ T.type_alias do
309
+ T.any(
310
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject,
311
+ Stagehand::Internal::AnyHash
312
+ )
313
+ end
314
+
315
+ # Vertex provider authentication configuration
316
+ sig do
317
+ returns(
318
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth
319
+ )
320
+ end
321
+ attr_reader :auth
322
+
323
+ sig do
324
+ params(
325
+ auth:
326
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::OrHash
327
+ ).void
328
+ end
329
+ attr_writer :auth
330
+
331
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
332
+ sig { returns(String) }
333
+ attr_accessor :model_name
334
+
335
+ # Vertex AI model provider
336
+ sig { returns(Symbol) }
337
+ attr_accessor :provider
338
+
339
+ # Vertex provider-specific model configuration
340
+ sig do
341
+ returns(
342
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions
343
+ )
344
+ end
345
+ attr_reader :provider_options
346
+
347
+ sig do
348
+ params(
349
+ provider_options:
350
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::OrHash
351
+ ).void
352
+ end
353
+ attr_writer :provider_options
354
+
355
+ # API key for the model provider
356
+ sig { returns(T.nilable(String)) }
357
+ attr_reader :api_key
358
+
359
+ sig { params(api_key: String).void }
360
+ attr_writer :api_key
361
+
362
+ # Base URL for the model provider
363
+ sig { returns(T.nilable(String)) }
364
+ attr_reader :base_url
365
+
366
+ sig { params(base_url: String).void }
367
+ attr_writer :base_url
368
+
369
+ # Custom headers sent with every request to the model provider
370
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
371
+ attr_reader :headers
372
+
373
+ sig { params(headers: T::Hash[Symbol, String]).void }
374
+ attr_writer :headers
375
+
376
+ sig do
377
+ params(
378
+ auth:
379
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::OrHash,
380
+ model_name: String,
381
+ provider_options:
382
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::OrHash,
383
+ api_key: String,
384
+ base_url: String,
385
+ headers: T::Hash[Symbol, String],
386
+ provider: Symbol
387
+ ).returns(T.attached_class)
388
+ end
389
+ def self.new(
390
+ # Vertex provider authentication configuration
391
+ auth:,
392
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
393
+ model_name:,
394
+ # Vertex provider-specific model configuration
395
+ provider_options:,
396
+ # API key for the model provider
397
+ api_key: nil,
398
+ # Base URL for the model provider
399
+ base_url: nil,
400
+ # Custom headers sent with every request to the model provider
401
+ headers: nil,
402
+ # Vertex AI model provider
403
+ provider: :vertex
404
+ )
405
+ end
406
+
407
+ sig do
408
+ override.returns(
409
+ {
410
+ auth:
411
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth,
412
+ model_name: String,
413
+ provider: Symbol,
414
+ provider_options:
415
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions,
416
+ api_key: String,
417
+ base_url: String,
418
+ headers: T::Hash[Symbol, String]
419
+ }
420
+ )
421
+ end
422
+ def to_hash
423
+ end
424
+
425
+ class Auth < Stagehand::Internal::Type::BaseModel
426
+ OrHash =
427
+ T.type_alias do
428
+ T.any(
429
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth,
430
+ Stagehand::Internal::AnyHash
431
+ )
432
+ end
433
+
434
+ # Google Cloud service account credentials
435
+ sig do
436
+ returns(
437
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials
438
+ )
439
+ end
440
+ attr_reader :credentials
441
+
442
+ sig do
443
+ params(
444
+ credentials:
445
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::OrHash
446
+ ).void
447
+ end
448
+ attr_writer :credentials
449
+
450
+ # Use inline Google Cloud service account credentials for provider authentication
451
+ sig { returns(Symbol) }
452
+ attr_accessor :type
453
+
454
+ # Google Cloud project ID used by google-auth-library
455
+ sig { returns(T.nilable(String)) }
456
+ attr_reader :project_id
457
+
458
+ sig { params(project_id: String).void }
459
+ attr_writer :project_id
460
+
461
+ # Google auth scopes for the desired API request
462
+ sig do
463
+ returns(
464
+ T.nilable(
465
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants
466
+ )
467
+ )
468
+ end
469
+ attr_reader :scopes
470
+
471
+ sig do
472
+ params(
473
+ scopes:
474
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants
475
+ ).void
476
+ end
477
+ attr_writer :scopes
478
+
479
+ # Google Cloud universe domain
480
+ sig { returns(T.nilable(String)) }
481
+ attr_reader :universe_domain
482
+
483
+ sig { params(universe_domain: String).void }
484
+ attr_writer :universe_domain
485
+
486
+ # Vertex provider authentication configuration
487
+ sig do
488
+ params(
489
+ credentials:
490
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::OrHash,
491
+ project_id: String,
492
+ scopes:
493
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants,
494
+ universe_domain: String,
495
+ type: Symbol
496
+ ).returns(T.attached_class)
497
+ end
498
+ def self.new(
499
+ # Google Cloud service account credentials
500
+ credentials:,
501
+ # Google Cloud project ID used by google-auth-library
502
+ project_id: nil,
503
+ # Google auth scopes for the desired API request
504
+ scopes: nil,
505
+ # Google Cloud universe domain
506
+ universe_domain: nil,
507
+ # Use inline Google Cloud service account credentials for provider authentication
508
+ type: :googleServiceAccount
509
+ )
510
+ end
511
+
512
+ sig do
513
+ override.returns(
514
+ {
515
+ credentials:
516
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials,
517
+ type: Symbol,
518
+ project_id: String,
519
+ scopes:
520
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants,
521
+ universe_domain: String
522
+ }
523
+ )
524
+ end
525
+ def to_hash
526
+ end
527
+
528
+ class Credentials < Stagehand::Internal::Type::BaseModel
529
+ OrHash =
530
+ T.type_alias do
531
+ T.any(
532
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials,
533
+ Stagehand::Internal::AnyHash
534
+ )
535
+ end
536
+
537
+ sig { returns(String) }
538
+ attr_accessor :client_email
539
+
540
+ sig { returns(String) }
541
+ attr_accessor :private_key
542
+
543
+ sig { returns(T.nilable(String)) }
544
+ attr_reader :auth_provider_x509_cert_url
545
+
546
+ sig { params(auth_provider_x509_cert_url: String).void }
547
+ attr_writer :auth_provider_x509_cert_url
548
+
549
+ sig { returns(T.nilable(String)) }
550
+ attr_reader :auth_uri
551
+
552
+ sig { params(auth_uri: String).void }
553
+ attr_writer :auth_uri
554
+
555
+ sig { returns(T.nilable(String)) }
556
+ attr_reader :client_id
557
+
558
+ sig { params(client_id: String).void }
559
+ attr_writer :client_id
560
+
561
+ sig { returns(T.nilable(String)) }
562
+ attr_reader :client_x509_cert_url
563
+
564
+ sig { params(client_x509_cert_url: String).void }
565
+ attr_writer :client_x509_cert_url
566
+
567
+ sig { returns(T.nilable(String)) }
568
+ attr_reader :private_key_id
569
+
570
+ sig { params(private_key_id: String).void }
571
+ attr_writer :private_key_id
572
+
573
+ sig { returns(T.nilable(String)) }
574
+ attr_reader :project_id
575
+
576
+ sig { params(project_id: String).void }
577
+ attr_writer :project_id
578
+
579
+ sig { returns(T.nilable(String)) }
580
+ attr_reader :token_uri
581
+
582
+ sig { params(token_uri: String).void }
583
+ attr_writer :token_uri
584
+
585
+ sig do
586
+ returns(
587
+ T.nilable(
588
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
589
+ )
590
+ )
591
+ end
592
+ attr_reader :type
593
+
594
+ sig do
595
+ params(
596
+ type:
597
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
598
+ ).void
599
+ end
600
+ attr_writer :type
601
+
602
+ sig { returns(T.nilable(String)) }
603
+ attr_reader :universe_domain
604
+
605
+ sig { params(universe_domain: String).void }
606
+ attr_writer :universe_domain
607
+
608
+ # Google Cloud service account credentials
609
+ sig do
610
+ params(
611
+ client_email: String,
612
+ private_key: String,
613
+ auth_provider_x509_cert_url: String,
614
+ auth_uri: String,
615
+ client_id: String,
616
+ client_x509_cert_url: String,
617
+ private_key_id: String,
618
+ project_id: String,
619
+ token_uri: String,
620
+ type:
621
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
622
+ universe_domain: String
623
+ ).returns(T.attached_class)
624
+ end
625
+ def self.new(
626
+ client_email:,
627
+ private_key:,
628
+ auth_provider_x509_cert_url: nil,
629
+ auth_uri: nil,
630
+ client_id: nil,
631
+ client_x509_cert_url: nil,
632
+ private_key_id: nil,
633
+ project_id: nil,
634
+ token_uri: nil,
635
+ type: nil,
636
+ universe_domain: nil
637
+ )
638
+ end
639
+
640
+ sig do
641
+ override.returns(
642
+ {
643
+ client_email: String,
644
+ private_key: String,
645
+ auth_provider_x509_cert_url: String,
646
+ auth_uri: String,
647
+ client_id: String,
648
+ client_x509_cert_url: String,
649
+ private_key_id: String,
650
+ project_id: String,
651
+ token_uri: String,
652
+ type:
653
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
654
+ universe_domain: String
655
+ }
656
+ )
657
+ end
658
+ def to_hash
659
+ end
660
+
661
+ module Type
662
+ extend Stagehand::Internal::Type::Enum
663
+
664
+ TaggedSymbol =
665
+ T.type_alias do
666
+ T.all(
667
+ Symbol,
668
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type
669
+ )
670
+ end
671
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
672
+
673
+ SERVICE_ACCOUNT =
674
+ T.let(
675
+ :service_account,
676
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
677
+ )
678
+
679
+ sig do
680
+ override.returns(
681
+ T::Array[
682
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
683
+ ]
684
+ )
685
+ end
686
+ def self.values
687
+ end
688
+ end
689
+ end
690
+
691
+ # Google auth scopes for the desired API request
692
+ module Scopes
693
+ extend Stagehand::Internal::Type::Union
694
+
695
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
696
+
697
+ sig do
698
+ override.returns(
699
+ T::Array[
700
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::Auth::Scopes::Variants
701
+ ]
702
+ )
703
+ end
704
+ def self.variants
705
+ end
706
+
707
+ StringArray =
708
+ T.let(
709
+ Stagehand::Internal::Type::ArrayOf[String],
710
+ Stagehand::Internal::Type::Converter
711
+ )
712
+ end
713
+ end
714
+
715
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
716
+ OrHash =
717
+ T.type_alias do
718
+ T.any(
719
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions,
720
+ Stagehand::Internal::AnyHash
721
+ )
722
+ end
723
+
724
+ # Vertex AI provider-specific settings
725
+ sig do
726
+ returns(
727
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex
728
+ )
729
+ end
730
+ attr_reader :vertex
731
+
732
+ sig do
733
+ params(
734
+ vertex:
735
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
736
+ ).void
737
+ end
738
+ attr_writer :vertex
739
+
740
+ # Vertex provider-specific model configuration
741
+ sig do
742
+ params(
743
+ vertex:
744
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
745
+ ).returns(T.attached_class)
746
+ end
747
+ def self.new(
748
+ # Vertex AI provider-specific settings
749
+ vertex:
750
+ )
751
+ end
752
+
753
+ sig do
754
+ override.returns(
755
+ {
756
+ vertex:
757
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex
758
+ }
759
+ )
760
+ end
761
+ def to_hash
762
+ end
763
+
764
+ class Vertex < Stagehand::Internal::Type::BaseModel
765
+ OrHash =
766
+ T.type_alias do
767
+ T.any(
768
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::VertexModelConfigObject::ProviderOptions::Vertex,
769
+ Stagehand::Internal::AnyHash
770
+ )
771
+ end
772
+
773
+ # Google Cloud location for Vertex AI models
774
+ sig { returns(String) }
775
+ attr_accessor :location
776
+
777
+ # Google Cloud project ID for Vertex AI models
778
+ sig { returns(String) }
779
+ attr_accessor :project
780
+
781
+ # Base URL for the Vertex AI provider
782
+ sig { returns(T.nilable(String)) }
783
+ attr_reader :base_url
784
+
785
+ sig { params(base_url: String).void }
786
+ attr_writer :base_url
787
+
788
+ # Custom headers sent with every request to the Vertex AI provider
789
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
790
+ attr_reader :headers
791
+
792
+ sig { params(headers: T::Hash[Symbol, String]).void }
793
+ attr_writer :headers
794
+
795
+ # Vertex AI provider-specific settings
796
+ sig do
797
+ params(
798
+ location: String,
799
+ project: String,
800
+ base_url: String,
801
+ headers: T::Hash[Symbol, String]
802
+ ).returns(T.attached_class)
803
+ end
804
+ def self.new(
805
+ # Google Cloud location for Vertex AI models
806
+ location:,
807
+ # Google Cloud project ID for Vertex AI models
808
+ project:,
809
+ # Base URL for the Vertex AI provider
810
+ base_url: nil,
811
+ # Custom headers sent with every request to the Vertex AI provider
812
+ headers: nil
813
+ )
814
+ end
815
+
816
+ sig do
817
+ override.returns(
818
+ {
819
+ location: String,
820
+ project: String,
821
+ base_url: String,
822
+ headers: T::Hash[Symbol, String]
823
+ }
824
+ )
825
+ end
826
+ def to_hash
827
+ end
828
+ end
829
+ end
830
+ end
831
+
832
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
833
+ OrHash =
834
+ T.type_alias do
835
+ T.any(
836
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject,
837
+ Stagehand::Internal::AnyHash
838
+ )
839
+ end
840
+
841
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
842
+ sig { returns(String) }
843
+ attr_accessor :model_name
844
+
845
+ # API key for the model provider
846
+ sig { returns(T.nilable(String)) }
847
+ attr_reader :api_key
848
+
849
+ sig { params(api_key: String).void }
850
+ attr_writer :api_key
851
+
852
+ # Base URL for the model provider
853
+ sig { returns(T.nilable(String)) }
854
+ attr_reader :base_url
855
+
856
+ sig { params(base_url: String).void }
857
+ attr_writer :base_url
858
+
859
+ # Custom headers sent with every request to the model provider
860
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
861
+ attr_reader :headers
862
+
863
+ sig { params(headers: T::Hash[Symbol, String]).void }
864
+ attr_writer :headers
865
+
866
+ # AI provider for the model (or provide a baseURL endpoint instead)
867
+ sig do
868
+ returns(
869
+ T.nilable(
870
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol
871
+ )
872
+ )
873
+ end
874
+ attr_reader :provider
875
+
876
+ sig do
877
+ params(
878
+ provider:
879
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol
880
+ ).void
881
+ end
882
+ attr_writer :provider
883
+
884
+ sig do
885
+ params(
886
+ model_name: String,
887
+ api_key: String,
888
+ base_url: String,
889
+ headers: T::Hash[Symbol, String],
890
+ provider:
891
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol
892
+ ).returns(T.attached_class)
893
+ end
894
+ def self.new(
895
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
896
+ model_name:,
897
+ # API key for the model provider
898
+ api_key: nil,
899
+ # Base URL for the model provider
900
+ base_url: nil,
901
+ # Custom headers sent with every request to the model provider
902
+ headers: nil,
903
+ # AI provider for the model (or provide a baseURL endpoint instead)
904
+ provider: nil
905
+ )
906
+ end
907
+
908
+ sig do
909
+ override.returns(
910
+ {
911
+ model_name: String,
912
+ api_key: String,
913
+ base_url: String,
914
+ headers: T::Hash[Symbol, String],
915
+ provider:
916
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::OrSymbol
917
+ }
918
+ )
919
+ end
920
+ def to_hash
921
+ end
922
+
923
+ # AI provider for the model (or provide a baseURL endpoint instead)
924
+ module Provider
925
+ extend Stagehand::Internal::Type::Enum
926
+
927
+ TaggedSymbol =
928
+ T.type_alias do
929
+ T.all(
930
+ Symbol,
931
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider
932
+ )
933
+ end
934
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
935
+
936
+ OPENAI =
937
+ T.let(
938
+ :openai,
939
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
940
+ )
941
+ ANTHROPIC =
942
+ T.let(
943
+ :anthropic,
944
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
945
+ )
946
+ GOOGLE =
947
+ T.let(
948
+ :google,
949
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
950
+ )
951
+ MICROSOFT =
952
+ T.let(
953
+ :microsoft,
954
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
955
+ )
956
+ BEDROCK =
957
+ T.let(
958
+ :bedrock,
959
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
960
+ )
961
+
962
+ sig do
963
+ override.returns(
964
+ T::Array[
965
+ Stagehand::SessionExecuteParams::AgentConfig::ExecutionModel::GenericModelConfigObject::Provider::TaggedSymbol
966
+ ]
967
+ )
968
+ end
969
+ def self.values
970
+ end
971
+ end
972
+ end
246
973
 
247
974
  sig do
248
975
  override.returns(
@@ -296,7 +1023,682 @@ module Stagehand
296
1023
  module Model
297
1024
  extend Stagehand::Internal::Type::Union
298
1025
 
299
- Variants = T.type_alias { T.any(Stagehand::ModelConfig, String) }
1026
+ Variants =
1027
+ T.type_alias do
1028
+ T.any(
1029
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject,
1030
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject,
1031
+ String
1032
+ )
1033
+ end
1034
+
1035
+ class VertexModelConfigObject < Stagehand::Internal::Type::BaseModel
1036
+ OrHash =
1037
+ T.type_alias do
1038
+ T.any(
1039
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject,
1040
+ Stagehand::Internal::AnyHash
1041
+ )
1042
+ end
1043
+
1044
+ # Vertex provider authentication configuration
1045
+ sig do
1046
+ returns(
1047
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth
1048
+ )
1049
+ end
1050
+ attr_reader :auth
1051
+
1052
+ sig do
1053
+ params(
1054
+ auth:
1055
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::OrHash
1056
+ ).void
1057
+ end
1058
+ attr_writer :auth
1059
+
1060
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
1061
+ sig { returns(String) }
1062
+ attr_accessor :model_name
1063
+
1064
+ # Vertex AI model provider
1065
+ sig { returns(Symbol) }
1066
+ attr_accessor :provider
1067
+
1068
+ # Vertex provider-specific model configuration
1069
+ sig do
1070
+ returns(
1071
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions
1072
+ )
1073
+ end
1074
+ attr_reader :provider_options
1075
+
1076
+ sig do
1077
+ params(
1078
+ provider_options:
1079
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::OrHash
1080
+ ).void
1081
+ end
1082
+ attr_writer :provider_options
1083
+
1084
+ # API key for the model provider
1085
+ sig { returns(T.nilable(String)) }
1086
+ attr_reader :api_key
1087
+
1088
+ sig { params(api_key: String).void }
1089
+ attr_writer :api_key
1090
+
1091
+ # Base URL for the model provider
1092
+ sig { returns(T.nilable(String)) }
1093
+ attr_reader :base_url
1094
+
1095
+ sig { params(base_url: String).void }
1096
+ attr_writer :base_url
1097
+
1098
+ # Custom headers sent with every request to the model provider
1099
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
1100
+ attr_reader :headers
1101
+
1102
+ sig { params(headers: T::Hash[Symbol, String]).void }
1103
+ attr_writer :headers
1104
+
1105
+ sig do
1106
+ params(
1107
+ auth:
1108
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::OrHash,
1109
+ model_name: String,
1110
+ provider_options:
1111
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::OrHash,
1112
+ api_key: String,
1113
+ base_url: String,
1114
+ headers: T::Hash[Symbol, String],
1115
+ provider: Symbol
1116
+ ).returns(T.attached_class)
1117
+ end
1118
+ def self.new(
1119
+ # Vertex provider authentication configuration
1120
+ auth:,
1121
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
1122
+ model_name:,
1123
+ # Vertex provider-specific model configuration
1124
+ provider_options:,
1125
+ # API key for the model provider
1126
+ api_key: nil,
1127
+ # Base URL for the model provider
1128
+ base_url: nil,
1129
+ # Custom headers sent with every request to the model provider
1130
+ headers: nil,
1131
+ # Vertex AI model provider
1132
+ provider: :vertex
1133
+ )
1134
+ end
1135
+
1136
+ sig do
1137
+ override.returns(
1138
+ {
1139
+ auth:
1140
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth,
1141
+ model_name: String,
1142
+ provider: Symbol,
1143
+ provider_options:
1144
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions,
1145
+ api_key: String,
1146
+ base_url: String,
1147
+ headers: T::Hash[Symbol, String]
1148
+ }
1149
+ )
1150
+ end
1151
+ def to_hash
1152
+ end
1153
+
1154
+ class Auth < Stagehand::Internal::Type::BaseModel
1155
+ OrHash =
1156
+ T.type_alias do
1157
+ T.any(
1158
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth,
1159
+ Stagehand::Internal::AnyHash
1160
+ )
1161
+ end
1162
+
1163
+ # Google Cloud service account credentials
1164
+ sig do
1165
+ returns(
1166
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials
1167
+ )
1168
+ end
1169
+ attr_reader :credentials
1170
+
1171
+ sig do
1172
+ params(
1173
+ credentials:
1174
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::OrHash
1175
+ ).void
1176
+ end
1177
+ attr_writer :credentials
1178
+
1179
+ # Use inline Google Cloud service account credentials for provider authentication
1180
+ sig { returns(Symbol) }
1181
+ attr_accessor :type
1182
+
1183
+ # Google Cloud project ID used by google-auth-library
1184
+ sig { returns(T.nilable(String)) }
1185
+ attr_reader :project_id
1186
+
1187
+ sig { params(project_id: String).void }
1188
+ attr_writer :project_id
1189
+
1190
+ # Google auth scopes for the desired API request
1191
+ sig do
1192
+ returns(
1193
+ T.nilable(
1194
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants
1195
+ )
1196
+ )
1197
+ end
1198
+ attr_reader :scopes
1199
+
1200
+ sig do
1201
+ params(
1202
+ scopes:
1203
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants
1204
+ ).void
1205
+ end
1206
+ attr_writer :scopes
1207
+
1208
+ # Google Cloud universe domain
1209
+ sig { returns(T.nilable(String)) }
1210
+ attr_reader :universe_domain
1211
+
1212
+ sig { params(universe_domain: String).void }
1213
+ attr_writer :universe_domain
1214
+
1215
+ # Vertex provider authentication configuration
1216
+ sig do
1217
+ params(
1218
+ credentials:
1219
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::OrHash,
1220
+ project_id: String,
1221
+ scopes:
1222
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants,
1223
+ universe_domain: String,
1224
+ type: Symbol
1225
+ ).returns(T.attached_class)
1226
+ end
1227
+ def self.new(
1228
+ # Google Cloud service account credentials
1229
+ credentials:,
1230
+ # Google Cloud project ID used by google-auth-library
1231
+ project_id: nil,
1232
+ # Google auth scopes for the desired API request
1233
+ scopes: nil,
1234
+ # Google Cloud universe domain
1235
+ universe_domain: nil,
1236
+ # Use inline Google Cloud service account credentials for provider authentication
1237
+ type: :googleServiceAccount
1238
+ )
1239
+ end
1240
+
1241
+ sig do
1242
+ override.returns(
1243
+ {
1244
+ credentials:
1245
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials,
1246
+ type: Symbol,
1247
+ project_id: String,
1248
+ scopes:
1249
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants,
1250
+ universe_domain: String
1251
+ }
1252
+ )
1253
+ end
1254
+ def to_hash
1255
+ end
1256
+
1257
+ class Credentials < Stagehand::Internal::Type::BaseModel
1258
+ OrHash =
1259
+ T.type_alias do
1260
+ T.any(
1261
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials,
1262
+ Stagehand::Internal::AnyHash
1263
+ )
1264
+ end
1265
+
1266
+ sig { returns(String) }
1267
+ attr_accessor :client_email
1268
+
1269
+ sig { returns(String) }
1270
+ attr_accessor :private_key
1271
+
1272
+ sig { returns(T.nilable(String)) }
1273
+ attr_reader :auth_provider_x509_cert_url
1274
+
1275
+ sig { params(auth_provider_x509_cert_url: String).void }
1276
+ attr_writer :auth_provider_x509_cert_url
1277
+
1278
+ sig { returns(T.nilable(String)) }
1279
+ attr_reader :auth_uri
1280
+
1281
+ sig { params(auth_uri: String).void }
1282
+ attr_writer :auth_uri
1283
+
1284
+ sig { returns(T.nilable(String)) }
1285
+ attr_reader :client_id
1286
+
1287
+ sig { params(client_id: String).void }
1288
+ attr_writer :client_id
1289
+
1290
+ sig { returns(T.nilable(String)) }
1291
+ attr_reader :client_x509_cert_url
1292
+
1293
+ sig { params(client_x509_cert_url: String).void }
1294
+ attr_writer :client_x509_cert_url
1295
+
1296
+ sig { returns(T.nilable(String)) }
1297
+ attr_reader :private_key_id
1298
+
1299
+ sig { params(private_key_id: String).void }
1300
+ attr_writer :private_key_id
1301
+
1302
+ sig { returns(T.nilable(String)) }
1303
+ attr_reader :project_id
1304
+
1305
+ sig { params(project_id: String).void }
1306
+ attr_writer :project_id
1307
+
1308
+ sig { returns(T.nilable(String)) }
1309
+ attr_reader :token_uri
1310
+
1311
+ sig { params(token_uri: String).void }
1312
+ attr_writer :token_uri
1313
+
1314
+ sig do
1315
+ returns(
1316
+ T.nilable(
1317
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
1318
+ )
1319
+ )
1320
+ end
1321
+ attr_reader :type
1322
+
1323
+ sig do
1324
+ params(
1325
+ type:
1326
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol
1327
+ ).void
1328
+ end
1329
+ attr_writer :type
1330
+
1331
+ sig { returns(T.nilable(String)) }
1332
+ attr_reader :universe_domain
1333
+
1334
+ sig { params(universe_domain: String).void }
1335
+ attr_writer :universe_domain
1336
+
1337
+ # Google Cloud service account credentials
1338
+ sig do
1339
+ params(
1340
+ client_email: String,
1341
+ private_key: String,
1342
+ auth_provider_x509_cert_url: String,
1343
+ auth_uri: String,
1344
+ client_id: String,
1345
+ client_x509_cert_url: String,
1346
+ private_key_id: String,
1347
+ project_id: String,
1348
+ token_uri: String,
1349
+ type:
1350
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
1351
+ universe_domain: String
1352
+ ).returns(T.attached_class)
1353
+ end
1354
+ def self.new(
1355
+ client_email:,
1356
+ private_key:,
1357
+ auth_provider_x509_cert_url: nil,
1358
+ auth_uri: nil,
1359
+ client_id: nil,
1360
+ client_x509_cert_url: nil,
1361
+ private_key_id: nil,
1362
+ project_id: nil,
1363
+ token_uri: nil,
1364
+ type: nil,
1365
+ universe_domain: nil
1366
+ )
1367
+ end
1368
+
1369
+ sig do
1370
+ override.returns(
1371
+ {
1372
+ client_email: String,
1373
+ private_key: String,
1374
+ auth_provider_x509_cert_url: String,
1375
+ auth_uri: String,
1376
+ client_id: String,
1377
+ client_x509_cert_url: String,
1378
+ private_key_id: String,
1379
+ project_id: String,
1380
+ token_uri: String,
1381
+ type:
1382
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::OrSymbol,
1383
+ universe_domain: String
1384
+ }
1385
+ )
1386
+ end
1387
+ def to_hash
1388
+ end
1389
+
1390
+ module Type
1391
+ extend Stagehand::Internal::Type::Enum
1392
+
1393
+ TaggedSymbol =
1394
+ T.type_alias do
1395
+ T.all(
1396
+ Symbol,
1397
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type
1398
+ )
1399
+ end
1400
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1401
+
1402
+ SERVICE_ACCOUNT =
1403
+ T.let(
1404
+ :service_account,
1405
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
1406
+ )
1407
+
1408
+ sig do
1409
+ override.returns(
1410
+ T::Array[
1411
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Credentials::Type::TaggedSymbol
1412
+ ]
1413
+ )
1414
+ end
1415
+ def self.values
1416
+ end
1417
+ end
1418
+ end
1419
+
1420
+ # Google auth scopes for the desired API request
1421
+ module Scopes
1422
+ extend Stagehand::Internal::Type::Union
1423
+
1424
+ Variants = T.type_alias { T.any(String, T::Array[String]) }
1425
+
1426
+ sig do
1427
+ override.returns(
1428
+ T::Array[
1429
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::Auth::Scopes::Variants
1430
+ ]
1431
+ )
1432
+ end
1433
+ def self.variants
1434
+ end
1435
+
1436
+ StringArray =
1437
+ T.let(
1438
+ Stagehand::Internal::Type::ArrayOf[String],
1439
+ Stagehand::Internal::Type::Converter
1440
+ )
1441
+ end
1442
+ end
1443
+
1444
+ class ProviderOptions < Stagehand::Internal::Type::BaseModel
1445
+ OrHash =
1446
+ T.type_alias do
1447
+ T.any(
1448
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions,
1449
+ Stagehand::Internal::AnyHash
1450
+ )
1451
+ end
1452
+
1453
+ # Vertex AI provider-specific settings
1454
+ sig do
1455
+ returns(
1456
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex
1457
+ )
1458
+ end
1459
+ attr_reader :vertex
1460
+
1461
+ sig do
1462
+ params(
1463
+ vertex:
1464
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
1465
+ ).void
1466
+ end
1467
+ attr_writer :vertex
1468
+
1469
+ # Vertex provider-specific model configuration
1470
+ sig do
1471
+ params(
1472
+ vertex:
1473
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex::OrHash
1474
+ ).returns(T.attached_class)
1475
+ end
1476
+ def self.new(
1477
+ # Vertex AI provider-specific settings
1478
+ vertex:
1479
+ )
1480
+ end
1481
+
1482
+ sig do
1483
+ override.returns(
1484
+ {
1485
+ vertex:
1486
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex
1487
+ }
1488
+ )
1489
+ end
1490
+ def to_hash
1491
+ end
1492
+
1493
+ class Vertex < Stagehand::Internal::Type::BaseModel
1494
+ OrHash =
1495
+ T.type_alias do
1496
+ T.any(
1497
+ Stagehand::SessionExecuteParams::AgentConfig::Model::VertexModelConfigObject::ProviderOptions::Vertex,
1498
+ Stagehand::Internal::AnyHash
1499
+ )
1500
+ end
1501
+
1502
+ # Google Cloud location for Vertex AI models
1503
+ sig { returns(String) }
1504
+ attr_accessor :location
1505
+
1506
+ # Google Cloud project ID for Vertex AI models
1507
+ sig { returns(String) }
1508
+ attr_accessor :project
1509
+
1510
+ # Base URL for the Vertex AI provider
1511
+ sig { returns(T.nilable(String)) }
1512
+ attr_reader :base_url
1513
+
1514
+ sig { params(base_url: String).void }
1515
+ attr_writer :base_url
1516
+
1517
+ # Custom headers sent with every request to the Vertex AI provider
1518
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
1519
+ attr_reader :headers
1520
+
1521
+ sig { params(headers: T::Hash[Symbol, String]).void }
1522
+ attr_writer :headers
1523
+
1524
+ # Vertex AI provider-specific settings
1525
+ sig do
1526
+ params(
1527
+ location: String,
1528
+ project: String,
1529
+ base_url: String,
1530
+ headers: T::Hash[Symbol, String]
1531
+ ).returns(T.attached_class)
1532
+ end
1533
+ def self.new(
1534
+ # Google Cloud location for Vertex AI models
1535
+ location:,
1536
+ # Google Cloud project ID for Vertex AI models
1537
+ project:,
1538
+ # Base URL for the Vertex AI provider
1539
+ base_url: nil,
1540
+ # Custom headers sent with every request to the Vertex AI provider
1541
+ headers: nil
1542
+ )
1543
+ end
1544
+
1545
+ sig do
1546
+ override.returns(
1547
+ {
1548
+ location: String,
1549
+ project: String,
1550
+ base_url: String,
1551
+ headers: T::Hash[Symbol, String]
1552
+ }
1553
+ )
1554
+ end
1555
+ def to_hash
1556
+ end
1557
+ end
1558
+ end
1559
+ end
1560
+
1561
+ class GenericModelConfigObject < Stagehand::Internal::Type::BaseModel
1562
+ OrHash =
1563
+ T.type_alias do
1564
+ T.any(
1565
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject,
1566
+ Stagehand::Internal::AnyHash
1567
+ )
1568
+ end
1569
+
1570
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
1571
+ sig { returns(String) }
1572
+ attr_accessor :model_name
1573
+
1574
+ # API key for the model provider
1575
+ sig { returns(T.nilable(String)) }
1576
+ attr_reader :api_key
1577
+
1578
+ sig { params(api_key: String).void }
1579
+ attr_writer :api_key
1580
+
1581
+ # Base URL for the model provider
1582
+ sig { returns(T.nilable(String)) }
1583
+ attr_reader :base_url
1584
+
1585
+ sig { params(base_url: String).void }
1586
+ attr_writer :base_url
1587
+
1588
+ # Custom headers sent with every request to the model provider
1589
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
1590
+ attr_reader :headers
1591
+
1592
+ sig { params(headers: T::Hash[Symbol, String]).void }
1593
+ attr_writer :headers
1594
+
1595
+ # AI provider for the model (or provide a baseURL endpoint instead)
1596
+ sig do
1597
+ returns(
1598
+ T.nilable(
1599
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol
1600
+ )
1601
+ )
1602
+ end
1603
+ attr_reader :provider
1604
+
1605
+ sig do
1606
+ params(
1607
+ provider:
1608
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol
1609
+ ).void
1610
+ end
1611
+ attr_writer :provider
1612
+
1613
+ sig do
1614
+ params(
1615
+ model_name: String,
1616
+ api_key: String,
1617
+ base_url: String,
1618
+ headers: T::Hash[Symbol, String],
1619
+ provider:
1620
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol
1621
+ ).returns(T.attached_class)
1622
+ end
1623
+ def self.new(
1624
+ # Model name string with provider prefix (e.g., 'openai/gpt-5-nano')
1625
+ model_name:,
1626
+ # API key for the model provider
1627
+ api_key: nil,
1628
+ # Base URL for the model provider
1629
+ base_url: nil,
1630
+ # Custom headers sent with every request to the model provider
1631
+ headers: nil,
1632
+ # AI provider for the model (or provide a baseURL endpoint instead)
1633
+ provider: nil
1634
+ )
1635
+ end
1636
+
1637
+ sig do
1638
+ override.returns(
1639
+ {
1640
+ model_name: String,
1641
+ api_key: String,
1642
+ base_url: String,
1643
+ headers: T::Hash[Symbol, String],
1644
+ provider:
1645
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::OrSymbol
1646
+ }
1647
+ )
1648
+ end
1649
+ def to_hash
1650
+ end
1651
+
1652
+ # AI provider for the model (or provide a baseURL endpoint instead)
1653
+ module Provider
1654
+ extend Stagehand::Internal::Type::Enum
1655
+
1656
+ TaggedSymbol =
1657
+ T.type_alias do
1658
+ T.all(
1659
+ Symbol,
1660
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider
1661
+ )
1662
+ end
1663
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1664
+
1665
+ OPENAI =
1666
+ T.let(
1667
+ :openai,
1668
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1669
+ )
1670
+ ANTHROPIC =
1671
+ T.let(
1672
+ :anthropic,
1673
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1674
+ )
1675
+ GOOGLE =
1676
+ T.let(
1677
+ :google,
1678
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1679
+ )
1680
+ MICROSOFT =
1681
+ T.let(
1682
+ :microsoft,
1683
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1684
+ )
1685
+ BEDROCK =
1686
+ T.let(
1687
+ :bedrock,
1688
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1689
+ )
1690
+
1691
+ sig do
1692
+ override.returns(
1693
+ T::Array[
1694
+ Stagehand::SessionExecuteParams::AgentConfig::Model::GenericModelConfigObject::Provider::TaggedSymbol
1695
+ ]
1696
+ )
1697
+ end
1698
+ def self.values
1699
+ end
1700
+ end
1701
+ end
300
1702
 
301
1703
  sig do
302
1704
  override.returns(