fix: 增强长 turn liveness 可见性

This commit is contained in:
Codex
2026-06-10 12:05:21 +08:00
parent 43d42fe087
commit 43c47d3fa9
7 changed files with 362 additions and 15 deletions
+20
View File
@@ -699,8 +699,10 @@ function summarizeQueueStats(record: JsonRecord | null): JsonRecord | null {
function summarizeQueueTaskWithAttempt(record: JsonRecord | null, fallbackTaskId: string): JsonRecord {
const summary = summarizeQueueTaskRecord(record, fallbackTaskId);
const latestAttempt = summarizeAttemptRecord(jsonRecordValue(record?.latestAttempt));
const supervisor = summarizeSupervisorRecord(jsonRecordValue(record?.supervisor));
const sessionRef = jsonRecordValue(record?.sessionRef);
if (latestAttempt) summary.latestAttempt = latestAttempt;
if (supervisor) summary.supervisor = supervisor;
const sessionId = stringValue(sessionRef?.sessionId) ?? stringValue(latestAttempt?.sessionId);
if (sessionId) summary.sessionId = sessionId;
if (record?.readCursor !== undefined) summary.read = record.readCursor !== null;
@@ -737,6 +739,24 @@ function summarizeAttemptRecord(record: JsonRecord | null): JsonRecord | null {
return compactRecord(record, { keys: ["attemptId", "state", "runId", "commandId", "runnerJobId", "sessionId", "sessionPath"] });
}
function summarizeSupervisorRecord(record: JsonRecord | null): JsonRecord | null {
if (!record) return null;
const lastActivity = jsonRecordValue(record.lastActivity);
const timeoutBudget = jsonRecordValue(record.timeoutBudget);
return {
...compactRecord(record, { keys: ["phase", "active", "status", "terminalStatus", "failureKind", "runId", "commandId", "lastSeq"] }),
lastActivity: lastActivity ? compactRecord(lastActivity, { keys: ["sourceSeq", "eventId", "activityKind", "type", "status", "toolName", "itemId", "ageMs", "summary"] }) : null,
timeoutBudget: timeoutBudget ? compactRecord(timeoutBudget, { keys: ["state", "timeoutMs", "elapsedMs", "remainingMs", "startedAt", "source"] }) : null,
recoveryActions: summarizeRecoveryActions(record.recoveryActions),
valuesPrinted: false,
};
}
function summarizeRecoveryActions(value: JsonValue | undefined): JsonValue[] {
if (!Array.isArray(value)) return [];
return value.slice(0, 5).map((item) => compactRecord(jsonRecordValue(item), { keys: ["action", "reason", "runId", "commandId", "sessionId", "afterSeq", "command", "hint"] }));
}
function summarizeRunRecord(record: JsonRecord | null): JsonRecord | null {
if (!record) return null;
return compactRecord(record, { keys: ["id", "status", "terminalStatus", "failureKind", "failureMessage", "backendProfile", "providerId", "claimedBy", "leaseExpiresAt", "createdAt", "updatedAt"] });