a527f6224f
Adds a new MCP tool that exposes scripts/aggregate_directives.py as an LLM-callable endpoint. The tool reads a presets markdown file, resolves each directive's v1.md, and returns the concatenated clean directive bodies. metadata (meta.md) is never read. Tool contract: name: aggregate_directives params: preset_path (string, default current_baseline.md), max_chars (int, default 0) result: text content (clean bodies) or 'ERROR: ...' string on failure Dispatch runs the impl in asyncio.to_thread so the 66+ v1.md reads do not block the MCP stdio loop. Errors from aggregate_directives are caught and formatted as 'ERROR: aggregate_directives(<path>) failed: <type>: <msg>' so the LLM can read the failure mode inline. Tool count: 45 (MCP_TOOL_SPECS) + 2 (run_powershell, aggregate_directives) = 47. Added scripts/ to sys.path so 'from aggregate_directives import ...' works inside the MCP server process; idempotent with existing project_root and src path inserts.