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>
25 lines
942 B
JavaScript
25 lines
942 B
JavaScript
import ascending from "./ascending.js";
|
|
import {ascendingDefined, compareDefined} from "./sort.js";
|
|
|
|
export default function rank(values, valueof = ascending) {
|
|
if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable");
|
|
let V = Array.from(values);
|
|
const R = new Float64Array(V.length);
|
|
if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;
|
|
const compareIndex = (i, j) => valueof(V[i], V[j]);
|
|
let k, r;
|
|
values = Uint32Array.from(V, (_, i) => i);
|
|
// Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123
|
|
values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));
|
|
values.forEach((j, i) => {
|
|
const c = compareIndex(j, k === undefined ? j : k);
|
|
if (c >= 0) {
|
|
if (k === undefined || c > 0) k = j, r = i;
|
|
R[j] = r;
|
|
} else {
|
|
R[j] = NaN;
|
|
}
|
|
});
|
|
return R;
|
|
}
|