diff --git a/src/aggregate.py b/src/aggregate.py index 0639bb0..1ace9d8 100644 --- a/src/aggregate.py +++ b/src/aggregate.py @@ -77,34 +77,6 @@ def build_discussion_section(history: list[Any]) -> str: sections.append(f"### Discussion Excerpt {i}\n\n{text}") return "\n\n---\n\n".join(sections) -def build_files_section(base_dir: Path, files: list[str | dict[str, Any]]) -> str: - """ - [C: tests/test_tiered_context.py:test_build_files_section_with_dicts] - """ - sections = [] - for entry_raw in files: - if isinstance(entry_raw, dict): - entry = cast(str, entry_raw.get("path", "")) - else: - entry = entry_raw - if not entry or not isinstance(entry, str): - continue - paths = resolve_paths(base_dir, entry) - if not paths: - sections.append(f"### `{entry}`\n\n```text\nERROR: no files matched: {entry}\n```") - continue - for path in paths: - suffix = path.suffix.lstrip(".") - lang = suffix if suffix else "text" - try: - content = path.read_text(encoding="utf-8") - except FileNotFoundError: - content = f"ERROR: file not found: {path}" - except Exception as e: - content = f"ERROR: {e}" - original = entry if "*" not in entry else str(path) - sections.append(f"### `{original}`\n\n```{lang}\n{content}\n```") - return "\n\n---\n\n".join(sections) def build_screenshots_section(base_dir: Path, screenshots: list[str]) -> str: sections = [] @@ -181,16 +153,6 @@ def build_file_items(base_dir: Path, files: list[str | dict[str, Any]]) -> list[ items.append({"path": path, "entry": entry, "content": content, "error": error, "mtime": mtime, "tier": tier, "auto_aggregate": auto_aggregate, "force_full": force_full}) return items -def build_summary_section(base_dir: Path, files: list[str | dict[str, Any]]) -> str: - """ - - - Build a compact summary section using summarize.py — one short block per file. - Used as the initial block instead of full file contents. - """ - with get_monitor().scope("build_summary_section"): - items = build_file_items(base_dir, files) - return summarize.build_summary_markdown(items) def _build_files_section_from_items(file_items: list[dict[str, Any]]) -> str: """ @@ -332,24 +294,8 @@ def build_tier3_context(file_items: list[dict[str, Any]], screenshot_base_dir: P return "\n\n---\n\n".join(parts) def build_markdown(base_dir: Path, files: list[str | dict[str, Any]], screenshot_base_dir: Path, screenshots: list[str], history: list[str], summary_only: bool = False, execution_mode: str = "standard") -> str: - with get_monitor().scope("build_markdown"): - parts = [] - # STATIC PREFIX: Files and Screenshots must go first to maximize Cache Hits - if files: - if summary_only: - parts.append("## Files (Summary)\n\n" + build_summary_section(base_dir, files)) - else: - parts.append("## Files\n\n" + build_files_section(base_dir, files)) - if screenshots: - parts.append("## Screenshots\n\n" + build_screenshots_section(screenshot_base_dir, screenshots)) - if execution_mode == "beads": - beads_md = build_beads_section(base_dir) - if beads_md: - parts.append(beads_md) - # DYNAMIC SUFFIX: History changes every turn, must go last - if history: - parts.append("## Discussion History\n\n" + build_discussion_section(history)) - return "\n\n---\n\n".join(parts) + file_items = build_file_items(base_dir, files) + return build_markdown_from_items(file_items, screenshot_base_dir, screenshots, history, summary_only=summary_only, aggregation_strategy='auto', execution_mode=execution_mode, base_dir=base_dir) def run(config: dict[str, Any], aggregation_strategy: str = "auto") -> tuple[str, Path, list[dict[str, Any]]]: """ diff --git a/tests/test_tiered_context.py b/tests/test_tiered_context.py index 42e8875..d05a80e 100644 --- a/tests/test_tiered_context.py +++ b/tests/test_tiered_context.py @@ -59,13 +59,14 @@ def test_build_file_items_with_tiers(tmp_path: Any) -> None: assert item2["tier"] == 3 def test_build_files_section_with_dicts(tmp_path: Any) -> None: - from src.aggregate import build_files_section + from src.aggregate import _build_files_section_from_items, build_file_items file1 = tmp_path / "file1.txt" file1.write_text("content1") files_config = [ {"path": str(file1)} ] - result = build_files_section(tmp_path, files_config) + items = build_file_items(tmp_path, files_config) + result = _build_files_section_from_items(items) assert "content1" in result assert "file1.txt" in result