UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

29 lines (28 loc) • 1.11 kB
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) }; }