fix: expose stale runner diagnostics
This commit is contained in:
@@ -183,6 +183,7 @@ function summarizeRunShowResult(run: JsonValue, result: JsonValue, runId: string
|
||||
action: "runs-show-summary",
|
||||
run: summarizeRunRecord(jsonRecordValue(run)),
|
||||
result: summarizeResultEnvelope(resultRecord),
|
||||
diagnosis: summarizeDiagnosisRecord(jsonRecordValue(resultRecord?.diagnosis)),
|
||||
terminalClassification: summarizeTerminalClassificationIfPresent(resultRecord),
|
||||
liveness: summarizeLivenessRecord(jsonRecordValue(resultRecord?.liveness)),
|
||||
finalResponse: summarizeFinalResponseRecord(jsonRecordValue(resultRecord?.finalResponse)),
|
||||
@@ -200,6 +201,7 @@ function summarizeCommandShowResult(command: JsonValue, result: JsonValue, runId
|
||||
action: "commands-show-summary",
|
||||
command: summarizeCommandRecord(jsonRecordValue(command)),
|
||||
result: summarizeResultEnvelope(resultRecord),
|
||||
diagnosis: summarizeDiagnosisRecord(jsonRecordValue(resultRecord?.diagnosis)),
|
||||
terminalClassification: summarizeTerminalClassificationIfPresent(resultRecord),
|
||||
liveness: summarizeLivenessRecord(jsonRecordValue(resultRecord?.liveness)),
|
||||
finalResponse: summarizeFinalResponseRecord(jsonRecordValue(resultRecord?.finalResponse)),
|
||||
@@ -238,6 +240,23 @@ function summarizeLivenessRecord(record: JsonRecord | null): JsonRecord | null {
|
||||
};
|
||||
}
|
||||
|
||||
function summarizeDiagnosisRecord(record: JsonRecord | null): JsonRecord | null {
|
||||
if (!record) return null;
|
||||
const run = jsonRecordValue(record.run);
|
||||
const command = jsonRecordValue(record.command);
|
||||
const runnerJob = jsonRecordValue(record.runnerJob);
|
||||
const session = jsonRecordValue(record.session);
|
||||
return {
|
||||
...withoutFullRecordBytes(compactRecord(record, { keys: ["category", "staleClaimed", "runnerLost", "terminalCommandOpenRun", "evidenceLevel", "providerEvidence", "providerInterruption", "providerInterruptionKnown", "terminalCategory", "terminalStatus", "failureKind", "failureMessage"] })),
|
||||
run: run ? withoutFullRecordBytes(compactRecord(run, { keys: ["runId", "status", "claimedBy", "leaseExpiresAt", "leaseExpired", "leaseRemainingMs"] })) : null,
|
||||
command: command ? withoutFullRecordBytes(compactRecord(command, { keys: ["commandId", "state", "terminalStatus", "acknowledgedAt", "updatedAt"] })) : null,
|
||||
runnerJob: runnerJob ? withoutFullRecordBytes(compactRecord(runnerJob, { keys: ["runnerJobId", "attemptId", "runnerId", "namespace", "jobName", "phase", "terminalStatus", "startedAt", "finishedAt", "logPath"] })) : null,
|
||||
session: session ? withoutFullRecordBytes(compactRecord(session, { keys: ["sessionId", "sessionRefNull", "sessionPath"] })) : null,
|
||||
recoveryActions: summarizeRecoveryActions(record.recoveryActions),
|
||||
valuesPrinted: false,
|
||||
};
|
||||
}
|
||||
|
||||
function summarizeFinalResponseRecord(record: JsonRecord | null): JsonRecord | null {
|
||||
if (!record) return null;
|
||||
return withoutFullRecordBytes(compactRecord(record, { keys: ["seq", "source", "final", "replyAuthority", "textTruncated", "outputTruncated", "text"] }));
|
||||
@@ -900,8 +919,10 @@ function summarizeSupervisorRecord(record: JsonRecord | null): JsonRecord | null
|
||||
const lastActivity = jsonRecordValue(record.lastActivity);
|
||||
const timeoutBudget = jsonRecordValue(record.timeoutBudget);
|
||||
const terminalClassification = jsonRecordValue(record.terminalClassification);
|
||||
const diagnosis = jsonRecordValue(record.diagnosis);
|
||||
return {
|
||||
...withoutFullRecordBytes(compactRecord(record, { keys: ["phase", "active", "status", "terminalStatus", "failureKind", "runId", "commandId", "lastSeq"] })),
|
||||
diagnosis: diagnosis ? summarizeDiagnosisRecord(diagnosis) : null,
|
||||
terminalClassification: terminalClassification ? summarizeTerminalClassification(terminalClassification) : null,
|
||||
lastActivity: lastActivity ? withoutFullRecordBytes(compactRecord(lastActivity, { keys: ["sourceSeq", "eventId", "activityKind", "type", "status", "toolName", "itemId", "ageMs", "summary"] })) : null,
|
||||
timeoutBudget: timeoutBudget ? withoutFullRecordBytes(compactRecord(timeoutBudget, { keys: ["state", "timeoutMs", "elapsedMs", "remainingMs", "startedAt", "source"] })) : null,
|
||||
@@ -943,6 +964,7 @@ function summarizeRunnerJobRecord(record: JsonRecord | null): JsonRecord | null
|
||||
...compactRecord(record, { keys: ["action", "mutation", "runId", "commandId", "attemptId", "runnerId", "namespace", "jobName"] }),
|
||||
logPath: stringValue(runner?.logPath),
|
||||
backendProfile: stringValue(runner?.backendProfile),
|
||||
diagnosis: summarizeRunnerJobDiagnosis(jsonRecordValue(record.diagnosis)),
|
||||
jobUid: stringValue(jobIdentity?.uid),
|
||||
created: kubernetes?.created === true,
|
||||
warnings: Array.isArray(record.warnings) ? record.warnings.map((item) => boundedSummaryString(typeof item === "string" ? item : JSON.stringify(item), 240)).filter((item): item is string => Boolean(item)) : [],
|
||||
@@ -951,6 +973,15 @@ function summarizeRunnerJobRecord(record: JsonRecord | null): JsonRecord | null
|
||||
};
|
||||
}
|
||||
|
||||
function summarizeRunnerJobDiagnosis(record: JsonRecord | null): JsonRecord | null {
|
||||
if (!record) return null;
|
||||
return withoutFullRecordBytes({
|
||||
...compactRecord(record, { keys: ["category", "runnerLostSuspected", "phase", "evidenceLevel", "runId", "commandId", "runnerJobId", "attemptId", "runnerId", "jobName", "namespace", "logPath"] }),
|
||||
nextActions: summarizeRecoveryActions(record.nextActions),
|
||||
valuesPrinted: false,
|
||||
});
|
||||
}
|
||||
|
||||
function summarizeGenericRecord(record: JsonRecord | null): JsonRecord | null {
|
||||
if (!record) return null;
|
||||
return compactRecord(record, {
|
||||
|
||||
Reference in New Issue
Block a user