3804df5b36
Consolidation follow-up on top of @liuwei666888's compressor fix (#52431) and @Frowtek's ACP render guard (#62588) — completes the class fix across every display-layer consumer of tool-call arguments: - agent/context_compressor.py: wrap _summarize_tool_result in a never-raises backstop (same pattern as get_cute_tool_message and the ACP guard). The per-branch _str_arg coercions keep summaries informative; the wrapper guarantees compression can never crash-loop on a summary branch we didn't anticipate. Also reject non-dict parsed args (a JSON list/scalar would crash every args.get call). - agent/display.py: build_tool_preview's process branch sliced session_id/data without coercion — crashed build_tool_preview and build_tool_label on the live tool-progress callback (probed live: TypeError 'int' object is not subscriptable). Coerce like the sibling branches. - tests: backstop fuzz matrix (16 tools x 6 hostile value shapes), fallback-shape contracts, display process-preview regressions, non-dict args guard.