Skip to content

Commit 2737ae4

Browse files
committed
Fix and refactor StreamableHttpTransport
- add EventStore and support "Last-Event-ID" - Origin check - thread safety
1 parent b7937f9 commit 2737ae4

File tree

5 files changed

+394
-245
lines changed

5 files changed

+394
-245
lines changed

api/kotlin-sdk.api

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -959,19 +959,12 @@ public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Co
959959

960960
public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCError : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage {
961961
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError$Companion;
962-
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
963-
public synthetic fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
964-
public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;
965-
public final fun component2 ()Ljava/lang/String;
966-
public final fun component3 ()Lkotlinx/serialization/json/JsonObject;
967-
public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;
968-
public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;
969-
public fun equals (Ljava/lang/Object;)Z
962+
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
963+
public synthetic fun <init> (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
970964
public final fun getCode ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;
971965
public final fun getData ()Lkotlinx/serialization/json/JsonObject;
966+
public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/RequestId;
972967
public final fun getMessage ()Ljava/lang/String;
973-
public fun hashCode ()I
974-
public fun toString ()Ljava/lang/String;
975968
}
976969

977970
public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCError$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
@@ -2922,6 +2915,11 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorCli
29222915
public static synthetic fun mcpWebSocketTransport$default (Lio/ktor/client/HttpClient;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/client/WebSocketClientTransport;
29232916
}
29242917

2918+
public abstract interface class io/modelcontextprotocol/kotlin/sdk/server/EventStore {
2919+
public abstract fun replayEventsAfter (Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2920+
public abstract fun storeEvent (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2921+
}
2922+
29252923
public final class io/modelcontextprotocol/kotlin/sdk/server/KtorServerKt {
29262924
public static final fun MCP (Lio/ktor/server/application/Application;Lkotlin/jvm/functions/Function0;)V
29272925
public static final fun mcp (Lio/ktor/server/application/Application;Lkotlin/jvm/functions/Function0;)V
@@ -3035,15 +3033,19 @@ public final class io/modelcontextprotocol/kotlin/sdk/server/StdioServerTranspor
30353033
}
30363034

30373035
public final class io/modelcontextprotocol/kotlin/sdk/server/StreamableHttpServerTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport {
3036+
public static final field STANDALONE_SSE_STREAM_ID Ljava/lang/String;
30383037
public fun <init> ()V
3039-
public fun <init> (ZZ)V
3040-
public synthetic fun <init> (ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
3038+
public fun <init> (ZZLjava/util/List;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/server/EventStore;)V
3039+
public synthetic fun <init> (ZZLjava/util/List;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/server/EventStore;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
30413040
public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
30423041
public final fun getSessionId ()Ljava/lang/String;
30433042
public final fun handleDeleteRequest (Lio/ktor/server/application/ApplicationCall;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
30443043
public final fun handleGetRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
30453044
public final fun handlePostRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3045+
public final fun handleRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
30463046
public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3047+
public final fun setSessionIdGenerator (Lkotlin/jvm/functions/Function0;)V
3048+
public final fun setSessionInitialized (Lkotlin/jvm/functions/Function1;)V
30473049
public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
30483050
}
30493051

0 commit comments

Comments
 (0)