fix: complete immutable message migration

This commit is contained in:
_Kerman
2026-07-28 14:15:23 +08:00
parent f5ec71f5b1
commit 350c296cff
27 changed files with 231 additions and 60 deletions

View File

@@ -364,7 +364,7 @@ describe('toPiContext', () => {
it.each([
['provider', { ...validReplay, provider: 'openai' }],
['model', { ...validReplay, model: 'deepseek-v4-pro' }],
])('rejects replay metadata whose %s differs from assistant provenance', (field, replayState) => {
])('rejects replay metadata whose %s differs from assistant source', (field, replayState) => {
try {
toPiContext({
provider: 'deepseek',
@@ -382,7 +382,7 @@ describe('toPiContext', () => {
} catch (error: unknown) {
expect(error).toBeInstanceOf(LlmError)
expect((error as LlmError).code).toBe('INVALID_REPLAY_STATE')
expect((error as Error).message).toContain(`${field} does not match assistant provenance`)
expect((error as Error).message).toContain(`${field} does not match assistant source`)
}
})

View File

@@ -216,9 +216,10 @@ describe('provider-routed retry policy', () => {
expect(agent.session.events.filter(item => item.type === 'step/start').map(item => item.data))
.toEqual([{ turn: 1, step: 1 }, { turn: 2, step: 1 }])
expect(agent.session.deriveMessages().at(-1)).toEqual({
id: expect.any(String) as unknown,
role: 'assistant',
content: [{ type: 'text', text: 'done' }],
provenance: { provider: 'mock', model: 'mock' },
source: { kind: 'model', provider: 'mock', model: 'mock' },
})
})
@@ -296,7 +297,7 @@ describe('provider-routed retry policy', () => {
expect(agent.session.deriveMessages().at(-1)).toMatchObject({
role: 'assistant',
content: [{ type: 'text', text: 'recovered' }],
provenance: { provider: 'mock', model: 'mock' },
source: { kind: 'model', provider: 'mock', model: 'mock' },
})
})

View File

@@ -128,8 +128,8 @@ export function createAssistantMessage(
role: 'assistant',
content: input.content,
source: {
...input.source,
kind: 'model',
...input.source,
},
})
}