"""02: The quickstart agent. Finds and fixes crash bugs in src/utils.py with acceptEdits.""" import asyncio import subprocess from pathlib import Path from claude_agent_sdk import AssistantMessage, ClaudeAgentOptions, ResultMessage, ToolUseBlock, query from demo_util import PROJECT async def main(): async for message in query( prompt="Review src/utils.py for bugs that would cause crashes. Fix any issues you find.", options=ClaudeAgentOptions( cwd=PROJECT, allowed_tools=["Read", "Edit", "Glob"], # auto-approve these tools permission_mode="acceptEdits", # auto-approve file edits max_turns=10, ), ): if isinstance(message, AssistantMessage): for block in message.content: if hasattr(block, "text"): print(block.text) elif isinstance(block, ToolUseBlock): print(f"Tool: {block.name} -> {block.input.get('file_path', '')}") elif isinstance(message, ResultMessage): print(f"Done: {message.subtype} (cost ${message.total_cost_usd:.4f})") print("\n--- diff against the original file ---") pristine = Path(PROJECT).parent / "project_pristine" / "src" / "utils.py" diff = subprocess.run( ["diff", "-u", str(pristine), str(Path(PROJECT) / "src" / "utils.py")], capture_output=True, text=True, ) print(diff.stdout) asyncio.run(main())