feat(background-agent): adapt idle event handler for team-mode sessions
This commit is contained in:
@@ -247,6 +247,27 @@ describe("handleSessionIdleBackgroundEvent", () => {
|
|||||||
expect(tryCompleteTask).toHaveBeenCalledWith(task, "session.idle event")
|
expect(tryCompleteTask).toHaveBeenCalledWith(task, "session.idle event")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("#when task belongs to a team run #then should not auto-complete on idle", async () => {
|
||||||
|
//#given
|
||||||
|
const task = createRunningTask({ teamRunId: "team-run-1" })
|
||||||
|
const tryCompleteTask = mock(() => Promise.resolve(true))
|
||||||
|
|
||||||
|
//#when
|
||||||
|
handleSessionIdleBackgroundEvent({
|
||||||
|
properties: { sessionID: task.sessionID! },
|
||||||
|
findBySession: () => task,
|
||||||
|
idleDeferralTimers: new Map(),
|
||||||
|
validateSessionHasOutput: () => Promise.resolve(true),
|
||||||
|
checkSessionTodos: () => Promise.resolve(false),
|
||||||
|
tryCompleteTask,
|
||||||
|
emitIdleEvent: () => {},
|
||||||
|
})
|
||||||
|
|
||||||
|
//#then
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 10))
|
||||||
|
expect(tryCompleteTask).not.toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
it("#when session has no valid output #then should not complete task", async () => {
|
it("#when session has no valid output #then should not complete task", async () => {
|
||||||
//#given
|
//#given
|
||||||
const task = createRunningTask()
|
const task = createRunningTask()
|
||||||
|
|||||||
@@ -85,6 +85,14 @@ export function handleSessionIdleBackgroundEvent(args: {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (task.teamRunId) {
|
||||||
|
log("[background-agent] Team member session went idle; skipping background auto-complete:", {
|
||||||
|
taskId: task.id,
|
||||||
|
teamRunId: task.teamRunId,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
await tryCompleteTask(task, "session.idle event")
|
await tryCompleteTask(task, "session.idle event")
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user