fix: 修复 inProcessRunner 权限响应后未 cleanup 的 interval 泄漏

权限请求得到响应后(批准/拒绝),pollInterval 和 abort listener
未被清理,导致 setInterval 永远运行。在长时间运行的 swarm 会话
中,每次权限请求都会泄漏一个 interval 和一个 listener。

修复:在成功/拒绝路径中调用 cleanup() 以清理 interval、
unregister callback 和移除 abort listener。添加 6 个测试
覆盖 permission callback 注册/处理/清理生命周期。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
claude-code-best
2026-04-29 02:05:41 +08:00
parent e8347cc046
commit f0f81d8d57
3 changed files with 115 additions and 4 deletions

View File

@@ -424,7 +424,8 @@ function createInProcessCanUseTool(
feedback: parsed.error,
})
}
return // Callback already resolves the promise
cleanup()
return
}
}
}