fix(code-queue): add active-run liveness diagnostics
This commit is contained in:
@@ -197,6 +197,52 @@ function compactLastAssistant(value: unknown, full: boolean): Record<string, unk
|
||||
};
|
||||
}
|
||||
|
||||
function compactSchedulerHeartbeat(value: unknown): Record<string, unknown> | null {
|
||||
const record = asRecord(value);
|
||||
if (record === null) return null;
|
||||
return {
|
||||
taskId: record.taskId ?? null,
|
||||
attempt: record.attempt ?? null,
|
||||
owner: record.owner ?? null,
|
||||
schedulerInstance: record.schedulerInstance ?? null,
|
||||
agentPort: record.agentPort ?? null,
|
||||
activeTurnId: record.activeTurnId ?? null,
|
||||
codexThreadId: record.codexThreadId ?? null,
|
||||
lastLocalHeartbeatAt: record.lastLocalHeartbeatAt ?? null,
|
||||
lastObservedAgentEventAt: record.lastObservedAgentEventAt ?? null,
|
||||
lastPersistedTraceAt: record.lastPersistedTraceAt ?? null,
|
||||
outputMaxSeq: record.outputMaxSeq ?? null,
|
||||
};
|
||||
}
|
||||
|
||||
function compactExecutionDiagnostics(value: unknown): Record<string, unknown> | null {
|
||||
const record = asRecord(value);
|
||||
if (record === null) return null;
|
||||
return {
|
||||
state: record.state ?? record.health ?? null,
|
||||
degraded: record.degraded ?? null,
|
||||
splitBrain: record.splitBrain ?? null,
|
||||
executionStateSource: record.executionStateSource ?? null,
|
||||
controlPlane: record.controlPlane ?? null,
|
||||
databaseActiveTaskCount: record.databaseActiveTaskCount ?? null,
|
||||
databaseActiveTaskIds: record.databaseActiveTaskIds ?? [],
|
||||
schedulerActiveRunSlotCount: record.schedulerActiveRunSlotCount ?? null,
|
||||
schedulerActiveTaskIds: record.schedulerActiveTaskIds ?? [],
|
||||
activeHeartbeatTaskIds: record.activeHeartbeatTaskIds ?? [],
|
||||
heartbeatFreshTaskIds: record.heartbeatFreshTaskIds ?? [],
|
||||
heartbeatExpiredTaskIds: record.heartbeatExpiredTaskIds ?? [],
|
||||
heartbeatMissingTaskIds: record.heartbeatMissingTaskIds ?? [],
|
||||
staleRecoveryCandidateTaskIds: record.staleRecoveryCandidateTaskIds ?? [],
|
||||
traceGapTaskIds: record.traceGapTaskIds ?? [],
|
||||
traceGapNotStaleTaskIds: record.traceGapNotStaleTaskIds ?? [],
|
||||
lastSchedulerHeartbeatAt: record.lastSchedulerHeartbeatAt ?? null,
|
||||
lastObservedAgentEventAt: record.lastObservedAgentEventAt ?? null,
|
||||
lastPersistedTraceAt: record.lastPersistedTraceAt ?? null,
|
||||
oaPublisher: record.oaPublisher ?? null,
|
||||
reasons: record.reasons ?? [],
|
||||
};
|
||||
}
|
||||
|
||||
function compactToolSummary(value: unknown, full: boolean): Record<string, unknown> {
|
||||
const record = asRecord(value) ?? {};
|
||||
const items = asArray(record.items).map((item) => {
|
||||
@@ -252,6 +298,7 @@ function compactSummary(summary: unknown, options: CodexTaskOptions, taskId: str
|
||||
codexThreadId: record.codexThreadId ?? null,
|
||||
activeTurnId: record.activeTurnId ?? null,
|
||||
cancelRequested: record.cancelRequested ?? null,
|
||||
schedulerHeartbeat: compactSchedulerHeartbeat(record.schedulerHeartbeat),
|
||||
},
|
||||
timing: record.timing ?? null,
|
||||
createdAt: record.createdAt ?? null,
|
||||
@@ -718,7 +765,12 @@ function requireMergeTargetQueueId(args: string[], command: string): string {
|
||||
}
|
||||
|
||||
function codeQueues(): unknown {
|
||||
return unwrapCodexResponse(coreInternalFetch(codeQueueProxyPath("/api/queues")));
|
||||
const response = unwrapCodexResponse(coreInternalFetch(codeQueueProxyPath("/api/queues")));
|
||||
return {
|
||||
upstream: response.upstream,
|
||||
queues: response.body.queues ?? [],
|
||||
queue: compactQueueMutationSummary(response.body.queue),
|
||||
};
|
||||
}
|
||||
|
||||
function codexCreateQueue(queueId: string): unknown {
|
||||
@@ -824,6 +876,7 @@ function compactTaskMutationResponse(task: unknown, options: CompactTaskMutation
|
||||
maxAttempts: record.maxAttempts ?? null,
|
||||
currentAttempt: record.currentAttempt ?? null,
|
||||
cancelRequested: record.cancelRequested ?? null,
|
||||
schedulerHeartbeat: compactSchedulerHeartbeat(record.schedulerHeartbeat),
|
||||
createdAt: record.createdAt ?? null,
|
||||
startedAt: record.startedAt ?? null,
|
||||
updatedAt: record.updatedAt ?? null,
|
||||
@@ -845,6 +898,10 @@ function compactQueueMutationSummary(value: unknown): Record<string, unknown> |
|
||||
return {
|
||||
activeQueueIds: record.activeQueueIds ?? null,
|
||||
activeTaskIds: record.activeTaskIds ?? null,
|
||||
databaseActiveTaskCount: record.databaseActiveTaskCount ?? null,
|
||||
databaseActiveTaskIds: record.databaseActiveTaskIds ?? null,
|
||||
schedulerHeartbeatStaleMs: record.schedulerHeartbeatStaleMs ?? null,
|
||||
executionDiagnostics: compactExecutionDiagnostics(record.executionDiagnostics),
|
||||
queuedTaskIds: record.queuedTaskIds ?? null,
|
||||
counts: record.counts ?? null,
|
||||
byQueue: Array.isArray(record.byQueue) ? record.byQueue : undefined,
|
||||
|
||||
Reference in New Issue
Block a user