@sema-agent/core
Version:
Stateless, task-oriented AI agent core
29 lines (28 loc) • 1.11 kB
JavaScript
import { PAUSE_REGISTRY } from "../pause-registry.js";
export function terminalProjection(terminal) {
switch (terminal.kind) {
case "completed":
return { status: "completed" };
case "failed":
return { status: "failed", errorCode: terminal.code, errorMessage: terminal.message };
case "blocked":
return { status: "blocked", blockedReason: terminal.reason };
case "paused": {
const status = PAUSE_REGISTRY[terminal.gate.kind].taskStatus;
return {
status,
...(status === "needs_review" ? { errorCode: "review.pending" } : {}),
checkpointToken: terminal.token,
checkpointId: terminal.checkpointId,
checkpointGate: terminal.gate,
workspaceRestoreMode: terminal.restoreMode,
};
}
}
}
export function amendTerminal(result, code, message) {
const t = result.terminal;
if (t.kind !== "failed")
return;
result.terminal = { ...t, code: t.code ?? code, message: message(t.message) };
}