Context
Once dynamic loading is on, the existing "Too many tools enabled" warning is wrong (most users will never see >50 tools attached at once — that's the point). It's also actively misleading because it suggests a problem when the system is working as designed. Replace it with a positive status indicator.
Partially closes: RooCodeInc#11155 (MCP tool calls clutter UI — by removing the dead warning).
Developer Notes
- Replace
webview-ui/src/components/chat/TooManyToolsWarning.tsx with DynamicToolsStatus.tsx (same slot, same hook surface).
- Hook:
useDynamicToolStatus() returns { attachedCount, totalScoped, mode: "all" | "dynamic" } from the new state slice the extension publishes (see W1.4 — the API tools array length is already known per turn).
- Render rules:
mode === "all" (under threshold): render nothing.
mode === "dynamic": render "N of M MCP tools attached this turn" with a click-through that expands to show the attached tool names.
- Remove i18n strings tied to the old warning (
chat.tooManyTools.*); add new ones for the status indicator.
- Files:
webview-ui/src/components/chat/DynamicToolsStatus.tsx (new), webview-ui/src/hooks/useDynamicToolStatus.ts (new), delete TooManyToolsWarning.tsx and useTooManyTools hook.
- Validation: with <50 tools enabled, no indicator visible; with >50, indicator shows accurate counts; click-through expands list and lists the tools currently in the API array.
Context
Once dynamic loading is on, the existing "Too many tools enabled" warning is wrong (most users will never see >50 tools attached at once — that's the point). It's also actively misleading because it suggests a problem when the system is working as designed. Replace it with a positive status indicator.
Partially closes: RooCodeInc#11155 (MCP tool calls clutter UI — by removing the dead warning).
Developer Notes
webview-ui/src/components/chat/TooManyToolsWarning.tsxwithDynamicToolsStatus.tsx(same slot, same hook surface).useDynamicToolStatus()returns{ attachedCount, totalScoped, mode: "all" | "dynamic" }from the new state slice the extension publishes (see W1.4 — the API tools array length is already known per turn).mode === "all"(under threshold): render nothing.mode === "dynamic": render "N of M MCP tools attached this turn" with a click-through that expands to show the attached tool names.chat.tooManyTools.*); add new ones for the status indicator.webview-ui/src/components/chat/DynamicToolsStatus.tsx(new),webview-ui/src/hooks/useDynamicToolStatus.ts(new), deleteTooManyToolsWarning.tsxanduseTooManyToolshook.