 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>
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| class OldSelector {
 | |
|   constructor(selector, prefix) {
 | |
|     this.prefix = prefix
 | |
|     this.prefixed = selector.prefixed(this.prefix)
 | |
|     this.regexp = selector.regexp(this.prefix)
 | |
| 
 | |
|     this.prefixeds = selector
 | |
|       .possible()
 | |
|       .map(x => [selector.prefixed(x), selector.regexp(x)])
 | |
| 
 | |
|     this.unprefixed = selector.name
 | |
|     this.nameRegexp = selector.regexp()
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Does rule contain an unnecessary prefixed selector
 | |
|    */
 | |
|   check(rule) {
 | |
|     if (!rule.selector.includes(this.prefixed)) {
 | |
|       return false
 | |
|     }
 | |
|     if (!rule.selector.match(this.regexp)) {
 | |
|       return false
 | |
|     }
 | |
|     if (this.isHack(rule)) {
 | |
|       return false
 | |
|     }
 | |
|     return true
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Is rule a hack without unprefixed version bottom
 | |
|    */
 | |
|   isHack(rule) {
 | |
|     let index = rule.parent.index(rule) + 1
 | |
|     let rules = rule.parent.nodes
 | |
| 
 | |
|     while (index < rules.length) {
 | |
|       let before = rules[index].selector
 | |
|       if (!before) {
 | |
|         return true
 | |
|       }
 | |
| 
 | |
|       if (before.includes(this.unprefixed) && before.match(this.nameRegexp)) {
 | |
|         return false
 | |
|       }
 | |
| 
 | |
|       let some = false
 | |
|       for (let [string, regexp] of this.prefixeds) {
 | |
|         if (before.includes(string) && before.match(regexp)) {
 | |
|           some = true
 | |
|           break
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       if (!some) {
 | |
|         return true
 | |
|       }
 | |
| 
 | |
|       index += 1
 | |
|     }
 | |
| 
 | |
|     return true
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = OldSelector
 |