 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>
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @fileoverview `ConfigDependency` class.
 | |
|  *
 | |
|  * `ConfigDependency` class expresses a loaded parser or plugin.
 | |
|  *
 | |
|  * If the parser or plugin was loaded successfully, it has `definition` property
 | |
|  * and `filePath` property. Otherwise, it has `error` property.
 | |
|  *
 | |
|  * When `JSON.stringify()` converted a `ConfigDependency` object to a JSON, it
 | |
|  * omits `definition` property.
 | |
|  *
 | |
|  * `ConfigArrayFactory` creates `ConfigDependency` objects when it loads parsers
 | |
|  * or plugins.
 | |
|  *
 | |
|  * @author Toru Nagashima <https://github.com/mysticatea>
 | |
|  */
 | |
| 
 | |
| import util from "util";
 | |
| 
 | |
| /**
 | |
|  * The class is to store parsers or plugins.
 | |
|  * This class hides the loaded object from `JSON.stringify()` and `console.log`.
 | |
|  * @template T
 | |
|  */
 | |
| class ConfigDependency {
 | |
| 
 | |
|     /**
 | |
|      * Initialize this instance.
 | |
|      * @param {Object} data The dependency data.
 | |
|      * @param {T} [data.definition] The dependency if the loading succeeded.
 | |
|      * @param {T} [data.original] The original, non-normalized dependency if the loading succeeded.
 | |
|      * @param {Error} [data.error] The error object if the loading failed.
 | |
|      * @param {string} [data.filePath] The actual path to the dependency if the loading succeeded.
 | |
|      * @param {string} data.id The ID of this dependency.
 | |
|      * @param {string} data.importerName The name of the config file which loads this dependency.
 | |
|      * @param {string} data.importerPath The path to the config file which loads this dependency.
 | |
|      */
 | |
|     constructor({
 | |
|         definition = null,
 | |
|         original = null,
 | |
|         error = null,
 | |
|         filePath = null,
 | |
|         id,
 | |
|         importerName,
 | |
|         importerPath
 | |
|     }) {
 | |
| 
 | |
|         /**
 | |
|          * The loaded dependency if the loading succeeded.
 | |
|          * @type {T|null}
 | |
|          */
 | |
|         this.definition = definition;
 | |
| 
 | |
|         /**
 | |
|          * The original dependency as loaded directly from disk if the loading succeeded.
 | |
|          * @type {T|null}
 | |
|          */
 | |
|         this.original = original;
 | |
| 
 | |
|         /**
 | |
|          * The error object if the loading failed.
 | |
|          * @type {Error|null}
 | |
|          */
 | |
|         this.error = error;
 | |
| 
 | |
|         /**
 | |
|          * The loaded dependency if the loading succeeded.
 | |
|          * @type {string|null}
 | |
|          */
 | |
|         this.filePath = filePath;
 | |
| 
 | |
|         /**
 | |
|          * The ID of this dependency.
 | |
|          * @type {string}
 | |
|          */
 | |
|         this.id = id;
 | |
| 
 | |
|         /**
 | |
|          * The name of the config file which loads this dependency.
 | |
|          * @type {string}
 | |
|          */
 | |
|         this.importerName = importerName;
 | |
| 
 | |
|         /**
 | |
|          * The path to the config file which loads this dependency.
 | |
|          * @type {string}
 | |
|          */
 | |
|         this.importerPath = importerPath;
 | |
|     }
 | |
| 
 | |
|     // eslint-disable-next-line jsdoc/require-description
 | |
|     /**
 | |
|      * @returns {Object} a JSON compatible object.
 | |
|      */
 | |
|     toJSON() {
 | |
|         const obj = this[util.inspect.custom]();
 | |
| 
 | |
|         // Display `error.message` (`Error#message` is unenumerable).
 | |
|         if (obj.error instanceof Error) {
 | |
|             obj.error = { ...obj.error, message: obj.error.message };
 | |
|         }
 | |
| 
 | |
|         return obj;
 | |
|     }
 | |
| 
 | |
|     // eslint-disable-next-line jsdoc/require-description
 | |
|     /**
 | |
|      * @returns {Object} an object to display by `console.log()`.
 | |
|      */
 | |
|     [util.inspect.custom]() {
 | |
|         const {
 | |
|             definition: _ignore1, // eslint-disable-line no-unused-vars
 | |
|             original: _ignore2, // eslint-disable-line no-unused-vars
 | |
|             ...obj
 | |
|         } = this;
 | |
| 
 | |
|         return obj;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /** @typedef {ConfigDependency<import("../../shared/types").Parser>} DependentParser */
 | |
| /** @typedef {ConfigDependency<import("../../shared/types").Plugin>} DependentPlugin */
 | |
| 
 | |
| export { ConfigDependency };
 |