delegation-banner.test.ts
1 import { describe, it } from 'node:test' 2 import assert from 'node:assert/strict' 3 import { parseTaskCompletion } from './delegation-banner' 4 5 describe('parseTaskCompletion', () => { 6 it('extracts output files and report path from completion payload', () => { 7 const text = [ 8 'Task completed: **[Build docs](#task:abc12345)**', 9 '', 10 'Working directory: `/tmp/work`', 11 '', 12 'Output files:', 13 '- `docs/guide.md`', 14 '- `docs/faq.md`', 15 '', 16 'Task report: `data/task-reports/abc12345.md`', 17 '', 18 'Done.', 19 ].join('\n') 20 const parsed = parseTaskCompletion(text) 21 assert.ok(parsed) 22 assert.deepEqual(parsed?.outputFiles, ['docs/guide.md', 'docs/faq.md']) 23 assert.equal(parsed?.reportPath, 'data/task-reports/abc12345.md') 24 assert.equal(parsed?.workingDir, '/tmp/work') 25 }) 26 27 it('captures Gemini resume lines from task completion payloads', () => { 28 const text = [ 29 'Task completed: **[Ship follow-up](#task:task-gemini)**', 30 '', 31 'Gemini session: `gemini-session-7`', 32 '', 33 'All done.', 34 ].join('\n') 35 const parsed = parseTaskCompletion(text) 36 37 assert.ok(parsed) 38 assert.equal(parsed?.resumeInfo, 'Gemini session: `gemini-session-7`') 39 }) 40 })