feat: emit job-state events from rpc

This commit is contained in:
Peter Steinberger
2025-12-09 00:18:14 +01:00
parent c77fa12bda
commit 594e837440
3 changed files with 87 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
import chalk from "chalk";
import { randomUUID } from "node:crypto";
import { Command } from "commander";
import { agentCommand } from "../commands/agent.js";
import { healthCommand } from "../commands/health.js";
@@ -272,6 +273,14 @@ Examples:
return;
}
const jobId = cmd.jobId ? String(cmd.jobId) : randomUUID();
const startedAt = Date.now();
respond({
type: "event",
event: "job-state",
payload: { id: jobId, state: "started", startedAt },
});
const logs: string[] = [];
const runtime: RuntimeEnv = {
log: (msg: string) => logs.push(String(msg)),
@@ -299,9 +308,31 @@ Examples:
try {
await agentCommand(opts, runtime, createDefaultDeps());
const endedAt = Date.now();
respond({
type: "event",
event: "job-state",
payload: {
id: jobId,
state: "done",
durationMs: endedAt - startedAt,
endedAt,
},
});
const payload = extractPayload(logs);
respond({ type: "result", ok: true, payload });
} catch (err) {
const endedAt = Date.now();
respond({
type: "event",
event: "job-state",
payload: {
id: jobId,
state: "error",
durationMs: endedAt - startedAt,
endedAt,
},
});
respond({ type: "error", error: String(err) });
}
} catch (err) {