diff --git a/src/components/ChatBox/MessageItem/TaskWorkLogAccordion.tsx b/src/components/ChatBox/MessageItem/TaskWorkLogAccordion.tsx index ab628de4..5f797b20 100644 --- a/src/components/ChatBox/MessageItem/TaskWorkLogAccordion.tsx +++ b/src/components/ChatBox/MessageItem/TaskWorkLogAccordion.tsx @@ -138,6 +138,10 @@ type ToolItem = { method: string; /** Concatenated input + output (markdown-rendered when expanded). */ detail: string; + /** The tool call request/arguments (from ACTIVATE_TOOLKIT). */ + input: string; + /** The tool call response/result (from DEACTIVATE_TOOLKIT). */ + output: string; status: 'running' | 'done'; }; @@ -285,6 +289,8 @@ export function buildAgentBlocks( toolkitName: name, method, detail: rawMsg, + input: rawMsg, + output: '', status: 'running', }); return; @@ -296,6 +302,7 @@ export function buildAgentBlocks( if (it.status !== 'running') continue; if (it.toolkitName !== name || it.method !== method) continue; it.status = 'done'; + it.output = [it.output, rawMsg].filter(Boolean).join('\n\n').trim(); it.detail = [it.detail, rawMsg].filter(Boolean).join('\n\n').trim(); break; } @@ -417,6 +424,8 @@ export function buildAgentBlocks( toolkitName: name, method, detail: rawMsg, + input: rawMsg, + output: '', status: 'running', }); continue; @@ -437,6 +446,7 @@ export function buildAgentBlocks( if (it.status !== 'running') continue; if (it.toolkitName !== name || it.method !== method) continue; it.status = 'done'; + it.output = [it.output, msg].filter(Boolean).join('\n\n').trim(); it.detail = [it.detail, msg].filter(Boolean).join('\n\n').trim(); break; } @@ -647,31 +657,33 @@ function useWorkLogElapsedMs( const ToolDetailRow = memo(function ToolDetailRow({ rowTitle, - detail, + input, + output, status, }: { rowTitle: string; - detail: string; + input: string; + output: string; status: 'running' | 'done'; }) { const [open, setOpen] = useState(false); return ( -
+
@@ -838,7 +869,7 @@ const AgentBlockRow = memo(function AgentBlockRow({ transition={HEIGHT_MOTION} className="min-w-0 overflow-hidden" > -
+
{block.items.map((item) => item.kind === 'message' ? ( +

Waiting for tool calls…

)} @@ -949,23 +981,23 @@ const AgentGroupRow = memo(function AgentGroupRow({ const headerText = headerParts.join(' '); return ( -
+
@@ -1016,7 +1048,7 @@ const AgentGroupRow = memo(function AgentGroupRow({ transition={HEIGHT_MOTION} className="min-w-0 overflow-hidden" > -
+
{group.items.map((item) => item.kind === 'message' ? ( +

Waiting for tool calls…

)} @@ -1201,12 +1234,12 @@ export function TaskWorkLogAccordion({ const timeLabel = formatSplittingElapsed(elapsedMs); return ( -
+
@@ -1259,7 +1292,7 @@ export function TaskWorkLogAccordion({ transition={HEIGHT_MOTION} className="overflow-hidden" > -
+
{effectiveGroups.map((entry) => entry.kind === 'agent-group' ? ( ( diff --git a/test/unit/components/TaskWorkLogAccordion.test.tsx b/test/unit/components/TaskWorkLogAccordion.test.tsx index 4c6dba9a..f2cf181d 100644 --- a/test/unit/components/TaskWorkLogAccordion.test.tsx +++ b/test/unit/components/TaskWorkLogAccordion.test.tsx @@ -601,6 +601,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'File Toolkit', method: 'open', detail: '', + input: '', + output: '', status: 'running', }, ]); @@ -620,6 +622,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'File Toolkit', method: 'open', detail: '', + input: '', + output: '', status: 'done', }, { @@ -637,6 +641,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'File Toolkit', method: 'write', detail: '', + input: '', + output: '', status: 'running', }, ]); @@ -655,6 +661,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'File Toolkit', method: 'open', detail: '', + input: '', + output: '', status: 'done', }, ], @@ -695,6 +703,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'A', method: 'register agent', detail: '', + input: '', + output: '', status: 'done', }, { @@ -704,6 +714,8 @@ describe('getBlockHeaderParts', () => { toolkitName: 'C', method: 'register agent', detail: '', + input: '', + output: '', status: 'running', }, ], @@ -748,6 +760,8 @@ describe('groupBlocksByAgent', () => { toolkitName: 'Toolkit', method: 'Method', detail: '', + input: '', + output: '', status, }; }