import { test } from 'node:test'; import assert from 'node:assert/strict'; import { parseTrailers, agentSlug } from '../src/lib/trailers.js'; test('parses standard Co-Authored-By trailer', () => { const msg = 'fix: thing\n\nCo-Authored-By: Claude Fable 5 '; assert.deepEqual(parseTrailers(msg), [{ name: 'Claude Fable 5', email: 'noreply@anthropic.com' }]); }); test('case-insensitive and tolerant spacing', () => { const msg = 'x\nco-authored-by: Codex Bot '; assert.deepEqual(parseTrailers(msg), [{ name: 'Codex Bot', email: 'codex@openai.com' }]); }); test('multiple distinct trailers', () => { const msg = 'x\nCo-Authored-By: A \nCo-Authored-By: B '; assert.equal(parseTrailers(msg).length, 2); }); test('dedupes identical trailers', () => { const msg = 'x\nCo-Authored-By: A \nCo-authored-by: A '; assert.equal(parseTrailers(msg).length, 1); }); test('trailer without email', () => { const msg = 'x\nCo-Authored-By: Mystery Agent'; assert.deepEqual(parseTrailers(msg), [{ name: 'Mystery Agent', email: '' }]); }); test('ignores non-trailer lines', () => { assert.deepEqual(parseTrailers('Co-Authored-By appears in prose but not as trailer: nope\nplain line'), []); assert.deepEqual(parseTrailers(''), []); assert.deepEqual(parseTrailers(null), []); }); test('agentSlug from email localpart', () => { assert.equal(agentSlug({ name: 'Claude Fable 5', email: 'noreply@anthropic.com' }), 'noreply'); }); test('agentSlug from name when no email', () => { assert.equal(agentSlug({ name: 'My Agent!', email: '' }), 'my-agent'); });