Preserve suppressed item progress without tool callbacks

This commit is contained in:
Kelaw - Keshav's Agent
2026-05-06 11:26:58 +05:30
committed by Peter Steinberger
parent 09d7e7f461
commit e51090e6a1
2 changed files with 53 additions and 1 deletions

View File

@@ -1194,6 +1194,54 @@ describe("runAgentTurnWithFallback", () => {
});
});
it("preserves suppressed item progress when no tool-start callback is registered", async () => {
const onItemEvent = vi.fn();
state.runEmbeddedPiAgentMock.mockImplementationOnce(async (params: EmbeddedAgentParams) => {
await params.onAgentEvent?.({
stream: "item",
data: {
itemId: "cmd-1",
kind: "command",
title: "Command",
name: "bash",
phase: "start",
status: "running",
suppressChannelProgress: true,
},
});
await params.onAgentEvent?.({
stream: "tool",
data: {
itemId: "cmd-1",
toolCallId: "cmd-1",
name: "bash",
phase: "start",
args: { command: "pnpm test" },
},
});
return { payloads: [{ text: "final" }], meta: {} };
});
const runAgentTurnWithFallback = await getRunAgentTurnWithFallback();
const result = await runAgentTurnWithFallback({
...createMinimalRunAgentTurnParams({
opts: {
onItemEvent,
} satisfies GetReplyOptions,
}),
});
expect(result.kind).toBe("success");
expect(onItemEvent).toHaveBeenCalledWith({
itemId: "cmd-1",
kind: "command",
title: "Command",
name: "bash",
phase: "start",
status: "running",
});
});
it("forwards raw tool progress detail mode to tool-start reply options", async () => {
const onToolStart = vi.fn();
state.runEmbeddedPiAgentMock.mockImplementationOnce(async (params: EmbeddedAgentParams) => {

View File

@@ -1675,7 +1675,11 @@ export async function runAgentTurnWithFallback(params: {
]);
}
}
if (evt.stream === "item" && evt.data.suppressChannelProgress !== true) {
const suppressItemChannelProgress =
evt.stream === "item" &&
evt.data.suppressChannelProgress === true &&
Boolean(params.opts?.onToolStart);
if (evt.stream === "item" && !suppressItemChannelProgress) {
await params.opts?.onItemEvent?.({
itemId: readStringValue(evt.data.itemId),
kind: readStringValue(evt.data.kind),