Interrupt agent built with native create_agent + HumanInTheLoopMiddleware (tool approval).

Before the agent runs a sensitive tool (here send_email), HumanInTheLoopMiddleware pauses and surfaces the pending call for human approval. The toolkit’s service resumes it through the normal interrupt flow — reply approve to run the tool, reject: <reason> to decline, or any other text to send guidance back to the model (the executor maps the reply to a HITL decision; see agent_executor.build_resume_command).

Contrast with blueprints/interrupt_agent — a hand-built StateGraph using raw interrupt(). This one gets human-in-the-loop purely by composing a middleware onto create_agent.