import { buildSubagentEvidenceSummary, normalizeSubagentToolResults, } from '../src/modules/netaclaw/service/subagent_evidence.js'; describe('subagent evidence summary', () => { it('normalizes valid tool results and drops empty items', () => { expect(normalizeSubagentToolResults([ { name: 'find_files', result: 'a.jpg', toolCallId: 'call-1' }, { name: 'bash', result: '' }, { name: 1 as any, result: 'ignored' }, ] as any)).toEqual([ { name: 'find_files', result: 'a.jpg', toolCallId: 'call-1', label: undefined }, ]); }); it('builds file-count evidence for image tasks', () => { expect(buildSubagentEvidenceSummary( { goal: 'Count image files on desktop', context: 'Use tools', }, [ { name: 'find_files', result: ['C:\\Users\\lixin\\Desktop\\1.jpg', 'C:\\Users\\lixin\\Desktop\\2.png'].join('\n'), }, ] )).toEqual({ kind: 'file-count', title: '图片文件统计', count: 2, files: ['1.jpg', '2.png'], summary: ['根据工具结果统计,图片文件共 2 个。', '- 1.jpg', '- 2.png'].join('\n'), }); }); it('falls back to tool previews for non-file-count evidence', () => { expect(buildSubagentEvidenceSummary( { goal: 'Summarize command output', context: 'Use bash', }, [ { name: 'bash', result: 'line one\nline two\nline three', }, ] )).toEqual({ kind: 'tool-preview', title: '工具证据摘要', summary: ['子代理已完成工具检查,但未输出最终结论。以下是可用工具证据摘要:', '- bash: line one line two line three'].join('\n'), previews: ['- bash: line one line two line three'], }); }); });