from __future__ import annotations from app.schemas.plans import VisualOperation, VisualPlan, VisualReference from app.storage.models import VisualAssetRecord def compile_visual_plan(intent: str, text: str, asset: VisualAssetRecord | None, views: list[str]) -> VisualPlan: references = [] operations = [] if asset: for idx, view in enumerate(views, start=1): references.append(VisualReference(phrase=text[:80], asset_id=asset.id, view=view, confidence=0.86)) operations.append(VisualOperation(id=f"op_{idx}", op="get_view", asset_id=asset.id, view=view)) if intent == "create_presentation": operations.append(VisualOperation(id=f"op_{len(operations)+1}", op="create_presentation", asset_id=asset.id if asset else None, parameters={"content_request": text})) if not operations: operations.append(VisualOperation(id="op_1", op="answer_from_evidence", parameters={"content_request": text})) return VisualPlan(intent=intent, references=references, operations=operations)