 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>
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| import {VERSION} from '../env/data.js';
 | |
| import AxiosError from '../core/AxiosError.js';
 | |
| 
 | |
| const validators = {};
 | |
| 
 | |
| // eslint-disable-next-line func-names
 | |
| ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
 | |
|   validators[type] = function validator(thing) {
 | |
|     return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
 | |
|   };
 | |
| });
 | |
| 
 | |
| const deprecatedWarnings = {};
 | |
| 
 | |
| /**
 | |
|  * Transitional option validator
 | |
|  *
 | |
|  * @param {function|boolean?} validator - set to false if the transitional option has been removed
 | |
|  * @param {string?} version - deprecated version / removed since version
 | |
|  * @param {string?} message - some message with additional info
 | |
|  *
 | |
|  * @returns {function}
 | |
|  */
 | |
| validators.transitional = function transitional(validator, version, message) {
 | |
|   function formatMessage(opt, desc) {
 | |
|     return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
 | |
|   }
 | |
| 
 | |
|   // eslint-disable-next-line func-names
 | |
|   return (value, opt, opts) => {
 | |
|     if (validator === false) {
 | |
|       throw new AxiosError(
 | |
|         formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
 | |
|         AxiosError.ERR_DEPRECATED
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     if (version && !deprecatedWarnings[opt]) {
 | |
|       deprecatedWarnings[opt] = true;
 | |
|       // eslint-disable-next-line no-console
 | |
|       console.warn(
 | |
|         formatMessage(
 | |
|           opt,
 | |
|           ' has been deprecated since v' + version + ' and will be removed in the near future'
 | |
|         )
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     return validator ? validator(value, opt, opts) : true;
 | |
|   };
 | |
| };
 | |
| 
 | |
| validators.spelling = function spelling(correctSpelling) {
 | |
|   return (value, opt) => {
 | |
|     // eslint-disable-next-line no-console
 | |
|     console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
 | |
|     return true;
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Assert object's properties type
 | |
|  *
 | |
|  * @param {object} options
 | |
|  * @param {object} schema
 | |
|  * @param {boolean?} allowUnknown
 | |
|  *
 | |
|  * @returns {object}
 | |
|  */
 | |
| 
 | |
| function assertOptions(options, schema, allowUnknown) {
 | |
|   if (typeof options !== 'object') {
 | |
|     throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
 | |
|   }
 | |
|   const keys = Object.keys(options);
 | |
|   let i = keys.length;
 | |
|   while (i-- > 0) {
 | |
|     const opt = keys[i];
 | |
|     const validator = schema[opt];
 | |
|     if (validator) {
 | |
|       const value = options[opt];
 | |
|       const result = value === undefined || validator(value, opt, options);
 | |
|       if (result !== true) {
 | |
|         throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
 | |
|       }
 | |
|       continue;
 | |
|     }
 | |
|     if (allowUnknown !== true) {
 | |
|       throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| export default {
 | |
|   assertOptions,
 | |
|   validators
 | |
| };
 |