Skip to content

Commit 975f7e4

Browse files
committed
Fix and refactor StreamableHttpTransport
- add EventStore and support "Last-Event-ID" - Origin check - thread safety
1 parent 257929a commit 975f7e4

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
@@ -846,19 +846,12 @@ public final class io/modelcontextprotocol/kotlin/sdk/InitializedNotification$Co
846846

847847
public final class io/modelcontextprotocol/kotlin/sdk/JSONRPCError : io/modelcontextprotocol/kotlin/sdk/JSONRPCMessage {
848848
public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError$Companion;
849-
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
850-
public synthetic fun <init> (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
851-
public final fun component1 ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;
852-
public final fun component2 ()Ljava/lang/String;
853-
public final fun component3 ()Lkotlinx/serialization/json/JsonObject;
854-
public final fun copy (Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)Lio/modelcontextprotocol/kotlin/sdk/JSONRPCError;
855-
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;
856-
public fun equals (Ljava/lang/Object;)Z
849+
public fun <init> (Lio/modelcontextprotocol/kotlin/sdk/RequestId;Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
850+
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
857851
public final fun getCode ()Lio/modelcontextprotocol/kotlin/sdk/ErrorCode;
858852
public final fun getData ()Lkotlinx/serialization/json/JsonObject;
853+
public final fun getId ()Lio/modelcontextprotocol/kotlin/sdk/RequestId;
859854
public final fun getMessage ()Ljava/lang/String;
860-
public fun hashCode ()I
861-
public fun toString ()Ljava/lang/String;
862855
}
863856

864857
public final synthetic class io/modelcontextprotocol/kotlin/sdk/JSONRPCError$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
@@ -2807,6 +2800,11 @@ public final class io/modelcontextprotocol/kotlin/sdk/client/WebSocketMcpKtorCli
28072800
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;
28082801
}
28092802

2803+
public abstract interface class io/modelcontextprotocol/kotlin/sdk/server/EventStore {
2804+
public abstract fun replayEventsAfter (Ljava/lang/String;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2805+
public abstract fun storeEvent (Ljava/lang/String;Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2806+
}
2807+
28102808
public final class io/modelcontextprotocol/kotlin/sdk/server/KtorServerKt {
28112809
public static final fun MCP (Lio/ktor/server/application/Application;Lkotlin/jvm/functions/Function0;)V
28122810
public static final fun mcp (Lio/ktor/server/application/Application;Lkotlin/jvm/functions/Function0;)V
@@ -2918,15 +2916,19 @@ public final class io/modelcontextprotocol/kotlin/sdk/server/StdioServerTranspor
29182916
}
29192917

29202918
public final class io/modelcontextprotocol/kotlin/sdk/server/StreamableHttpServerTransport : io/modelcontextprotocol/kotlin/sdk/shared/AbstractTransport {
2919+
public static final field STANDALONE_SSE_STREAM_ID Ljava/lang/String;
29212920
public fun <init> ()V
2922-
public fun <init> (ZZ)V
2923-
public synthetic fun <init> (ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
2921+
public fun <init> (ZZLjava/util/List;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/server/EventStore;)V
2922+
public synthetic fun <init> (ZZLjava/util/List;Ljava/util/List;Lio/modelcontextprotocol/kotlin/sdk/server/EventStore;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
29242923
public fun close (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
29252924
public final fun getSessionId ()Ljava/lang/String;
29262925
public final fun handleDeleteRequest (Lio/ktor/server/application/ApplicationCall;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
29272926
public final fun handleGetRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
29282927
public final fun handlePostRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2928+
public final fun handleRequest (Lio/ktor/server/application/ApplicationCall;Lio/ktor/server/sse/ServerSSESession;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
29292929
public fun send (Lio/modelcontextprotocol/kotlin/sdk/JSONRPCMessage;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2930+
public final fun setSessionIdGenerator (Lkotlin/jvm/functions/Function0;)V
2931+
public final fun setSessionInitialized (Lkotlin/jvm/functions/Function1;)V
29302932
public fun start (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
29312933
}
29322934

0 commit comments

Comments
 (0)