Skip to content

Commit 0579f6c

Browse files
committed
Refactor StdioClientTransport: add structured concurrency, error handling, and support for optional error stream. Update dependencies in libs.versions.toml.
1 parent cc9b50f commit 0579f6c

File tree

8 files changed

+301
-78
lines changed

8 files changed

+301
-78
lines changed

gradle/libs.versions.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@ binaryCompatibilityValidatorPlugin = "0.18.1"
1111
openapi-generator = "7.17.0"
1212

1313
# libraries version
14-
serialization = "1.9.0"
14+
awaitility = "4.3.0"
1515
collections-immutable = "0.4.0"
1616
coroutines = "1.10.2"
17+
kotest = "6.0.7"
1718
kotlinx-io = "0.8.2"
1819
ktor = "3.2.3"
1920
logging = "7.0.13"
20-
slf4j = "2.0.17"
21-
kotest = "6.0.7"
22-
awaitility = "4.3.0"
21+
mockk = "1.14.6"
2322
mokksy = "0.6.2"
23+
serialization = "1.9.0"
24+
slf4j = "2.0.17"
2425

2526
[libraries]
2627
# Plugins
@@ -53,6 +54,7 @@ kotest-assertions-json = { group = "io.kotest", name = "kotest-assertions-json",
5354
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" }
5455
ktor-client-mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" }
5556
ktor-server-test-host = { group = "io.ktor", name = "ktor-server-test-host", version.ref = "ktor" }
57+
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
5658
mokksy = { group = "dev.mokksy", name = "mokksy", version.ref = "mokksy" }
5759
netty-bom = { group = "io.netty", name = "netty-bom", version.ref = "netty" }
5860
slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }

kotlin-sdk-client/api/kotlin-sdk-client.api

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/KtorClientKt {
6262
public static synthetic fun mcpSseTransport-5_5nbZA$default (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/time/Duration;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/client/SseClientTransport;
6363
}
6464

65+
public final class io/modelcontextprotocol/kotlin/sdk/client/OldStdioClientTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport {
66+
public fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;)V
67+
public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
68+
public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lio/modelcontextprotocol/kotlin/sdk/shared/TransportSendOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
69+
public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
70+
}
71+
6572
public final class io/modelcontextprotocol/kotlin/sdk/client/SseClientTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport {
6673
public synthetic fun <init> (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/time/Duration;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
6774
public synthetic fun <init> (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/time/Duration;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -71,7 +78,12 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/SseClientTransport
7178
}
7279

7380
public final class io/modelcontextprotocol/kotlin/sdk/client/StdioClientTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport {
81+
public static final field BUFFER_SIZE J
7482
public fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;)V
83+
public fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;Lkotlinx/io/Source;)V
84+
public fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;Lkotlinx/io/Source;Lkotlinx/coroutines/channels/Channel;)V
85+
public fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;Lkotlinx/io/Source;Lkotlinx/coroutines/channels/Channel;Lkotlin/jvm/functions/Function1;)V
86+
public synthetic fun <init> (Lkotlinx/io/Source;Lkotlinx/io/Sink;Lkotlinx/io/Source;Lkotlinx/coroutines/channels/Channel;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
7587
public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7688
public fun send (Lio/modelcontextprotocol/kotlin/sdk/types/JSONRPCMessage;Lio/modelcontextprotocol/kotlin/sdk/shared/TransportSendOptions;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7789
public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

kotlin-sdk-client/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,20 @@ kotlin {
4141
commonTest {
4242
dependencies {
4343
implementation(kotlin("test"))
44-
implementation(libs.ktor.client.mock)
45-
implementation(libs.ktor.server.websockets)
44+
implementation(libs.kotest.assertions.core)
4645
implementation(libs.kotlinx.coroutines.test)
4746
implementation(libs.ktor.client.logging)
47+
implementation(libs.ktor.client.mock)
48+
implementation(libs.ktor.server.websockets)
4849
}
4950
}
5051

5152
jvmTest {
5253
dependencies {
53-
implementation(libs.mokksy)
5454
implementation(libs.awaitility)
5555
implementation(libs.ktor.client.apache5)
56+
implementation(libs.mockk)
57+
implementation(libs.mokksy)
5658
implementation(dependencies.platform(libs.netty.bom))
5759
runtimeOnly(libs.slf4j.simple)
5860
}

0 commit comments

Comments
 (0)