# ExitPlanMode

ส่งแผนการ implement ที่ร่างไว้ระหว่าง plan mode เพื่อให้ผู้ใช้อนุมัติ และหากได้รับอนุมัติ จะเปลี่ยน session ออกจาก plan mode เพื่อให้เริ่มแก้ไขได้

## เมื่อใดควรใช้

- แผนที่เขียนระหว่าง `EnterPlanMode` เสร็จสมบูรณ์และพร้อม review
- งานเน้นการ implement (การเปลี่ยนแปลงโค้ดหรือ config) ไม่ใช่การวิจัยล้วน ดังนั้นแผนที่ชัดเจนจึงเหมาะสม
- การอ่านและวิเคราะห์ที่จำเป็นทั้งหมดได้ทำแล้ว ไม่ต้องการการสืบสวนเพิ่มก่อนที่ผู้ใช้จะตัดสินใจ
- ผู้ช่วยได้ระบุ path ของไฟล์ function และขั้นตอนที่เป็นรูปธรรม — ไม่ใช่แค่เป้าหมาย
- ผู้ใช้ขอดูแผน หรือ workflow plan-mode กำลังจะส่งต่อไปยัง edit tool

## พารามิเตอร์

- `allowedPrompts` (array, optional): prompt ที่ผู้ใช้พิมพ์ได้บนหน้าจออนุมัติเพื่ออนุมัติอัตโนมัติหรือแก้ไขแผน แต่ละ element ระบุ permission ที่มีขอบเขต (เช่น ชื่อการดำเนินการและ tool ที่ใช้กับมัน) ปล่อยว่างเพื่อใช้ default approval flow

## ตัวอย่าง

### ตัวอย่างที่ 1: การส่งมาตรฐาน

หลังจากสืบสวน authentication refactor ภายใน plan mode และเขียนไฟล์แผนลง disk ผู้ช่วยเรียก `ExitPlanMode` โดยไม่มี argument Harness อ่านแผนจากตำแหน่งมาตรฐาน แสดงต่อผู้ใช้ และรอการอนุมัติหรือปฏิเสธ

### ตัวอย่างที่ 2: Quick action ที่อนุมัติไว้ล่วงหน้า

```
ExitPlanMode(allowedPrompts=[
  {"tool": "Bash", "prompt": "run tests"},
  {"tool": "Bash", "prompt": "install dependencies"}
])
```

ให้ผู้ใช้ให้ permission ล่วงหน้าสำหรับคำสั่ง follow-up ธรรมดา เพื่อให้ผู้ช่วยไม่ต้องหยุดเพื่อ permission prompt แต่ละครั้งระหว่าง implement

## หมายเหตุ

- `ExitPlanMode` เหมาะกับงานประเภท implement เท่านั้น หากคำขอของผู้ใช้เป็นงานวิจัยหรือการอธิบายที่ไม่มีการเปลี่ยนแปลงไฟล์ ตอบโดยตรงแทน — อย่า route ผ่าน plan mode เพียงเพื่อออก
- แผนต้องเขียนลง disk แล้วก่อนเรียก tool นี้ `ExitPlanMode` ไม่รับ body ของแผนเป็น parameter; มันอ่านจาก path ที่ harness คาดไว้
- หากผู้ใช้ปฏิเสธแผน คุณกลับไปที่ plan mode แก้ไขตาม feedback และส่งอีกครั้ง; อย่าเริ่มแก้ไขไฟล์ขณะที่แผนไม่ได้รับอนุมัติ
- การอนุมัติให้สิทธิ์ออกจาก plan mode และใช้ tool ที่แก้ไข (`Edit`, `Write`, `Bash`, และอื่นๆ) สำหรับขอบเขตที่อธิบายในแผน การขยายขอบเขตหลังจากนั้นต้องมีแผนใหม่หรือ consent ของผู้ใช้ที่ชัดเจน
- อย่าใช้ `AskUserQuestion` ถามว่า "แผนนี้ดูโอเคไหม?" ก่อนเรียก tool นี้ — การขอการอนุมัติแผนคือสิ่งที่ `ExitPlanMode` ทำอยู่พอดี และผู้ใช้ไม่สามารถเห็นแผนจนกว่าจะถูกส่ง
- ทำให้แผนน้อยที่สุดและปฏิบัติได้ ผู้ review ควรสามารถสแกนได้ในไม่ถึงนาทีและเข้าใจอย่างแน่ชัดว่าจะเปลี่ยนแปลงอะไร
- หากคุณตระหนักกลางการ implement ว่าแผนผิด ให้หยุดและรายงานกลับไปยังผู้ใช้แทนที่จะเบี่ยงเบนอย่างเงียบๆ การกลับเข้า plan mode เป็นขั้นตอนถัดไปที่ใช้ได้
