# TaskStop

Зупиняє запущене фонове завдання — команду оболонки, диспетчеризованого агента чи віддалену сесію — за його дескриптором часу виконання. Використовуйте для звільнення ресурсів, скасування роботи, яка більше не корисна, чи відновлення, коли завдання застрягло.

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

- Фонова команда оболонки виконується довше очікуваного, і вам більше не потрібен її результат.
- Локальний агент зациклився чи застиг і потребує обриву.
- Користувач змінив напрямок, і фонову роботу для попереднього напрямку слід облишити.
- Віддалена сесія ось-ось закінчиться по таймауту або утримує ресурс, який вам потрібен.
- Вам потрібен чистий стан перед новим запуском того самого завдання.

Віддавайте перевагу тому, щоб короткочасна фонова робота завершувалася самостійно. `TaskStop` — для випадків, коли продовжене виконання не має цінності чи активно шкодить.

## Параметри

- `task_id` (string, обовʼязковий): Дескриптор часу виконання, повернутий при запуску фонового завдання. Це той самий ідентифікатор, що приймається `TaskOutput`, а не `taskId` зі списку завдань.

## Приклади

### Приклад 1

Зупиніть некеровану фонову команду оболонки.

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

Команда отримує сигнал завершення; буферизований вивід, записаний досі, залишається читабельним за шляхом виводу.

### Приклад 2

Скасуйте диспетчеризованого агента після коригування курсу користувачем.

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

## Примітки

- `TaskStop` запитує завершення; він не гарантує миттєвого завершення. Добре поводжені завдання виходять оперативно, але процес, що виконує блокуюче I/O, може знадобитися мить для розгортання.
- Зупинка завдання не видаляє його вивід. Для фонових завдань оболонки файл виводу на диску зберігається і все ще читабельний з `Read`. Для агентів і сесій будь-який вивід, захоплений перед зупинкою, все ще доступний через `TaskOutput`.
- Невідомий `task_id` або завдання, що вже завершилося, повертає помилку або є no-op. Це безпечно — ви можете викликати `TaskStop` захисно без попередньої перевірки статусу.
- Якщо ви маєте намір перезапустити ту саму роботу, зупиніть старе завдання перед диспетчеризацією нового, щоб уникнути двох паралельних запусків, які змагаються за спільні ресурси (файли, порти, рядки бази даних).
- `TaskStop` не впливає на записи в списку завдань команди. Щоб скасувати відстежуване завдання, оновіть його статус на `deleted` через `TaskUpdate`.
