原文(日本語に翻訳)
TeammateIdle と TaskCompleted フックが {"continue": false, "stopReason": "..."} をサポートしてチームメイトを停止できるよう修正(Stop フックの動作と統一)
原文(英語)
Fixed TeammateIdle and TaskCompleted hooks to support {"continue": false, "stopReason": "..."} to stop the teammate, matching Stop hook behavior
概要
TeammateIdle と TaskCompleted フックで {"continue": false, "stopReason": "..."} を返してもチームメイトが停止しない問題がありました。この修正により、Stop フックと同様に、これらのフックからもチームメイトの実行を制御できるようになりました。マルチエージェントの制御フローが統一され、より柔軟な停止条件を設定できます。
基本的な使い方
json
// TeammateIdle または TaskCompleted フックの戻り値
{
"continue": false,
"stopReason": "タスクが完了したため停止します"
}実践例
TaskCompleted フックでの条件付き停止
javascript
// フックスクリプト例
module.exports = async function taskCompletedHook(event) {
const { task, result } = event;
// タスクが成功した場合は停止
if (result.success) {
return {
continue: false,
stopReason: "タスクが正常に完了しました"
};
}
// 失敗した場合は続行(リトライなど)
return { continue: true };
};TeammateIdle フックでのタイムアウト制御
javascript
// アイドル状態が長すぎる場合に停止
module.exports = async function teammateIdleHook(event) {
const { idleDuration } = event;
if (idleDuration > 300000) { // 5分以上アイドル
return {
continue: false,
stopReason: "アイドル時間が上限を超えました"
};
}
return { continue: true };
};条件付きタスク管理
javascript
// 最大タスク数に達したら停止
let taskCount = 0;
module.exports = async function taskCompletedHook(event) {
taskCount++;
if (taskCount >= 10) {
return {
continue: false,
stopReason: `最大タスク数 (10) に達しました`
};
}
return { continue: true };
};注意点
- この修正により
TeammateIdle、TaskCompleted、Stopフックの動作が統一されました stopReasonフィールドはオプションですが、デバッグのために指定することを推奨しますcontinue: falseを返した場合、チームメイトは現在の処理を完了してから停止します