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

This commit is contained in:
M57 authored and GitHub committed 2026-09-17 19:51:04 +03:00
1 parent 880adbef4f
commit 1ab30f1e90
9 files changed
+179 -42

No files matched your search

@@ -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()
/**