# TaskStop

ランタイムハンドルで、実行中のバックグラウンドタスク — シェルコマンド、派遣されたエージェント、またはリモートセッション — を停止します。リソースを回収したり、もう役に立たない作業をキャンセルしたり、タスクが詰まった場合に回復するために使用します。

## 使用タイミング

- バックグラウンドシェルコマンドが予想より長く実行されており、もはやその結果が必要ない場合。
- ローカルエージェントがループまたは停滞しており、短く打ち切る必要がある場合。
- ユーザーが方向を変更し、前の方向のバックグラウンド作業を放棄すべき場合。
- リモートセッションがタイムアウトしようとしているか、必要なリソースを保持している場合。
- 同じタスクの新しい実行を開始する前にクリーンな状態が必要な場合。

短命のバックグラウンド作業は自身で完了させることを優先してください。`TaskStop` は、継続実行に価値がないか、積極的に有害な場合のためのものです。

## パラメータ

- `task_id` (string, required): バックグラウンドタスクが開始されたときに返されたランタイムハンドル。これは `TaskOutput` が受け付ける同じ識別子であり、タスクリストの `taskId` ではありません。

## 例

### 例 1

暴走したバックグラウンドシェルコマンドを停止します。

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

コマンドは終了シグナルを受け取ります。これまでに書き込まれたバッファされた出力は、その出力パスで引き続き読み取り可能です。

### 例 2

ユーザーの方向修正後に派遣されたエージェントをキャンセルします。

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

## 注意事項

- `TaskStop` は終了を要求しますが、瞬時のシャットダウンを保証しません。行儀の良いタスクは速やかに終了しますが、ブロッキング I/O を行っているプロセスはアンワインドに時間がかかる場合があります。
- タスクを停止しても出力は削除されません。バックグラウンドシェルタスクの場合、ディスク上の出力ファイルは保持され、`Read` で引き続き読み取り可能です。エージェントとセッションの場合、停止前にキャプチャされた出力は `TaskOutput` を介して引き続きアクセス可能です。
- 不明な `task_id`、またはすでに終了したタスクはエラーまたは no-op を返します。これは安全です — 最初にステータスをチェックせずに防御的に `TaskStop` を呼び出せます。
- 同じ作業を再開するつもりなら、共有リソース (ファイル、ポート、データベース行) で 2 つの並列実行が競合しないように、新しいものを派遣する前に古いタスクを停止してください。
- `TaskStop` はチームのタスクリストのエントリに影響を与えません。追跡されたタスクをキャンセルするには、`TaskUpdate` でステータスを `deleted` に更新してください。
