 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>
		
			
				
	
	
		
			153 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import React from 'react';
 | |
| 
 | |
| type ToastTypes = 'normal' | 'action' | 'success' | 'info' | 'warning' | 'error' | 'loading' | 'default';
 | |
| type PromiseT<Data = any> = Promise<Data> | (() => Promise<Data>);
 | |
| interface PromiseIExtendedResult extends ExternalToast {
 | |
|     message: React.ReactNode;
 | |
| }
 | |
| type PromiseTExtendedResult<Data = any> = PromiseIExtendedResult | ((data: Data) => PromiseIExtendedResult | Promise<PromiseIExtendedResult>);
 | |
| type PromiseTResult<Data = any> = string | React.ReactNode | ((data: Data) => React.ReactNode | string | Promise<React.ReactNode | string>);
 | |
| type PromiseExternalToast = Omit<ExternalToast, 'description'>;
 | |
| type PromiseData<ToastData = any> = PromiseExternalToast & {
 | |
|     loading?: string | React.ReactNode;
 | |
|     success?: PromiseTResult<ToastData> | PromiseTExtendedResult<ToastData>;
 | |
|     error?: PromiseTResult | PromiseTExtendedResult;
 | |
|     description?: PromiseTResult;
 | |
|     finally?: () => void | Promise<void>;
 | |
| };
 | |
| interface ToastClassnames {
 | |
|     toast?: string;
 | |
|     title?: string;
 | |
|     description?: string;
 | |
|     loader?: string;
 | |
|     closeButton?: string;
 | |
|     cancelButton?: string;
 | |
|     actionButton?: string;
 | |
|     success?: string;
 | |
|     error?: string;
 | |
|     info?: string;
 | |
|     warning?: string;
 | |
|     loading?: string;
 | |
|     default?: string;
 | |
|     content?: string;
 | |
|     icon?: string;
 | |
| }
 | |
| interface ToastIcons {
 | |
|     success?: React.ReactNode;
 | |
|     info?: React.ReactNode;
 | |
|     warning?: React.ReactNode;
 | |
|     error?: React.ReactNode;
 | |
|     loading?: React.ReactNode;
 | |
|     close?: React.ReactNode;
 | |
| }
 | |
| interface Action {
 | |
|     label: React.ReactNode;
 | |
|     onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
 | |
|     actionButtonStyle?: React.CSSProperties;
 | |
| }
 | |
| interface ToastT {
 | |
|     id: number | string;
 | |
|     title?: (() => React.ReactNode) | React.ReactNode;
 | |
|     type?: ToastTypes;
 | |
|     icon?: React.ReactNode;
 | |
|     jsx?: React.ReactNode;
 | |
|     richColors?: boolean;
 | |
|     invert?: boolean;
 | |
|     closeButton?: boolean;
 | |
|     dismissible?: boolean;
 | |
|     description?: (() => React.ReactNode) | React.ReactNode;
 | |
|     duration?: number;
 | |
|     delete?: boolean;
 | |
|     action?: Action | React.ReactNode;
 | |
|     cancel?: Action | React.ReactNode;
 | |
|     onDismiss?: (toast: ToastT) => void;
 | |
|     onAutoClose?: (toast: ToastT) => void;
 | |
|     promise?: PromiseT;
 | |
|     cancelButtonStyle?: React.CSSProperties;
 | |
|     actionButtonStyle?: React.CSSProperties;
 | |
|     style?: React.CSSProperties;
 | |
|     unstyled?: boolean;
 | |
|     className?: string;
 | |
|     classNames?: ToastClassnames;
 | |
|     descriptionClassName?: string;
 | |
|     position?: Position;
 | |
| }
 | |
| type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center';
 | |
| interface ToastOptions {
 | |
|     className?: string;
 | |
|     closeButton?: boolean;
 | |
|     descriptionClassName?: string;
 | |
|     style?: React.CSSProperties;
 | |
|     cancelButtonStyle?: React.CSSProperties;
 | |
|     actionButtonStyle?: React.CSSProperties;
 | |
|     duration?: number;
 | |
|     unstyled?: boolean;
 | |
|     classNames?: ToastClassnames;
 | |
|     closeButtonAriaLabel?: string;
 | |
| }
 | |
| type Offset = {
 | |
|     top?: string | number;
 | |
|     right?: string | number;
 | |
|     bottom?: string | number;
 | |
|     left?: string | number;
 | |
| } | string | number;
 | |
| interface ToasterProps {
 | |
|     invert?: boolean;
 | |
|     theme?: 'light' | 'dark' | 'system';
 | |
|     position?: Position;
 | |
|     hotkey?: string[];
 | |
|     richColors?: boolean;
 | |
|     expand?: boolean;
 | |
|     duration?: number;
 | |
|     gap?: number;
 | |
|     visibleToasts?: number;
 | |
|     closeButton?: boolean;
 | |
|     toastOptions?: ToastOptions;
 | |
|     className?: string;
 | |
|     style?: React.CSSProperties;
 | |
|     offset?: Offset;
 | |
|     mobileOffset?: Offset;
 | |
|     dir?: 'rtl' | 'ltr' | 'auto';
 | |
|     swipeDirections?: SwipeDirection[];
 | |
|     icons?: ToastIcons;
 | |
|     containerAriaLabel?: string;
 | |
| }
 | |
| type SwipeDirection = 'top' | 'right' | 'bottom' | 'left';
 | |
| interface ToastToDismiss {
 | |
|     id: number | string;
 | |
|     dismiss: boolean;
 | |
| }
 | |
| type ExternalToast = Omit<ToastT, 'id' | 'type' | 'title' | 'jsx' | 'delete' | 'promise'> & {
 | |
|     id?: number | string;
 | |
| };
 | |
| 
 | |
| type titleT = (() => React.ReactNode) | React.ReactNode;
 | |
| declare const toast: ((message: titleT, data?: ExternalToast) => string | number) & {
 | |
|     success: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
|     info: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
|     warning: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
|     error: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
|     custom: (jsx: (id: number | string) => React.ReactElement, data?: ExternalToast) => string | number;
 | |
|     message: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
|     promise: <ToastData>(promise: PromiseT<ToastData>, data?: PromiseData<ToastData>) => (string & {
 | |
|         unwrap: () => Promise<ToastData>;
 | |
|     }) | (number & {
 | |
|         unwrap: () => Promise<ToastData>;
 | |
|     }) | {
 | |
|         unwrap: () => Promise<ToastData>;
 | |
|     };
 | |
|     dismiss: (id?: number | string) => string | number;
 | |
|     loading: (message: titleT | React.ReactNode, data?: ExternalToast) => string | number;
 | |
| } & {
 | |
|     getHistory: () => (ToastT | ToastToDismiss)[];
 | |
|     getToasts: () => (ToastT | ToastToDismiss)[];
 | |
| };
 | |
| 
 | |
| declare function useSonner(): {
 | |
|     toasts: ToastT[];
 | |
| };
 | |
| declare const Toaster: React.ForwardRefExoticComponent<ToasterProps & React.RefAttributes<HTMLElement>>;
 | |
| 
 | |
| export { Toaster, toast, useSonner };
 | |
| export type { Action, ExternalToast, ToastClassnames, ToastT, ToastToDismiss, ToasterProps };
 |