 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>
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @fileoverview Enforces or disallows inline comments.
 | |
|  * @author Greg Cochard
 | |
|  */
 | |
| "use strict";
 | |
| 
 | |
| const astUtils = require("./utils/ast-utils");
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Rule Definition
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| /** @type {import('../shared/types').Rule} */
 | |
| module.exports = {
 | |
|     meta: {
 | |
|         type: "suggestion",
 | |
| 
 | |
|         docs: {
 | |
|             description: "Disallow inline comments after code",
 | |
|             recommended: false,
 | |
|             url: "https://eslint.org/docs/latest/rules/no-inline-comments"
 | |
|         },
 | |
| 
 | |
|         schema: [
 | |
|             {
 | |
|                 type: "object",
 | |
|                 properties: {
 | |
|                     ignorePattern: {
 | |
|                         type: "string"
 | |
|                     }
 | |
|                 },
 | |
|                 additionalProperties: false
 | |
|             }
 | |
|         ],
 | |
| 
 | |
|         messages: {
 | |
|             unexpectedInlineComment: "Unexpected comment inline with code."
 | |
|         }
 | |
|     },
 | |
| 
 | |
|     create(context) {
 | |
|         const sourceCode = context.sourceCode;
 | |
|         const options = context.options[0];
 | |
|         let customIgnoreRegExp;
 | |
| 
 | |
|         if (options && options.ignorePattern) {
 | |
|             customIgnoreRegExp = new RegExp(options.ignorePattern, "u");
 | |
|         }
 | |
| 
 | |
|         /**
 | |
|          * Will check that comments are not on lines starting with or ending with code
 | |
|          * @param {ASTNode} node The comment node to check
 | |
|          * @private
 | |
|          * @returns {void}
 | |
|          */
 | |
|         function testCodeAroundComment(node) {
 | |
| 
 | |
|             const startLine = String(sourceCode.lines[node.loc.start.line - 1]),
 | |
|                 endLine = String(sourceCode.lines[node.loc.end.line - 1]),
 | |
|                 preamble = startLine.slice(0, node.loc.start.column).trim(),
 | |
|                 postamble = endLine.slice(node.loc.end.column).trim(),
 | |
|                 isPreambleEmpty = !preamble,
 | |
|                 isPostambleEmpty = !postamble;
 | |
| 
 | |
|             // Nothing on both sides
 | |
|             if (isPreambleEmpty && isPostambleEmpty) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             // Matches the ignore pattern
 | |
|             if (customIgnoreRegExp && customIgnoreRegExp.test(node.value)) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             // JSX Exception
 | |
|             if (
 | |
|                 (isPreambleEmpty || preamble === "{") &&
 | |
|                 (isPostambleEmpty || postamble === "}")
 | |
|             ) {
 | |
|                 const enclosingNode = sourceCode.getNodeByRangeIndex(node.range[0]);
 | |
| 
 | |
|                 if (enclosingNode && enclosingNode.type === "JSXEmptyExpression") {
 | |
|                     return;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             // Don't report ESLint directive comments
 | |
|             if (astUtils.isDirectiveComment(node)) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             context.report({
 | |
|                 node,
 | |
|                 messageId: "unexpectedInlineComment"
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         //--------------------------------------------------------------------------
 | |
|         // Public
 | |
|         //--------------------------------------------------------------------------
 | |
| 
 | |
|         return {
 | |
|             Program() {
 | |
|                 sourceCode.getAllComments()
 | |
|                     .filter(token => token.type !== "Shebang")
 | |
|                     .forEach(testCodeAroundComment);
 | |
|             }
 | |
|         };
 | |
|     }
 | |
| };
 |