@paroicms/site-generator-plugin
Version:
ParoiCMS Site Generator Plugin
32 lines (31 loc) • 1.09 kB
JavaScript
import { messageOf } from "@paroi/data-formatters-lib";
import { insertIssueEvent, updateStep } from "../../db/db-write.queries.js";
export function safeCallStep(ctx, stepHandle, cb) {
void safeCallStepExec(ctx, stepHandle, cb);
}
async function safeCallStepExec(ctx, stepHandle, cb) {
const { logger, sessionId } = ctx;
const { stepNumber } = stepHandle;
try {
await cb();
}
catch (error) {
logger.error(`[${sessionId}]`, error);
try {
await updateStep(ctx, stepHandle, {
status: "failed",
currentActivity: null,
explanation: null, // TODO: implement error explanation (localized)
});
await insertIssueEvent(ctx, {
eventType: "stepError",
issueMessage: messageOf(error),
llmTaskName: undefined, // TODO: implement StepError exception with task name
stepNumber,
});
}
catch (error) {
logger.error(`[${sessionId}] Error after error`, error);
}
}
}