From 491454e18ed0253ba3ec0208ec009c5038b82321 Mon Sep 17 00:00:00 2001 From: Simon Klee Date: Sat, 18 Apr 2026 14:10:44 +0200 Subject: [PATCH] deduplicate sameTab --- .../src/cli/cmd/run/stream.transport.ts | 21 ++----------------- .../opencode/src/cli/cmd/run/subagent-data.ts | 6 +++--- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run/stream.transport.ts b/packages/opencode/src/cli/cmd/run/stream.transport.ts index 15f902bde1..bb8bb9a459 100644 --- a/packages/opencode/src/cli/cmd/run/stream.transport.ts +++ b/packages/opencode/src/cli/cmd/run/stream.transport.ts @@ -29,6 +29,7 @@ import { listSubagentQuestions, listSubagentTabs, reduceSubagentData, + sameSubagentTab, snapshotSelectedSubagentData, snapshotSubagentData, SUBAGENT_BOOTSTRAP_LIMIT, @@ -305,30 +306,12 @@ function composeFooter(input: { return footer } -function sameTab(a: FooterSubagentTab | undefined, b: FooterSubagentTab | undefined) { - if (!a || !b) { - return false - } - - return ( - a.sessionID === b.sessionID && - a.partID === b.partID && - a.callID === b.callID && - a.label === b.label && - a.description === b.description && - a.status === b.status && - a.title === b.title && - a.toolCalls === b.toolCalls && - a.lastUpdatedAt === b.lastUpdatedAt - ) -} - function traceTabs(trace: Trace | undefined, prev: FooterSubagentTab[], next: FooterSubagentTab[]) { const before = new Map(prev.map((item) => [item.sessionID, item])) const after = new Map(next.map((item) => [item.sessionID, item])) for (const [sessionID, tab] of after) { - if (sameTab(before.get(sessionID), tab)) { + if (sameSubagentTab(before.get(sessionID), tab)) { continue } diff --git a/packages/opencode/src/cli/cmd/run/subagent-data.ts b/packages/opencode/src/cli/cmd/run/subagent-data.ts index 38e409f33a..c1093b1799 100644 --- a/packages/opencode/src/cli/cmd/run/subagent-data.ts +++ b/packages/opencode/src/cli/cmd/run/subagent-data.ts @@ -67,8 +67,8 @@ function ensureDetail(data: SubagentData, sessionID: string) { return next } -function sameTab(a: FooterSubagentTab | undefined, b: FooterSubagentTab) { - if (!a) { +export function sameSubagentTab(a: FooterSubagentTab | undefined, b: FooterSubagentTab | undefined) { + if (!a || !b) { return false } @@ -280,7 +280,7 @@ function syncTaskTab(data: SubagentData, part: ToolPart, children?: Set) } const next = taskTab(part, sessionID) - if (sameTab(data.tabs.get(sessionID), next)) { + if (sameSubagentTab(data.tabs.get(sessionID), next)) { ensureDetail(data, sessionID) return false }