From e5ac59adecbaf00df8df71a554aaf11206d48bea Mon Sep 17 00:00:00 2001 From: Robin Braumann Date: Tue, 15 Sep 2026 09:34:07 +0200 Subject: [PATCH] fix(core): order agent sessions by turn start Co-authored-by: Cursor --- .../repositories/agent-execution-thread.repository.ts | 2 +- .../agents/repositories/agent-execution.repository.ts | 2 +- .../repositories/agent-execution.repository.test.ts | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/modules/agents/repositories/agent-execution-thread.repository.ts b/packages/cli/src/modules/agents/repositories/agent-execution-thread.repository.ts index 8e2ed40c052..3ea14f7b129 100644 --- a/packages/cli/src/modules/agents/repositories/agent-execution-thread.repository.ts +++ b/packages/cli/src/modules/agents/repositories/agent-execution-thread.repository.ts @@ -166,7 +166,7 @@ export class AgentExecutionThreadRepository extends Repository { .andWhere( `e.id = (SELECT e2.id FROM ${tableName} e2 ` + 'WHERE e2."threadId" = e."threadId" AND e2."status" != \'queued\' ' + - 'ORDER BY e2."createdAt" DESC, e2.id DESC LIMIT 1)', + 'ORDER BY COALESCE(e2."startedAt", e2."createdAt") DESC, e2.id DESC LIMIT 1)', ) .getRawMany<{ threadId: string; status: Exclude }>(); diff --git a/packages/cli/test/integration/database/repositories/agent-execution.repository.test.ts b/packages/cli/test/integration/database/repositories/agent-execution.repository.test.ts index cfce8ac8436..9ebecbd9f70 100644 --- a/packages/cli/test/integration/database/repositories/agent-execution.repository.test.ts +++ b/packages/cli/test/integration/database/repositories/agent-execution.repository.test.ts @@ -344,6 +344,14 @@ describe('AgentExecutionRepository', () => { status: 'running', failureSummary: null, createdAt: new Date('2026-01-02T00:00:00Z'), + startedAt: new Date('2026-01-04T00:00:00Z'), + }); + await createExecution({ + threadId: running.id, + status: 'success', + failureSummary: null, + createdAt: new Date('2026-01-03T00:00:00Z'), + startedAt: new Date('2026-01-03T00:00:00Z'), }); await createExecution({ threadId: succeeded.id,