refactor(#1375): typed params for session.interrupt, steer, redirect (#1382)

This commit is contained in:
m57 authored and GitHub committed 2026-09-29 17:02:32 +03:00
1 parent a780df3261
commit aac42032fb
9 files changed
+480 -22

No files matched your search

@@ -13,6 +13,7 @@ import com.m57.hermescontrol.data.session.ActiveSessionHolder
import com.m57.hermescontrol.data.ws.contract.PromptSubmitParams
import com.m57.hermescontrol.data.ws.contract.RpcMethod
import com.m57.hermescontrol.data.ws.contract.RpcMethods
import com.m57.hermescontrol.data.ws.contract.SessionCorrectionParams
import com.m57.hermescontrol.data.ws.contract.SessionEventsSinceParams
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CompletableDeferred
@@ -1115,8 +1116,12 @@ object HermesWsClient {
onSent: ((String) -> Unit)? = null,
): String =
send(
method = WsMethods.SESSION_REDIRECT,
params = mapOf("session_id" to sessionId, "text" to text),
method = RpcMethods.SESSION_REDIRECT,
params =
SessionCorrectionParams(
sessionId = sessionId,
text = text,
),
onSent = onSent,
)
@@ -38,6 +38,27 @@ object RpcMethods {
PromptSubmitResult.serializer(),
)
val SESSION_INTERRUPT: RpcMethod<SessionInterruptParams, SessionInterruptResult> =
RpcMethod(
WsMethods.SESSION_INTERRUPT,
SessionInterruptParams.serializer(),
SessionInterruptResult.serializer(),
)
val SESSION_STEER: RpcMethod<SessionCorrectionParams, SessionCorrectionResult> =
RpcMethod(
WsMethods.SESSION_STEER,
SessionCorrectionParams.serializer(),
SessionCorrectionResult.serializer(),
)
val SESSION_REDIRECT: RpcMethod<SessionCorrectionParams, SessionCorrectionResult> =
RpcMethod(
WsMethods.SESSION_REDIRECT,
SessionCorrectionParams.serializer(),
SessionCorrectionResult.serializer(),
)
/** Every typed method. GatewayContractTest iterates this; future migrations append here. */
val all: List<RpcMethod<*, *>> =
listOf(
@@ -45,5 +66,8 @@ object RpcMethods {
SESSION_CREATE,
SESSION_RESUME,
PROMPT_SUBMIT,
SESSION_INTERRUPT,
SESSION_STEER,
SESSION_REDIRECT,
)
}
@@ -0,0 +1,26 @@
package com.m57.hermescontrol.data.ws.contract
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class SessionInterruptParams(
@SerialName("session_id") val sessionId: String,
)
@Serializable
data class SessionCorrectionParams(
@SerialName("session_id") val sessionId: String,
@SerialName("text") val text: String,
)
@Serializable
data class SessionInterruptResult(
val status: String? = null,
)
@Serializable
data class SessionCorrectionResult(
val status: String? = null,
val text: String? = null,
)