Files
openclaw/src/commands/status-json-payload.ts
2026-04-06 13:22:23 +01:00

58 lines
1.8 KiB
TypeScript

import { resolveStatusUpdateChannelInfo } from "./status-all/format.js";
import {
buildStatusGatewayJsonPayloadFromSurface,
type StatusOverviewSurface,
} from "./status-overview-surface.ts";
export { resolveStatusUpdateChannelInfo } from "./status-all/format.js";
export function buildStatusJsonPayload(params: {
summary: Record<string, unknown>;
surface: StatusOverviewSurface;
osSummary: unknown;
memory: unknown;
memoryPlugin: unknown;
agents: unknown;
secretDiagnostics: string[];
securityAudit?: unknown;
health?: unknown;
usage?: unknown;
lastHeartbeat?: unknown;
pluginCompatibility?: Array<Record<string, unknown>> | null | undefined;
}) {
const channelInfo = resolveStatusUpdateChannelInfo({
updateConfigChannel: params.surface.cfg.update?.channel ?? undefined,
update: params.surface.update,
});
return {
...params.summary,
os: params.osSummary,
update: params.surface.update,
updateChannel: channelInfo.channel,
updateChannelSource: channelInfo.source,
memory: params.memory,
memoryPlugin: params.memoryPlugin,
gateway: buildStatusGatewayJsonPayloadFromSurface({ surface: params.surface }),
gatewayService: params.surface.gatewayService,
nodeService: params.surface.nodeService,
agents: params.agents,
secretDiagnostics: params.secretDiagnostics,
...(params.securityAudit ? { securityAudit: params.securityAudit } : {}),
...(params.pluginCompatibility
? {
pluginCompatibility: {
count: params.pluginCompatibility.length,
warnings: params.pluginCompatibility,
},
}
: {}),
...(params.health || params.usage || params.lastHeartbeat
? {
health: params.health,
usage: params.usage,
lastHeartbeat: params.lastHeartbeat,
}
: {}),
};
}