fix: address 5 edge cases from review-work findings

- C3: include command args in auto-slash-command dedup key
- H2: track completed task summaries for ALL COMPLETE message
- H9: increment tmux close retry count on re-mark
- H8: detect stale MCP connections after disconnect+reconnect race
- H8: guard disconnectedSessions growth for non-MCP sessions
- C1: await tmux cleanup in plugin dispose lifecycle
This commit is contained in:
YeonGyu-Kim
2026-03-11 20:39:03 +09:00
parent b8aea50dfa
commit 03eaa429ce
9 changed files with 53 additions and 12 deletions
+15 -2
View File
@@ -121,6 +121,7 @@ export class BackgroundManager {
private queuesByKey: Map<string, QueueItem[]> = new Map()
private processingKeys: Set<string> = new Set()
private completionTimers: Map<string, ReturnType<typeof setTimeout>> = new Map()
private completedTaskSummaries: Map<string, Array<{id: string, description: string}>> = new Map()
private idleDeferralTimers: Map<string, ReturnType<typeof setTimeout>> = new Map()
private notificationQueueByParent: Map<string, Promise<void>> = new Map()
private rootDescendantCounts: Map<string, number>
@@ -1379,6 +1380,14 @@ export class BackgroundManager {
})
}
if (!this.completedTaskSummaries.has(task.parentSessionID)) {
this.completedTaskSummaries.set(task.parentSessionID, [])
}
this.completedTaskSummaries.get(task.parentSessionID)!.push({
id: task.id,
description: task.description,
})
// Update pending tracking and check if all tasks complete
const pendingSet = this.pendingByParent.get(task.parentSessionID)
let allComplete = false
@@ -1398,10 +1407,13 @@ export class BackgroundManager {
}
const completedTasks = allComplete
? Array.from(this.tasks.values())
.filter(t => t.parentSessionID === task.parentSessionID && t.status !== "running" && t.status !== "pending")
? (this.completedTaskSummaries.get(task.parentSessionID) ?? [{ id: task.id, description: task.description }])
: []
if (allComplete) {
this.completedTaskSummaries.delete(task.parentSessionID)
}
const statusText = task.status === "completed"
? "COMPLETED"
: task.status === "interrupt"
@@ -1740,6 +1752,7 @@ Use \`background_output(task_id="${task.id}")\` to retrieve this result when rea
this.queuesByKey.clear()
this.processingKeys.clear()
this.taskHistory.clearAll()
this.completedTaskSummaries.clear()
this.unregisterProcessCleanup()
log("[background-agent] Shutdown complete")