 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>
		
			
				
	
	
		
			192 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports["default"] = void 0;
 | |
| var _util = require("../util");
 | |
| function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 | |
| function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
 | |
| var cloneNode = function cloneNode(obj, parent) {
 | |
|   if (typeof obj !== 'object' || obj === null) {
 | |
|     return obj;
 | |
|   }
 | |
|   var cloned = new obj.constructor();
 | |
|   for (var i in obj) {
 | |
|     if (!obj.hasOwnProperty(i)) {
 | |
|       continue;
 | |
|     }
 | |
|     var value = obj[i];
 | |
|     var type = typeof value;
 | |
|     if (i === 'parent' && type === 'object') {
 | |
|       if (parent) {
 | |
|         cloned[i] = parent;
 | |
|       }
 | |
|     } else if (value instanceof Array) {
 | |
|       cloned[i] = value.map(function (j) {
 | |
|         return cloneNode(j, cloned);
 | |
|       });
 | |
|     } else {
 | |
|       cloned[i] = cloneNode(value, cloned);
 | |
|     }
 | |
|   }
 | |
|   return cloned;
 | |
| };
 | |
| var Node = /*#__PURE__*/function () {
 | |
|   function Node(opts) {
 | |
|     if (opts === void 0) {
 | |
|       opts = {};
 | |
|     }
 | |
|     Object.assign(this, opts);
 | |
|     this.spaces = this.spaces || {};
 | |
|     this.spaces.before = this.spaces.before || '';
 | |
|     this.spaces.after = this.spaces.after || '';
 | |
|   }
 | |
|   var _proto = Node.prototype;
 | |
|   _proto.remove = function remove() {
 | |
|     if (this.parent) {
 | |
|       this.parent.removeChild(this);
 | |
|     }
 | |
|     this.parent = undefined;
 | |
|     return this;
 | |
|   };
 | |
|   _proto.replaceWith = function replaceWith() {
 | |
|     if (this.parent) {
 | |
|       for (var index in arguments) {
 | |
|         this.parent.insertBefore(this, arguments[index]);
 | |
|       }
 | |
|       this.remove();
 | |
|     }
 | |
|     return this;
 | |
|   };
 | |
|   _proto.next = function next() {
 | |
|     return this.parent.at(this.parent.index(this) + 1);
 | |
|   };
 | |
|   _proto.prev = function prev() {
 | |
|     return this.parent.at(this.parent.index(this) - 1);
 | |
|   };
 | |
|   _proto.clone = function clone(overrides) {
 | |
|     if (overrides === void 0) {
 | |
|       overrides = {};
 | |
|     }
 | |
|     var cloned = cloneNode(this);
 | |
|     for (var name in overrides) {
 | |
|       cloned[name] = overrides[name];
 | |
|     }
 | |
|     return cloned;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Some non-standard syntax doesn't follow normal escaping rules for css.
 | |
|    * This allows non standard syntax to be appended to an existing property
 | |
|    * by specifying the escaped value. By specifying the escaped value,
 | |
|    * illegal characters are allowed to be directly inserted into css output.
 | |
|    * @param {string} name the property to set
 | |
|    * @param {any} value the unescaped value of the property
 | |
|    * @param {string} valueEscaped optional. the escaped value of the property.
 | |
|    */;
 | |
|   _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {
 | |
|     if (!this.raws) {
 | |
|       this.raws = {};
 | |
|     }
 | |
|     var originalValue = this[name];
 | |
|     var originalEscaped = this.raws[name];
 | |
|     this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.
 | |
|     if (originalEscaped || valueEscaped !== value) {
 | |
|       this.raws[name] = (originalEscaped || originalValue) + valueEscaped;
 | |
|     } else {
 | |
|       delete this.raws[name]; // delete any escaped value that was created by the setter.
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Some non-standard syntax doesn't follow normal escaping rules for css.
 | |
|    * This allows the escaped value to be specified directly, allowing illegal
 | |
|    * characters to be directly inserted into css output.
 | |
|    * @param {string} name the property to set
 | |
|    * @param {any} value the unescaped value of the property
 | |
|    * @param {string} valueEscaped the escaped value of the property.
 | |
|    */;
 | |
|   _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {
 | |
|     if (!this.raws) {
 | |
|       this.raws = {};
 | |
|     }
 | |
|     this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
 | |
|     this.raws[name] = valueEscaped;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * When you want a value to passed through to CSS directly. This method
 | |
|    * deletes the corresponding raw value causing the stringifier to fallback
 | |
|    * to the unescaped value.
 | |
|    * @param {string} name the property to set.
 | |
|    * @param {any} value The value that is both escaped and unescaped.
 | |
|    */;
 | |
|   _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {
 | |
|     this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
 | |
|     if (this.raws) {
 | |
|       delete this.raws[name];
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    *
 | |
|    * @param {number} line The number (starting with 1)
 | |
|    * @param {number} column The column number (starting with 1)
 | |
|    */;
 | |
|   _proto.isAtPosition = function isAtPosition(line, column) {
 | |
|     if (this.source && this.source.start && this.source.end) {
 | |
|       if (this.source.start.line > line) {
 | |
|         return false;
 | |
|       }
 | |
|       if (this.source.end.line < line) {
 | |
|         return false;
 | |
|       }
 | |
|       if (this.source.start.line === line && this.source.start.column > column) {
 | |
|         return false;
 | |
|       }
 | |
|       if (this.source.end.line === line && this.source.end.column < column) {
 | |
|         return false;
 | |
|       }
 | |
|       return true;
 | |
|     }
 | |
|     return undefined;
 | |
|   };
 | |
|   _proto.stringifyProperty = function stringifyProperty(name) {
 | |
|     return this.raws && this.raws[name] || this[name];
 | |
|   };
 | |
|   _proto.valueToString = function valueToString() {
 | |
|     return String(this.stringifyProperty("value"));
 | |
|   };
 | |
|   _proto.toString = function toString() {
 | |
|     return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');
 | |
|   };
 | |
|   _createClass(Node, [{
 | |
|     key: "rawSpaceBefore",
 | |
|     get: function get() {
 | |
|       var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;
 | |
|       if (rawSpace === undefined) {
 | |
|         rawSpace = this.spaces && this.spaces.before;
 | |
|       }
 | |
|       return rawSpace || "";
 | |
|     },
 | |
|     set: function set(raw) {
 | |
|       (0, _util.ensureObject)(this, "raws", "spaces");
 | |
|       this.raws.spaces.before = raw;
 | |
|     }
 | |
|   }, {
 | |
|     key: "rawSpaceAfter",
 | |
|     get: function get() {
 | |
|       var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;
 | |
|       if (rawSpace === undefined) {
 | |
|         rawSpace = this.spaces.after;
 | |
|       }
 | |
|       return rawSpace || "";
 | |
|     },
 | |
|     set: function set(raw) {
 | |
|       (0, _util.ensureObject)(this, "raws", "spaces");
 | |
|       this.raws.spaces.after = raw;
 | |
|     }
 | |
|   }]);
 | |
|   return Node;
 | |
| }();
 | |
| exports["default"] = Node;
 | |
| module.exports = exports.default; |