 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
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Generated by LiveScript 1.6.0
 | |
| var values, keys, pairsToObj, objToPairs, listsToObj, objToLists, empty, each, map, compact, filter, reject, partition, find;
 | |
| values = function(object){
 | |
|   var i$, x, results$ = [];
 | |
|   for (i$ in object) {
 | |
|     x = object[i$];
 | |
|     results$.push(x);
 | |
|   }
 | |
|   return results$;
 | |
| };
 | |
| keys = function(object){
 | |
|   var x, results$ = [];
 | |
|   for (x in object) {
 | |
|     results$.push(x);
 | |
|   }
 | |
|   return results$;
 | |
| };
 | |
| pairsToObj = function(object){
 | |
|   var i$, len$, x, resultObj$ = {};
 | |
|   for (i$ = 0, len$ = object.length; i$ < len$; ++i$) {
 | |
|     x = object[i$];
 | |
|     resultObj$[x[0]] = x[1];
 | |
|   }
 | |
|   return resultObj$;
 | |
| };
 | |
| objToPairs = function(object){
 | |
|   var key, value, results$ = [];
 | |
|   for (key in object) {
 | |
|     value = object[key];
 | |
|     results$.push([key, value]);
 | |
|   }
 | |
|   return results$;
 | |
| };
 | |
| listsToObj = curry$(function(keys, values){
 | |
|   var i$, len$, i, key, resultObj$ = {};
 | |
|   for (i$ = 0, len$ = keys.length; i$ < len$; ++i$) {
 | |
|     i = i$;
 | |
|     key = keys[i$];
 | |
|     resultObj$[key] = values[i];
 | |
|   }
 | |
|   return resultObj$;
 | |
| });
 | |
| objToLists = function(object){
 | |
|   var keys, values, key, value;
 | |
|   keys = [];
 | |
|   values = [];
 | |
|   for (key in object) {
 | |
|     value = object[key];
 | |
|     keys.push(key);
 | |
|     values.push(value);
 | |
|   }
 | |
|   return [keys, values];
 | |
| };
 | |
| empty = function(object){
 | |
|   var x;
 | |
|   for (x in object) {
 | |
|     return false;
 | |
|   }
 | |
|   return true;
 | |
| };
 | |
| each = curry$(function(f, object){
 | |
|   var i$, x;
 | |
|   for (i$ in object) {
 | |
|     x = object[i$];
 | |
|     f(x);
 | |
|   }
 | |
|   return object;
 | |
| });
 | |
| map = curry$(function(f, object){
 | |
|   var k, x, resultObj$ = {};
 | |
|   for (k in object) {
 | |
|     x = object[k];
 | |
|     resultObj$[k] = f(x);
 | |
|   }
 | |
|   return resultObj$;
 | |
| });
 | |
| compact = function(object){
 | |
|   var k, x, resultObj$ = {};
 | |
|   for (k in object) {
 | |
|     x = object[k];
 | |
|     if (x) {
 | |
|       resultObj$[k] = x;
 | |
|     }
 | |
|   }
 | |
|   return resultObj$;
 | |
| };
 | |
| filter = curry$(function(f, object){
 | |
|   var k, x, resultObj$ = {};
 | |
|   for (k in object) {
 | |
|     x = object[k];
 | |
|     if (f(x)) {
 | |
|       resultObj$[k] = x;
 | |
|     }
 | |
|   }
 | |
|   return resultObj$;
 | |
| });
 | |
| reject = curry$(function(f, object){
 | |
|   var k, x, resultObj$ = {};
 | |
|   for (k in object) {
 | |
|     x = object[k];
 | |
|     if (!f(x)) {
 | |
|       resultObj$[k] = x;
 | |
|     }
 | |
|   }
 | |
|   return resultObj$;
 | |
| });
 | |
| partition = curry$(function(f, object){
 | |
|   var passed, failed, k, x;
 | |
|   passed = {};
 | |
|   failed = {};
 | |
|   for (k in object) {
 | |
|     x = object[k];
 | |
|     (f(x) ? passed : failed)[k] = x;
 | |
|   }
 | |
|   return [passed, failed];
 | |
| });
 | |
| find = curry$(function(f, object){
 | |
|   var i$, x;
 | |
|   for (i$ in object) {
 | |
|     x = object[i$];
 | |
|     if (f(x)) {
 | |
|       return x;
 | |
|     }
 | |
|   }
 | |
| });
 | |
| module.exports = {
 | |
|   values: values,
 | |
|   keys: keys,
 | |
|   pairsToObj: pairsToObj,
 | |
|   objToPairs: objToPairs,
 | |
|   listsToObj: listsToObj,
 | |
|   objToLists: objToLists,
 | |
|   empty: empty,
 | |
|   each: each,
 | |
|   map: map,
 | |
|   filter: filter,
 | |
|   compact: compact,
 | |
|   reject: reject,
 | |
|   partition: partition,
 | |
|   find: find
 | |
| };
 | |
| function curry$(f, bound){
 | |
|   var context,
 | |
|   _curry = function(args) {
 | |
|     return f.length > 1 ? function(){
 | |
|       var params = args ? args.concat() : [];
 | |
|       context = bound ? context || this : this;
 | |
|       return params.push.apply(params, arguments) <
 | |
|           f.length && arguments.length ?
 | |
|         _curry.call(context, params) : f.apply(context, params);
 | |
|     } : f;
 | |
|   };
 | |
|   return _curry();
 | |
| } |