core: fix session cancellation cleanup to prevent memory leaks in task tool

This commit is contained in:
Dax Raad 2025-11-16 19:59:48 -05:00
parent 47e0e0ae1f
commit eea9346e97

View file

@ -7,6 +7,7 @@ import { MessageV2 } from "../session/message-v2"
import { Identifier } from "../id/id"
import { Agent } from "../agent/agent"
import { SessionPrompt } from "../session/prompt"
import { defer } from "@/util/defer"
export const TaskTool = Tool.define("task", async () => {
const agents = await Agent.list().then((x) => x.filter((a) => a.mode !== "primary"))
@ -61,9 +62,11 @@ export const TaskTool = Tool.define("task", async () => {
providerID: msg.info.providerID,
}
ctx.abort.addEventListener("abort", () => {
function cancel() {
SessionPrompt.cancel(session.id)
})
}
ctx.abort.addEventListener("abort", cancel)
using _ = defer(() => ctx.abort.removeEventListener("abort", cancel))
const promptParts = await SessionPrompt.resolvePromptParts(params.prompt)
const result = await SessionPrompt.prompt({
messageID,