stagehand 4.2.0a0.dev1591__tar.gz → 4.2.1__tar.gz

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 (36) hide show
  1. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/PKG-INFO +1 -1
  2. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/pyproject.toml +1 -1
  3. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/manifest.json +1 -1
  4. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/service-worker.js +25 -168
  5. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_generated/models.py +6 -31
  6. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_generated/protocol_version.py +1 -1
  7. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/README.md +0 -0
  8. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/__init__.py +0 -0
  9. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/blank.html +0 -0
  10. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/content-script.js +0 -0
  11. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/offscreen/service-worker-heartbeat.html +0 -0
  12. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/offscreen/service-worker-heartbeat.js +0 -0
  13. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/wake-service-worker.html +0 -0
  14. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_extension/wake-service-worker.js +0 -0
  15. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_generated/__init__.py +0 -0
  16. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_generated/input_types.py +0 -0
  17. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_sdk_identity.py +0 -0
  18. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/_validation.py +0 -0
  19. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/browser.py +0 -0
  20. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/browser_clipboard.py +0 -0
  21. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/browser_context.py +0 -0
  22. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/browserbase_services.py +0 -0
  23. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/browserbase_session.py +0 -0
  24. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/cdp_client.py +0 -0
  25. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/client_models.py +0 -0
  26. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/client_types.py +0 -0
  27. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/extension_assets.py +0 -0
  28. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/file_upload.py +0 -0
  29. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/locator.py +0 -0
  30. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/page.py +0 -0
  31. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/py.typed +0 -0
  32. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/response.py +0 -0
  33. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/rpc_client.py +0 -0
  34. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/stagehand.py +0 -0
  35. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/timeouts.py +0 -0
  36. {stagehand-4.2.0a0.dev1591 → stagehand-4.2.1}/src/stagehand/webmcp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stagehand
3
- Version: 4.2.0a0.dev1591
3
+ Version: 4.2.1
4
4
  Summary: Browserbase's SDK for building browser agents
5
5
  Keywords: ai,agent,ai-agent,browser,browser-agent,browser-automation,computer-use,headless,playwright,cdp,llm,automation,web-scraping,testing
6
6
  Author: Browserbase
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stagehand"
3
- version = "4.2.0a0.dev1591"
3
+ version = "4.2.1"
4
4
  description = "Browserbase's SDK for building browser agents"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -31,5 +31,5 @@
31
31
  }
32
32
  ],
33
33
  "options_page": "wake-service-worker.html",
34
- "version": "1.1.0"
34
+ "version": "1.1.1"
35
35
  }
@@ -7363,7 +7363,7 @@ function isRecord$1(value) {
7363
7363
  }
7364
7364
  var package_default$1 = {
7365
7365
  name: "@browserbasehq/stagehand-protocol",
7366
- version: "2.1.0-alpha-7d8dcef8765f0a9dce498e1cc9d68c6b91ac3892",
7366
+ version: "2.1.1",
7367
7367
  "private": true,
7368
7368
  type: "module",
7369
7369
  exports: {
@@ -7437,164 +7437,12 @@ function parseProtocolVersion(version) {
7437
7437
  }
7438
7438
  //#endregion
7439
7439
  //#region ../protocol/schemas.ts
7440
- var OpenAIModelIdSchema = _enum([
7441
- "gpt-4.1",
7442
- "gpt-4.1-2025-04-14",
7443
- "gpt-4.1-mini",
7444
- "gpt-4.1-mini-2025-04-14",
7445
- "gpt-4.1-nano",
7446
- "gpt-4.1-nano-2025-04-14",
7447
- "gpt-4o",
7448
- "gpt-4o-2024-05-13",
7449
- "gpt-4o-2024-08-06",
7450
- "gpt-4o-2024-11-20",
7451
- "gpt-4o-audio-preview",
7452
- "gpt-4o-audio-preview-2024-12-17",
7453
- "gpt-4o-search-preview",
7454
- "gpt-4o-search-preview-2025-03-11",
7455
- "gpt-4o-mini-search-preview",
7456
- "gpt-4o-mini-search-preview-2025-03-11",
7457
- "gpt-4o-mini",
7458
- "gpt-4o-mini-2024-07-18",
7459
- "gpt-3.5-turbo-0125",
7460
- "gpt-3.5-turbo",
7461
- "gpt-3.5-turbo-1106",
7462
- "gpt-5-chat-latest",
7463
- "o1",
7464
- "o1-2024-12-17",
7465
- "o3",
7466
- "o3-2025-04-16",
7467
- "o3-mini",
7468
- "o3-mini-2025-01-31",
7469
- "o4-mini",
7470
- "o4-mini-2025-04-16",
7471
- "gpt-5",
7472
- "gpt-5-2025-08-07",
7473
- "gpt-5-codex",
7474
- "gpt-5-mini",
7475
- "gpt-5-mini-2025-08-07",
7476
- "gpt-5-nano",
7477
- "gpt-5-nano-2025-08-07",
7478
- "gpt-5-pro",
7479
- "gpt-5-pro-2025-10-06",
7480
- "gpt-5.1",
7481
- "gpt-5.1-chat-latest",
7482
- "gpt-5.1-codex-mini",
7483
- "gpt-5.1-codex",
7484
- "gpt-5.1-codex-max",
7485
- "gpt-5.2",
7486
- "gpt-5.2-chat-latest",
7487
- "gpt-5.2-pro",
7488
- "gpt-5.2-codex",
7489
- "gpt-5.3-chat-latest",
7490
- "gpt-5.3-codex",
7491
- "gpt-5.4",
7492
- "gpt-5.4-2026-03-05",
7493
- "gpt-5.4-mini",
7494
- "gpt-5.4-mini-2026-03-17",
7495
- "gpt-5.4-nano",
7496
- "gpt-5.4-nano-2026-03-17",
7497
- "gpt-5.4-pro",
7498
- "gpt-5.4-pro-2026-03-05",
7499
- "gpt-5.5",
7500
- "gpt-5.5-2026-04-23",
7501
- "gpt-5.6",
7502
- "gpt-5.6-luna",
7503
- "gpt-5.6-sol",
7504
- "gpt-5.6-terra"
7505
- ]).meta({ id: "OpenAIModelId" });
7506
- var AnthropicModelIdSchema = _enum([
7507
- "claude-3-haiku-20240307",
7508
- "claude-haiku-4-5-20251001",
7509
- "claude-haiku-4-5",
7510
- "claude-opus-4-0",
7511
- "claude-opus-4-20250514",
7512
- "claude-opus-4-1-20250805",
7513
- "claude-opus-4-1",
7514
- "claude-opus-4-5",
7515
- "claude-opus-4-5-20251101",
7516
- "claude-sonnet-4-0",
7517
- "claude-sonnet-4-20250514",
7518
- "claude-sonnet-4-5-20250929",
7519
- "claude-sonnet-4-5",
7520
- "claude-sonnet-4-6",
7521
- "claude-opus-4-6",
7522
- "claude-opus-4-7",
7523
- "claude-opus-4-8",
7524
- "claude-fable-5",
7525
- "claude-sonnet-5"
7526
- ]).meta({ id: "AnthropicModelId" });
7527
- var GoogleModelIdSchema = _enum([
7528
- "gemini-2.0-flash",
7529
- "gemini-2.0-flash-001",
7530
- "gemini-2.0-flash-lite",
7531
- "gemini-2.0-flash-lite-001",
7532
- "gemini-2.5-pro",
7533
- "gemini-2.5-flash",
7534
- "gemini-2.5-flash-image",
7535
- "gemini-2.5-flash-lite",
7536
- "gemini-2.5-flash-preview-tts",
7537
- "gemini-2.5-pro-preview-tts",
7538
- "gemini-2.5-flash-native-audio-latest",
7539
- "gemini-2.5-flash-native-audio-preview-09-2025",
7540
- "gemini-2.5-flash-native-audio-preview-12-2025",
7541
- "gemini-2.5-computer-use-preview-10-2025",
7542
- "gemini-3-pro-preview",
7543
- "gemini-3-pro-image-preview",
7544
- "gemini-3-flash-preview",
7545
- "gemini-3.1-pro-preview",
7546
- "gemini-3.1-pro-preview-customtools",
7547
- "gemini-3.1-flash-image-preview",
7548
- "gemini-3.1-flash-lite-preview",
7549
- "gemini-3.1-flash-tts-preview",
7550
- "gemini-3.5-flash",
7551
- "gemini-3.6-flash",
7552
- "gemini-pro-latest",
7553
- "gemini-flash-latest",
7554
- "gemini-flash-lite-latest",
7555
- "deep-research-pro-preview-12-2025",
7556
- "deep-research-max-preview-04-2026",
7557
- "deep-research-preview-04-2026",
7558
- "nano-banana-pro-preview",
7559
- "aqa",
7560
- "gemini-robotics-er-1.5-preview",
7561
- "gemma-3-1b-it",
7562
- "gemma-3-4b-it",
7563
- "gemma-3n-e4b-it",
7564
- "gemma-3n-e2b-it",
7565
- "gemma-3-12b-it",
7566
- "gemma-3-27b-it"
7567
- ]).meta({ id: "GoogleModelId" });
7568
- var GroqModelIdSchema = _enum([
7569
- "gemma2-9b-it",
7570
- "llama-3.1-8b-instant",
7571
- "llama-3.3-70b-versatile",
7572
- "meta-llama/llama-guard-4-12b",
7573
- "openai/gpt-oss-120b",
7574
- "openai/gpt-oss-20b",
7575
- "deepseek-r1-distill-llama-70b",
7576
- "meta-llama/llama-4-maverick-17b-128e-instruct",
7577
- "meta-llama/llama-4-scout-17b-16e-instruct",
7578
- "meta-llama/llama-prompt-guard-2-22m",
7579
- "meta-llama/llama-prompt-guard-2-86m",
7580
- "moonshotai/kimi-k2-instruct-0905",
7581
- "qwen/qwen3-32b",
7582
- "llama-guard-3-8b",
7583
- "llama3-70b-8192",
7584
- "llama3-8b-8192",
7585
- "mixtral-8x7b-32768",
7586
- "qwen-qwq-32b",
7587
- "qwen-2.5-32b",
7588
- "deepseek-r1-distill-qwen-32b"
7589
- ]).meta({ id: "GroqModelId" });
7590
- var CerebrasModelIdSchema = _enum([
7591
- "llama3.1-8b",
7592
- "gpt-oss-120b",
7593
- "qwen-3-235b-a22b-instruct-2507",
7594
- "qwen-3-235b-a22b-thinking-2507",
7595
- "zai-glm-4.6",
7596
- "zai-glm-4.7"
7597
- ]).meta({ id: "CerebrasModelId" });
7440
+ var ModelIdSchema = string().min(1).regex(/^\S+$/);
7441
+ var OpenAIModelIdSchema = ModelIdSchema.meta({ id: "OpenAIModelId" });
7442
+ var AnthropicModelIdSchema = ModelIdSchema.meta({ id: "AnthropicModelId" });
7443
+ var GoogleModelIdSchema = ModelIdSchema.meta({ id: "GoogleModelId" });
7444
+ var GroqModelIdSchema = ModelIdSchema.meta({ id: "GroqModelId" });
7445
+ var CerebrasModelIdSchema = ModelIdSchema.meta({ id: "CerebrasModelId" });
7598
7446
  var ModelProviderSchema = _enum([
7599
7447
  "openai",
7600
7448
  "anthropic",
@@ -7610,7 +7458,7 @@ var ModelNameSchema = union([
7610
7458
  templateLiteral(["cerebras/", CerebrasModelIdSchema]).meta({ id: "CerebrasModelName" })
7611
7459
  ]).meta({
7612
7460
  id: "ModelName",
7613
- description: "An explicitly supported model name with its provider prefix"
7461
+ description: "A model name with a supported provider prefix"
7614
7462
  });
7615
7463
  var CookieSchema = strictObject({
7616
7464
  name: string(),
@@ -8013,7 +7861,7 @@ var ModelConfigSchema = strictObject({
8013
7861
  }),
8014
7862
  headers: record(string(), string()).optional().meta({ description: "Custom headers sent with every request to the model provider" })
8015
7863
  }).meta({ id: "ModelConnection" }).extend({ modelName: ModelNameSchema.meta({
8016
- description: "An explicitly supported model name with its provider prefix",
7864
+ description: "A model name with a supported provider prefix",
8017
7865
  example: "openai/gpt-5.4-mini"
8018
7866
  }) }).meta({ id: "ModelConfig" });
8019
7867
  /** Serializable reference to an LLM implemented by the connected Stagehand client. */
@@ -51028,6 +50876,14 @@ createIdGenerator({
51028
50876
  size: 24
51029
50877
  });
51030
50878
  //#endregion
50879
+ //#region llm/boundFetch.ts
50880
+ /**
50881
+ * `fetch` captured at module load. Credentialed requests use this instead of the
50882
+ * ambient `globalThis.fetch`, so later reassignment of the global cannot observe
50883
+ * their headers.
50884
+ */
50885
+ var boundFetch = globalThis.fetch.bind(globalThis);
50886
+ //#endregion
51031
50887
  //#region llm/aiSdkClient.ts
51032
50888
  var AiSdkMessagesSchema = array$1(LLMMessageSchema).transform((messages) => {
51033
50889
  const toolNames = /* @__PURE__ */ new Map();
@@ -51123,7 +50979,8 @@ function createAiSdkLanguageModel(config, params) {
51123
50979
  const modelId = config.modelName.slice(separator + 1);
51124
50980
  const connection = {
51125
50981
  apiKey: config.apiKey,
51126
- headers: config.headers
50982
+ headers: config.headers,
50983
+ fetch: boundFetch
51127
50984
  };
51128
50985
  switch (provider) {
51129
50986
  case "openai": {
@@ -51230,17 +51087,17 @@ function buildGatewayContext(initParams) {
51230
51087
  };
51231
51088
  }
51232
51089
  var fetchWithoutModel = async (input, init) => {
51233
- if (typeof init?.body !== "string") return await globalThis.fetch(input, init);
51090
+ if (typeof init?.body !== "string") return await boundFetch(input, init);
51234
51091
  let body;
51235
51092
  try {
51236
51093
  body = JSON.parse(init.body);
51237
51094
  } catch {
51238
- return await globalThis.fetch(input, init);
51095
+ return await boundFetch(input, init);
51239
51096
  }
51240
- if (!body || typeof body !== "object" || Array.isArray(body)) return await globalThis.fetch(input, init);
51097
+ if (!body || typeof body !== "object" || Array.isArray(body)) return await boundFetch(input, init);
51241
51098
  const routedBody = { ...body };
51242
51099
  delete routedBody.model;
51243
- return await globalThis.fetch(input, {
51100
+ return await boundFetch(input, {
51244
51101
  ...init,
51245
51102
  body: JSON.stringify(routedBody)
51246
51103
  });
@@ -51255,7 +51112,7 @@ function createGatewayLanguageModel(config, gateway) {
51255
51112
  "x-bb-api-key": gateway.apiKey,
51256
51113
  "x-bb-session-id": gateway.sessionId
51257
51114
  },
51258
- ...config ? {} : { fetch: fetchWithoutModel }
51115
+ fetch: config ? boundFetch : fetchWithoutModel
51259
51116
  }).responses(config?.modelName ?? "auto");
51260
51117
  }
51261
51118
  //#endregion
@@ -54443,7 +54300,7 @@ var WebTracerProvider = class extends BasicTracerProvider {
54443
54300
  };
54444
54301
  var package_default = {
54445
54302
  name: "@browserbasehq/stagehand-extension",
54446
- version: "1.1.0-alpha-7d8dcef8765f0a9dce498e1cc9d68c6b91ac3892",
54303
+ version: "1.1.1",
54447
54304
  "private": true,
54448
54305
  type: "module",
54449
54306
  scripts: {
@@ -145,12 +145,7 @@ class Animations(StrEnum):
145
145
 
146
146
 
147
147
  class AnthropicModelName(RootModel[StrictStr]):
148
- root: Annotated[
149
- StrictStr,
150
- Field(
151
- pattern="^anthropic\\/(claude-3-haiku-20240307|claude-haiku-4-5-20251001|claude-haiku-4-5|claude-opus-4-0|claude-opus-4-20250514|claude-opus-4-1-20250805|claude-opus-4-1|claude-opus-4-5|claude-opus-4-5-20251101|claude-sonnet-4-0|claude-sonnet-4-20250514|claude-sonnet-4-5-20250929|claude-sonnet-4-5|claude-sonnet-4-6|claude-opus-4-6|claude-opus-4-7|claude-opus-4-8|claude-fable-5|claude-sonnet-5)$"
152
- ),
153
- ]
148
+ root: Annotated[StrictStr, Field(pattern="^anthropic\\/\\S+$")]
154
149
 
155
150
 
156
151
  class Browser(StrEnum):
@@ -350,12 +345,7 @@ class Caret(StrEnum):
350
345
 
351
346
 
352
347
  class CerebrasModelName(RootModel[StrictStr]):
353
- root: Annotated[
354
- StrictStr,
355
- Field(
356
- pattern="^cerebras\\/(llama3\\.1-8b|gpt-oss-120b|qwen-3-235b-a22b-instruct-2507|qwen-3-235b-a22b-thinking-2507|zai-glm-4\\.6|zai-glm-4\\.7)$"
357
- ),
358
- ]
348
+ root: Annotated[StrictStr, Field(pattern="^cerebras\\/\\S+$")]
359
349
 
360
350
 
361
351
  class ClearCookieOptions(WireModel):
@@ -709,21 +699,11 @@ class FieldSchema9(
709
699
 
710
700
 
711
701
  class GoogleModelName(RootModel[StrictStr]):
712
- root: Annotated[
713
- StrictStr,
714
- Field(
715
- pattern="^google\\/(gemini-2\\.0-flash|gemini-2\\.0-flash-001|gemini-2\\.0-flash-lite|gemini-2\\.0-flash-lite-001|gemini-2\\.5-pro|gemini-2\\.5-flash|gemini-2\\.5-flash-image|gemini-2\\.5-flash-lite|gemini-2\\.5-flash-preview-tts|gemini-2\\.5-pro-preview-tts|gemini-2\\.5-flash-native-audio-latest|gemini-2\\.5-flash-native-audio-preview-09-2025|gemini-2\\.5-flash-native-audio-preview-12-2025|gemini-2\\.5-computer-use-preview-10-2025|gemini-3-pro-preview|gemini-3-pro-image-preview|gemini-3-flash-preview|gemini-3\\.1-pro-preview|gemini-3\\.1-pro-preview-customtools|gemini-3\\.1-flash-image-preview|gemini-3\\.1-flash-lite-preview|gemini-3\\.1-flash-tts-preview|gemini-3\\.5-flash|gemini-3\\.6-flash|gemini-pro-latest|gemini-flash-latest|gemini-flash-lite-latest|deep-research-pro-preview-12-2025|deep-research-max-preview-04-2026|deep-research-preview-04-2026|nano-banana-pro-preview|aqa|gemini-robotics-er-1\\.5-preview|gemma-3-1b-it|gemma-3-4b-it|gemma-3n-e4b-it|gemma-3n-e2b-it|gemma-3-12b-it|gemma-3-27b-it)$"
716
- ),
717
- ]
702
+ root: Annotated[StrictStr, Field(pattern="^google\\/\\S+$")]
718
703
 
719
704
 
720
705
  class GroqModelName(RootModel[StrictStr]):
721
- root: Annotated[
722
- StrictStr,
723
- Field(
724
- pattern="^groq\\/(gemma2-9b-it|llama-3\\.1-8b-instant|llama-3\\.3-70b-versatile|meta-llama\\/llama-guard-4-12b|openai\\/gpt-oss-120b|openai\\/gpt-oss-20b|deepseek-r1-distill-llama-70b|meta-llama\\/llama-4-maverick-17b-128e-instruct|meta-llama\\/llama-4-scout-17b-16e-instruct|meta-llama\\/llama-prompt-guard-2-22m|meta-llama\\/llama-prompt-guard-2-86m|moonshotai\\/kimi-k2-instruct-0905|qwen\\/qwen3-32b|llama-guard-3-8b|llama3-70b-8192|llama3-8b-8192|mixtral-8x7b-32768|qwen-qwq-32b|qwen-2\\.5-32b|deepseek-r1-distill-qwen-32b)$"
725
- ),
726
- ]
706
+ root: Annotated[StrictStr, Field(pattern="^groq\\/\\S+$")]
727
707
 
728
708
 
729
709
  class HttpVersion(StrEnum):
@@ -1462,19 +1442,14 @@ class ObserveResult(WireModel):
1462
1442
 
1463
1443
 
1464
1444
  class OpenAIModelName(RootModel[StrictStr]):
1465
- root: Annotated[
1466
- StrictStr,
1467
- Field(
1468
- pattern="^openai\\/(gpt-4\\.1|gpt-4\\.1-2025-04-14|gpt-4\\.1-mini|gpt-4\\.1-mini-2025-04-14|gpt-4\\.1-nano|gpt-4\\.1-nano-2025-04-14|gpt-4o|gpt-4o-2024-05-13|gpt-4o-2024-08-06|gpt-4o-2024-11-20|gpt-4o-audio-preview|gpt-4o-audio-preview-2024-12-17|gpt-4o-search-preview|gpt-4o-search-preview-2025-03-11|gpt-4o-mini-search-preview|gpt-4o-mini-search-preview-2025-03-11|gpt-4o-mini|gpt-4o-mini-2024-07-18|gpt-3\\.5-turbo-0125|gpt-3\\.5-turbo|gpt-3\\.5-turbo-1106|gpt-5-chat-latest|o1|o1-2024-12-17|o3|o3-2025-04-16|o3-mini|o3-mini-2025-01-31|o4-mini|o4-mini-2025-04-16|gpt-5|gpt-5-2025-08-07|gpt-5-codex|gpt-5-mini|gpt-5-mini-2025-08-07|gpt-5-nano|gpt-5-nano-2025-08-07|gpt-5-pro|gpt-5-pro-2025-10-06|gpt-5\\.1|gpt-5\\.1-chat-latest|gpt-5\\.1-codex-mini|gpt-5\\.1-codex|gpt-5\\.1-codex-max|gpt-5\\.2|gpt-5\\.2-chat-latest|gpt-5\\.2-pro|gpt-5\\.2-codex|gpt-5\\.3-chat-latest|gpt-5\\.3-codex|gpt-5\\.4|gpt-5\\.4-2026-03-05|gpt-5\\.4-mini|gpt-5\\.4-mini-2026-03-17|gpt-5\\.4-nano|gpt-5\\.4-nano-2026-03-17|gpt-5\\.4-pro|gpt-5\\.4-pro-2026-03-05|gpt-5\\.5|gpt-5\\.5-2026-04-23|gpt-5\\.6|gpt-5\\.6-luna|gpt-5\\.6-sol|gpt-5\\.6-terra)$"
1469
- ),
1470
- ]
1445
+ root: Annotated[StrictStr, Field(pattern="^openai\\/\\S+$")]
1471
1446
 
1472
1447
 
1473
1448
  class ModelName(
1474
1449
  RootModel[Union[OpenAIModelName, AnthropicModelName, GoogleModelName, GroqModelName, CerebrasModelName]]
1475
1450
  ):
1476
1451
  root: Union[OpenAIModelName, AnthropicModelName, GoogleModelName, GroqModelName, CerebrasModelName]
1477
- """An explicitly supported model name with its provider prefix"""
1452
+ """A model name with a supported provider prefix"""
1478
1453
 
1479
1454
 
1480
1455
  class OperatingSystem(StrEnum):
@@ -1,4 +1,4 @@
1
1
  """Generated from packages/protocol/package.json. Do not edit."""
2
2
 
3
3
  PROTOCOL_SEMVER_PATTERN = '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$'
4
- STAGEHAND_PROTOCOL_VERSION = '2.1.0-alpha-7d8dcef8765f0a9dce498e1cc9d68c6b91ac3892'
4
+ STAGEHAND_PROTOCOL_VERSION = '2.1.1'
File without changes