Skip to content

Commit 73e0a4e

Browse files
committed
Optimize thought completion marking from O(n²) to O(n)
1 parent ea2b062 commit 73e0a4e

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

apps/code/src/renderer/features/sessions/components/buildConversationItems.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,19 @@ function isThoughtItem(
9898
}
9999

100100
function markThoughtCompletion(items: ConversationItem[]) {
101+
const seenContexts = new Set<TurnContext>();
102+
101103
for (let i = items.length - 1; i >= 0; i--) {
102104
const item = items[i];
103-
if (!isThoughtItem(item)) continue;
104105

105-
const hasSubsequentItem = items
106-
.slice(i + 1)
107-
.some(
108-
(next) =>
109-
next.type === "session_update" &&
110-
next.turnContext === item.turnContext,
111-
);
106+
if (isThoughtItem(item)) {
107+
item.thoughtComplete =
108+
seenContexts.has(item.turnContext) || item.turnContext.turnComplete;
109+
}
112110

113-
item.thoughtComplete = hasSubsequentItem || item.turnContext.turnComplete;
111+
if (item.type === "session_update") {
112+
seenContexts.add(item.turnContext);
113+
}
114114
}
115115
}
116116

0 commit comments

Comments
 (0)