From 2e2bcd0e4269d11606ea2a87be24702c825b35ad Mon Sep 17 00:00:00 2001 From: _Kerman Date: Mon, 3 Aug 2026 19:54:32 +0800 Subject: [PATCH] test(session): cover the turn/end step invariant and content shape guard - invariant.spec: a turn/end whose step does not match the last opened step fails with 'expected last step'. - session.spec: a seed message whose content is not an array fails with 'message has invalid content'. --- packages/core/session/tests/invariant.spec.ts | 7 +++++++ packages/core/session/tests/session.spec.ts | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/core/session/tests/invariant.spec.ts b/packages/core/session/tests/invariant.spec.ts index 61f017e275..1c6ca93fb7 100644 --- a/packages/core/session/tests/invariant.spec.ts +++ b/packages/core/session/tests/invariant.spec.ts @@ -131,6 +131,13 @@ describe('session-log invariants', () => { expect(() => second.append('turn/start', { turn: 3 })) .toThrow(/expected turn 2, got 3/) + const third = (await setup()).ctx.sessions.create() + third.append('turn/start', { turn: 1 }) + third.append('step/start', { turn: 1, step: 1 }) + third.append('step/end', { turn: 1, step: 1 }) + expect(() => third.append('turn/end', { turn: 1, step: 2, reason: { kind: 'completed' } })) + .toThrow(/expected last step 1, got 2/) + const outside = (await setup()).ctx.sessions.create() expect(() => outside.append('user/message', createUserMessage({ content: [{ type: 'text', text: 'idle context' }], diff --git a/packages/core/session/tests/session.spec.ts b/packages/core/session/tests/session.spec.ts index 7bacb5263d..0c5ccb7130 100644 --- a/packages/core/session/tests/session.spec.ts +++ b/packages/core/session/tests/session.spec.ts @@ -232,6 +232,14 @@ describe('Session', () => { }, message: 'message has invalid source', }, + { + name: 'content shape', + event: { + type: 'user/message', seq: 0, time: 1, surfaceOp: 'append', + data: { ...user, content: 'not-an-array' }, + }, + message: 'message has invalid content', + }, { name: 'assistant source', event: {