feat: close AgentRun commander task plane gaps
This commit is contained in:
+24
-2
@@ -451,7 +451,7 @@ export class MemoryAgentRunStore implements AgentRunStore {
|
||||
}
|
||||
|
||||
createQueueTask(input: CreateQueueTaskInput): QueueTaskRecord {
|
||||
const payloadHash = stableHash(input.payload);
|
||||
const payloadHash = queueTaskPayloadHash(input);
|
||||
if (input.idempotencyKey) {
|
||||
const existing = Array.from(this.queueTasks.values()).find((task) => task.tenantId === input.tenantId && task.projectId === input.projectId && task.idempotencyKey === input.idempotencyKey);
|
||||
if (existing) {
|
||||
@@ -460,7 +460,9 @@ export class MemoryAgentRunStore implements AgentRunStore {
|
||||
}
|
||||
}
|
||||
const at = nowIso();
|
||||
const task: QueueTaskRecord = { ...input, id: newId("qt"), state: "pending", version: this.nextQueueVersion(), payloadHash, latestAttempt: null, sessionPath: null, createdAt: at, updatedAt: at, cancelledAt: null, cancelReason: null };
|
||||
const sessionId = input.sessionRef?.sessionId ?? null;
|
||||
const sessionPath = sessionId ? `/api/v1/sessions/${encodeURIComponent(sessionId)}` : null;
|
||||
const task: QueueTaskRecord = { ...input, id: newId("qt"), state: "pending", version: this.nextQueueVersion(), payloadHash, latestAttempt: null, sessionPath, createdAt: at, updatedAt: at, cancelledAt: null, cancelReason: null };
|
||||
this.queueTasks.set(task.id, task);
|
||||
return task;
|
||||
}
|
||||
@@ -750,6 +752,26 @@ export function queueTaskSort(a: QueueTaskRecord, b: QueueTaskRecord): number {
|
||||
return a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id);
|
||||
}
|
||||
|
||||
export function queueTaskPayloadHash(input: CreateQueueTaskInput): string {
|
||||
return stableHash({
|
||||
tenantId: input.tenantId,
|
||||
projectId: input.projectId,
|
||||
queue: input.queue,
|
||||
lane: input.lane,
|
||||
title: input.title,
|
||||
priority: input.priority,
|
||||
backendProfile: input.backendProfile,
|
||||
providerId: input.providerId,
|
||||
workspaceRef: input.workspaceRef,
|
||||
sessionRef: input.sessionRef,
|
||||
executionPolicy: input.executionPolicy,
|
||||
resourceBundleRef: input.resourceBundleRef,
|
||||
payload: input.payload,
|
||||
references: input.references,
|
||||
metadata: input.metadata,
|
||||
});
|
||||
}
|
||||
|
||||
export function buildQueueStats(tasks: QueueTaskRecord[], queue: string | null, generatedAt = nowIso()): QueueStats {
|
||||
const byState: Record<string, number> = {};
|
||||
const byLane: Record<string, number> = {};
|
||||
|
||||
Reference in New Issue
Block a user