Expand description
Chat tool definitions + the execute_* dispatcher set.
Why: the chat assistant’s tool surface (all_tools) and the in-process
dispatcher that runs each tool (execute_tool + the per-tool execute_*
functions) form one cohesive concern split out of the former monolithic
chat.rs (issue #607).
What: ChatBody, MAX_TOOL_ROUNDS, all_tools, execute_tool, and every
execute_* helper, moved verbatim. Visibility unchanged.
Test: all_tools_returns_expected_set, execute_tool_dispatches_known_tools
in web::tests.