68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
function writeJson(payload) {
|
|
process.stdout.write(`${JSON.stringify(payload)}\n`);
|
|
}
|
|
|
|
async function readStdin() {
|
|
const chunks = [];
|
|
for await (const chunk of process.stdin) {
|
|
chunks.push(typeof chunk === "string" ? chunk : chunk.toString("utf8"));
|
|
}
|
|
return chunks.join("").trim();
|
|
}
|
|
|
|
function normalizePayload(raw) {
|
|
try {
|
|
const parsed = JSON.parse(raw);
|
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
return {
|
|
ok: false,
|
|
error: "INVALID_OMX_PAYLOAD: expected object",
|
|
};
|
|
}
|
|
return {
|
|
ok: true,
|
|
payload: parsed,
|
|
};
|
|
} catch {
|
|
return {
|
|
ok: false,
|
|
error: "INVALID_OMX_PAYLOAD: invalid json",
|
|
};
|
|
}
|
|
}
|
|
|
|
const raw = await readStdin();
|
|
const normalized = normalizePayload(raw);
|
|
|
|
if (!normalized.ok) {
|
|
writeJson({
|
|
status: "failed",
|
|
error: normalized.error,
|
|
});
|
|
process.exit(0);
|
|
}
|
|
|
|
const payload = normalized.payload;
|
|
const requestKind = typeof payload.requestKind === "string" ? payload.requestKind : "unknown";
|
|
const workersRequested =
|
|
typeof payload.workersRequested === "number" && Number.isFinite(payload.workersRequested)
|
|
? payload.workersRequested
|
|
: 1;
|
|
const objective =
|
|
typeof payload.objective === "string" && payload.objective.trim()
|
|
? payload.objective.trim()
|
|
: "OMX Team 链路正常";
|
|
|
|
writeJson({
|
|
status: "completed",
|
|
backendId: "omx-team",
|
|
requestId: typeof payload.requestId === "string" ? payload.requestId : undefined,
|
|
dispatchExecutionId:
|
|
typeof payload.dispatchExecutionId === "string" ? payload.dispatchExecutionId : undefined,
|
|
rawThreadReply: `OMX smoke completed: ${objective} (kind=${requestKind}, workers=${workersRequested})`,
|
|
replyBody: `主 Agent 汇总:${objective}`,
|
|
summary: `OMX smoke completed: ${objective} (kind=${requestKind}, workers=${workersRequested})`,
|
|
});
|