Skip to content

Commit 89676c1

Browse files
committed
perf: skip deep clone per streaming token in ResponseMessage
1 parent d8e9a53 commit 89676c1

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

src/lib/components/chat/Messages/ResponseMessage.svelte

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,13 @@
133133
message.done !== source.done ||
134134
message.output?.length !== source.output?.length
135135
) {
136-
message = structuredClone(source);
136+
if (!message.done && source.done) {
137+
// done just flipped: full clone to snapshot final state (info, usage, etc.)
138+
message = structuredClone(source);
139+
} else {
140+
// mid-stream: shallow copy keeps all fields fresh without deep recursion
141+
message = { ...source };
142+
}
137143
} else if (!equal(message, source)) {
138144
// Slow path: full comparison for infrequent changes (sources, annotations, status, etc.)
139145
message = structuredClone(source);

0 commit comments

Comments
 (0)