fix: render web probe observe start summary (#659)

Co-authored-by: Codex <codex@noreply.local>
This commit is contained in:
Lyon
2026-06-22 14:49:33 +08:00
committed by GitHub
parent 1571fa8de9
commit 8ffe9e3249
+63 -3
View File
@@ -7204,7 +7204,7 @@ function runNodeWebProbeObserveStart(
secretSpec: RuntimeSecretSpec,
material: BootstrapAdminPasswordMaterial,
credential: Record<string, unknown>,
): Record<string, unknown> {
): Record<string, unknown> | RenderedCliResult {
const jobId = `webobs-${Date.now().toString(36)}-${randomBytes(3).toString("hex")}`;
const timestamp = new Date().toISOString().replace(/[-:]/gu, "").replace(/[.]\d{3}Z$/u, "Z");
const day = timestamp.slice(0, 8);
@@ -7256,7 +7256,7 @@ function runNodeWebProbeObserveStart(
updatedAt: new Date().toISOString(),
})
: null;
return {
return renderWebObserveStartResult({
ok: result.exitCode === 0 && started?.ok === true,
status: result.exitCode === 0 && started?.ok === true ? "started" : "blocked",
command: `hwlab nodes web-probe observe start --node ${options.node} --lane ${options.lane}`,
@@ -7273,7 +7273,7 @@ function runNodeWebProbeObserveStart(
next: webObserveNextCommands(observerId),
result: compactCommandResultRedacted(result, [material.password ?? ""]),
valuesRedacted: true,
};
});
}
function runNodeWebProbeObserveStatus(options: NodeWebProbeObserveOptions, spec: HwlabRuntimeLaneSpec): Record<string, unknown> | RenderedCliResult {
@@ -8447,6 +8447,66 @@ function withWebObserveRendered(result: Record<string, unknown>, renderedText: s
};
}
function renderWebObserveStartResult(result: Record<string, unknown>): Record<string, unknown> {
const observer = record(result.observer);
const heartbeat = record(observer.heartbeat);
const manifest = record(observer.manifest);
const commandResult = record(result.result);
const credential = record(result.credential);
const id = result.id ?? observer.id ?? observer.jobId ?? manifest.jobId ?? "-";
const status = result.status ?? manifest.status ?? heartbeat.status ?? "-";
const stateDir = observer.stateDir ?? manifest.stateDir ?? "-";
const blockedRows = result.ok === true ? [] : [
"",
"Blocked detail:",
webObserveTable(
["EXIT", "TIMEOUT", "STDOUT", "STDERR"],
[[
webObserveText(commandResult.exitCode),
webObserveText(commandResult.timedOut),
webObserveShort(webObserveText(commandResult.stdoutTail ?? commandResult.stdout), 160),
webObserveShort(webObserveText(commandResult.stderrTail ?? commandResult.stderr), 300),
]],
),
];
const renderedText = [
webObserveTable(
["OBSERVER", "NODE", "LANE", "STATUS", "PID", "SAMPLE", "UPDATED"],
[[
id,
result.node,
result.lane,
status,
observer.pid ?? heartbeat.pid,
heartbeat.sampleSeq,
heartbeat.updatedAt,
]],
),
"",
webObserveTable(
["URL", "TARGET_PATH", "STATE_DIR"],
[[result.url, result.targetPath, webObserveShort(webObserveText(stateDir), 96)]],
),
"",
webObserveTable(
["CREDENTIAL", "SOURCE", "VALUES"],
[[
credential.username ?? "-",
credential.sourceRef ?? "-",
credential.valuesRedacted === true ? "redacted" : "unknown",
]],
),
...blockedRows,
"",
"NEXT",
` status: bun scripts/cli.ts hwlab nodes web-probe observe status ${id}`,
` analyze: bun scripts/cli.ts hwlab nodes web-probe observe analyze ${id}`,
` command: bun scripts/cli.ts hwlab nodes web-probe observe command ${id} --type mark --label checkpoint`,
` stop: bun scripts/cli.ts hwlab nodes web-probe observe stop ${id}`,
].join("\n");
return withWebObserveRendered(result, renderedText);
}
function renderWebObserveStatusResult(result: Record<string, unknown>): Record<string, unknown> {
const observer = record(result.observer);
const commandResult = record(result.result);