← Lesson
Human Approval
Joeven
Run
Reset
Python loads on first run
POLICY = {"allowed": {"search", "refund"}, "auto_approve_risk": {"read"}} TOOLS = { "search": {"risk": "read", "fn": lambda q: {"hits": [q]}}, "refund": { "risk": "irreversible", "fn": lambda invoice_id: {"ok": True, "invoice_id": invoice_id}, }, } def execute(name, args, human=None): if name not in POLICY["allowed"]: return {"error": "denied", "name": name} risk = TOOLS[name]["risk"] if risk not in POLICY["auto_approve_risk"]: if human == "approve": pass elif human == "timeout": return {"error": "denied", "reason": "approval_timeout"} else: return {"status": "needs_approval", "name": name, "args": args, "risk": risk} return {"ok": True, "result": TOOLS[name]["fn"](**args)} print("search", execute("search", {"q": "Oslo"})) print("pending", execute("refund", {"invoice_id": "INV-17"})) print("go", execute("refund", {"invoice_id": "INV-17"}, human="approve")) print("silence", execute("refund", {"invoice_id": "INV-18"}, human="timeout"))
Run to execute this in your browser. Nothing is sent to a server.