Files
openclaw/src/commands/status.scan-execute.ts
2026-04-06 12:55:56 +01:00

55 lines
2.0 KiB
TypeScript

import type { PluginCompatibilityNotice } from "../plugins/status.js";
import type { RuntimeEnv } from "../runtime.js";
import type { StatusScanOverviewResult } from "./status.scan-overview.ts";
import { resolveStatusSummaryFromOverview } from "./status.scan-overview.ts";
import { buildStatusScanResult, type StatusScanResult } from "./status.scan-result.ts";
import {
resolveMemoryPluginStatus,
type MemoryPluginStatus,
type MemoryStatusSnapshot,
} from "./status.scan.shared.js";
export async function executeStatusScanFromOverview(params: {
overview: StatusScanOverviewResult;
runtime?: RuntimeEnv;
resolveMemory: (args: {
cfg: StatusScanOverviewResult["cfg"];
agentStatus: StatusScanOverviewResult["agentStatus"];
memoryPlugin: MemoryPluginStatus;
runtime?: RuntimeEnv;
}) => Promise<MemoryStatusSnapshot | null>;
channelIssues: StatusScanResult["channelIssues"];
channels: StatusScanResult["channels"];
pluginCompatibility: PluginCompatibilityNotice[];
}) {
const memoryPlugin = resolveMemoryPluginStatus(params.overview.cfg);
const [memory, summary] = await Promise.all([
params.resolveMemory({
cfg: params.overview.cfg,
agentStatus: params.overview.agentStatus,
memoryPlugin,
...(params.runtime ? { runtime: params.runtime } : {}),
}),
resolveStatusSummaryFromOverview({ overview: params.overview }),
]);
return buildStatusScanResult({
cfg: params.overview.cfg,
sourceConfig: params.overview.sourceConfig,
secretDiagnostics: params.overview.secretDiagnostics,
osSummary: params.overview.osSummary,
tailscaleMode: params.overview.tailscaleMode,
tailscaleDns: params.overview.tailscaleDns,
tailscaleHttpsUrl: params.overview.tailscaleHttpsUrl,
update: params.overview.update,
gatewaySnapshot: params.overview.gatewaySnapshot,
channelIssues: params.channelIssues,
agentStatus: params.overview.agentStatus,
channels: params.channels,
summary,
memory,
memoryPlugin,
pluginCompatibility: params.pluginCompatibility,
});
}