# TaskStop

يوقف مهمة خلفية قيد التشغيل — أمر صدفة، أو وكيلاً مُرسلاً، أو جلسة بعيدة — عبر مقبضها التشغيلي. استخدمه لاستعادة الموارد، أو إلغاء عمل لم يعد مفيداً، أو التعافي عندما تكون المهمة عالقة.

## متى يُستخدم

- عندما يعمل أمر صدفة خلفي لفترة أطول من المتوقع ولم تعد تحتاج إلى نتيجته.
- عندما يكون وكيل محلي في حلقة أو متوقفاً ويحتاج إلى القطع.
- عندما يغير المستخدم الاتجاه وينبغي التخلي عن العمل الخلفي للاتجاه السابق.
- عندما توشك جلسة بعيدة على انتهاء مهلتها أو تحتفظ بمورد تحتاجه.
- عندما تحتاج إلى بداية نظيفة قبل بدء تشغيل جديد للمهمة نفسها.

فضِّل ترك العمل الخلفي قصير العمر ينتهي من تلقاء نفسه. `TaskStop` للحالات التي لا يكون فيها التنفيذ المستمر ذا قيمة أو يكون ضاراً فعلاً.

## المعاملات

- `task_id` (سلسلة، مطلوب): المقبض التشغيلي المُعاد عند بدء المهمة الخلفية. هذا هو نفس المعرف الذي يقبله `TaskOutput`، وليس `taskId` في قائمة المهام.

## أمثلة

### مثال 1

أوقف أمر صدفة خلفياً متمرداً.

```
TaskStop(task_id: "bash_01HXYZ...")
```

يتلقى الأمر إشارة إنهاء؛ وتبقى المخرجات المخزنة حتى الآن قابلة للقراءة في مسار مخرجاتها.

### مثال 2

ألغِ وكيلاً مُرسَلاً بعد تصحيح مسار من المستخدم.

```
TaskStop(task_id: "agent_01ABCD...")
```

## ملاحظات

- `TaskStop` يطلب الإنهاء؛ ولا يضمن إيقاف التشغيل الفوري. تخرج المهام حسنة التصرف بسرعة، لكن عملية تُجري إدخال/إخراج حاجب قد تستغرق لحظة للاسترجاع.
- إيقاف مهمة لا يحذف مخرجاتها. لمهام الصدفة الخلفية، يُحفظ ملف المخرجات على القرص ويظل قابلاً للقراءة بـ `Read`. للوكلاء والجلسات، يظل أي مخرج التُقط قبل الإيقاف متاحاً عبر `TaskOutput`.
- `task_id` غير معروف، أو مهمة انتهت بالفعل، يُعيد خطأً أو عملية لا-ip. هذا آمن — يمكنك استدعاء `TaskStop` دفاعياً دون فحص الحالة أولاً.
- إذا كنت تنوي إعادة تشغيل العمل نفسه، أوقف المهمة القديمة قبل إرسال الجديدة لتجنب تشغيلين متوازيين يتسابقان على موارد مشتركة (ملفات، منافذ، صفوف قاعدة بيانات).
- `TaskStop` لا يؤثر على إدخالات في قائمة مهام الفريق. لإلغاء مهمة متعقَّبة، حدِّث حالتها إلى `deleted` بـ `TaskUpdate`.
