fix: preserve paired input evidence context (#204)

This commit is contained in:
Eyejoker
2026-05-31 17:17:38 +09:00
committed by GitHub
parent c0703836e1
commit 778ed9b94a
12 changed files with 287 additions and 23 deletions

View File

@@ -0,0 +1,35 @@
import { getMessagesSince, getRecentChatMessages } from './db.js';
import type { NewMessage, PairedTask } from './types.js';
export const TASK_USER_CONTEXT_START_SKEW_MS = 5_000;
const TASK_CONTEXT_MESSAGE_LIMIT = 200;
const NO_BOT_PREFIX_FILTER = '';
function taskContextStartTimestamp(task: PairedTask): string | null {
const taskCreatedMs = Date.parse(task.created_at);
if (!Number.isFinite(taskCreatedMs)) {
return null;
}
return new Date(
taskCreatedMs - TASK_USER_CONTEXT_START_SKEW_MS,
).toISOString();
}
export function getTaskContextMessages(
chatJid: string,
task: PairedTask,
): NewMessage[] {
const sinceTimestamp = taskContextStartTimestamp(task);
if (!sinceTimestamp) {
return getRecentChatMessages(chatJid, 20);
}
const taskMessages = getMessagesSince(
chatJid,
sinceTimestamp,
NO_BOT_PREFIX_FILTER,
TASK_CONTEXT_MESSAGE_LIMIT,
);
return taskMessages.length > 0
? taskMessages
: getRecentChatMessages(chatJid, 20);
}