Add comprehensive frontend UI and distributed infrastructure

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>
This commit is contained in:
anthonyrawlins
2025-07-10 08:41:59 +10:00
parent fc0eec91ef
commit 85bf1341f3
28348 changed files with 2646896 additions and 69 deletions

View File

@@ -0,0 +1,9 @@
import { Node, Edge, EdgeChange, NodeChange } from '../types';
export declare function applyNodeChanges<NodeData = any>(changes: NodeChange[], nodes: Node<NodeData>[]): Node<NodeData>[];
export declare function applyEdgeChanges<EdgeData = any>(changes: EdgeChange[], edges: Edge<EdgeData>[]): Edge<EdgeData>[];
export declare const createSelectionChange: (id: string, selected: boolean) => {
id: string;
type: string;
selected: boolean;
};
export declare function getSelectionChanges(items: any[], selectedIds: string[]): any;

View File

@@ -0,0 +1,15 @@
import { Selection as D3Selection } from 'd3';
import { Node, Edge, Connection, EdgeMarkerType, Transform, XYPosition, Rect, NodeInternals } from '../types';
export declare const isEdge: (element: Node | Connection | Edge) => element is Edge<any>;
export declare const isNode: (element: Node | Connection | Edge) => element is Node<any>;
export declare const getOutgoers: <T = any, U extends T = T>(node: Node<U>, nodes: Node<T>[], edges: Edge[]) => Node<T>[];
export declare const getIncomers: <T = any, U extends T = T>(node: Node<U>, nodes: Node<T>[], edges: Edge[]) => Node<T>[];
export declare const getMarkerId: (marker: EdgeMarkerType | undefined, rfId?: string) => string;
export declare const addEdge: (edgeParams: Edge | Connection, edges: Edge[]) => Edge[];
export declare const updateEdge: (oldEdge: Edge, newConnection: Connection, edges: Edge[]) => Edge[];
export declare const pointToRendererPoint: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform, snapToGrid: boolean, [snapX, snapY]: [number, number]) => XYPosition;
export declare const getRectOfNodes: (nodes: Node[]) => Rect;
export declare const getNodesInside: (nodeInternals: NodeInternals, rect: Rect, [tx, ty, tScale]?: Transform, partially?: boolean, excludeNonSelectableNodes?: boolean) => Node[];
export declare const getConnectedEdges: (nodes: Node[], edges: Edge[]) => Edge[];
export declare const getTransformForBounds: (bounds: Rect, width: number, height: number, minZoom: number, maxZoom: number, padding?: number) => Transform;
export declare const getD3Transition: (selection: D3Selection<Element, unknown, null, undefined>, duration?: number) => import("d3-transition").Transition<Element, unknown, null, undefined>;

View File

@@ -0,0 +1,14 @@
import { Dimensions, XYPosition, CoordinateExtent, Box, Rect } from '../types';
export declare const getDimensions: (node: HTMLDivElement) => Dimensions;
export declare const clamp: (val: number, min?: number, max?: number) => number;
export declare const clampPosition: (position: XYPosition, extent: CoordinateExtent) => {
x: number;
y: number;
};
export declare const getHostForElement: (element: HTMLElement) => Document | ShadowRoot;
export declare const getBoundsOfBoxes: (box1: Box, box2: Box) => Box;
export declare const rectToBox: ({ x, y, width, height }: Rect) => Box;
export declare const boxToRect: ({ x, y, x2, y2 }: Box) => Rect;
export declare const getBoundsofRects: (rect1: Rect, rect2: Rect) => Rect;
export declare const isNumeric: (n: any) => n is number;
export declare const internalsSymbol: unique symbol;