from __future__ import annotations def route_intent(text: str) -> tuple[str, list[str]]: lowered = text.lower() views: list[str] = [] intent = "answer_from_evidence" if any(k in lowered for k in ["color", "colors", "palette", "theme", "style"]): views.append("presentation_theme" if any(k in lowered for k in ["presentation", "deck", "slides", "powerpoint"]) else "palette") intent = "create_presentation" if any(k in lowered for k in ["presentation", "deck", "slides", "powerpoint"]) else "extract_palette" if any(k in lowered for k in ["read", "text", "number", "invoice", "receipt", "serial", "label", "total"]): views.append("ocr") intent = "answer_ocr" if any(k in lowered for k in ["chart", "graph", "axis", "trend", "quarter", "q3", "percentage", "revenue"]): views.append("chart_ir") intent = "query_chart" if any(k in lowered for k in ["object", "chair", "car", "shirt", "logo", "item"]): views.append("objects") if "color" in lowered: views.append("palette") return intent, list(dict.fromkeys(views))