fix(coding-agent): preserve compaction queue behavior (#6730)
This commit is contained in:
@@ -4044,10 +4044,12 @@ export class InteractiveMode {
|
|||||||
await this.session.prompt(message.text);
|
await this.session.prompt(message.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send first prompt (starts streaming)
|
// Start a prompt when idle, or queue it into a run still finishing compaction.
|
||||||
const promptPromise = this.session.prompt(firstPrompt.text).catch((error) => {
|
const promptPromise = this.session
|
||||||
restoreQueue(error);
|
.prompt(firstPrompt.text, { streamingBehavior: firstPrompt.mode })
|
||||||
});
|
.catch((error) => {
|
||||||
|
restoreQueue(error);
|
||||||
|
});
|
||||||
|
|
||||||
// Queue remaining messages
|
// Queue remaining messages
|
||||||
for (const message of rest) {
|
for (const message of rest) {
|
||||||
|
|||||||
@@ -56,4 +56,30 @@ describe("InteractiveMode compaction events", () => {
|
|||||||
);
|
);
|
||||||
expect(fakeThis.flushCompactionQueue).toHaveBeenCalledWith({ willRetry: false });
|
expect(fakeThis.flushCompactionQueue).toHaveBeenCalledWith({ willRetry: false });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("preserves steering behavior when flushing into an active agent run", async () => {
|
||||||
|
const fakeThis = {
|
||||||
|
compactionQueuedMessages: [{ text: "change direction", mode: "steer" as const }],
|
||||||
|
session: {
|
||||||
|
clearQueue: vi.fn(),
|
||||||
|
prompt: vi.fn().mockResolvedValue(undefined),
|
||||||
|
steer: vi.fn().mockResolvedValue(undefined),
|
||||||
|
followUp: vi.fn().mockResolvedValue(undefined),
|
||||||
|
},
|
||||||
|
isExtensionCommand: vi.fn().mockReturnValue(false),
|
||||||
|
updatePendingMessagesDisplay: vi.fn(),
|
||||||
|
showError: vi.fn(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const flushCompactionQueue = Reflect.get(InteractiveMode.prototype, "flushCompactionQueue") as (
|
||||||
|
this: typeof fakeThis,
|
||||||
|
options?: { willRetry?: boolean },
|
||||||
|
) => Promise<void>;
|
||||||
|
|
||||||
|
await flushCompactionQueue.call(fakeThis, { willRetry: false });
|
||||||
|
|
||||||
|
expect(fakeThis.session.prompt).toHaveBeenCalledWith("change direction", { streamingBehavior: "steer" });
|
||||||
|
expect(fakeThis.compactionQueuedMessages).toEqual([]);
|
||||||
|
expect(fakeThis.showError).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user