5d1dee794d
Tool outputs (read_file, grep_files, exec_shell, fetch_url, web_search) that exceed a configurable token threshold are now intercepted before they reach the parent context. A structured synthesis header replaces the raw blob; the full content is stored in the workshop variable `last_tool_result` for later `promote_to_context` retrieval. Key changes: - New `crates/tui/src/tools/large_output_router.rs`: `LargeOutputRouter`, `WorkshopConfig`, `WorkshopVariables`, `RouteDecision`, token estimator, synthesis-prompt builder, and wrap_synthesis helper. Full unit-test suite. - `ToolContext` gains `large_output_router` and `workshop_vars` fields plus the `with_large_output_router` builder; constructor defaults are `None` so sub-agents and test contexts are unaffected. - `ToolRegistry::execute_full_with_context` applies routing after every tool call; `raw=true` in the tool input bypasses routing for that invocation. - `EngineConfig` gains a `workshop` field; `Engine::new` creates the shared `WorkshopVariables` Arc when the field is present and wires it into every `build_tool_context` call. - `Config` gains `[workshop]` table deserialization; `merge_config` propagates it like other optional tables. - `config.example.toml` documents `[workshop]`, `large_output_threshold_tokens` (default 4096), and per-tool threshold overrides. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>