Skip to content

Commit 37699f0

Browse files
feat: Bedrock auth passthrough
1 parent d2b1716 commit 37699f0

12 files changed

Lines changed: 7039 additions & 284 deletions

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 8
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-b969ce378479c79ee64c05127c0ed6c6ce2edbee017ecd037242fb618a5ebc9f.yml
3-
openapi_spec_hash: a24aabaa5214effb679808b7f2be0ad4
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/browserbase%2Fstagehand-7773ef4ca29c983daafb787ee918cfa6b5b12c5bbdc088308653f2737c26e51f.yml
3+
openapi_spec_hash: 47fc8f2540be0b6374e4230c021072d9
44
config_hash: 0cc516caf1432087f40654336e0fa8cd

src/Stagehand.Tests/Models/Sessions/ModelConfigTest.cs

Lines changed: 1222 additions & 18 deletions
Large diffs are not rendered by default.

src/Stagehand.Tests/Models/Sessions/SessionActParamsTest.cs

Lines changed: 94 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,16 @@ public void FieldRoundtrip_Works()
2222
{
2323
Model = new Sessions::ModelConfig()
2424
{
25-
ModelName = "openai/gpt-5.4-mini",
25+
ModelName = "openai/gpt-5-nano",
2626
ApiKey = "sk-some-openai-api-key",
2727
BaseUrl = "https://api.openai.com/v1",
28-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
28+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
2929
Provider = Sessions::ModelConfigProvider.OpenAI,
30+
ProviderOptions =
31+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
32+
"us-east-1"
33+
),
34+
SkipApiKeyFallback = true,
3035
},
3136
Timeout = 30000,
3237
Variables = new Dictionary<string, Sessions::Variable>()
@@ -52,11 +57,16 @@ public void FieldRoundtrip_Works()
5257
{
5358
Model = new Sessions::ModelConfig()
5459
{
55-
ModelName = "openai/gpt-5.4-mini",
60+
ModelName = "openai/gpt-5-nano",
5661
ApiKey = "sk-some-openai-api-key",
5762
BaseUrl = "https://api.openai.com/v1",
58-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
63+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
5964
Provider = Sessions::ModelConfigProvider.OpenAI,
65+
ProviderOptions =
66+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
67+
"us-east-1"
68+
),
69+
SkipApiKeyFallback = true,
6070
},
6171
Timeout = 30000,
6272
Variables = new Dictionary<string, Sessions::Variable>()
@@ -129,11 +139,16 @@ public void OptionalNullableParamsUnsetAreNotSet_Works()
129139
{
130140
Model = new Sessions::ModelConfig()
131141
{
132-
ModelName = "openai/gpt-5.4-mini",
142+
ModelName = "openai/gpt-5-nano",
133143
ApiKey = "sk-some-openai-api-key",
134144
BaseUrl = "https://api.openai.com/v1",
135-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
145+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
136146
Provider = Sessions::ModelConfigProvider.OpenAI,
147+
ProviderOptions =
148+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
149+
"us-east-1"
150+
),
151+
SkipApiKeyFallback = true,
137152
},
138153
Timeout = 30000,
139154
Variables = new Dictionary<string, Sessions::Variable>()
@@ -167,11 +182,16 @@ public void OptionalNullableParamsSetToNullAreSetToNull_Works()
167182
{
168183
Model = new Sessions::ModelConfig()
169184
{
170-
ModelName = "openai/gpt-5.4-mini",
185+
ModelName = "openai/gpt-5-nano",
171186
ApiKey = "sk-some-openai-api-key",
172187
BaseUrl = "https://api.openai.com/v1",
173-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
188+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
174189
Provider = Sessions::ModelConfigProvider.OpenAI,
190+
ProviderOptions =
191+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
192+
"us-east-1"
193+
),
194+
SkipApiKeyFallback = true,
175195
},
176196
Timeout = 30000,
177197
Variables = new Dictionary<string, Sessions::Variable>()
@@ -258,11 +278,16 @@ public void CopyConstructor_Works()
258278
{
259279
Model = new Sessions::ModelConfig()
260280
{
261-
ModelName = "openai/gpt-5.4-mini",
281+
ModelName = "openai/gpt-5-nano",
262282
ApiKey = "sk-some-openai-api-key",
263283
BaseUrl = "https://api.openai.com/v1",
264-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
284+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
265285
Provider = Sessions::ModelConfigProvider.OpenAI,
286+
ProviderOptions =
287+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
288+
"us-east-1"
289+
),
290+
SkipApiKeyFallback = true,
266291
},
267292
Timeout = 30000,
268293
Variables = new Dictionary<string, Sessions::Variable>()
@@ -353,11 +378,16 @@ public void FieldRoundtrip_Works()
353378
{
354379
Model = new Sessions::ModelConfig()
355380
{
356-
ModelName = "openai/gpt-5.4-mini",
381+
ModelName = "openai/gpt-5-nano",
357382
ApiKey = "sk-some-openai-api-key",
358383
BaseUrl = "https://api.openai.com/v1",
359-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
384+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
360385
Provider = Sessions::ModelConfigProvider.OpenAI,
386+
ProviderOptions =
387+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
388+
"us-east-1"
389+
),
390+
SkipApiKeyFallback = true,
361391
},
362392
Timeout = 30000,
363393
Variables = new Dictionary<string, Sessions::Variable>()
@@ -376,11 +406,15 @@ public void FieldRoundtrip_Works()
376406

377407
Sessions::Model expectedModel = new Sessions::ModelConfig()
378408
{
379-
ModelName = "openai/gpt-5.4-mini",
409+
ModelName = "openai/gpt-5-nano",
380410
ApiKey = "sk-some-openai-api-key",
381411
BaseUrl = "https://api.openai.com/v1",
382-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
412+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
383413
Provider = Sessions::ModelConfigProvider.OpenAI,
414+
ProviderOptions = new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
415+
"us-east-1"
416+
),
417+
SkipApiKeyFallback = true,
384418
};
385419
double expectedTimeout = 30000;
386420
Dictionary<string, Sessions::Variable> expectedVariables = new()
@@ -415,11 +449,16 @@ public void SerializationRoundtrip_Works()
415449
{
416450
Model = new Sessions::ModelConfig()
417451
{
418-
ModelName = "openai/gpt-5.4-mini",
452+
ModelName = "openai/gpt-5-nano",
419453
ApiKey = "sk-some-openai-api-key",
420454
BaseUrl = "https://api.openai.com/v1",
421-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
455+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
422456
Provider = Sessions::ModelConfigProvider.OpenAI,
457+
ProviderOptions =
458+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
459+
"us-east-1"
460+
),
461+
SkipApiKeyFallback = true,
423462
},
424463
Timeout = 30000,
425464
Variables = new Dictionary<string, Sessions::Variable>()
@@ -452,11 +491,16 @@ public void FieldRoundtripThroughSerialization_Works()
452491
{
453492
Model = new Sessions::ModelConfig()
454493
{
455-
ModelName = "openai/gpt-5.4-mini",
494+
ModelName = "openai/gpt-5-nano",
456495
ApiKey = "sk-some-openai-api-key",
457496
BaseUrl = "https://api.openai.com/v1",
458-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
497+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
459498
Provider = Sessions::ModelConfigProvider.OpenAI,
499+
ProviderOptions =
500+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
501+
"us-east-1"
502+
),
503+
SkipApiKeyFallback = true,
460504
},
461505
Timeout = 30000,
462506
Variables = new Dictionary<string, Sessions::Variable>()
@@ -482,11 +526,15 @@ public void FieldRoundtripThroughSerialization_Works()
482526

483527
Sessions::Model expectedModel = new Sessions::ModelConfig()
484528
{
485-
ModelName = "openai/gpt-5.4-mini",
529+
ModelName = "openai/gpt-5-nano",
486530
ApiKey = "sk-some-openai-api-key",
487531
BaseUrl = "https://api.openai.com/v1",
488-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
532+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
489533
Provider = Sessions::ModelConfigProvider.OpenAI,
534+
ProviderOptions = new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
535+
"us-east-1"
536+
),
537+
SkipApiKeyFallback = true,
490538
};
491539
double expectedTimeout = 30000;
492540
Dictionary<string, Sessions::Variable> expectedVariables = new()
@@ -521,11 +569,16 @@ public void Validation_Works()
521569
{
522570
Model = new Sessions::ModelConfig()
523571
{
524-
ModelName = "openai/gpt-5.4-mini",
572+
ModelName = "openai/gpt-5-nano",
525573
ApiKey = "sk-some-openai-api-key",
526574
BaseUrl = "https://api.openai.com/v1",
527-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
575+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
528576
Provider = Sessions::ModelConfigProvider.OpenAI,
577+
ProviderOptions =
578+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
579+
"us-east-1"
580+
),
581+
SkipApiKeyFallback = true,
529582
},
530583
Timeout = 30000,
531584
Variables = new Dictionary<string, Sessions::Variable>()
@@ -606,11 +659,16 @@ public void CopyConstructor_Works()
606659
{
607660
Model = new Sessions::ModelConfig()
608661
{
609-
ModelName = "openai/gpt-5.4-mini",
662+
ModelName = "openai/gpt-5-nano",
610663
ApiKey = "sk-some-openai-api-key",
611664
BaseUrl = "https://api.openai.com/v1",
612-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
665+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
613666
Provider = Sessions::ModelConfigProvider.OpenAI,
667+
ProviderOptions =
668+
new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
669+
"us-east-1"
670+
),
671+
SkipApiKeyFallback = true,
614672
},
615673
Timeout = 30000,
616674
Variables = new Dictionary<string, Sessions::Variable>()
@@ -640,11 +698,15 @@ public void ConfigValidationWorks()
640698
{
641699
Sessions::Model value = new Sessions::ModelConfig()
642700
{
643-
ModelName = "openai/gpt-5.4-mini",
701+
ModelName = "openai/gpt-5-nano",
644702
ApiKey = "sk-some-openai-api-key",
645703
BaseUrl = "https://api.openai.com/v1",
646-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
704+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
647705
Provider = Sessions::ModelConfigProvider.OpenAI,
706+
ProviderOptions = new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
707+
"us-east-1"
708+
),
709+
SkipApiKeyFallback = true,
648710
};
649711
value.Validate();
650712
}
@@ -661,11 +723,15 @@ public void ConfigSerializationRoundtripWorks()
661723
{
662724
Sessions::Model value = new Sessions::ModelConfig()
663725
{
664-
ModelName = "openai/gpt-5.4-mini",
726+
ModelName = "openai/gpt-5-nano",
665727
ApiKey = "sk-some-openai-api-key",
666728
BaseUrl = "https://api.openai.com/v1",
667-
Headers = new Dictionary<string, string>() { { "foo", "string" } },
729+
Headers = new Dictionary<string, string>() { { "X-Custom-Header", "value" } },
668730
Provider = Sessions::ModelConfigProvider.OpenAI,
731+
ProviderOptions = new Sessions::ModelConfigProviderOptionsBedrockApiKeyProviderOptions(
732+
"us-east-1"
733+
),
734+
SkipApiKeyFallback = true,
669735
};
670736
string element = JsonSerializer.Serialize(value, ModelBase.SerializerOptions);
671737
var deserialized = JsonSerializer.Deserialize<Sessions::Model>(

0 commit comments

Comments
 (0)