


























@@ -228,10 +228,7 @@ describe("createLaneTextDeliverer", () => {
228228expect(answer.update).toHaveBeenCalledWith(previousBlock);
229229expect(answer.update).not.toHaveBeenCalledWith(nextAssistantBlock);
230230expect(harness.clearDraftLane).toHaveBeenCalledTimes(1);
231-expect(harness.sendPayload).toHaveBeenCalledWith(
232-{ text: previousBlock },
233-{ durable: false },
234-);
231+expect(harness.sendPayload).toHaveBeenCalledWith({ text: previousBlock }, { durable: false });
235232expect(harness.sendPayload).not.toHaveBeenCalledWith(
236233{ text: nextAssistantBlock },
237234expect.anything(),
@@ -924,7 +921,7 @@ describe("createLaneTextDeliverer", () => {
924921expect(harness.markDelivered).toHaveBeenCalledTimes(1);
925922});
926923927-it("does not resend chunks retained while stopping a long streamed final", async () => {
924+it("sends chunks after the reported delivered text when stop advances the retained index", async () => {
928925const answer = createTestDraftStream({ messageId: 999 });
929926const harness = createHarness({
930927answerStream: answer,
@@ -940,11 +937,35 @@ describe("createLaneTextDeliverer", () => {
940937941938const delivery = expectPreviewFinalized(result);
942939expect(delivery.content).toBe("Hello world again");
943-expect(harness.sendPayload).toHaveBeenCalledTimes(1);
944-expect(harness.sendPayload).toHaveBeenCalledWith({ text: " again" });
940+expect(delivery.promptContextContent).toBe("Hello");
941+expect(harness.sendPayload).toHaveBeenCalledTimes(2);
942+expect(harness.sendPayload).toHaveBeenNthCalledWith(1, { text: " world" });
943+expect(harness.sendPayload).toHaveBeenNthCalledWith(2, { text: " again" });
945944expect(harness.markDelivered).toHaveBeenCalledTimes(1);
946945});
947946947+it("does not skip middle chunks when stop advances past the reported delivered chunk", async () => {
948+const answer = createTestDraftStream({ messageId: 999 });
949+const harness = createHarness({
950+answerStream: answer,
951+draftMaxChars: 6,
952+splitFinalTextForStream: () => ["chunk0", "chunk1", "chunk2", "chunk3"],
953+});
954+harness.lanes.answer.hasStreamedMessage = true;
955+answer.stop.mockImplementation(async () => {
956+harness.lanes.answer.activeChunkIndex = 2;
957+});
958+959+const result = await deliverFinalAnswer(harness, "chunk0chunk1chunk2chunk3");
960+961+const delivery = expectPreviewFinalized(result);
962+expect(delivery.promptContextContent).toBe("chunk0");
963+expect(harness.sendPayload).toHaveBeenCalledTimes(3);
964+expect(harness.sendPayload).toHaveBeenNthCalledWith(1, { text: "chunk1" });
965+expect(harness.sendPayload).toHaveBeenNthCalledWith(2, { text: "chunk2" });
966+expect(harness.sendPayload).toHaveBeenNthCalledWith(3, { text: "chunk3" });
967+});
968+948969it("compares retained delivered prefixes against the full final text", async () => {
949970let deliveredText = "Hello";
950971const answer = createTestDraftStream({ messageId: 999 });
@@ -995,11 +1016,15 @@ describe("createLaneTextDeliverer", () => {
9951016expect(harness.editStreamMessage).toHaveBeenCalledWith({
9961017laneName: "answer",
9971018messageId: 999,
998-text: " world",
1019+text: "Hello",
9991020 buttons,
10001021});
1001-expect(harness.sendPayload).toHaveBeenCalledTimes(1);
1002-expect(harness.sendPayload).toHaveBeenCalledWith({
1022+expect(harness.sendPayload).toHaveBeenCalledTimes(2);
1023+expect(harness.sendPayload).toHaveBeenNthCalledWith(1, {
1024+text: " world",
1025+channelData: { telegram: { buttons } },
1026+});
1027+expect(harness.sendPayload).toHaveBeenNthCalledWith(2, {
10031028text: " again",
10041029channelData: { telegram: { buttons } },
10051030});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。