| 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)) | |