mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:50:43 +00:00
fix(discord): seed progress drafts at dispatch start
This commit is contained in:
@@ -70,6 +70,7 @@ export function createDiscordDraftPreviewController(params: {
|
||||
let hasStreamedMessage = false;
|
||||
let finalizedViaPreviewMessage = false;
|
||||
let finalDeliveryHandled = false;
|
||||
let progressDraftStarted = false;
|
||||
const previewToolProgressEnabled =
|
||||
Boolean(draftStream) && resolveChannelStreamingPreviewToolProgress(params.discordConfig);
|
||||
const suppressDefaultToolProgressMessages =
|
||||
@@ -116,6 +117,9 @@ export function createDiscordDraftPreviewController(params: {
|
||||
if (!draftStream || discordStreamMode !== "progress") {
|
||||
return;
|
||||
}
|
||||
if (progressDraftStarted) {
|
||||
return;
|
||||
}
|
||||
const previewText = formatChannelProgressDraftText({
|
||||
entry: params.discordConfig,
|
||||
lines: [],
|
||||
@@ -124,6 +128,7 @@ export function createDiscordDraftPreviewController(params: {
|
||||
if (!previewText || previewText === lastPartialText) {
|
||||
return;
|
||||
}
|
||||
progressDraftStarted = true;
|
||||
lastPartialText = previewText;
|
||||
draftText = previewText;
|
||||
hasStreamedMessage = true;
|
||||
|
||||
@@ -1477,6 +1477,29 @@ describe("processDiscordMessage draft streaming", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("starts Discord progress drafts when accepted turns dispatch", async () => {
|
||||
const draftStream = createMockDraftStreamForTest();
|
||||
|
||||
dispatchInboundMessage.mockImplementationOnce(async () => createNoQueuedDispatchResult());
|
||||
|
||||
const ctx = await createAutomaticSourceDeliveryContext({
|
||||
discordConfig: {
|
||||
streaming: {
|
||||
mode: "progress",
|
||||
progress: {
|
||||
label: "Shelling",
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await runProcessDiscordMessage(ctx);
|
||||
|
||||
expect(draftStream.update).toHaveBeenCalledTimes(1);
|
||||
expect(draftStream.update).toHaveBeenCalledWith("Shelling");
|
||||
expect(draftStream.flush).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("keeps standalone Discord tool progress when partial preview lines are disabled", async () => {
|
||||
createMockDraftStreamForTest();
|
||||
|
||||
|
||||
@@ -618,8 +618,9 @@ export async function processDiscordMessage(
|
||||
limit: historyLimit,
|
||||
},
|
||||
onPreDispatchFailure: settleDispatchBeforeStart,
|
||||
runDispatch: () =>
|
||||
dispatchInboundMessage({
|
||||
runDispatch: async () => {
|
||||
await draftPreview.startProgressDraft();
|
||||
return await dispatchInboundMessage({
|
||||
ctx: ctxPayload,
|
||||
cfg,
|
||||
dispatcher,
|
||||
@@ -712,7 +713,8 @@ export async function processDiscordMessage(
|
||||
await statusReactions.setThinking();
|
||||
},
|
||||
},
|
||||
}),
|
||||
});
|
||||
},
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user