fix(#1174): preserve pending process state and match tool events by ID (#1180)

This commit is contained in:
M57
2026-09-17 19:51:04 +03:00
committed by GitHub
parent 880adbef4f
commit 1ab30f1e90
9 changed files with 179 additions and 42 deletions
@@ -128,14 +128,16 @@ object EventParser {
}
"tool.progress" -> {
val toolId = payload?.get("tool_id") as? String
val name = payload?.get("name") as? String
val preview = payload?.get("preview") as? String
WsEvent.ToolProgress(name, preview, sessionId)
WsEvent.ToolProgress(name, preview, sessionId, toolId)
}
"tool.generating" -> {
val toolId = payload?.get("tool_id") as? String
val name = payload?.get("name") as? String
WsEvent.ToolGenerating(name, sessionId)
WsEvent.ToolGenerating(name, sessionId, toolId)
}
"subagent.spawn_requested", "subagent.start", "subagent.progress", "subagent.complete" -> {
@@ -104,23 +104,25 @@ sealed class WsEvent {
* Live tool execution progress with optional preview content.
*
* Events: `tool.progress`
* Payload: `{ name?: string, preview?: string }`
* Payload: `{ tool_id?: string, name?: string, preview?: string }`
*/
data class ToolProgress(
val name: String? = null,
val preview: String? = null,
val sessionId: String? = null,
val toolId: String? = null,
) : WsEvent()
/**
* Tool generation active state.
*
* Events: `tool.generating`
* Payload: `{ name?: string }`
* Payload: `{ tool_id?: string, name?: string }`
*/
data class ToolGenerating(
val name: String? = null,
val sessionId: String? = null,
val toolId: String? = null,
) : WsEvent()
/**