# TaskList

يُعيد كل مهمة في الفريق الحالي (أو الجلسة) بشكل مُلخَّص. استخدمه لاستعراض العمل المعلق وتحديد ما ستتناوله تالياً وتجنب إنشاء تكرارات.

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

- في بداية الجلسة لرؤية ما هو متعقَّب بالفعل.
- قبل استدعاء `TaskCreate` للتأكد من أن العمل غير مُلتقط بالفعل.
- عند اتخاذ قرار بشأن أي مهمة تدعي كزميل فريق أو وكيل فرعي.
- للتحقق من علاقات التبعية عبر الفريق في لمحة.
- بشكل دوري خلال الجلسات الطويلة لإعادة المزامنة مع زملاء الفريق الذين ربما ادعوا أو أكملوا أو أضافوا مهاماً.

`TaskList` للقراءة فقط ورخيص؛ استدعِه بحرية كلما احتجت إلى نظرة عامة.

## المعاملات

`TaskList` لا يأخذ معاملات. يُعيد دائماً مجموعة المهام الكاملة للسياق النشط.

## شكل الاستجابة

كل مهمة في القائمة ملخص لا السجل الكامل. توقع تقريباً:

- `id` — معرف ثابت للاستخدام مع `TaskGet` / `TaskUpdate`.
- `subject` — عنوان أمري قصير.
- `status` — واحدة من `pending` أو `in_progress` أو `completed` أو `deleted`.
- `owner` — مُعرَّف وكيل أو زميل فريق، أو فارغ عند عدم الادعاء.
- `blockedBy` — مصفوفة معرفات المهام التي يجب إكمالها أولاً.

للحصول على الوصف الكامل أو معايير القبول أو البيانات الوصفية لمهمة معينة، تابع بـ `TaskGet`.

## أمثلة

### مثال 1

فحص حالة سريع.

```
TaskList()
```

امسح المخرج بحثاً عن أي شيء `in_progress` بلا `owner` (عمل راكد) وأي شيء `pending` بـ `blockedBy` فارغ (جاهز للالتقاط).

### مثال 2

زميل فريق يختار المهمة التالية.

```
TaskList()
# Filter to: status == pending AND blockedBy is empty AND owner is empty.
# Among those, prefer the lower ID (tasks are typically numbered in
# creation order, so lower IDs are older and usually higher priority).
TaskGet(taskId: "<chosen id>")
TaskUpdate(taskId: "<chosen id>", status: "in_progress", owner: "<your handle>")
```

## ملاحظات

- إرشاد لزميل الفريق: عندما تكون عدة مهام `pending` غير محجوبة وغير ممتلكة، اختر المعرف الأدنى. هذا يُبقي العمل FIFO ويتجنب أن يلتقط وكيلان المهمة بارزة نفسها.
- احترم `blockedBy`: لا تبدأ مهمة لا تزال عوائقها `pending` أو `in_progress`. اعمل على العائق أولاً أو نسق مع مالكه.
- `TaskList` هو آلية الاكتشاف الوحيدة للمهام. لا يوجد بحث؛ إذا كانت القائمة طويلة، امسح بنيوياً (حسب الحالة، ثم حسب المالك).
- قد تظل المهام المحذوفة تظهر في القائمة بحالة `deleted` للتتبع. تجاهلها لأغراض التخطيط.
- تعكس القائمة الحالة الحية للفريق، لذا قد يُضيف زملاء الفريق أو يدعون مهاماً بين الاستدعاءات. أعد السرد قبل الادعاء إذا مر وقت.
