 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>
		
			
				
	
	
		
			80 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { UseSuspenseQueryResult, UseSuspenseQueryOptions } from './types.js';
 | |
| import { QueryFunction, ThrowOnError, DefaultError, QueryClient } from '@tanstack/query-core';
 | |
| 
 | |
| type MAXIMUM_DEPTH = 20;
 | |
| type SkipTokenForUseQueries = symbol;
 | |
| type GetUseSuspenseQueryOptions<T> = T extends {
 | |
|     queryFnData: infer TQueryFnData;
 | |
|     error?: infer TError;
 | |
|     data: infer TData;
 | |
| } ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends {
 | |
|     queryFnData: infer TQueryFnData;
 | |
|     error?: infer TError;
 | |
| } ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends {
 | |
|     data: infer TData;
 | |
|     error?: infer TError;
 | |
| } ? UseSuspenseQueryOptions<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? UseSuspenseQueryOptions<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryOptions<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryOptions<TQueryFnData> : T extends {
 | |
|     queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
 | |
|     select?: (data: any) => infer TData;
 | |
|     throwOnError?: ThrowOnError<any, infer TError, any, any>;
 | |
| } ? UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey> : T extends {
 | |
|     queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
 | |
|     throwOnError?: ThrowOnError<any, infer TError, any, any>;
 | |
| } ? UseSuspenseQueryOptions<TQueryFnData, TError, TQueryFnData, TQueryKey> : UseSuspenseQueryOptions;
 | |
| type GetUseSuspenseQueryResult<T> = T extends {
 | |
|     queryFnData: any;
 | |
|     error?: infer TError;
 | |
|     data: infer TData;
 | |
| } ? UseSuspenseQueryResult<TData, TError> : T extends {
 | |
|     queryFnData: infer TQueryFnData;
 | |
|     error?: infer TError;
 | |
| } ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends {
 | |
|     data: infer TData;
 | |
|     error?: infer TError;
 | |
| } ? UseSuspenseQueryResult<TData, TError> : T extends [any, infer TError, infer TData] ? UseSuspenseQueryResult<TData, TError> : T extends [infer TQueryFnData, infer TError] ? UseSuspenseQueryResult<TQueryFnData, TError> : T extends [infer TQueryFnData] ? UseSuspenseQueryResult<TQueryFnData> : T extends {
 | |
|     queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
 | |
|     select?: (data: any) => infer TData;
 | |
|     throwOnError?: ThrowOnError<any, infer TError, any, any>;
 | |
| } ? UseSuspenseQueryResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
 | |
|     queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
 | |
|     throwOnError?: ThrowOnError<any, infer TError, any, any>;
 | |
| } ? UseSuspenseQueryResult<TQueryFnData, unknown extends TError ? DefaultError : TError> : UseSuspenseQueryResult;
 | |
| /**
 | |
|  * SuspenseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
 | |
|  */
 | |
| type SuspenseQueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryOptions> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseSuspenseQueryOptions<Head>] : T extends [infer Head, ...infer Tails] ? SuspenseQueriesOptions<[
 | |
|     ...Tails
 | |
| ], [
 | |
|     ...TResults,
 | |
|     GetUseSuspenseQueryOptions<Head>
 | |
| ], [
 | |
|     ...TDepth,
 | |
|     1
 | |
| ]> : Array<unknown> extends T ? T : T extends Array<UseSuspenseQueryOptions<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>> ? Array<UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>> : Array<UseSuspenseQueryOptions>;
 | |
| /**
 | |
|  * SuspenseQueriesResults reducer recursively maps type param to results
 | |
|  */
 | |
| type SuspenseQueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseSuspenseQueryResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseSuspenseQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? SuspenseQueriesResults<[
 | |
|     ...Tails
 | |
| ], [
 | |
|     ...TResults,
 | |
|     GetUseSuspenseQueryResult<Head>
 | |
| ], [
 | |
|     ...TDepth,
 | |
|     1
 | |
| ]> : {
 | |
|     [K in keyof T]: GetUseSuspenseQueryResult<T[K]>;
 | |
| };
 | |
| declare function useSuspenseQueries<T extends Array<any>, TCombinedResult = SuspenseQueriesResults<T>>(options: {
 | |
|     queries: readonly [...SuspenseQueriesOptions<T>] | readonly [...{
 | |
|         [K in keyof T]: GetUseSuspenseQueryOptions<T[K]>;
 | |
|     }];
 | |
|     combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult;
 | |
| }, queryClient?: QueryClient): TCombinedResult;
 | |
| declare function useSuspenseQueries<T extends Array<any>, TCombinedResult = SuspenseQueriesResults<T>>(options: {
 | |
|     queries: readonly [...SuspenseQueriesOptions<T>];
 | |
|     combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult;
 | |
| }, queryClient?: QueryClient): TCombinedResult;
 | |
| 
 | |
| export { type SuspenseQueriesOptions, type SuspenseQueriesResults, useSuspenseQueries };
 |