 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>
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| /*eslint-disable max-len*/
 | |
| 
 | |
| var YAMLException = require('./exception');
 | |
| var Type          = require('./type');
 | |
| 
 | |
| 
 | |
| function compileList(schema, name) {
 | |
|   var result = [];
 | |
| 
 | |
|   schema[name].forEach(function (currentType) {
 | |
|     var newIndex = result.length;
 | |
| 
 | |
|     result.forEach(function (previousType, previousIndex) {
 | |
|       if (previousType.tag === currentType.tag &&
 | |
|           previousType.kind === currentType.kind &&
 | |
|           previousType.multi === currentType.multi) {
 | |
| 
 | |
|         newIndex = previousIndex;
 | |
|       }
 | |
|     });
 | |
| 
 | |
|     result[newIndex] = currentType;
 | |
|   });
 | |
| 
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| 
 | |
| function compileMap(/* lists... */) {
 | |
|   var result = {
 | |
|         scalar: {},
 | |
|         sequence: {},
 | |
|         mapping: {},
 | |
|         fallback: {},
 | |
|         multi: {
 | |
|           scalar: [],
 | |
|           sequence: [],
 | |
|           mapping: [],
 | |
|           fallback: []
 | |
|         }
 | |
|       }, index, length;
 | |
| 
 | |
|   function collectType(type) {
 | |
|     if (type.multi) {
 | |
|       result.multi[type.kind].push(type);
 | |
|       result.multi['fallback'].push(type);
 | |
|     } else {
 | |
|       result[type.kind][type.tag] = result['fallback'][type.tag] = type;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   for (index = 0, length = arguments.length; index < length; index += 1) {
 | |
|     arguments[index].forEach(collectType);
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| 
 | |
| function Schema(definition) {
 | |
|   return this.extend(definition);
 | |
| }
 | |
| 
 | |
| 
 | |
| Schema.prototype.extend = function extend(definition) {
 | |
|   var implicit = [];
 | |
|   var explicit = [];
 | |
| 
 | |
|   if (definition instanceof Type) {
 | |
|     // Schema.extend(type)
 | |
|     explicit.push(definition);
 | |
| 
 | |
|   } else if (Array.isArray(definition)) {
 | |
|     // Schema.extend([ type1, type2, ... ])
 | |
|     explicit = explicit.concat(definition);
 | |
| 
 | |
|   } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {
 | |
|     // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })
 | |
|     if (definition.implicit) implicit = implicit.concat(definition.implicit);
 | |
|     if (definition.explicit) explicit = explicit.concat(definition.explicit);
 | |
| 
 | |
|   } else {
 | |
|     throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +
 | |
|       'or a schema definition ({ implicit: [...], explicit: [...] })');
 | |
|   }
 | |
| 
 | |
|   implicit.forEach(function (type) {
 | |
|     if (!(type instanceof Type)) {
 | |
|       throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
 | |
|     }
 | |
| 
 | |
|     if (type.loadKind && type.loadKind !== 'scalar') {
 | |
|       throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
 | |
|     }
 | |
| 
 | |
|     if (type.multi) {
 | |
|       throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   explicit.forEach(function (type) {
 | |
|     if (!(type instanceof Type)) {
 | |
|       throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   var result = Object.create(Schema.prototype);
 | |
| 
 | |
|   result.implicit = (this.implicit || []).concat(implicit);
 | |
|   result.explicit = (this.explicit || []).concat(explicit);
 | |
| 
 | |
|   result.compiledImplicit = compileList(result, 'implicit');
 | |
|   result.compiledExplicit = compileList(result, 'explicit');
 | |
|   result.compiledTypeMap  = compileMap(result.compiledImplicit, result.compiledExplicit);
 | |
| 
 | |
|   return result;
 | |
| };
 | |
| 
 | |
| 
 | |
| module.exports = Schema;
 |