import type { SessionEntry } from "../../config/sessions.js"; import { updateSessionStore } from "../../config/sessions.js"; import { applyAbortCutoffToSessionEntry, type AbortCutoff } from "./abort-cutoff.js"; import type { CommandHandler } from "./commands-types.js"; type CommandParams = Parameters[0]; export async function persistSessionEntry(params: CommandParams): Promise { if (!params.sessionEntry || !params.sessionStore || !params.sessionKey) { return false; } params.sessionEntry.updatedAt = Date.now(); params.sessionStore[params.sessionKey] = params.sessionEntry; if (params.storePath) { await updateSessionStore(params.storePath, (store) => { store[params.sessionKey] = params.sessionEntry as SessionEntry; }); } return true; } export async function persistAbortTargetEntry(params: { entry?: SessionEntry; key?: string; sessionStore?: Record; storePath?: string; abortCutoff?: AbortCutoff; }): Promise { const { entry, key, sessionStore, storePath, abortCutoff } = params; if (!entry || !key || !sessionStore) { return false; } entry.abortedLastRun = true; applyAbortCutoffToSessionEntry(entry, abortCutoff); entry.updatedAt = Date.now(); sessionStore[key] = entry; if (storePath) { await updateSessionStore(storePath, (store) => { const nextEntry = store[key] ?? entry; if (!nextEntry) { return; } nextEntry.abortedLastRun = true; applyAbortCutoffToSessionEntry(nextEntry, abortCutoff); nextEntry.updatedAt = Date.now(); store[key] = nextEntry; }); } return true; }