tui: styled filesystem tool_started card — compact args, action in title
The generic ToolStartedRenderer dumped all of args as JSON, so filesystem
cards showed "→ filesystem" with no action in the title and the full
content/old/new text for write/edit/smart_edit flooding the card.

New FilesystemToolStartedRenderer (clients/terminal/tui/renderers/filesystem.py):
- Title carries the action and primary path: "→ filesystem read src/main.py";
  move/copy/diff also append "→ <destination>".
- Body is a compact per-action summary instead of JSON:
  - read: range (offset–limit) + numbered flag
  - write/append: content preview (first line + "(+N lines)" hint, not full)
  - edit: old + new previews
  - edit_lines: operations count + op kinds (replace/delete/insert, first 5)
  - smart_edit: instruction preview
  - grep: pattern + glob + regex flag
  - find/find_up: pattern
  - query: question preview
  - list: recursive flag
  - info/delete/mkdir/exists: empty body (path is in the title)
- Body keys render dim, values in text.
- Sub-agent cards indented, matching ToolStartedRenderer.

Registered before the generic ToolStartedRenderer (first-match wins). The
filesystem tool, WS protocol, and events are untouched.

13 new tests cover accepts, title (action/path/destination), empty body for
info, and per-action body summaries (read/write/edit/edit_lines/grep/
smart_edit/query), content preview truncation, subagent indent, and body key
styling. 42 filesystem-renderer tests total. Full suite 827 passed, 1 skipped.

Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 0f8dfcc commit 50bd13265c23fe9696f5c9ad93c6d794b997583e
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 5 hours ago
Showing 3 changed files
View
clients/terminal/tui/renderers/__init__.py
View
clients/terminal/tui/renderers/filesystem.py
View
tests/clients/test_filesystem_renderer.py