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>
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
import colors from 'picocolors'
|
|
import log from './util/log'
|
|
|
|
let defaults = {
|
|
optimizeUniversalDefaults: false,
|
|
generalizedModifiers: true,
|
|
disableColorOpacityUtilitiesByDefault: false,
|
|
relativeContentPathsByDefault: false,
|
|
}
|
|
|
|
let featureFlags = {
|
|
future: [
|
|
'hoverOnlyWhenSupported',
|
|
'respectDefaultRingColorOpacity',
|
|
'disableColorOpacityUtilitiesByDefault',
|
|
'relativeContentPathsByDefault',
|
|
],
|
|
experimental: ['optimizeUniversalDefaults', 'generalizedModifiers'],
|
|
}
|
|
|
|
export function flagEnabled(config, flag) {
|
|
if (featureFlags.future.includes(flag)) {
|
|
return config.future === 'all' || (config?.future?.[flag] ?? defaults[flag] ?? false)
|
|
}
|
|
|
|
if (featureFlags.experimental.includes(flag)) {
|
|
return (
|
|
config.experimental === 'all' || (config?.experimental?.[flag] ?? defaults[flag] ?? false)
|
|
)
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
function experimentalFlagsEnabled(config) {
|
|
if (config.experimental === 'all') {
|
|
return featureFlags.experimental
|
|
}
|
|
|
|
return Object.keys(config?.experimental ?? {}).filter(
|
|
(flag) => featureFlags.experimental.includes(flag) && config.experimental[flag]
|
|
)
|
|
}
|
|
|
|
export function issueFlagNotices(config) {
|
|
if (process.env.JEST_WORKER_ID !== undefined) {
|
|
return
|
|
}
|
|
|
|
if (experimentalFlagsEnabled(config).length > 0) {
|
|
let changes = experimentalFlagsEnabled(config)
|
|
.map((s) => colors.yellow(s))
|
|
.join(', ')
|
|
|
|
log.warn('experimental-flags-enabled', [
|
|
`You have enabled experimental features: ${changes}`,
|
|
'Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.',
|
|
])
|
|
}
|
|
}
|
|
|
|
export default featureFlags
|