new feature: Multi-Intent

This commit is contained in:
2026-09-10 16:12:08 -03:00
parent 2a563840c1
commit 82d96f2dbf
302 changed files with 2070 additions and 28 deletions

View File

@@ -0,0 +1,55 @@
from agent_framework.routing.config_loader import load_intents, load_multi_intent_config
from agent_framework.routing.multi_intent import MultiIntentPlanner
from agent_framework.mcp.tool_policy import ToolPolicyRegistry
def _planner():
path = "config/routing.yaml"
registry = ToolPolicyRegistry("config/tool_policies.yaml")
transactional = {name for name, policy in registry.policies.items() if policy.operation_type == "transactional"}
return MultiIntentPlanner(load_intents(path), load_multi_intent_config(path), transactional_tools=transactional)
def test_cancelamento_e_segunda_via_preserva_cancelamento_como_primario():
plan = _planner().plan("Cancela o tamboro e manda a segunda via para mim")
assert plan is not None
assert plan.operations[0].intent == "contas_vas_cancel"
assert plan.operations[0].agent == "contestacao_agent"
assert plan.operations[1].intent == "contas_invoice_query"
assert plan.operations[1].disposition == "execute"
def test_sim_composto_preserva_confirmacao_e_topico_secundario():
plan = _planner().plan_confirmation_secondary(
"Sim e me manda a segunda via",
primary_intent="contas_vas_cancel",
primary_agent="contestacao_agent",
)
assert plan is not None
assert plan.operations[0].intent == "contas_vas_cancel"
assert plan.operations[1].intent == "contas_invoice_query"
def test_pedido_secundario_realmente_fora_do_escopo_vira_pending_topic():
plan = _planner().plan("Cancela o tamboro e altera o CNPJ da conta")
assert plan is not None
assert plan.operations[0].intent == "contas_vas_cancel"
assert plan.operations[1].intent == "off_context"
assert plan.operations[1].disposition == "unsupported"
def test_duas_mais_caras_sao_calculadas_sobre_evidencia_autorizada():
from contas_mcp.servers.contas_mcp_server.main import _select_relative_invoice_charges
args = {
"focused_subject": "Tamboro Mensal",
"invoice_detail": {"119": {"SVA Detalhe Total": [
{"desc": "Tamboro Mensal", "value": 9.90, "date": "01/09/26", "classe": "avulso"},
{"desc": "Tamboro Mensal", "value": 29.90, "date": "02/09/26", "classe": "avulso"},
{"desc": "Tamboro Mensal", "value": 14.90, "date": "03/09/26", "classe": "avulso"},
{"desc": "Tamboro Mensal", "value": 24.90, "date": "04/09/26", "classe": "avulso"},
]}},
}
selected = _select_relative_invoice_charges("as duas mais caras", args)
assert [row["value"] for row in selected] == [29.90, 24.90]
assert [row["charge_date"] for row in selected] == ["02/09/26", "04/09/26"]