Files
pikasTech-HWLAB/internal/hwpod/activities.ts
T

21 lines
1.1 KiB
TypeScript

/*
* SPEC: PJ2026-010103 HWPOD 服务。
* 实现引用: draft-2026-07-20-hwpod-temporal-split。
* 责任: 把独立 HWPOD workflow 接到迁移期 Cloud API authority。
*/
import { validateHwpodOperationInput } from "./contracts.ts";
export async function executeHwpodOperation(raw: unknown) {
const input = validateHwpodOperationInput(raw);
const response = await fetch(`${input.runtimeApiUrl}/v1/hwpod-node-ops`, {
method: "POST",
headers: { "content-type": "application/json", ...(input.authorization ? { authorization: input.authorization } : {}) },
body: JSON.stringify(input.plan),
signal: AbortSignal.timeout(900_000)
});
const body = await response.json().catch(() => null);
if (!body || typeof body !== "object") return { ok: false, status: "failed", operationId: input.operationId, httpStatus: response.status, blocker: { code: "hwpod_runtime_response_invalid" } };
return { ok: response.ok && (body as any).ok !== false, status: (body as any).status ?? (response.ok ? "completed" : "failed"), operationId: input.operationId, response: body };
}