docs(conductor): replace manual pruner with advanced interactive AST and Slice tracks
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
# Track: Interactive AST Tree Masking
|
||||
|
||||
- [Specification](./spec.md)
|
||||
- [Plan](./plan.md)
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"id": "interactive_ast_tree_masking_20260510",
|
||||
"title": "Interactive AST Tree Masking",
|
||||
"status": "planned"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# Implementation Plan: Interactive AST Tree Masking
|
||||
|
||||
## Phase 1: AST Mask Model & Inspector UI
|
||||
- [ ] Update `FileItem` in `src/models.py` with an `ast_mask: dict[str, str]` field (mapping symbol paths to 'def', 'sig', or 'hide').
|
||||
- [ ] In `src/gui_2.py`, add an `[Inspect]` button to the Context Panel table.
|
||||
- [ ] 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
|
||||
- [ ] 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.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Specification: Interactive AST Tree Masking
|
||||
|
||||
## Overview
|
||||
Transform the Context Panel by allowing users to inspect the AST of C/C++ files and selectively mask individual symbols (classes, methods, functions). Instead of treating a file as a single unit, users can define an `ASTMask` to expose only what is relevant.
|
||||
|
||||
## Acceptance Criteria
|
||||
- [ ] An `[Inspect]` button in the Context Panel opens an AST Outline window for the selected file.
|
||||
- [ ] The Outline window renders a hierarchical tree of symbols using `tree-sitter`.
|
||||
- [ ] Users can toggle individual nodes as `[Def]` (Definition), `[Sig]` (Signature), or `[Hide]`.
|
||||
- [ ] `FileItem` model is updated to persist this `ASTMask` dictionary.
|
||||
- [ ] `aggregate.py` dynamically stitches the file content based on the `ASTMask`, automatically resolving line numbers by symbol name to survive agent modifications.
|
||||
Reference in New Issue
Block a user