What problem does this solve?
After a multi-tool turn the user sees individual ✓ tool_name lines but has no summary of the full sequence or how long each step took, making it hard to understand what the agent did or where time was spent.
Proposed solution
After each turn that called ≥ 1 tool, print a compact timeline panel:
┌─ tools (3 calls · 2.1 s) ──────────────────────┐
│ ✓ read_file src/agent/core.py 0.04 s │
│ ✓ run_shell uv run pytest 1.83 s │
│ ✓ write_file src/agent/core.py 0.03 s │
└──────────────────────────────────────────────────┘
- Collapsed to one line by default; press a key to expand (or always expanded in verbose mode)
- Color-code by tool category: read=muted, write=accent, shell=warning, error=red
Technical notes:
_wrap_tool_verbose already intercepts each call; add timing there
- Accumulate calls per turn in a list, render after
model.act() returns
- Rich
Table with no header, fixed columns for name / arg / duration / status
Acceptance criteria:
Alternatives considered
None considered.
What problem does this solve?
After a multi-tool turn the user sees individual
✓ tool_namelines but has no summary of the full sequence or how long each step took, making it hard to understand what the agent did or where time was spent.Proposed solution
After each turn that called ≥ 1 tool, print a compact timeline panel:
Technical notes:
_wrap_tool_verbosealready intercepts each call; add timing theremodel.act()returnsTablewith no header, fixed columns for name / arg / duration / statusAcceptance criteria:
Alternatives considered
None considered.