 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>
		
			
				
	
	
		
			154 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // https://d3js.org/d3-timer/ v3.0.1 Copyright 2010-2021 Mike Bostock
 | ||
| (function (global, factory) {
 | ||
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
 | ||
| typeof define === 'function' && define.amd ? define(['exports'], factory) :
 | ||
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {}));
 | ||
| }(this, (function (exports) { 'use strict';
 | ||
| 
 | ||
| var frame = 0, // is an animation frame pending?
 | ||
|     timeout$1 = 0, // is a timeout pending?
 | ||
|     interval$1 = 0, // are any timers active?
 | ||
|     pokeDelay = 1000, // how frequently we check for clock skew
 | ||
|     taskHead,
 | ||
|     taskTail,
 | ||
|     clockLast = 0,
 | ||
|     clockNow = 0,
 | ||
|     clockSkew = 0,
 | ||
|     clock = typeof performance === "object" && performance.now ? performance : Date,
 | ||
|     setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };
 | ||
| 
 | ||
| function now() {
 | ||
|   return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);
 | ||
| }
 | ||
| 
 | ||
| function clearNow() {
 | ||
|   clockNow = 0;
 | ||
| }
 | ||
| 
 | ||
| function Timer() {
 | ||
|   this._call =
 | ||
|   this._time =
 | ||
|   this._next = null;
 | ||
| }
 | ||
| 
 | ||
| Timer.prototype = timer.prototype = {
 | ||
|   constructor: Timer,
 | ||
|   restart: function(callback, delay, time) {
 | ||
|     if (typeof callback !== "function") throw new TypeError("callback is not a function");
 | ||
|     time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);
 | ||
|     if (!this._next && taskTail !== this) {
 | ||
|       if (taskTail) taskTail._next = this;
 | ||
|       else taskHead = this;
 | ||
|       taskTail = this;
 | ||
|     }
 | ||
|     this._call = callback;
 | ||
|     this._time = time;
 | ||
|     sleep();
 | ||
|   },
 | ||
|   stop: function() {
 | ||
|     if (this._call) {
 | ||
|       this._call = null;
 | ||
|       this._time = Infinity;
 | ||
|       sleep();
 | ||
|     }
 | ||
|   }
 | ||
| };
 | ||
| 
 | ||
| function timer(callback, delay, time) {
 | ||
|   var t = new Timer;
 | ||
|   t.restart(callback, delay, time);
 | ||
|   return t;
 | ||
| }
 | ||
| 
 | ||
| function timerFlush() {
 | ||
|   now(); // Get the current time, if not already set.
 | ||
|   ++frame; // Pretend we’ve set an alarm, if we haven’t already.
 | ||
|   var t = taskHead, e;
 | ||
|   while (t) {
 | ||
|     if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);
 | ||
|     t = t._next;
 | ||
|   }
 | ||
|   --frame;
 | ||
| }
 | ||
| 
 | ||
| function wake() {
 | ||
|   clockNow = (clockLast = clock.now()) + clockSkew;
 | ||
|   frame = timeout$1 = 0;
 | ||
|   try {
 | ||
|     timerFlush();
 | ||
|   } finally {
 | ||
|     frame = 0;
 | ||
|     nap();
 | ||
|     clockNow = 0;
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| function poke() {
 | ||
|   var now = clock.now(), delay = now - clockLast;
 | ||
|   if (delay > pokeDelay) clockSkew -= delay, clockLast = now;
 | ||
| }
 | ||
| 
 | ||
| function nap() {
 | ||
|   var t0, t1 = taskHead, t2, time = Infinity;
 | ||
|   while (t1) {
 | ||
|     if (t1._call) {
 | ||
|       if (time > t1._time) time = t1._time;
 | ||
|       t0 = t1, t1 = t1._next;
 | ||
|     } else {
 | ||
|       t2 = t1._next, t1._next = null;
 | ||
|       t1 = t0 ? t0._next = t2 : taskHead = t2;
 | ||
|     }
 | ||
|   }
 | ||
|   taskTail = t0;
 | ||
|   sleep(time);
 | ||
| }
 | ||
| 
 | ||
| function sleep(time) {
 | ||
|   if (frame) return; // Soonest alarm already set, or will be.
 | ||
|   if (timeout$1) timeout$1 = clearTimeout(timeout$1);
 | ||
|   var delay = time - clockNow; // Strictly less than if we recomputed clockNow.
 | ||
|   if (delay > 24) {
 | ||
|     if (time < Infinity) timeout$1 = setTimeout(wake, time - clock.now() - clockSkew);
 | ||
|     if (interval$1) interval$1 = clearInterval(interval$1);
 | ||
|   } else {
 | ||
|     if (!interval$1) clockLast = clock.now(), interval$1 = setInterval(poke, pokeDelay);
 | ||
|     frame = 1, setFrame(wake);
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| function timeout(callback, delay, time) {
 | ||
|   var t = new Timer;
 | ||
|   delay = delay == null ? 0 : +delay;
 | ||
|   t.restart(elapsed => {
 | ||
|     t.stop();
 | ||
|     callback(elapsed + delay);
 | ||
|   }, delay, time);
 | ||
|   return t;
 | ||
| }
 | ||
| 
 | ||
| function interval(callback, delay, time) {
 | ||
|   var t = new Timer, total = delay;
 | ||
|   if (delay == null) return t.restart(callback, delay, time), t;
 | ||
|   t._restart = t.restart;
 | ||
|   t.restart = function(callback, delay, time) {
 | ||
|     delay = +delay, time = time == null ? now() : +time;
 | ||
|     t._restart(function tick(elapsed) {
 | ||
|       elapsed += total;
 | ||
|       t._restart(tick, total += delay, time);
 | ||
|       callback(elapsed);
 | ||
|     }, delay, time);
 | ||
|   };
 | ||
|   t.restart(callback, delay, time);
 | ||
|   return t;
 | ||
| }
 | ||
| 
 | ||
| exports.interval = interval;
 | ||
| exports.now = now;
 | ||
| exports.timeout = timeout;
 | ||
| exports.timer = timer;
 | ||
| exports.timerFlush = timerFlush;
 | ||
| 
 | ||
| Object.defineProperty(exports, '__esModule', { value: true });
 | ||
| 
 | ||
| })));
 |