mirror of
https://github.com/stablyai/orca.git
synced 2026-09-29 16:02:50 +00:00
A row named only by a word makes the reader parse text to tell a read from a search. Pair the word with an icon: icon for category, word for action, argument for target. Name the full eight-category vocabulary in `src/shared/native-chat-tool-icon.ts` now — read/search/listFiles/unknown/fileChange/webSearch/mcpToolCall/ subAgentActivity — even though only the classified shell categories reach a row today, so the MCP and web-search rows landing separately inherit these names rather than coining their own. Glyph ids are the lucide spelling shared by `lucide-react` and `lucide-react-native`, so mobile can resolve one name to its own component when it adopts this; mobile rows stay text-only for now. The glyph is decorative and `aria-hidden`: the word is the accessible name, and never renders without it. One glyph per category, fixed across running, completed, and failed — a row that swapped icons on completion would read as changing identity — so the run header's active row also takes its category glyph instead of the generic wrench it fell back to once these rows stopped being called `shell`. A word outside the vocabulary gets the terminal glyph rather than a blank slot, so rows stay left-aligned. Also stand `.` in for a `listFiles` action whose `path` is null, which is what a bare `ls` sends. The row named the action and then showed the raw argv as its target; now it names the directory it listed.