




















@@ -425,6 +425,7 @@ describe("installContextEngineLoopHook", () => {
425425messages: AgentMessage[];
426426prePromptMessageCount: number;
427427}) => Record<string, unknown> | undefined,
428+onAfterTurnCheckpoint?: (messageCount: number) => void,
428429): () => void {
429430return installContextEngineLoopHook({
430431 agent,
@@ -436,6 +437,7 @@ describe("installContextEngineLoopHook", () => {
436437 modelId,
437438 ...(prePromptCount !== undefined ? { getPrePromptMessageCount: () => prePromptCount } : {}),
438439 ...(getRuntimeContext ? { getRuntimeContext } : {}),
440+ ...(onAfterTurnCheckpoint ? { onAfterTurnCheckpoint } : {}),
439441});
440442}
441443@@ -572,6 +574,22 @@ describe("installContextEngineLoopHook", () => {
572574expect(engine.afterTurn.mock.calls[1]?.[0]?.prePromptMessageCount).toBe(4);
573575});
574576577+it("reports the latest delivered afterTurn checkpoint", async () => {
578+const agent = makeGuardableAgent();
579+const engine = makeMockEngine();
580+const onAfterTurnCheckpoint = vi.fn();
581+installHook(agent, engine, undefined, undefined, onAfterTurnCheckpoint);
582+583+const batch0 = [makeUser("h1"), makeToolResult("c1", "r1")];
584+await callTransform(agent, batch0);
585+586+const batch1 = [...batch0, makeUser("h2"), makeToolResult("c2", "r2")];
587+await callTransform(agent, batch1);
588+589+expect(onAfterTurnCheckpoint).toHaveBeenCalledTimes(1);
590+expect(onAfterTurnCheckpoint).toHaveBeenCalledWith(batch1.length);
591+});
592+575593it("skips afterTurn and assemble when messages have not changed", async () => {
576594const agent = makeGuardableAgent();
577595const engine = makeMockEngine();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。