asyncdefrun_demo_loop(agent:Agent[Any],*,stream:bool=True,context:TContext|None=None)->None:"""Run a simple REPL loop with the given agent. This utility allows quick manual testing and debugging of an agent from the command line. Conversation state is preserved across turns. Enter ``exit`` or ``quit`` to stop the loop. Args: agent: The starting agent to run. stream: Whether to stream the agent output. context: Additional context information to pass to the runner. """current_agent=agentinput_items:list[TResponseInputItem]=[]whileTrue:try:user_input=input(" > ")except(EOFError,KeyboardInterrupt):print()breakifuser_input.strip().lower()in{"exit","quit"}:breakifnotuser_input:continueinput_items.append({"role":"user","content":user_input})result:RunResultBaseifstream:result=Runner.run_streamed(current_agent,input=input_items,context=context)asyncforeventinresult.stream_events():ifisinstance(event,RawResponsesStreamEvent):ifisinstance(event.data,ResponseTextDeltaEvent):print(event.data.delta,end="",flush=True)elifisinstance(event,RunItemStreamEvent):ifevent.item.type=="tool_call_item":print("\n[tool called]",flush=True)elifevent.item.type=="tool_call_output_item":print(f"\n[tool output:{event.item.output}]",flush=True)elifisinstance(event,AgentUpdatedStreamEvent):print(f"\n[Agent updated:{event.new_agent.name}]",flush=True)print()else:result=awaitRunner.run(current_agent,input_items,context=context)ifresult.final_outputisnotNone:print(result.final_output)current_agent=result.last_agentinput_items=result.to_input_list()