Harden InvoiceGuard stateful tools

This commit is contained in:
2026-07-18 07:28:00 -03:00
parent 08a4d741ca
commit 1480c952ac
3 changed files with 91 additions and 21 deletions

View File

@@ -54,6 +54,9 @@ def test_full_stack_product_contract():
assert card.runtime.platform_resources.databases
assert card.runtime.platform_resources.databases[0].migrations.path == "db/migrations"
assert card.workspace_access.enabled is True
assert [mode.value for mode in card.workspace_access.allowed_modes] == ["read_only"]
assert skills["record_decision"].policy.idempotent is False
assert skills["review_invoices"].input_schema["properties"]["case_id"]["maxLength"] == 120
def test_review_success_fixture_is_deterministic():
@@ -130,3 +133,17 @@ def test_acceptance_calls_with_mocked_persistence_reload_and_decision():
updated = asyncio.run(agent.record_decision(ctx, "studio-invoice-v1", DecisionInput(decision_id="d1", decision="hold", note="Investigate duplicate", invoice_number="INV-100")))
assert updated["ok"] is True
assert updated["decisions"][0]["decision"] == "hold"
invalid_reload = asyncio.run(agent.get_invoice_case(ctx, "bad case id"))
assert invalid_reload["ok"] is False
assert invalid_reload["code"] == "invalid_case_id"
invalid_decision = asyncio.run(
agent.record_decision(
ctx,
"bad case id",
DecisionInput(decision_id="d2", decision="hold"),
)
)
assert invalid_decision["ok"] is False
assert invalid_decision["code"] == "invalid_case_id"