fix(observabilidade): stream cleanup, outcome logic e NaN guard no parser

This commit is contained in:
2026-04-23 00:50:33 +01:00
parent 26b631bbd6
commit bd954f4841
2 changed files with 100 additions and 70 deletions
+21
View File
@@ -76,4 +76,25 @@ describe('parseSessionFile', () => {
const result = await parseSessionFile(path)
expect(result.meta.user_messages).toBe(1)
})
it('devolve duration_sec null quando timestamps são inválidos', async () => {
const path = writeJsonl([
{ type: 'user', timestamp: 'not-a-date', message: { role: 'user', content: [{ type: 'text', text: 'a' }] } },
{ type: 'assistant', timestamp: 'also-not-a-date', message: { role: 'assistant', content: [{ type: 'text', text: 'b' }] } },
])
const result = await parseSessionFile(path)
expect(result.meta.duration_sec).toBeNull()
})
it('classifica max_tokens como interrupted', async () => {
const path = writeJsonl([
{
type: 'assistant',
timestamp: '2026-04-23T10:00:00Z',
message: { role: 'assistant', content: [{ type: 'text', text: 'resposta cortada' }], stop_reason: 'max_tokens' },
},
])
const result = await parseSessionFile(path)
expect(result.meta.outcome).toBe('interrupted')
})
})