test(session): align turn-end contract artifacts

This commit is contained in:
_Kerman
2026-08-04 14:09:52 +08:00
parent d4fa26023d
commit e874910a76
186 changed files with 408 additions and 414 deletions

View File

@@ -130,7 +130,7 @@ function conversation(turns = 4, text = 'fixture '.repeat(40).trim()): Session {
}),
}, { surfaceOp: 'append' })
session.append('step/end', { turn, step: 1 })
session.append('turn/end', { turn, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn, reason: { kind: 'completed' } })
}
session.append('turn/start', {
turn: turns + 1,
@@ -180,7 +180,7 @@ function toolConversation(): Session {
}),
}, { surfaceOp: 'append' })
session.append('step/end', { turn, step: 1 })
session.append('turn/end', { turn, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn, reason: { kind: 'completed' } })
}
session.append('turn/start', { turn: 4 })
return session
@@ -226,7 +226,7 @@ function oversizedToolResult(chars = 3_000, withCompactablePrompt = false): Sess
meta: { presentation: 'preserved' },
}, { surfaceOp: 'append' })
session.append('step/end', { turn: 1, step: 1 })
session.append('turn/end', { turn: 1, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn: 1, reason: { kind: 'completed' } })
session.append('turn/start', { turn: 2 })
return session
}
@@ -935,7 +935,7 @@ describe('compaction region transaction', () => {
it('requires an open turn and an idle compaction bracket', async () => {
const compact = service()
const closed = conversation(1)
closed.append('turn/end', { turn: 2, step: 0, reason: { kind: 'completed' } })
closed.append('turn/end', { turn: 2, reason: { kind: 'completed' } })
const nodes = closed.surface.nodes
await expect(compact.compactRegion(
nodes[0]!,

View File

@@ -209,7 +209,7 @@ function overflowHistorySeed(): SessionEvent[] {
}),
}, { surfaceOp: 'append' })
session.append('step/end', { turn, step: 1 })
session.append('turn/end', { turn, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn, reason: { kind: 'completed' } })
}
return [...session.events]
}

View File

@@ -193,7 +193,7 @@ function closedConversation(turns = 2, lastTurnNumber = turns): Session {
}),
}, { surfaceOp: 'append' })
session.append('step/end', { turn, step: 1 })
session.append('turn/end', { turn, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn, reason: { kind: 'completed' } })
}
return session
}
@@ -437,7 +437,7 @@ describe('compactNow transaction and failure classification', () => {
const original = closedConversation(2)
original.append('compact/start', { turn: null })
original.append('turn/start', { turn: 3 })
original.append('turn/end', { turn: 3, step: 0, reason: { kind: 'interrupted' } })
original.append('turn/end', { turn: 3, reason: { kind: 'interrupted' } })
const reloaded = new Session(SessionId('reloaded-orphan'), [...original.events])
const agent = fakeAgent(reloaded, () => () => undefined)

View File

@@ -60,7 +60,7 @@ function appendToolStep(
...extra,
}, { surfaceOp: 'append' })
session.append('step/end', { turn, step: 1 })
session.append('turn/end', { turn, step: 1, reason: { kind: 'completed' } })
session.append('turn/end', { turn, reason: { kind: 'completed' } })
return result.seq
}

View File

@@ -90,7 +90,7 @@ describe('compaction invariants', () => {
expect(() => replayed.append(
'turn/end',
{ turn: 1, step: 0, reason: { kind: 'interrupted' } },
{ turn: 1, reason: { kind: 'interrupted' } },
)).not.toThrow()
})
@@ -100,7 +100,7 @@ describe('compaction invariants', () => {
const source = new Session(SessionId('stale-repaired-compaction-source'))
source.append('compact/start', { turn: null })
startTurn(source)
source.append('turn/end', { turn: 1, step: 0, reason: { kind: 'interrupted' } })
source.append('turn/end', { turn: 1, reason: { kind: 'interrupted' } })
const replayed = ctx.sessions.create(SessionId('stale-repaired-compaction-replay'), {
seed: source.events,
})
@@ -116,7 +116,7 @@ describe('compaction invariants', () => {
expect(() => {
startTurn(replayed, 2)
replayed.append('turn/end', { turn: 2, step: 0, reason: { kind: 'completed' } })
replayed.append('turn/end', { turn: 2, reason: { kind: 'completed' } })
}).not.toThrow()
})
@@ -126,7 +126,7 @@ describe('compaction invariants', () => {
const source = new Session(SessionId('closed-nested-compaction-source'))
source.append('compact/start', { turn: null })
startTurn(source)
source.append('turn/end', { turn: 1, step: 0, reason: { kind: 'interrupted' } })
source.append('turn/end', { turn: 1, reason: { kind: 'interrupted' } })
source.append('compact/end', { turn: null, error: 'failed after crossing turn' })
const replayed = ctx.sessions.create(SessionId('closed-nested-compaction-replay'), {
seed: source.events,
@@ -147,7 +147,7 @@ describe('compaction invariants', () => {
await ctx.plugin(InvariantService)
await ctx.plugin(CompactInvariant)
expect(() => session.append('compact/end', { turn: 1, error: 'resume failed' })).not.toThrow()
session.append('turn/end', { turn: 1, step: 0, reason: { kind: 'completed' } })
session.append('turn/end', { turn: 1, reason: { kind: 'completed' } })
})
it('adopts a bare session and ignores unrelated committed events', async () => {
@@ -200,7 +200,7 @@ describe('compaction invariants', () => {
await ctx.plugin(SessionStore)
const session = ctx.sessions.create()
startTurn(session)
session.append('turn/end', { turn: 1, step: 0, reason: { kind: 'completed' } })
session.append('turn/end', { turn: 1, reason: { kind: 'completed' } })
session.append('compact/start', { turn: 1 })
await ctx.plugin(InvariantService)
await expect(ctx.plugin(CompactInvariant).then(() => undefined)).rejects.toThrow(/outside any open turn/)
@@ -215,7 +215,7 @@ describe('compaction invariants', () => {
standalone.append('compact/end', { turn: null, error: 'cancelled' })
expect(() => {
startTurn(standalone)
standalone.append('turn/end', { turn: 1, step: 0, reason: { kind: 'completed' } })
standalone.append('turn/end', { turn: 1, reason: { kind: 'completed' } })
}).not.toThrow()
const numbered = ctx.sessions.create()
@@ -223,12 +223,12 @@ describe('compaction invariants', () => {
numbered.append('compact/start', { turn: 1 })
expect(() => numbered.append(
'turn/end',
{ turn: 1, step: 0, reason: { kind: 'completed' } },
{ turn: 1, reason: { kind: 'completed' } },
)).toThrow(/turn\/end cannot cross an open compaction for turn 1/)
numbered.append('compact/end', { turn: 1, error: 'cancelled' })
expect(() => numbered.append(
'turn/end',
{ turn: 1, step: 0, reason: { kind: 'completed' } },
{ turn: 1, reason: { kind: 'completed' } },
)).not.toThrow()
})

View File

@@ -271,7 +271,7 @@ describe('tool-pairing cache refresh', () => {
expect(eventIndexReads).toBe(3)
events.push({
type: 'turn/end', seq: 3, time: 3, data: { turn: 1, step: 0, reason: { kind: 'completed' } },
type: 'turn/end', seq: 3, time: 3, data: { turn: 1, reason: { kind: 'completed' } },
})
expect(toolPairingBalancedAfter(session, nodes[2]!)).toBe(true)
expect(eventCollectionReads).toBe(1)