import type { SessionEntry } from "../../config/sessions.js"; import { updateSessionStore } from "../../config/sessions.js"; import { setAbortMemory } from "./abort.js"; export async function applySessionHints(params: { baseBody: string; abortedLastRun: boolean; sessionEntry?: SessionEntry; sessionStore?: Record; sessionKey?: string; storePath?: string; abortKey?: string; messageId?: string; }): Promise { let prefixedBodyBase = params.baseBody; const abortedHint = params.abortedLastRun ? "Note: The previous agent run was aborted by the user. Resume carefully or ask for clarification." : ""; if (abortedHint) { prefixedBodyBase = `${abortedHint}\n\n${prefixedBodyBase}`; if (params.sessionEntry && params.sessionStore && params.sessionKey) { params.sessionEntry.abortedLastRun = false; params.sessionEntry.updatedAt = Date.now(); params.sessionStore[params.sessionKey] = params.sessionEntry; if (params.storePath) { const sessionKey = params.sessionKey; await updateSessionStore(params.storePath, (store) => { const entry = store[sessionKey] ?? params.sessionEntry; if (!entry) return; store[sessionKey] = { ...entry, abortedLastRun: false, updatedAt: Date.now(), }; }); } } else if (params.abortKey) { setAbortMemory(params.abortKey, false); } } const messageIdHint = params.messageId?.trim() ? `[message_id: ${params.messageId.trim()}]` : ""; if (messageIdHint) { prefixedBodyBase = `${prefixedBodyBase}\n${messageIdHint}`; } return prefixedBodyBase; }