From ed837ba8580add190853854281e50ccd0cd68659 Mon Sep 17 00:00:00 2001 From: SeanChinJunKai Date: Wed, 9 Apr 2025 12:00:40 +0800 Subject: [PATCH 1/2] feat: add message field to ProgressNotification to provide descriptive status updates --- .../kotlin/sdk/shared/Protocol.kt | 3 ++- .../io/modelcontextprotocol/kotlin/sdk/types.kt | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt index d9808ff..7553bf1 100644 --- a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt +++ b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/Protocol.kt @@ -260,6 +260,7 @@ public abstract class Protocol( LOGGER.trace { "Received progress notification: token=${notification.progressToken}, progress=${notification.progress}/${notification.total}" } val progress = notification.progress val total = notification.total + val message = notification.message val progressToken = notification.progressToken val handler = progressHandlers[progressToken] @@ -272,7 +273,7 @@ public abstract class Protocol( return } - handler.invoke(Progress(progress, total)) + handler.invoke(Progress(progress, total, message)) } private fun onResponse(response: JSONRPCResponse?, error: JSONRPCError?) { diff --git a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt index d2fa2cb..33b0fb2 100644 --- a/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt +++ b/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types.kt @@ -510,6 +510,11 @@ public sealed interface ProgressBase { * Total number of items to a process (or total progress required), if known. */ public val total: Double? + + /** + * An optional message describing the current progress. + */ + public val message: String? } /* Progress notifications */ @@ -530,6 +535,11 @@ public open class Progress( * Total number of items to a process (or total progress required), if known. */ override val total: Double?, + + /** + * An optional message describing the current progress. + */ + override val message: String?, ) : ProgressBase /** @@ -546,6 +556,7 @@ public data class ProgressNotification( public val progressToken: ProgressToken, @Suppress("PropertyName") val _meta: JsonObject = EmptyJsonObject, override val total: Double?, + override val message: String?, ) : ClientNotification, ServerNotification, ProgressBase { override val method: Method = Method.Defined.NotificationsProgress } From 6ceae041744484e8e2367c06464def2a10f9c76c Mon Sep 17 00:00:00 2001 From: SeanChinJunKai Date: Wed, 30 Apr 2025 12:56:47 +0800 Subject: [PATCH 2/2] chore: commit api dump --- api/kotlin-sdk.api | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/api/kotlin-sdk.api b/api/kotlin-sdk.api index 4f0b20c..de3497f 100644 --- a/api/kotlin-sdk.api +++ b/api/kotlin-sdk.api @@ -1485,8 +1485,9 @@ public final class io/modelcontextprotocol/kotlin/sdk/PingRequest$Companion { public class io/modelcontextprotocol/kotlin/sdk/Progress : io/modelcontextprotocol/kotlin/sdk/ProgressBase { public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/Progress$Companion; - public synthetic fun (IILjava/lang/Double;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V - public fun (ILjava/lang/Double;)V + public synthetic fun (IILjava/lang/Double;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V + public fun (ILjava/lang/Double;Ljava/lang/String;)V + public fun getMessage ()Ljava/lang/String; public fun getProgress ()I public fun getTotal ()Ljava/lang/Double; public static final synthetic fun write$Self (Lio/modelcontextprotocol/kotlin/sdk/Progress;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V @@ -1509,6 +1510,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/Progress$Companion { public abstract interface class io/modelcontextprotocol/kotlin/sdk/ProgressBase { public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion; + public abstract fun getMessage ()Ljava/lang/String; public abstract fun getProgress ()I public abstract fun getTotal ()Ljava/lang/Double; } @@ -1519,15 +1521,17 @@ public final class io/modelcontextprotocol/kotlin/sdk/ProgressBase$Companion { public final class io/modelcontextprotocol/kotlin/sdk/ProgressNotification : io/modelcontextprotocol/kotlin/sdk/ClientNotification, io/modelcontextprotocol/kotlin/sdk/ProgressBase, io/modelcontextprotocol/kotlin/sdk/ServerNotification { public static final field Companion Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification$Companion; - public fun (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;)V - public synthetic fun (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;Ljava/lang/String;)V + public synthetic fun (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun component1 ()I public final fun component2 ()Lio/modelcontextprotocol/kotlin/sdk/RequestId; public final fun component3 ()Lkotlinx/serialization/json/JsonObject; public final fun component4 ()Ljava/lang/Double; - public final fun copy (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; - public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification;ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; + public final fun component5 ()Ljava/lang/String; + public final fun copy (ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;Ljava/lang/String;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; + public static synthetic fun copy$default (Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification;ILio/modelcontextprotocol/kotlin/sdk/RequestId;Lkotlinx/serialization/json/JsonObject;Ljava/lang/Double;Ljava/lang/String;ILjava/lang/Object;)Lio/modelcontextprotocol/kotlin/sdk/ProgressNotification; public fun equals (Ljava/lang/Object;)Z + public fun getMessage ()Ljava/lang/String; public fun getMethod ()Lio/modelcontextprotocol/kotlin/sdk/Method; public fun getProgress ()I public final fun getProgressToken ()Lio/modelcontextprotocol/kotlin/sdk/RequestId;