Tool call rows
One row per action
A tool call is a slim row: status mark, tinted icon, label, target. Completion is the quiet default — the orb spins while work is live, and only a failure earns a chip. Click any row to open its input and output.
workspace/chat/tool-call-card.tsxTwo or more consecutive reads collapse into one expanderMemory
KnowledgeSearching…
Memory and knowledge never expand — no path, no contents, everRead Fileread_file
Write Filewrite_file
Edit Fileedit_file
List Fileslist_files
Search Filessearch_files
Bashbash
Run Commandrun_command
Web Accessweb_access
Train Modeltrain_model
Evaluate Modelevaluate_model
Agentsagents
Taskstasks
Coordinationcoordinate
Session Recallsession
Git Commitgit_commit
Delete Filedelete_file
workspace/chat/tool-visuals.ts — blue=files, orange=compute, teal=search, violet=agentsTool output
What comes back
Edits render as a diff rather than a wall of arguments, and a web search renders its links as links. Both are what the expanded row shows in the transcript.
envs/gridworld/reward.py
- proximity = 1.0 / (1e-6 + dist(next_state, goal))
- return proximity
+ proximity = 1.0 / (1e-6 + dist(next_state, goal))
+ shaped = min(proximity, 1.0)
+ return shaped - STEP_COST
workspace/chat/tool-edit-diff.tsxPotential-based reward shaping keeps the optimal policy invariant.
https://people.eecs.berkeley.edu/~pabbeel/cs287-fa09/readings/NgHaradaRussell-shaping-ICML1999.pdf
A survey of specification gaming in practice.
https://deepmind.google/discover/blog/specification-gaming-the-flip-side-of-ai-ingenuity/
workspace/chat/web-search-output.tsxAgents and tasks
When the call spawns other workers
A specialist dispatch nests its tasks under the row and folds the finished ones away. Task calls show the action and assignment, with inputs and results available in the expander.
subagents[] — running above, settled behind the foldworkspace/chat/agent-conversation-row.tsxaction: create_taskaction: integrate_taskstatus: error carries the reason