Skip to content

Commit 9502338

Browse files
Preserve metadata on elicitation property schemas
Typed elicitation property schemas now implement AcpWithMeta so clients can consume provider-specific schema annotations without falling back to string heuristics. The serialization test covers round-tripping a Codex-style custom-answer marker and the API dump is updated.
1 parent 2b99b1f commit 9502338

3 files changed

Lines changed: 75 additions & 27 deletions

File tree

acp-model/api/acp-model.api

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,31 +1935,33 @@ public final class com/agentclientprotocol/model/ElicitationMode$Url$Companion {
19351935
public final fun serializer ()Lkotlinx/serialization/KSerializer;
19361936
}
19371937

1938-
public abstract class com/agentclientprotocol/model/ElicitationPropertySchema {
1938+
public abstract class com/agentclientprotocol/model/ElicitationPropertySchema : com/agentclientprotocol/model/AcpWithMeta {
19391939
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$Companion;
19401940
public synthetic fun <init> (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V
19411941
public static final synthetic fun write$Self (Lcom/agentclientprotocol/model/ElicitationPropertySchema;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V
19421942
}
19431943

19441944
public final class com/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty : com/agentclientprotocol/model/ElicitationPropertySchema {
19451945
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty$Companion;
1946-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;)V
1947-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1946+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;)V
1947+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
19481948
public final fun component1 ()Ljava/lang/String;
19491949
public final fun component2 ()Ljava/lang/String;
19501950
public final fun component3 ()Ljava/lang/Long;
19511951
public final fun component4 ()Ljava/lang/Long;
19521952
public final fun component5 ()Lcom/agentclientprotocol/model/MultiSelectItems;
19531953
public final fun component6 ()Ljava/util/List;
1954-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;
1955-
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;
1954+
public final fun component7 ()Lkotlinx/serialization/json/JsonElement;
1955+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;
1956+
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Lcom/agentclientprotocol/model/MultiSelectItems;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$ArrayProperty;
19561957
public fun equals (Ljava/lang/Object;)Z
19571958
public final fun getDefault ()Ljava/util/List;
19581959
public final fun getDescription ()Ljava/lang/String;
19591960
public final fun getItems ()Lcom/agentclientprotocol/model/MultiSelectItems;
19601961
public final fun getMaxItems ()Ljava/lang/Long;
19611962
public final fun getMinItems ()Ljava/lang/Long;
19621963
public final fun getTitle ()Ljava/lang/String;
1964+
public fun get_meta ()Lkotlinx/serialization/json/JsonElement;
19631965
public fun hashCode ()I
19641966
public fun toString ()Ljava/lang/String;
19651967
}
@@ -1982,17 +1984,19 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Array
19821984
public final class com/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty : com/agentclientprotocol/model/ElicitationPropertySchema {
19831985
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty$Companion;
19841986
public fun <init> ()V
1985-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)V
1986-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1987+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonElement;)V
1988+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
19871989
public final fun component1 ()Ljava/lang/String;
19881990
public final fun component2 ()Ljava/lang/String;
19891991
public final fun component3 ()Ljava/lang/Boolean;
1990-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;
1991-
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;
1992+
public final fun component4 ()Lkotlinx/serialization/json/JsonElement;
1993+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;
1994+
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Boolean;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$BooleanProperty;
19921995
public fun equals (Ljava/lang/Object;)Z
19931996
public final fun getDefault ()Ljava/lang/Boolean;
19941997
public final fun getDescription ()Ljava/lang/String;
19951998
public final fun getTitle ()Ljava/lang/String;
1999+
public fun get_meta ()Lkotlinx/serialization/json/JsonElement;
19962000
public fun hashCode ()I
19972001
public fun toString ()Ljava/lang/String;
19982002
}
@@ -2019,21 +2023,23 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Compa
20192023
public final class com/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty : com/agentclientprotocol/model/ElicitationPropertySchema {
20202024
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty$Companion;
20212025
public fun <init> ()V
2022-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;)V
2023-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2026+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Lkotlinx/serialization/json/JsonElement;)V
2027+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
20242028
public final fun component1 ()Ljava/lang/String;
20252029
public final fun component2 ()Ljava/lang/String;
20262030
public final fun component3 ()Ljava/lang/Long;
20272031
public final fun component4 ()Ljava/lang/Long;
20282032
public final fun component5 ()Ljava/lang/Long;
2029-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;
2030-
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;
2033+
public final fun component6 ()Lkotlinx/serialization/json/JsonElement;
2034+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;
2035+
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$IntegerProperty;
20312036
public fun equals (Ljava/lang/Object;)Z
20322037
public final fun getDefault ()Ljava/lang/Long;
20332038
public final fun getDescription ()Ljava/lang/String;
20342039
public final fun getMaximum ()Ljava/lang/Long;
20352040
public final fun getMinimum ()Ljava/lang/Long;
20362041
public final fun getTitle ()Ljava/lang/String;
2042+
public fun get_meta ()Lkotlinx/serialization/json/JsonElement;
20372043
public fun hashCode ()I
20382044
public fun toString ()Ljava/lang/String;
20392045
}
@@ -2056,21 +2062,23 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Integ
20562062
public final class com/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty : com/agentclientprotocol/model/ElicitationPropertySchema {
20572063
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty$Companion;
20582064
public fun <init> ()V
2059-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;)V
2060-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2065+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Lkotlinx/serialization/json/JsonElement;)V
2066+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
20612067
public final fun component1 ()Ljava/lang/String;
20622068
public final fun component2 ()Ljava/lang/String;
20632069
public final fun component3 ()Ljava/lang/Double;
20642070
public final fun component4 ()Ljava/lang/Double;
20652071
public final fun component5 ()Ljava/lang/Double;
2066-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;
2067-
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;
2072+
public final fun component6 ()Lkotlinx/serialization/json/JsonElement;
2073+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;
2074+
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Double;Ljava/lang/Double;Ljava/lang/Double;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$NumberProperty;
20682075
public fun equals (Ljava/lang/Object;)Z
20692076
public final fun getDefault ()Ljava/lang/Double;
20702077
public final fun getDescription ()Ljava/lang/String;
20712078
public final fun getMaximum ()Ljava/lang/Double;
20722079
public final fun getMinimum ()Ljava/lang/Double;
20732080
public final fun getTitle ()Ljava/lang/String;
2081+
public fun get_meta ()Lkotlinx/serialization/json/JsonElement;
20742082
public fun hashCode ()I
20752083
public fun toString ()Ljava/lang/String;
20762084
}
@@ -2093,9 +2101,10 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Numbe
20932101
public final class com/agentclientprotocol/model/ElicitationPropertySchema$StringProperty : com/agentclientprotocol/model/ElicitationPropertySchema {
20942102
public static final field Companion Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty$Companion;
20952103
public fun <init> ()V
2096-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
2097-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
2104+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;)V
2105+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
20982106
public final fun component1 ()Ljava/lang/String;
2107+
public final fun component10 ()Lkotlinx/serialization/json/JsonElement;
20992108
public final fun component2 ()Ljava/lang/String;
21002109
public final fun component3 ()Ljava/lang/Integer;
21012110
public final fun component4 ()Ljava/lang/Integer;
@@ -2104,8 +2113,8 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Strin
21042113
public final fun component7 ()Ljava/lang/String;
21052114
public final fun component8 ()Ljava/util/List;
21062115
public final fun component9 ()Ljava/util/List;
2107-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;
2108-
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;
2116+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;
2117+
public static synthetic fun copy$default (Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Lcom/agentclientprotocol/model/StringFormat;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Lkotlinx/serialization/json/JsonElement;ILjava/lang/Object;)Lcom/agentclientprotocol/model/ElicitationPropertySchema$StringProperty;
21092118
public fun equals (Ljava/lang/Object;)Z
21102119
public final fun getDefault ()Ljava/lang/String;
21112120
public final fun getDescription ()Ljava/lang/String;
@@ -2116,6 +2125,7 @@ public final class com/agentclientprotocol/model/ElicitationPropertySchema$Strin
21162125
public final fun getOneOf ()Ljava/util/List;
21172126
public final fun getPattern ()Ljava/lang/String;
21182127
public final fun getTitle ()Ljava/lang/String;
2128+
public fun get_meta ()Lkotlinx/serialization/json/JsonElement;
21192129
public fun hashCode ()I
21202130
public fun toString ()Ljava/lang/String;
21212131
}

acp-model/src/commonMain/kotlin/com/agentclientprotocol/model/Elicitation.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ public data class MultiSelectPropertySchema(
254254
@UnstableApi
255255
@Serializable
256256
@JsonClassDiscriminator("type")
257-
public sealed class ElicitationPropertySchema {
257+
public sealed class ElicitationPropertySchema : AcpWithMeta {
258258
@Serializable
259259
@SerialName("string")
260260
public data class StringProperty(
@@ -266,7 +266,8 @@ public sealed class ElicitationPropertySchema {
266266
val format: StringFormat? = null,
267267
val default: String? = null,
268268
@SerialName("enum") val enumValues: List<String>? = null,
269-
@SerialName("oneOf") val oneOf: List<EnumOption>? = null
269+
@SerialName("oneOf") val oneOf: List<EnumOption>? = null,
270+
override val _meta: JsonElement? = null
270271
) : ElicitationPropertySchema()
271272

272273
@Serializable
@@ -276,7 +277,8 @@ public sealed class ElicitationPropertySchema {
276277
val description: String? = null,
277278
val minimum: Double? = null,
278279
val maximum: Double? = null,
279-
val default: Double? = null
280+
val default: Double? = null,
281+
override val _meta: JsonElement? = null
280282
) : ElicitationPropertySchema()
281283

282284
@Serializable
@@ -286,15 +288,17 @@ public sealed class ElicitationPropertySchema {
286288
val description: String? = null,
287289
val minimum: Long? = null,
288290
val maximum: Long? = null,
289-
val default: Long? = null
291+
val default: Long? = null,
292+
override val _meta: JsonElement? = null
290293
) : ElicitationPropertySchema()
291294

292295
@Serializable
293296
@SerialName("boolean")
294297
public data class BooleanProperty(
295298
val title: String? = null,
296299
val description: String? = null,
297-
val default: Boolean? = null
300+
val default: Boolean? = null,
301+
override val _meta: JsonElement? = null
298302
) : ElicitationPropertySchema()
299303

300304
@Serializable
@@ -305,7 +309,8 @@ public sealed class ElicitationPropertySchema {
305309
val minItems: Long? = null,
306310
val maxItems: Long? = null,
307311
val items: MultiSelectItems,
308-
val default: List<String>? = null
312+
val default: List<String>? = null,
313+
override val _meta: JsonElement? = null
309314
) : ElicitationPropertySchema()
310315
}
311316

acp-model/src/commonTest/kotlin/com/agentclientprotocol/model/ElicitationSerializationTest.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.agentclientprotocol.rpc.ACPJson
55
import com.agentclientprotocol.rpc.RequestId
66
import kotlinx.serialization.json.JsonObject
77
import kotlinx.serialization.json.JsonPrimitive
8+
import kotlinx.serialization.json.boolean
89
import kotlinx.serialization.json.jsonArray
910
import kotlinx.serialization.json.jsonObject
1011
import kotlinx.serialization.json.jsonPrimitive
@@ -310,6 +311,38 @@ class ElicitationSerializationTest {
310311
assertEquals(3, stringProp.enumValues!!.size)
311312
}
312313

314+
@Test
315+
fun `schema property preserves meta`() {
316+
val schema = ElicitationSchema(
317+
properties = mapOf(
318+
"color__other1" to ElicitationPropertySchema.StringProperty(
319+
title = "Other",
320+
_meta = JsonObject(
321+
mapOf(
322+
"codex" to JsonObject(
323+
mapOf(
324+
"questionId" to JsonPrimitive("color"),
325+
"isOtherAnswer" to JsonPrimitive(true)
326+
)
327+
)
328+
)
329+
)
330+
)
331+
)
332+
)
333+
334+
val json = ACPJson.encodeToString(ElicitationSchema.serializer(), schema)
335+
val jsonObj = ACPJson.decodeFromString(JsonObject.serializer(), json)
336+
val meta = jsonObj["properties"]!!.jsonObject["color__other1"]!!.jsonObject["_meta"]!!.jsonObject
337+
338+
assertTrue(meta["codex"]!!.jsonObject["isOtherAnswer"]!!.jsonPrimitive.boolean)
339+
340+
val roundtripped = ACPJson.decodeFromString(ElicitationSchema.serializer(), json)
341+
val stringProp = roundtripped.properties["color__other1"]
342+
assertIs<ElicitationPropertySchema.StringProperty>(stringProp)
343+
assertTrue(stringProp._meta!!.jsonObject["codex"]!!.jsonObject["isOtherAnswer"]!!.jsonPrimitive.boolean)
344+
}
345+
313346
@Test
314347
fun `schema titled enum serialization`() {
315348
val schema = ElicitationSchema(

0 commit comments

Comments
 (0)