 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>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.getAngledTickWidth = getAngledTickWidth;
 | |
| exports.getNumberIntervalTicks = getNumberIntervalTicks;
 | |
| exports.getTickBoundaries = getTickBoundaries;
 | |
| exports.isVisible = isVisible;
 | |
| var _CartesianUtils = require("./CartesianUtils");
 | |
| var _getEveryNthWithCondition = require("./getEveryNthWithCondition");
 | |
| function getAngledTickWidth(contentSize, unitSize, angle) {
 | |
|   var size = {
 | |
|     width: contentSize.width + unitSize.width,
 | |
|     height: contentSize.height + unitSize.height
 | |
|   };
 | |
|   return (0, _CartesianUtils.getAngledRectangleWidth)(size, angle);
 | |
| }
 | |
| function getTickBoundaries(viewBox, sign, sizeKey) {
 | |
|   var isWidth = sizeKey === 'width';
 | |
|   var x = viewBox.x,
 | |
|     y = viewBox.y,
 | |
|     width = viewBox.width,
 | |
|     height = viewBox.height;
 | |
|   if (sign === 1) {
 | |
|     return {
 | |
|       start: isWidth ? x : y,
 | |
|       end: isWidth ? x + width : y + height
 | |
|     };
 | |
|   }
 | |
|   return {
 | |
|     start: isWidth ? x + width : y + height,
 | |
|     end: isWidth ? x : y
 | |
|   };
 | |
| }
 | |
| function isVisible(sign, tickPosition, getSize, start, end) {
 | |
|   /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating
 | |
|    * the tick's size. */
 | |
|   if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {
 | |
|     return false;
 | |
|   }
 | |
|   var size = getSize();
 | |
|   return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;
 | |
| }
 | |
| function getNumberIntervalTicks(ticks, interval) {
 | |
|   return (0, _getEveryNthWithCondition.getEveryNthWithCondition)(ticks, interval + 1);
 | |
| } |