from __future__ import annotations import logging from pathlib import Path from review_agent.models import FileSummaryBatchAttachment from ..paths import resolve_storage_path from ..services.inventory import scan_files_to_items from .base import BaseSkill, SkillResult, WorkflowContext logger = logging.getLogger("review_agent.file_summary.skills.file_inventory") class FileInventorySkill(BaseSkill): name = "file_inventory" def run(self, context: WorkflowContext) -> SkillResult: roots = [ resolve_storage_path(binding.attachment.storage_path) for binding in FileSummaryBatchAttachment.objects.filter(batch=context.batch) ] logger.info( "File inventory started", extra={ "batch_id": context.batch.pk, "root_count": len(roots), "roots": [str(root) for root in roots], }, ) items = scan_files_to_items(batch=context.batch, roots=roots) logger.info( "File inventory finished", extra={"batch_id": context.batch.pk, "total_files": len(items)}, ) return SkillResult(success=True, data={"total_files": len(items)})