openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
108 lines (107 loc) • 3.79 kB
JavaScript
import { r as defaultRuntime } from "./runtime-CF2WjnNZ.js";
import { d as readSourceConfigBestEffort } from "./io.runtime-B9iJRs3w.js";
import { t as VERSION } from "./version-v1kuAkGj.js";
import { c as normalizeUpdateChannel, f as resolveUpdateChannelDisplay } from "./update-channels-BcfztK6k.js";
import "./config-Cs0XXL3x.js";
import { r as theme } from "./theme-vjDs9tao.js";
import { a as listUpdateRuns, n as findActiveUpdateRun } from "./update-run-ledger-Dse_-g6v.js";
import { n as renderTable, t as getTerminalTableWidth } from "./table-DzN9OC44.js";
import { n as renderUpdateRunReport } from "./update-run-report-CEiRumC4.js";
import { i as formatGitInstallLabel, t as checkUpdateStatus } from "./update-check-CshgmMpJ.js";
import { c as parseTimeoutMsOrExit, m as resolveUpdateRoot } from "./shared-BVh4WwpA.js";
import { a as resolveUpdateAvailability, i as resolveStatusRegistryUpdateChannel, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-qWCUzIc2.js";
//#region src/cli/update-cli/status.ts
/** Print update status in JSON or table form for scripts and humans. */
async function updateStatusCommand(opts) {
const timeoutMs = parseTimeoutMsOrExit(opts.timeout);
if (timeoutMs === null) return;
const [root, config] = await Promise.all([resolveUpdateRoot(), readSourceConfigBestEffort()]);
const configChannel = normalizeUpdateChannel(config.update?.channel);
const update = await checkUpdateStatus({
root,
timeoutMs: timeoutMs ?? 3500,
fetchGit: true,
useDetachedDevUpstream: configChannel === "dev",
includeRegistry: true,
resolveRegistryChannel: ({ installKind, git }) => resolveStatusRegistryUpdateChannel({
configChannel,
installKind,
git
})
});
const channelInfo = resolveUpdateChannelDisplay({
configChannel,
currentVersion: VERSION,
installKind: update.installKind,
gitTag: update.git?.tag ?? null,
gitBranch: update.git?.branch ?? null
});
const channelLabel = channelInfo.label;
const updateAvailability = resolveUpdateAvailability(update);
const activeRun = findActiveUpdateRun();
const lastRun = listUpdateRuns({ limit: 1 })[0];
if (opts.json) {
defaultRuntime.writeJson({
update,
channel: {
value: channelInfo.channel,
source: channelInfo.source,
label: channelLabel,
config: configChannel
},
availability: updateAvailability,
...activeRun ? { activeRun } : {},
...lastRun ? { lastRun } : {}
});
return;
}
const gitLabel = formatGitInstallLabel(update);
const updateLine = formatUpdateOneLiner(update).replace(/^Update:\s*/i, "");
const tableWidth = getTerminalTableWidth();
const rows = [
{
Item: "Install",
Value: update.installKind === "git" ? `git (${update.root ?? "unknown"})` : update.installKind === "package" ? update.packageManager : "unknown"
},
{
Item: "Channel",
Value: channelLabel
},
...gitLabel ? [{
Item: "Git",
Value: gitLabel
}] : [],
{
Item: "Update",
Value: updateAvailability.available ? theme.warn(`available · ${updateLine}`) : updateLine
}
];
defaultRuntime.log(theme.heading("OpenClaw update status"));
defaultRuntime.log("");
defaultRuntime.log(renderTable({
width: tableWidth,
columns: [{
key: "Item",
header: "Item",
minWidth: 10
}, {
key: "Value",
header: "Value",
flex: true,
minWidth: 24
}],
rows
}).trimEnd());
defaultRuntime.log("");
const run = activeRun ?? lastRun;
if (run) {
const report = renderUpdateRunReport(run);
defaultRuntime.log(report.headline);
for (const line of report.lines) defaultRuntime.log(line);
defaultRuntime.log("");
}
const updateHint = formatUpdateAvailableHint(update);
if (updateHint) defaultRuntime.log(theme.warn(updateHint));
}
//#endregion
export { updateStatusCommand };