fix(#707): scope session GC retention (#720)
Some checks failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was canceled

This commit was merged in pull request #720.
This commit is contained in:
2026-07-13 00:44:19 +00:00
parent e92186d768
commit 753a360517
10 changed files with 163 additions and 175 deletions

View File

@@ -58,9 +58,28 @@ export function createAgentLogsRepo(db: Db) {
return rows[0];
},
/**
* Transition hot logs for one session to warm tier. Session retention is
* default-deny: no other session's logs can be changed by this operation.
*/
async promoteSessionToWarm(sessionId: string, olderThan: Date): Promise<number> {
const result = await db
.update(agentLogs)
.set({ tier: 'warm', summarizedAt: new Date() })
.where(
and(
eq(agentLogs.sessionId, sessionId),
eq(agentLogs.tier, 'hot'),
lt(agentLogs.createdAt, olderThan),
),
)
.returning();
return result.length;
},
/**
* Transition hot logs older than the cutoff to warm tier.
* Returns the number of logs transitioned.
* Reserved for a separately authorized global retention job.
*/
async promoteToWarm(olderThan: Date): Promise<number> {
const result = await db