From 5d7b5e6bd2a894fa8ba581a4c561f633fe5a117b Mon Sep 17 00:00:00 2001 From: "n8n-cat-bot[bot]" <283985454+n8n-cat-bot[bot]@users.noreply.github.com> Date: Mon, 25 May 2026 17:32:45 +0100 Subject: [PATCH] test(ai-workflow-builder): Use checkpointer.getTuple in checkpoint- (#31081) Co-authored-by: n8n-cat-bot[bot] --- .../src/test/checkpoint-persistence.test.ts | 24 ++----------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/packages/@n8n/ai-workflow-builder.ee/src/test/checkpoint-persistence.test.ts b/packages/@n8n/ai-workflow-builder.ee/src/test/checkpoint-persistence.test.ts index d4f1b10b2c4..e193be63d9b 100644 --- a/packages/@n8n/ai-workflow-builder.ee/src/test/checkpoint-persistence.test.ts +++ b/packages/@n8n/ai-workflow-builder.ee/src/test/checkpoint-persistence.test.ts @@ -11,7 +11,6 @@ */ import { AIMessage, HumanMessage } from '@langchain/core/messages'; import type { BaseMessage } from '@langchain/core/messages'; -import type { CheckpointTuple } from '@langchain/langgraph'; import { Annotation, Command, @@ -42,30 +41,11 @@ async function getCheckpointMessages( checkpointer: MemorySaver, threadId: string, ): Promise { - let latestTuple: CheckpointTuple | undefined; - for await (const tuple of checkpointer.list({ configurable: { thread_id: threadId } })) { - if (!latestTuple || isLaterCheckpoint(tuple, latestTuple)) latestTuple = tuple; - } - - const messages = latestTuple?.checkpoint?.channel_values?.messages; + const tuple = await checkpointer.getTuple({ configurable: { thread_id: threadId } }); + const messages = tuple?.checkpoint?.channel_values?.messages; return Array.isArray(messages) ? (messages as BaseMessage[]) : []; } -function isLaterCheckpoint(candidate: CheckpointTuple, current: CheckpointTuple): boolean { - const candidateStep = getCheckpointStep(candidate); - const currentStep = getCheckpointStep(current); - - if (candidateStep !== currentStep) return candidateStep > currentStep; - - return candidate.checkpoint.ts > current.checkpoint.ts; -} - -function getCheckpointStep(tuple: CheckpointTuple): number { - const step = tuple.metadata?.step; - - return typeof step === 'number' ? step : Number.NEGATIVE_INFINITY; -} - // ============================================================================ // Tests // ============================================================================