task-result.test.ts
1 import { describe, it } from 'node:test' 2 import assert from 'node:assert/strict' 3 import { extractTaskResult } from '@/lib/server/tasks/task-result' 4 5 describe('extractTaskResult', () => { 6 it('limits artifact extraction to messages from the current run window', () => { 7 const messages = [ 8 { 9 role: 'assistant', 10 time: 1_000, 11 text: 'old run artifact: /api/uploads/wiki-old.png', 12 }, 13 { 14 role: 'assistant', 15 time: 2_000, 16 text: 'new run artifact: /api/uploads/wiki-new.png', 17 }, 18 ] 19 20 const result = extractTaskResult(messages, 'done', { sinceTime: 1_500 }) 21 assert.deepEqual(result.artifacts.map((a) => a.url), ['/api/uploads/wiki-new.png']) 22 }) 23 24 it('excludes messages without timestamps when sinceTime is provided', () => { 25 const messages = [ 26 { 27 role: 'assistant', 28 text: 'undated artifact: /api/uploads/undated.png', 29 }, 30 { 31 role: 'assistant', 32 time: 5_000, 33 text: 'dated artifact: /api/uploads/dated.png', 34 }, 35 ] 36 37 const result = extractTaskResult(messages, 'done', { sinceTime: 4_000 }) 38 assert.deepEqual(result.artifacts.map((a) => a.url), ['/api/uploads/dated.png']) 39 }) 40 })