@@ -30,42 +30,43 @@ import java.util.Optional
3030import kotlin.jvm.optionals.getOrNull
3131
3232/* *
33- * Model name string with provider prefix (e.g., 'openai/gpt-5-nano', 'anthropic/claude-4.5-opus')
33+ * Model name string with provider prefix. Always use the format 'provider/model-name' (e.g.,
34+ * 'openai/gpt-4o', 'anthropic/claude-sonnet-4-5-20250929', 'google/gemini-2.0-flash')
3435 */
3536@JsonDeserialize(using = ModelConfig .Deserializer ::class )
3637@JsonSerialize(using = ModelConfig .Serializer ::class )
3738class ModelConfig
3839private constructor (
39- private val name : String? = null ,
40+ private val string : String? = null ,
4041 private val modelConfigObject: ModelConfigObject ? = null ,
4142 private val _json : JsonValue ? = null ,
4243) {
4344
4445 /* *
45- * Model name string with provider prefix (e.g., 'openai/gpt-5-nano' ,
46- * 'anthropic/claude-4.5-opus ')
46+ * Model name string with provider prefix. Always use the format 'provider/model-name' (e.g. ,
47+ * 'openai/gpt-4o', ' anthropic/claude-sonnet-4-5-20250929', 'google/gemini-2.0-flash ')
4748 */
48- fun name (): Optional <String > = Optional .ofNullable(name )
49+ fun string (): Optional <String > = Optional .ofNullable(string )
4950
5051 fun modelConfigObject (): Optional <ModelConfigObject > = Optional .ofNullable(modelConfigObject)
5152
52- fun isName (): Boolean = name != null
53+ fun isString (): Boolean = string != null
5354
5455 fun isModelConfigObject (): Boolean = modelConfigObject != null
5556
5657 /* *
57- * Model name string with provider prefix (e.g., 'openai/gpt-5-nano' ,
58- * 'anthropic/claude-4.5-opus ')
58+ * Model name string with provider prefix. Always use the format 'provider/model-name' (e.g. ,
59+ * 'openai/gpt-4o', ' anthropic/claude-sonnet-4-5-20250929', 'google/gemini-2.0-flash ')
5960 */
60- fun asName (): String = name .getOrThrow(" name " )
61+ fun asString (): String = string .getOrThrow(" string " )
6162
6263 fun asModelConfigObject (): ModelConfigObject = modelConfigObject.getOrThrow(" modelConfigObject" )
6364
6465 fun _json (): Optional <JsonValue > = Optional .ofNullable(_json )
6566
6667 fun <T > accept (visitor : Visitor <T >): T =
6768 when {
68- name != null -> visitor.visitName(name )
69+ string != null -> visitor.visitString(string )
6970 modelConfigObject != null -> visitor.visitModelConfigObject(modelConfigObject)
7071 else -> visitor.unknown(_json )
7172 }
@@ -79,7 +80,7 @@ private constructor(
7980
8081 accept(
8182 object : Visitor <Unit > {
82- override fun visitName ( name : String ) {}
83+ override fun visitString ( string : String ) {}
8384
8485 override fun visitModelConfigObject (modelConfigObject : ModelConfigObject ) {
8586 modelConfigObject.validate()
@@ -106,7 +107,7 @@ private constructor(
106107 internal fun validity (): Int =
107108 accept(
108109 object : Visitor <Int > {
109- override fun visitName ( name : String ) = 1
110+ override fun visitString ( string : String ) = 1
110111
111112 override fun visitModelConfigObject (modelConfigObject : ModelConfigObject ) =
112113 modelConfigObject.validity()
@@ -121,15 +122,15 @@ private constructor(
121122 }
122123
123124 return other is ModelConfig &&
124- name == other.name &&
125+ string == other.string &&
125126 modelConfigObject == other.modelConfigObject
126127 }
127128
128- override fun hashCode (): Int = Objects .hash(name , modelConfigObject)
129+ override fun hashCode (): Int = Objects .hash(string , modelConfigObject)
129130
130131 override fun toString (): String =
131132 when {
132- name != null -> " ModelConfig{name= $name }"
133+ string != null -> " ModelConfig{string= $string }"
133134 modelConfigObject != null -> " ModelConfig{modelConfigObject=$modelConfigObject }"
134135 _json != null -> " ModelConfig{_unknown=$_json }"
135136 else -> throw IllegalStateException (" Invalid ModelConfig" )
@@ -138,10 +139,11 @@ private constructor(
138139 companion object {
139140
140141 /* *
141- * Model name string with provider prefix (e.g., 'openai/gpt-5-nano',
142- * 'anthropic/claude-4.5-opus')
142+ * Model name string with provider prefix. Always use the format 'provider/model-name'
143+ * (e.g., 'openai/gpt-4o', 'anthropic/claude-sonnet-4-5-20250929',
144+ * 'google/gemini-2.0-flash')
143145 */
144- @JvmStatic fun ofName ( name : String ) = ModelConfig (name = name )
146+ @JvmStatic fun ofString ( string : String ) = ModelConfig (string = string )
145147
146148 @JvmStatic
147149 fun ofModelConfigObject (modelConfigObject : ModelConfigObject ) =
@@ -154,10 +156,11 @@ private constructor(
154156 interface Visitor <out T > {
155157
156158 /* *
157- * Model name string with provider prefix (e.g., 'openai/gpt-5-nano',
158- * 'anthropic/claude-4.5-opus')
159+ * Model name string with provider prefix. Always use the format 'provider/model-name'
160+ * (e.g., 'openai/gpt-4o', 'anthropic/claude-sonnet-4-5-20250929',
161+ * 'google/gemini-2.0-flash')
159162 */
160- fun visitName ( name : String ): T
163+ fun visitString ( string : String ): T
161164
162165 fun visitModelConfigObject (modelConfigObject : ModelConfigObject ): T
163166
@@ -186,7 +189,7 @@ private constructor(
186189 ModelConfig (modelConfigObject = it, _json = json)
187190 },
188191 tryDeserialize(node, jacksonTypeRef<String >())?.let {
189- ModelConfig (name = it, _json = json)
192+ ModelConfig (string = it, _json = json)
190193 },
191194 )
192195 .filterNotNull()
@@ -212,7 +215,7 @@ private constructor(
212215 provider : SerializerProvider ,
213216 ) {
214217 when {
215- value.name != null -> generator.writeObject(value.name )
218+ value.string != null -> generator.writeObject(value.string )
216219 value.modelConfigObject != null -> generator.writeObject(value.modelConfigObject)
217220 value._json != null -> generator.writeObject(value._json )
218221 else -> throw IllegalStateException (" Invalid ModelConfig" )
@@ -243,7 +246,9 @@ private constructor(
243246 ) : this (modelName, apiKey, baseUrl, provider, mutableMapOf ())
244247
245248 /* *
246- * Model name string (e.g., 'openai/gpt-5-nano', 'anthropic/claude-4.5-opus')
249+ * Model name string with provider prefix. Always use the format 'provider/model-name'
250+ * (e.g., 'openai/gpt-4o', 'anthropic/claude-sonnet-4-5-20250929',
251+ * 'google/gemini-2.0-flash')
247252 *
248253 * @throws StagehandInvalidDataException if the JSON field has an unexpected type or is
249254 * unexpectedly missing or null (e.g. if the server responded with an unexpected value).
@@ -345,7 +350,11 @@ private constructor(
345350 additionalProperties = modelConfigObject.additionalProperties.toMutableMap()
346351 }
347352
348- /* * Model name string (e.g., 'openai/gpt-5-nano', 'anthropic/claude-4.5-opus') */
353+ /* *
354+ * Model name string with provider prefix. Always use the format 'provider/model-name'
355+ * (e.g., 'openai/gpt-4o', 'anthropic/claude-sonnet-4-5-20250929',
356+ * 'google/gemini-2.0-flash')
357+ */
349358 fun modelName (modelName : String ) = modelName(JsonField .of(modelName))
350359
351360 /* *
0 commit comments