Fix MCP tool spinner bug: match tool_started → tool_call by tool_call_id
- Add tool_call_id field to ToolStarted and ToolEvent dataclasses
- Pass tc.id as tool_call_id from agent.py, subagent_runner.py, and tool_executor.py
- Update frontend chat.js onToolStarted/onToolCall to match cards by toolCallId
  with fallback to name-matching for backward compatibility

Closes spinner issue where LLM short name ("search_docs") didn't match
resolved MCP name ("mcp__gnexus_book__search_docs").

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 870b18d commit ce7e095b0f08094bf422ff90531f6e07fbe9394d
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored on 24 May
Showing 6 changed files
View
navi/core/agent.py
View
navi/core/events.py
View
navi/core/subagent_runner.py
View
navi/core/tool_executor.py
View
tests/unit/core/test_events.py
View
webclient/src/stores/chat.js