synkrokonn-dev
Version:
Plugin-based cross-chain orchestration middleware for Web3 enterprise automation.
25 lines (24 loc) • 963 B
JavaScript
// plugins/rollback.ts
import { RollbackManager } from "../core/RollbackManager.js";
// Shared rollback manager instance
const rollbackManager = new RollbackManager();
export const RollbackPlugin = {
onEvent: async (eventName, payload) => {
if (eventName === "StepSuccess" && payload.step?.reversible) {
const stepId = payload.step?.id || `step-${Date.now()}`;
rollbackManager.addRollbackStep(stepId, async () => {
console.log(`[RollbackPlugin] Reversing step ${stepId}`);
// Add your smart contract undo logic here
});
}
},
onError: async (error, payload) => {
const context = payload?.context || {
id: 'unknown',
timestamp: new Date().toISOString(),
metadata: {},
};
console.error("[RollbackPlugin] Error occurred. Starting rollback...");
await rollbackManager.executeRollback(context);
},
};