fix(agent): auto-escalate contacts/phone number lookups to agent mode

The chat-to-agent auto-escalation via _classify_tool_intent only covered
calendar, notes, email, UI, web search, research, and shell tools.
Questions like 'mi dici il numero di X?' or 'what is Mario's phone number?'
stayed in chat mode, leaving the model unable to call resolve_contact.

Add three patterns for contacts/address-book lookup:
- phone/number/address lookup requests (IT/EN/ES)
- explicit contact search ('look up X in contacts', 'cerca X nei contatti')
- bare contacts/address-book search ('search my contacts', 'find contacts')
This commit is contained in:
holden093 2026-06-29 17:16:26 +02:00
parent d8a2059df8
commit 82ce399e82

View file

@ -77,6 +77,12 @@ _ROUTING_PATTERNS: tuple[tuple[str, str, Pattern[str]], ...] = tuple(
("notes", "set reminder request", rf"{_PLEASE}set\s+(?:a\s+)?reminder\b"),
("notes", "assistant reminder request", rf"{_ACTION_QUESTION}set\s+(?:a\s+)?reminder\b"),
# Contacts / address-book lookup. A question like "what is Mario's
# number?" or "look up Anna in contacts" needs the contacts tool.
("contacts", "phone/number lookup request", r"\b(?:what(?:'s| is)|tell\s+me|give\s+me|do\s+you\s+have|mi\s+dici|dime|decime|qual(?:'è|e| è)|cerca|busca)\b.{1,80}?\b(?:phone|telephone|number|numero|número|tel[eé]fono|email|address|indirizzo|direcci[oó]n|contact|contatto|contacto)\b"),
("contacts", "contact lookup request", r"\b(?:look\s+up|find|search|get|pull\s+up|cerca|trova|busca)\b.{1,60}?\b(?:in|on|nel|nella|nell|nei|negli|en|su)\s+(?:my\s+)?(?:contacto?s?|contatt[io]s?|rubrica|address\s+book)\b"),
("contacts", "contact search request", r"\b(?:search|find|look\s+up|cerca|trova|busca)\b.{0,40}\b(?:my\s+)?(?:contacto?s?|contatt[io]s?|rubrica|address\s+book)\b"),
# Email actions.
("email", "assistant email action request", rf"{_ACTION_QUESTION}(?:send|write|reply|email|message|archive|delete|mark)\b.{{0,120}}\b(?:emails?|mail|messages?|inbox|unread|read)\b"),
("email", "send/write/reply email request", rf"{_PLEASE}(?:send|write|reply)\b.{{0,120}}\b(?:emails?|mail|messages?)\b"),