 85bf1341f3
			
		
	
	85bf1341f3
	
	
	
		
			
			Frontend Enhancements: - Complete React TypeScript frontend with modern UI components - Distributed workflows management interface with real-time updates - Socket.IO integration for live agent status monitoring - Agent management dashboard with cluster visualization - Project management interface with metrics and task tracking - Responsive design with proper error handling and loading states Backend Infrastructure: - Distributed coordinator for multi-agent workflow orchestration - Cluster management API with comprehensive agent operations - Enhanced database models for agents and projects - Project service for filesystem-based project discovery - Performance monitoring and metrics collection - Comprehensive API documentation and error handling Documentation: - Complete distributed development guide (README_DISTRIBUTED.md) - Comprehensive development report with architecture insights - System configuration templates and deployment guides The platform now provides a complete web interface for managing the distributed AI cluster with real-time monitoring, workflow orchestration, and agent coordination capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| /**
 | |
|  * Initialize backoff timer with `opts`.
 | |
|  *
 | |
|  * - `min` initial timeout in milliseconds [100]
 | |
|  * - `max` max timeout [10000]
 | |
|  * - `jitter` [0]
 | |
|  * - `factor` [2]
 | |
|  *
 | |
|  * @param {Object} opts
 | |
|  * @api public
 | |
|  */
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.Backoff = Backoff;
 | |
| function Backoff(opts) {
 | |
|     opts = opts || {};
 | |
|     this.ms = opts.min || 100;
 | |
|     this.max = opts.max || 10000;
 | |
|     this.factor = opts.factor || 2;
 | |
|     this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
 | |
|     this.attempts = 0;
 | |
| }
 | |
| /**
 | |
|  * Return the backoff duration.
 | |
|  *
 | |
|  * @return {Number}
 | |
|  * @api public
 | |
|  */
 | |
| Backoff.prototype.duration = function () {
 | |
|     var ms = this.ms * Math.pow(this.factor, this.attempts++);
 | |
|     if (this.jitter) {
 | |
|         var rand = Math.random();
 | |
|         var deviation = Math.floor(rand * this.jitter * ms);
 | |
|         ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
 | |
|     }
 | |
|     return Math.min(ms, this.max) | 0;
 | |
| };
 | |
| /**
 | |
|  * Reset the number of attempts.
 | |
|  *
 | |
|  * @api public
 | |
|  */
 | |
| Backoff.prototype.reset = function () {
 | |
|     this.attempts = 0;
 | |
| };
 | |
| /**
 | |
|  * Set the minimum duration
 | |
|  *
 | |
|  * @api public
 | |
|  */
 | |
| Backoff.prototype.setMin = function (min) {
 | |
|     this.ms = min;
 | |
| };
 | |
| /**
 | |
|  * Set the maximum duration
 | |
|  *
 | |
|  * @api public
 | |
|  */
 | |
| Backoff.prototype.setMax = function (max) {
 | |
|     this.max = max;
 | |
| };
 | |
| /**
 | |
|  * Set the jitter
 | |
|  *
 | |
|  * @api public
 | |
|  */
 | |
| Backoff.prototype.setJitter = function (jitter) {
 | |
|     this.jitter = jitter;
 | |
| };
 |