# TaskList

Повертає кожне завдання в поточній команді (або сесії) у підсумковій формі. Використовуйте для огляду невиконаної роботи, вирішення, що взяти далі, та уникнення дублікатів.

## Коли використовувати

- На початку сесії, щоб побачити, що вже відстежується.
- Перед викликом `TaskCreate`, щоб підтвердити, що робота ще не захоплена.
- Коли вирішуєте, яке завдання взяти наступним як член команди чи підагент.
- Щоб одним поглядом перевірити відносини залежностей по команді.
- Періодично під час довгих сесій, щоб ресинхронізуватися з членами команди, які могли взяти, завершити чи додати завдання.

`TaskList` лише для читання і дешевий; викликайте його вільно щоразу, коли вам потрібен огляд.

## Параметри

`TaskList` не приймає параметрів. Він завжди повертає повний набір завдань для активного контексту.

## Форма відповіді

Кожне завдання в списку — підсумок, а не повний запис. Очікуйте приблизно:

- `id` — стабільний ідентифікатор для використання з `TaskGet` / `TaskUpdate`.
- `subject` — короткий імперативний заголовок.
- `status` — один з `pending`, `in_progress`, `completed`, `deleted`.
- `owner` — дескриптор агента чи члена команди або порожній, коли не захоплено.
- `blockedBy` — масив ID завдань, які мають завершитися першими.

Для повного опису, критеріїв прийому чи метаданих конкретного завдання продовжте `TaskGet`.

## Приклади

### Приклад 1

Швидка перевірка статусу.

```
TaskList()
```

Проскануйте вивід на будь-що `in_progress` без `owner` (застаріла робота) і будь-що `pending` з порожнім `blockedBy` (готове для взяття).

### Приклад 2

Член команди вибирає наступне завдання.

```
TaskList()
# Фільтруйте до: status == pending AND blockedBy порожній AND owner порожній.
# Серед них віддавайте перевагу меншому ID (завдання зазвичай нумеруються
# у порядку створення, тож менші ID старіші і зазвичай вищого пріоритету).
TaskGet(taskId: "<chosen id>")
TaskUpdate(taskId: "<chosen id>", status: "in_progress", owner: "<your handle>")
```

## Примітки

- Евристика члена команди: коли кілька `pending` завдань розблоковані й не захоплені, вибирайте найменший ID. Це зберігає роботу FIFO і уникає того, щоб два агенти хапали одне й те саме гучне завдання.
- Поважайте `blockedBy`: не починайте завдання, блокатори якого все ще `pending` чи `in_progress`. Спочатку працюйте над блокатором або скоординуйтеся з його власником.
- `TaskList` — єдиний механізм виявлення завдань. Немає пошуку; якщо список довгий, скануйте структурно (за статусом, потім за власником).
- Видалені завдання можуть все ще зʼявлятися в списку зі статусом `deleted` для простеження. Ігноруйте їх для цілей планування.
- Список відображає живий стан команди, тому члени команди можуть додавати чи захоплювати завдання між викликами. Перелічіть знову перед захопленням, якщо минув час.
