@@ -15,18 +15,14 @@ class Client < Stagehand::Internal::Transport::BaseClient
1515 # Default max retry delay in seconds.
1616 DEFAULT_MAX_RETRY_DELAY = 8.0
1717
18- # rubocop:disable Style/MutableConstant
19- # @type [Hash{Symbol=>String}]
20- ENVIRONMENTS =
21- {
22- production : "https://api.stagehand.browserbase.com/v1" ,
23- dev : "https://api.stagehand.dev.browserbase.com/v1" ,
24- local : "http://localhost:5000/v1"
25- }
26- # rubocop:enable Style/MutableConstant
18+ # @return [String]
19+ attr_reader :browserbase_api_key
2720
2821 # @return [String]
29- attr_reader :api_key
22+ attr_reader :browserbase_project_id
23+
24+ # @return [String, nil]
25+ attr_reader :model_api_key
3026
3127 # @return [Stagehand::Resources::Sessions]
3228 attr_reader :sessions
@@ -35,22 +31,37 @@ class Client < Stagehand::Internal::Transport::BaseClient
3531 #
3632 # @return [Hash{String=>String}]
3733 private def auth_headers
38- return { } if @api_key . nil?
34+ { **bb_api_key_auth , **bb_project_id_auth , **llm_model_api_key_auth }
35+ end
3936
40- { "authorization" => "Bearer #{ @api_key } " }
37+ # @api private
38+ #
39+ # @return [Hash{String=>String}]
40+ private def bb_api_key_auth
41+ { "x-bb-api-key" => @browserbase_api_key }
4142 end
4243
43- # Creates and returns a new client for interacting with the API.
44+ # @api private
4445 #
45- # @param api_key [String, nil] Defaults to `ENV["STAGEHAND_API_KEY"]`
46+ # @return [Hash{String=>String}]
47+ private def bb_project_id_auth
48+ { "x-bb-project-id" => @browserbase_project_id }
49+ end
50+
51+ # @api private
4652 #
47- # @param environment [:production, :dev, :local, nil] Specifies the environment to use for the API.
53+ # @return [Hash{String=>String}]
54+ private def llm_model_api_key_auth
55+ { "x-model-api-key" => @model_api_key }
56+ end
57+
58+ # Creates and returns a new client for interacting with the API.
59+ #
60+ # @param browserbase_api_key [String, nil] Defaults to `ENV["BROWSERBASE_API_KEY"]`
4861 #
49- # Each environment maps to a different base URL:
62+ # @param browserbase_project_id [String, nil] Defaults to `ENV["BROWSERBASE_PROJECT_ID"]`
5063 #
51- # - `production` corresponds to `https://api.stagehand.browserbase.com/v1`
52- # - `dev` corresponds to `https://api.stagehand.dev.browserbase.com/v1`
53- # - `local` corresponds to `http://localhost:5000/v1`
64+ # @param model_api_key [String, nil] Defaults to `ENV["MODEL_API_KEY"]`
5465 #
5566 # @param base_url [String, nil] Override the default base URL for the API, e.g.,
5667 # `"https://api.example.com/v2/"`. Defaults to `ENV["STAGEHAND_BASE_URL"]`
@@ -63,24 +74,27 @@ class Client < Stagehand::Internal::Transport::BaseClient
6374 #
6475 # @param max_retry_delay [Float]
6576 def initialize (
66- api_key : ENV [ "STAGEHAND_API_KEY" ] ,
67- environment : nil ,
77+ browserbase_api_key : ENV [ "BROWSERBASE_API_KEY" ] ,
78+ browserbase_project_id : ENV [ "BROWSERBASE_PROJECT_ID" ] ,
79+ model_api_key : ENV [ "MODEL_API_KEY" ] ,
6880 base_url : ENV [ "STAGEHAND_BASE_URL" ] ,
6981 max_retries : self . class ::DEFAULT_MAX_RETRIES ,
7082 timeout : self . class ::DEFAULT_TIMEOUT_IN_SECONDS ,
7183 initial_retry_delay : self . class ::DEFAULT_INITIAL_RETRY_DELAY ,
7284 max_retry_delay : self . class ::DEFAULT_MAX_RETRY_DELAY
7385 )
74- base_url ||= Stagehand ::Client ::ENVIRONMENTS . fetch ( environment &.to_sym || :production ) do
75- message = "environment must be one of #{ Stagehand ::Client ::ENVIRONMENTS . keys } , got #{ environment } "
76- raise ArgumentError . new ( message )
77- end
86+ base_url ||= "https://api.stagehand.browserbase.com/v1"
7887
79- if api_key . nil?
80- raise ArgumentError . new ( "api_key is required, and can be set via environ: \" STAGEHAND_API_KEY\" " )
88+ if browserbase_api_key . nil?
89+ raise ArgumentError . new ( "browserbase_api_key is required, and can be set via environ: \" BROWSERBASE_API_KEY\" " )
90+ end
91+ if browserbase_project_id . nil?
92+ raise ArgumentError . new ( "browserbase_project_id is required, and can be set via environ: \" BROWSERBASE_PROJECT_ID\" " )
8193 end
8294
83- @api_key = api_key . to_s
95+ @browserbase_api_key = browserbase_api_key . to_s
96+ @browserbase_project_id = browserbase_project_id . to_s
97+ @model_api_key = model_api_key &.to_s
8498
8599 super (
86100 base_url : base_url ,
0 commit comments