fix(webui): keep tool activity in one thought block

This commit is contained in:
Xubin Ren
2026-06-02 16:18:57 +08:00
parent fd61203be4
commit a371907809
2 changed files with 8 additions and 5 deletions
+6 -1
View File
@@ -132,7 +132,12 @@ function pushActivityUnits(units: TurnUnit[], activityMessages: UIMessage[], vis
for (const message of activityMessages) {
const bucket = isFileEditActivityMessage(message) ? "file" : "other";
const segmentId = message.activitySegmentId;
const segmentChanged = !!runSegmentId && !!segmentId && runSegmentId !== segmentId;
const segmentChanged =
bucket === "file"
&& runBucket === "file"
&& !!runSegmentId
&& !!segmentId
&& runSegmentId !== segmentId;
if ((runBucket && bucket !== runBucket) || segmentChanged) {
flushRun();
}
+2 -4
View File
@@ -102,7 +102,7 @@ describe("ThreadMessages", () => {
expect(units[2].type === "activity" ? units[2].messages.map((m) => m.id) : []).toEqual(["r2"]);
});
it("splits ordinary tool activity when segment ids changed", () => {
it("keeps ordinary tool activity in one Thought block across segment ids", () => {
const messages: UIMessage[] = [
{
id: "r1",
@@ -142,12 +142,10 @@ describe("ThreadMessages", () => {
const units = buildDisplayUnits(messages);
expect(units).toHaveLength(2);
expect(units).toHaveLength(1);
expect(units[0].type === "activity" ? units[0].messages.map((m) => m.id) : []).toEqual([
"r1",
"t1",
]);
expect(units[1].type === "activity" ? units[1].messages.map((m) => m.id) : []).toEqual([
"r2",
"t2",
]);