refactor(agents): dedupe subagent announce flow

This commit is contained in:
Peter Steinberger
2026-02-15 06:17:40 +00:00
parent bdc3e447e9
commit 26bf041add
+27 -56
View File
@@ -53,25 +53,9 @@ function suppressAnnounceForSteerRestart(entry?: SubagentRunRecord) {
return entry?.suppressAnnounceReason === "steer-restart";
}
function resumeSubagentRun(runId: string) {
if (!runId || resumedRuns.has(runId)) {
return;
}
const entry = subagentRuns.get(runId);
if (!entry) {
return;
}
if (entry.cleanupCompletedAt) {
return;
}
if (typeof entry.endedAt === "number" && entry.endedAt > 0) {
if (suppressAnnounceForSteerRestart(entry)) {
resumedRuns.add(runId);
return;
}
function startSubagentAnnounceCleanupFlow(runId: string, entry: SubagentRunRecord): boolean {
if (!beginSubagentCleanup(runId)) {
return;
return false;
}
const requesterOrigin = normalizeDeliveryContext(entry.requesterOrigin);
void runSubagentAnnounceFlow({
@@ -91,6 +75,29 @@ function resumeSubagentRun(runId: string) {
}).then((didAnnounce) => {
finalizeSubagentCleanup(runId, entry.cleanup, didAnnounce);
});
return true;
}
function resumeSubagentRun(runId: string) {
if (!runId || resumedRuns.has(runId)) {
return;
}
const entry = subagentRuns.get(runId);
if (!entry) {
return;
}
if (entry.cleanupCompletedAt) {
return;
}
if (typeof entry.endedAt === "number" && entry.endedAt > 0) {
if (suppressAnnounceForSteerRestart(entry)) {
resumedRuns.add(runId);
return;
}
if (!startSubagentAnnounceCleanupFlow(runId, entry)) {
return;
}
resumedRuns.add(runId);
return;
}
@@ -237,27 +244,9 @@ function ensureListener() {
return;
}
if (!beginSubagentCleanup(evt.runId)) {
if (!startSubagentAnnounceCleanupFlow(evt.runId, entry)) {
return;
}
const requesterOrigin = normalizeDeliveryContext(entry.requesterOrigin);
void runSubagentAnnounceFlow({
childSessionKey: entry.childSessionKey,
childRunId: entry.runId,
requesterSessionKey: entry.requesterSessionKey,
requesterOrigin,
requesterDisplayKey: entry.requesterDisplayKey,
task: entry.task,
timeoutMs: SUBAGENT_ANNOUNCE_TIMEOUT_MS,
cleanup: entry.cleanup,
waitForCompletion: false,
startedAt: entry.startedAt,
endedAt: entry.endedAt,
label: entry.label,
outcome: entry.outcome,
}).then((didAnnounce) => {
finalizeSubagentCleanup(evt.runId, entry.cleanup, didAnnounce);
});
});
}
@@ -507,27 +496,9 @@ async function waitForSubagentCompletion(runId: string, waitTimeoutMs: number) {
if (suppressAnnounceForSteerRestart(entry)) {
return;
}
if (!beginSubagentCleanup(runId)) {
if (!startSubagentAnnounceCleanupFlow(runId, entry)) {
return;
}
const requesterOrigin = normalizeDeliveryContext(entry.requesterOrigin);
void runSubagentAnnounceFlow({
childSessionKey: entry.childSessionKey,
childRunId: entry.runId,
requesterSessionKey: entry.requesterSessionKey,
requesterOrigin,
requesterDisplayKey: entry.requesterDisplayKey,
task: entry.task,
timeoutMs: SUBAGENT_ANNOUNCE_TIMEOUT_MS,
cleanup: entry.cleanup,
waitForCompletion: false,
startedAt: entry.startedAt,
endedAt: entry.endedAt,
label: entry.label,
outcome: entry.outcome,
}).then((didAnnounce) => {
finalizeSubagentCleanup(runId, entry.cleanup, didAnnounce);
});
} catch {
// ignore
}