mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 10:50:44 +00:00
fix: preserve post-stream error payloads (#67991)
* fix(reply): preserve post-stream error payloads * fix: preserve post-stream error payloads (#67991)
This commit is contained in:
@@ -210,6 +210,32 @@ describe("buildReplyPayloads media filter integration", () => {
|
||||
expect(replyPayloads).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("preserves post-stream error payloads when block pipeline streamed successfully", async () => {
|
||||
const pipeline: Parameters<typeof buildReplyPayloads>[0]["blockReplyPipeline"] = {
|
||||
didStream: () => true,
|
||||
isAborted: () => false,
|
||||
hasSentPayload: () => false,
|
||||
enqueue: () => {},
|
||||
flush: async () => {},
|
||||
stop: () => {},
|
||||
hasBuffered: () => false,
|
||||
};
|
||||
|
||||
const { replyPayloads } = await buildReplyPayloads({
|
||||
...baseParams,
|
||||
blockStreamingEnabled: true,
|
||||
blockReplyPipeline: pipeline,
|
||||
replyToMode: "all",
|
||||
payloads: [{ text: "Agent couldn't generate a response. Please try again.", isError: true }],
|
||||
});
|
||||
|
||||
expect(replyPayloads).toHaveLength(1);
|
||||
expect(replyPayloads[0]).toMatchObject({
|
||||
text: "Agent couldn't generate a response. Please try again.",
|
||||
isError: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("drops all final payloads during silent turns, including media-only payloads", async () => {
|
||||
const { replyPayloads } = await buildReplyPayloads({
|
||||
...baseParams,
|
||||
|
||||
@@ -215,7 +215,7 @@ export async function buildReplyPayloads(params: {
|
||||
: dedupedPayloads;
|
||||
// Filter out payloads already sent via pipeline or directly during tool flush.
|
||||
const filteredPayloads = shouldDropFinalPayloads
|
||||
? []
|
||||
? mediaFilteredPayloads.filter((payload) => payload.isError)
|
||||
: params.blockStreamingEnabled
|
||||
? mediaFilteredPayloads.filter(
|
||||
(payload) => !params.blockReplyPipeline?.hasSentPayload(payload),
|
||||
|
||||
Reference in New Issue
Block a user