feat: premium tier features — auto-backup scheduling, resource alerting, bundled workflows, one-click revert, notification manager

This commit is contained in:
Hermes
2026-05-27 23:39:46 -07:00
parent 6ce0a18f98
commit 11823a1466
19 changed files with 3686 additions and 407 deletions
+38
View File
@@ -64,6 +64,38 @@ class UpdateManager extends EventEmitter {
}
}
/**
* Trigger bundled workflows for an event
*/
triggerWorkflows(eventType, eventData) {
if (!this.workflowEngine) {
console.log('[UpdateManager] Workflow engine not set, skipping workflow trigger');
return;
}
try {
this.workflowEngine.triggerForEvent(eventType, eventData)
.then(results => {
if (results && results.length > 0) {
console.log(`[UpdateManager] Triggered ${results.length} workflow(s) for ${eventType}`);
}
})
.catch(err => {
console.error('[UpdateManager] Workflow trigger error:', err.message);
});
} catch (error) {
console.error('[UpdateManager] Error triggering workflows:', error.message);
}
}
/**
* Set the workflow engine for triggering workflows
*/
setWorkflowEngine(workflowEngine) {
this.workflowEngine = workflowEngine;
console.log('[UpdateManager] Workflow engine configured');
}
/**
* Check for updates for all containers
*/
@@ -281,6 +313,12 @@ class UpdateManager extends EventEmitter {
timestamp: new Date().toISOString()
};
// Emit pre-update event for bundled workflows (e.g., backup-before-update)
this.emit('pre-update', { containerId, containerName, imageName, backup });
// Also trigger workflows for pre-update event directly
this.triggerWorkflows('pre-update', { containerId, containerName, appId: containerName, imageName });
// Pull latest image
console.log(`[UpdateManager] Pulling latest image: ${imageName}`);
await this.pullImage(imageName);