# Implementation Plan: Interactive AST Tree Masking

## Phase 1: AST Mask Model & Inspector UI
- [x] Update `FileItem` in `src/models.py` with an `ast_mask: dict[str, str]` field (mapping symbol paths to 'def', 'sig', or 'hide').
- [x] In `src/gui_2.py`, add an `[Inspect]` button to the Context Panel table.
- [x] Implement `_render_ast_inspector_modal` in `src/gui_2.py`, fetching the outline via `ts_cpp_get_code_outline` and rendering it as an `imgui.tree_node` hierarchy with radio buttons.

## Phase 2: Dynamic Aggregation
- [x] Update `src/aggregate.py`. When an `ast_mask` is present, it must parse the file, extract the requested definitions and signatures by their symbol names, and stitch them into a single coherent markdown block.
