 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
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var __importDefault = (this && this.__importDefault) || function (mod) {
 | |
|     return (mod && mod.__esModule) ? mod : { "default": mod };
 | |
| };
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| exports.Transport = exports.TransportError = void 0;
 | |
| const engine_io_parser_1 = require("engine.io-parser");
 | |
| const component_emitter_1 = require("@socket.io/component-emitter");
 | |
| const util_js_1 = require("./util.js");
 | |
| const parseqs_js_1 = require("./contrib/parseqs.js");
 | |
| const debug_1 = __importDefault(require("debug")); // debug()
 | |
| const debug = (0, debug_1.default)("engine.io-client:transport"); // debug()
 | |
| class TransportError extends Error {
 | |
|     constructor(reason, description, context) {
 | |
|         super(reason);
 | |
|         this.description = description;
 | |
|         this.context = context;
 | |
|         this.type = "TransportError";
 | |
|     }
 | |
| }
 | |
| exports.TransportError = TransportError;
 | |
| class Transport extends component_emitter_1.Emitter {
 | |
|     /**
 | |
|      * Transport abstract constructor.
 | |
|      *
 | |
|      * @param {Object} opts - options
 | |
|      * @protected
 | |
|      */
 | |
|     constructor(opts) {
 | |
|         super();
 | |
|         this.writable = false;
 | |
|         (0, util_js_1.installTimerFunctions)(this, opts);
 | |
|         this.opts = opts;
 | |
|         this.query = opts.query;
 | |
|         this.socket = opts.socket;
 | |
|         this.supportsBinary = !opts.forceBase64;
 | |
|     }
 | |
|     /**
 | |
|      * Emits an error.
 | |
|      *
 | |
|      * @param {String} reason
 | |
|      * @param description
 | |
|      * @param context - the error context
 | |
|      * @return {Transport} for chaining
 | |
|      * @protected
 | |
|      */
 | |
|     onError(reason, description, context) {
 | |
|         super.emitReserved("error", new TransportError(reason, description, context));
 | |
|         return this;
 | |
|     }
 | |
|     /**
 | |
|      * Opens the transport.
 | |
|      */
 | |
|     open() {
 | |
|         this.readyState = "opening";
 | |
|         this.doOpen();
 | |
|         return this;
 | |
|     }
 | |
|     /**
 | |
|      * Closes the transport.
 | |
|      */
 | |
|     close() {
 | |
|         if (this.readyState === "opening" || this.readyState === "open") {
 | |
|             this.doClose();
 | |
|             this.onClose();
 | |
|         }
 | |
|         return this;
 | |
|     }
 | |
|     /**
 | |
|      * Sends multiple packets.
 | |
|      *
 | |
|      * @param {Array} packets
 | |
|      */
 | |
|     send(packets) {
 | |
|         if (this.readyState === "open") {
 | |
|             this.write(packets);
 | |
|         }
 | |
|         else {
 | |
|             // this might happen if the transport was silently closed in the beforeunload event handler
 | |
|             debug("transport is not open, discarding packets");
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * Called upon open
 | |
|      *
 | |
|      * @protected
 | |
|      */
 | |
|     onOpen() {
 | |
|         this.readyState = "open";
 | |
|         this.writable = true;
 | |
|         super.emitReserved("open");
 | |
|     }
 | |
|     /**
 | |
|      * Called with data.
 | |
|      *
 | |
|      * @param {String} data
 | |
|      * @protected
 | |
|      */
 | |
|     onData(data) {
 | |
|         const packet = (0, engine_io_parser_1.decodePacket)(data, this.socket.binaryType);
 | |
|         this.onPacket(packet);
 | |
|     }
 | |
|     /**
 | |
|      * Called with a decoded packet.
 | |
|      *
 | |
|      * @protected
 | |
|      */
 | |
|     onPacket(packet) {
 | |
|         super.emitReserved("packet", packet);
 | |
|     }
 | |
|     /**
 | |
|      * Called upon close.
 | |
|      *
 | |
|      * @protected
 | |
|      */
 | |
|     onClose(details) {
 | |
|         this.readyState = "closed";
 | |
|         super.emitReserved("close", details);
 | |
|     }
 | |
|     /**
 | |
|      * Pauses the transport, in order not to lose packets during an upgrade.
 | |
|      *
 | |
|      * @param onPause
 | |
|      */
 | |
|     pause(onPause) { }
 | |
|     createUri(schema, query = {}) {
 | |
|         return (schema +
 | |
|             "://" +
 | |
|             this._hostname() +
 | |
|             this._port() +
 | |
|             this.opts.path +
 | |
|             this._query(query));
 | |
|     }
 | |
|     _hostname() {
 | |
|         const hostname = this.opts.hostname;
 | |
|         return hostname.indexOf(":") === -1 ? hostname : "[" + hostname + "]";
 | |
|     }
 | |
|     _port() {
 | |
|         if (this.opts.port &&
 | |
|             ((this.opts.secure && Number(this.opts.port !== 443)) ||
 | |
|                 (!this.opts.secure && Number(this.opts.port) !== 80))) {
 | |
|             return ":" + this.opts.port;
 | |
|         }
 | |
|         else {
 | |
|             return "";
 | |
|         }
 | |
|     }
 | |
|     _query(query) {
 | |
|         const encodedQuery = (0, parseqs_js_1.encode)(query);
 | |
|         return encodedQuery.length ? "?" + encodedQuery : "";
 | |
|     }
 | |
| }
 | |
| exports.Transport = Transport;
 |