 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
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import * as React from 'react';
 | |
| import { useState, useRef, useEffect } from 'react';
 | |
| import { LazyContext } from '../../context/LazyContext.mjs';
 | |
| import { loadFeatures } from '../../motion/features/load-features.mjs';
 | |
| 
 | |
| /**
 | |
|  * Used in conjunction with the `m` component to reduce bundle size.
 | |
|  *
 | |
|  * `m` is a version of the `motion` component that only loads functionality
 | |
|  * critical for the initial render.
 | |
|  *
 | |
|  * `LazyMotion` can then be used to either synchronously or asynchronously
 | |
|  * load animation and gesture support.
 | |
|  *
 | |
|  * ```jsx
 | |
|  * // Synchronous loading
 | |
|  * import { LazyMotion, m, domAnimation } from "framer-motion"
 | |
|  *
 | |
|  * function App() {
 | |
|  *   return (
 | |
|  *     <LazyMotion features={domAnimation}>
 | |
|  *       <m.div animate={{ scale: 2 }} />
 | |
|  *     </LazyMotion>
 | |
|  *   )
 | |
|  * }
 | |
|  *
 | |
|  * // Asynchronous loading
 | |
|  * import { LazyMotion, m } from "framer-motion"
 | |
|  *
 | |
|  * function App() {
 | |
|  *   return (
 | |
|  *     <LazyMotion features={() => import('./path/to/domAnimation')}>
 | |
|  *       <m.div animate={{ scale: 2 }} />
 | |
|  *     </LazyMotion>
 | |
|  *   )
 | |
|  * }
 | |
|  * ```
 | |
|  *
 | |
|  * @public
 | |
|  */
 | |
| function LazyMotion({ children, features, strict = false }) {
 | |
|     const [, setIsLoaded] = useState(!isLazyBundle(features));
 | |
|     const loadedRenderer = useRef(undefined);
 | |
|     /**
 | |
|      * If this is a synchronous load, load features immediately
 | |
|      */
 | |
|     if (!isLazyBundle(features)) {
 | |
|         const { renderer, ...loadedFeatures } = features;
 | |
|         loadedRenderer.current = renderer;
 | |
|         loadFeatures(loadedFeatures);
 | |
|     }
 | |
|     useEffect(() => {
 | |
|         if (isLazyBundle(features)) {
 | |
|             features().then(({ renderer, ...loadedFeatures }) => {
 | |
|                 loadFeatures(loadedFeatures);
 | |
|                 loadedRenderer.current = renderer;
 | |
|                 setIsLoaded(true);
 | |
|             });
 | |
|         }
 | |
|     }, []);
 | |
|     return (React.createElement(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict } }, children));
 | |
| }
 | |
| function isLazyBundle(features) {
 | |
|     return typeof features === "function";
 | |
| }
 | |
| 
 | |
| export { LazyMotion };
 |