Files
anthonyrawlins 85bf1341f3 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>
2025-07-10 08:41:59 +10:00

67 lines
1.4 KiB
JavaScript

'use strict'
var test = require('tape')
var reusify = require('./')
test('reuse objects', function (t) {
t.plan(6)
function MyObject () {
t.pass('constructor called')
this.next = null
}
var instance = reusify(MyObject)
var obj = instance.get()
t.notEqual(obj, instance.get(), 'two instance created')
t.notOk(obj.next, 'next must be null')
instance.release(obj)
// the internals keeps a hot copy ready for reuse
// putting this one back in the queue
instance.release(instance.get())
// comparing the old one with the one we got
// never do this in real code, after release you
// should never reuse that instance
t.equal(obj, instance.get(), 'instance must be reused')
})
test('reuse more than 2 objects', function (t) {
function MyObject () {
t.pass('constructor called')
this.next = null
}
var instance = reusify(MyObject)
var obj = instance.get()
var obj2 = instance.get()
var obj3 = instance.get()
t.notOk(obj.next, 'next must be null')
t.notOk(obj2.next, 'next must be null')
t.notOk(obj3.next, 'next must be null')
t.notEqual(obj, obj2)
t.notEqual(obj, obj3)
t.notEqual(obj3, obj2)
instance.release(obj)
instance.release(obj2)
instance.release(obj3)
// skip one
instance.get()
var obj4 = instance.get()
var obj5 = instance.get()
var obj6 = instance.get()
t.equal(obj4, obj)
t.equal(obj5, obj2)
t.equal(obj6, obj3)
t.end()
})