 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>
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * @version    1.4.0
 | |
|  * @date       2015-10-26
 | |
|  * @stability  3 - Stable
 | |
|  * @author     Lauri Rooden (https://github.com/litejs/natural-compare-lite)
 | |
|  * @license    MIT License
 | |
|  */
 | |
| 
 | |
| 
 | |
| var naturalCompare = function(a, b) {
 | |
| 	var i, codeA
 | |
| 	, codeB = 1
 | |
| 	, posA = 0
 | |
| 	, posB = 0
 | |
| 	, alphabet = String.alphabet
 | |
| 
 | |
| 	function getCode(str, pos, code) {
 | |
| 		if (code) {
 | |
| 			for (i = pos; code = getCode(str, i), code < 76 && code > 65;) ++i;
 | |
| 			return +str.slice(pos - 1, i)
 | |
| 		}
 | |
| 		code = alphabet && alphabet.indexOf(str.charAt(pos))
 | |
| 		return code > -1 ? code + 76 : ((code = str.charCodeAt(pos) || 0), code < 45 || code > 127) ? code
 | |
| 			: code < 46 ? 65               // -
 | |
| 			: code < 48 ? code - 1
 | |
| 			: code < 58 ? code + 18        // 0-9
 | |
| 			: code < 65 ? code - 11
 | |
| 			: code < 91 ? code + 11        // A-Z
 | |
| 			: code < 97 ? code - 37
 | |
| 			: code < 123 ? code + 5        // a-z
 | |
| 			: code - 63
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	if ((a+="") != (b+="")) for (;codeB;) {
 | |
| 		codeA = getCode(a, posA++)
 | |
| 		codeB = getCode(b, posB++)
 | |
| 
 | |
| 		if (codeA < 76 && codeB < 76 && codeA > 66 && codeB > 66) {
 | |
| 			codeA = getCode(a, posA, posA)
 | |
| 			codeB = getCode(b, posB, posA = i)
 | |
| 			posB = i
 | |
| 		}
 | |
| 
 | |
| 		if (codeA != codeB) return (codeA < codeB) ? -1 : 1
 | |
| 	}
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| try {
 | |
| 	module.exports = naturalCompare;
 | |
| } catch (e) {
 | |
| 	String.naturalCompare = naturalCompare;
 | |
| }
 |