fix: prevent ESCALATE → new task loop (only create tasks on human messages)

This commit is contained in:
Eyejoker
2026-03-31 04:58:26 +09:00
parent 2753849343
commit 636c54702a
3 changed files with 220 additions and 149 deletions

View File

@@ -163,6 +163,7 @@ function ensureActiveTask(
group: RegisteredGroup,
chatJid: string,
roomRoleContext: RoomRoleContext,
hasHumanMessage?: boolean,
): PairedTask | null {
const canonicalWorkDir = ensurePairedProject(group, chatJid);
if (!canonicalWorkDir) {
@@ -174,6 +175,12 @@ function ensureActiveTask(
return existing;
}
// Don't create a new task for bot-only messages — prevents
// ESCALATE → completed → bot message triggers new task → loop.
if (!hasHumanMessage) {
return null;
}
const now = new Date().toISOString();
const task: PairedTask = {
id: crypto.randomUUID(),
@@ -239,7 +246,7 @@ export function preparePairedExecutionContext(args: {
return undefined;
}
const task = ensureActiveTask(group, chatJid, roomRoleContext);
const task = ensureActiveTask(group, chatJid, roomRoleContext, args.hasHumanMessage);
if (!task) {
return undefined;
}