openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
101 lines (100 loc) • 4.08 kB
JavaScript
import { a as writeRuntimeJson } from "./runtime-CF2WjnNZ.js";
import { r as readBackupFreshness } from "./backup-health-Cn7Bz1Sz.js";
import { a as resolveStatusUpdateChannelInfo } from "./format-q3Hb37m-.js";
import { l as buildStatusOverviewSurfaceFromScan, o as buildStatusGatewayJsonPayloadFromSurface } from "./status.format-C8HHj2VF.js";
import { i as resolveStatusRuntimeSnapshot } from "./status-runtime-shared-CSLhydPO.js";
//#region src/commands/status-json-payload.ts
/** Combines scan summary, overview surface, services, agents, diagnostics, and optional deep probes. */
function buildStatusJsonPayload(params) {
const channelInfo = resolveStatusUpdateChannelInfo({
updateConfigChannel: params.surface.cfg.update?.channel ?? void 0,
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,
...params.configDiagnostics ? { configDiagnostics: params.configDiagnostics } : {},
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
} : {}
};
}
//#endregion
//#region src/commands/status-json-runtime.ts
/** Builds the status JSON object from a completed scan plus optional runtime/deep probes. */
async function resolveStatusJsonOutput(params) {
const { scan, opts } = params;
const { securityAudit, usage, health, lastHeartbeat, gatewayService, nodeService } = await resolveStatusRuntimeSnapshot({
config: scan.cfg,
sourceConfig: scan.sourceConfig,
timeoutMs: opts.timeoutMs,
...opts.agent ? { agentId: opts.agent } : {},
usage: opts.usage,
deep: opts.deep,
gatewayReachable: scan.gatewayReachable,
includeSecurityAudit: params.includeSecurityAudit,
suppressHealthErrors: params.suppressHealthErrors
});
const payload = buildStatusJsonPayload({
summary: scan.summary,
surface: buildStatusOverviewSurfaceFromScan({
scan,
gatewayService,
nodeService
}),
osSummary: scan.osSummary,
memory: scan.memory,
memoryPlugin: scan.memoryPlugin,
agents: scan.agentStatus,
configDiagnostics: scan.configDiagnostics,
secretDiagnostics: scan.secretDiagnostics,
securityAudit,
health,
usage,
lastHeartbeat,
pluginCompatibility: params.includePluginCompatibility ? scan.pluginCompatibility : void 0
});
const backups = readBackupFreshness(scan.env ?? {});
if (backups.latest || backups.latestOk) Object.assign(payload, { backups });
return payload;
}
//#endregion
//#region src/commands/status-json-command.ts
/** Prevents --agent from implying that the aggregate status report itself is agent-scoped. */
function assertStatusUsageAgentScope(opts) {
if (opts.agent !== void 0 && opts.usage !== true) throw new Error("--agent is only valid with --usage");
}
/** Runs the fast status scan, resolves optional deep fields, and writes JSON through the runtime. */
async function runStatusJsonCommand(params) {
assertStatusUsageAgentScope(params.opts);
const scan = await params.scanStatusJsonFast({
timeoutMs: params.opts.timeoutMs,
all: params.opts.all
}, params.runtime);
writeRuntimeJson(params.runtime, await resolveStatusJsonOutput({
scan,
opts: params.opts,
includeSecurityAudit: params.includeSecurityAudit,
includePluginCompatibility: params.includePluginCompatibility,
suppressHealthErrors: params.suppressHealthErrors
}));
}
//#endregion
export { runStatusJsonCommand as n, assertStatusUsageAgentScope as t };