feat(server): add utility functions for CallToolResult (#73)
* feat(server): add utility functions for CallToolResult CallToolResult.Companion.ok and CallToolResult.Companion.error * test(server): add unit test for `CallToolResult.Companion.ok`and `CallToolResult.Companion.error` * feat: update api dump --------- Co-authored-by: Leonid Stashevsky <e5l@users.noreply.github.com>
This commit is contained in:
parent
d7b31aa37b
commit
129731c34c
3 changed files with 92 additions and 1 deletions
|
|
@ -2492,6 +2492,13 @@ public final class io/modelcontextprotocol/kotlin/sdk/TypesKt {
|
|||
public static final fun getSUPPORTED_PROTOCOL_VERSIONS ()[Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class io/modelcontextprotocol/kotlin/sdk/Types_utilKt {
|
||||
public static final fun error (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;
|
||||
public static synthetic fun error$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;
|
||||
public static final fun ok (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;
|
||||
public static synthetic fun ok$default (Lio/modelcontextprotocol/kotlin/sdk/CallToolResult$Companion;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/CallToolResult;
|
||||
}
|
||||
|
||||
public final class io/modelcontextprotocol/kotlin/sdk/UnknownContent : io/modelcontextprotocol/kotlin/sdk/PromptMessageContentTextOrImage {
|
||||
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/UnknownContent$Companion;
|
||||
public fun <init> (Ljava/lang/String;)V
|
||||
|
|
|
|||
|
|
@ -294,4 +294,24 @@ public class RequestIdSerializer : KSerializer<RequestId> {
|
|||
is RequestId.NumberId -> jsonEncoder.encodeLong(value.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a [CallToolResult] with single [TextContent] and [meta].
|
||||
*/
|
||||
public fun CallToolResult.Companion.ok(content: String, meta: JsonObject = EmptyJsonObject): CallToolResult =
|
||||
CallToolResult(
|
||||
content = listOf(TextContent(content)),
|
||||
isError = false,
|
||||
_meta = meta
|
||||
)
|
||||
|
||||
/**
|
||||
* Creates a [CallToolResult] with single [TextContent] and [meta], with `isError` being true.
|
||||
*/
|
||||
public fun CallToolResult.Companion.error(content: String, meta: JsonObject = EmptyJsonObject): CallToolResult =
|
||||
CallToolResult(
|
||||
content = listOf(TextContent(content)),
|
||||
isError = true,
|
||||
_meta = meta
|
||||
)
|
||||
64
src/commonTest/kotlin/CallToolResultUtilsTest.kt
Normal file
64
src/commonTest/kotlin/CallToolResultUtilsTest.kt
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
package io.modelcontextprotocol.kotlin.sdk
|
||||
|
||||
import kotlinx.serialization.json.JsonPrimitive
|
||||
import kotlinx.serialization.json.buildJsonObject
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class CallToolResultUtilsTest {
|
||||
|
||||
@Test
|
||||
fun testOkWithOnlyText() {
|
||||
val content = "TextMessage"
|
||||
val result = CallToolResult.Companion.ok(content)
|
||||
|
||||
assertEquals(1, result.content.size)
|
||||
assertEquals(content, (result.content[0] as TextContent).text)
|
||||
assertFalse(result.isError == true)
|
||||
assertEquals(EmptyJsonObject, result._meta)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testOkWithMeta() {
|
||||
val content = "TextMessageWithMeta"
|
||||
val meta = buildJsonObject {
|
||||
put("key1", JsonPrimitive("value1"))
|
||||
put("key2", JsonPrimitive(42))
|
||||
}
|
||||
val result = CallToolResult.Companion.ok(content, meta)
|
||||
|
||||
assertEquals(1, result.content.size)
|
||||
assertEquals(content, (result.content[0] as TextContent).text)
|
||||
assertFalse(result.isError == true)
|
||||
assertEquals(meta, result._meta)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testErrorWithOnlyText() {
|
||||
val content = "ErrorMessage"
|
||||
val result = CallToolResult.Companion.error(content)
|
||||
|
||||
assertEquals(1, result.content.size)
|
||||
assertEquals(content, (result.content[0] as TextContent).text)
|
||||
assertTrue(result.isError == true)
|
||||
assertEquals(EmptyJsonObject, result._meta)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testErrorWithMeta() {
|
||||
val content = "ErrorMessageWithMeta"
|
||||
val meta = buildJsonObject {
|
||||
put("errorCode", JsonPrimitive(404))
|
||||
put("errorDetail", JsonPrimitive("资源未找到"))
|
||||
}
|
||||
val result = CallToolResult.Companion.error(content, meta)
|
||||
|
||||
assertEquals(1, result.content.size)
|
||||
assertEquals(content, (result.content[0] as TextContent).text)
|
||||
assertTrue(result.isError == true)
|
||||
assertEquals(meta, result._meta)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in a new issue