 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>
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| /**
 | |
|  * Tracks newlines during parsing in order to provide an efficient API for
 | |
|  * determining the one-indexed `{ line, col }` position for any offset
 | |
|  * within the input.
 | |
|  */
 | |
| class LineCounter {
 | |
|     constructor() {
 | |
|         this.lineStarts = [];
 | |
|         /**
 | |
|          * Should be called in ascending order. Otherwise, call
 | |
|          * `lineCounter.lineStarts.sort()` before calling `linePos()`.
 | |
|          */
 | |
|         this.addNewLine = (offset) => this.lineStarts.push(offset);
 | |
|         /**
 | |
|          * Performs a binary search and returns the 1-indexed { line, col }
 | |
|          * position of `offset`. If `line === 0`, `addNewLine` has never been
 | |
|          * called or `offset` is before the first known newline.
 | |
|          */
 | |
|         this.linePos = (offset) => {
 | |
|             let low = 0;
 | |
|             let high = this.lineStarts.length;
 | |
|             while (low < high) {
 | |
|                 const mid = (low + high) >> 1; // Math.floor((low + high) / 2)
 | |
|                 if (this.lineStarts[mid] < offset)
 | |
|                     low = mid + 1;
 | |
|                 else
 | |
|                     high = mid;
 | |
|             }
 | |
|             if (this.lineStarts[low] === offset)
 | |
|                 return { line: low + 1, col: 1 };
 | |
|             if (low === 0)
 | |
|                 return { line: 0, col: offset };
 | |
|             const start = this.lineStarts[low - 1];
 | |
|             return { line: low, col: offset - start + 1 };
 | |
|         };
 | |
|     }
 | |
| }
 | |
| 
 | |
| exports.LineCounter = LineCounter;
 |