"""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())
40 lines · Back to the folder