new feature: frontend with separated responses

This commit is contained in:
2026-09-11 11:59:51 -03:00
parent 82ae25b85b
commit 2ac3e4e702
21 changed files with 697 additions and 34 deletions

View File

@@ -32,6 +32,48 @@ async def test_vloop_reads_awaiting_confirmation_from_active_transaction():
assert decision.metadata["mechanism"] == "deterministic_transaction_bypass"
@pytest.mark.asyncio
async def test_vloop_allows_repeated_parameter_during_transaction_collection():
rail = LoopRail()
decision = await rail.evaluate(
"PED-1001",
{
"transaction_status": "COLLECTING_PARAMETERS",
"missing_parameters": ["order_id"],
"history_texts": ["PED-1001", "outra fala", "PED-1001"],
},
)
assert decision.allowed is True
assert decision.reason == "continuidade_transacional:COLLECTING_PARAMETERS"
assert decision.metadata["repeated"] is False
assert decision.metadata["mechanism"] == "deterministic_transaction_bypass"
assert decision.metadata["transaction_status"] == "COLLECTING_PARAMETERS"
@pytest.mark.asyncio
async def test_vloop_prefers_latest_live_mcp_transaction_over_stale_completed_status():
rail = LoopRail()
decision = await rail.evaluate(
"sim",
{
"transaction_status": "COMPLETED",
"active_transaction": {"status": "COMPLETED"},
"mcp_results": [
{"tool_name": "devolver_pedido", "transaction_status": "COMPLETED"},
{
"tool_name": "cancelar_pedido",
"transaction_status": "AWAITING_CONFIRMATION",
"awaiting_confirmation": True,
},
],
"history_texts": ["sim", "outra fala", "sim"],
},
)
assert decision.allowed is True
assert decision.metadata["mechanism"] == "deterministic_transaction_bypass"
assert decision.metadata["transaction_status"] == "AWAITING_CONFIRMATION"
@pytest.mark.asyncio
async def test_vloop_still_blocks_actual_repetition_outside_transaction_confirmation():
rail = LoopRail()