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>
88 lines
2.3 KiB
TypeScript
88 lines
2.3 KiB
TypeScript
// @ts-ignore TS6133
|
|
import { expect, test } from "vitest";
|
|
|
|
import * as z from "zod/v3";
|
|
import { util } from "../helpers/util.js";
|
|
|
|
test("nativeEnum test with consts", () => {
|
|
const Fruits: { Apple: "apple"; Banana: "banana" } = {
|
|
Apple: "apple",
|
|
Banana: "banana",
|
|
};
|
|
const fruitEnum = z.nativeEnum(Fruits);
|
|
type fruitEnum = z.infer<typeof fruitEnum>;
|
|
fruitEnum.parse("apple");
|
|
fruitEnum.parse("banana");
|
|
fruitEnum.parse(Fruits.Apple);
|
|
fruitEnum.parse(Fruits.Banana);
|
|
util.assertEqual<fruitEnum, "apple" | "banana">(true);
|
|
});
|
|
|
|
test("nativeEnum test with real enum", () => {
|
|
enum Fruits {
|
|
Apple = "apple",
|
|
Banana = "banana",
|
|
}
|
|
// @ts-ignore
|
|
const fruitEnum = z.nativeEnum(Fruits);
|
|
type fruitEnum = z.infer<typeof fruitEnum>;
|
|
fruitEnum.parse("apple");
|
|
fruitEnum.parse("banana");
|
|
fruitEnum.parse(Fruits.Apple);
|
|
fruitEnum.parse(Fruits.Banana);
|
|
util.assertIs<fruitEnum extends Fruits ? true : false>(true);
|
|
});
|
|
|
|
test("nativeEnum test with const with numeric keys", () => {
|
|
const FruitValues = {
|
|
Apple: 10,
|
|
Banana: 20,
|
|
// @ts-ignore
|
|
} as const;
|
|
const fruitEnum = z.nativeEnum(FruitValues);
|
|
type fruitEnum = z.infer<typeof fruitEnum>;
|
|
fruitEnum.parse(10);
|
|
fruitEnum.parse(20);
|
|
fruitEnum.parse(FruitValues.Apple);
|
|
fruitEnum.parse(FruitValues.Banana);
|
|
util.assertEqual<fruitEnum, 10 | 20>(true);
|
|
});
|
|
|
|
test("from enum", () => {
|
|
enum Fruits {
|
|
Cantaloupe = 0,
|
|
Apple = "apple",
|
|
Banana = "banana",
|
|
}
|
|
|
|
const FruitEnum = z.nativeEnum(Fruits as any);
|
|
type _FruitEnum = z.infer<typeof FruitEnum>;
|
|
FruitEnum.parse(Fruits.Cantaloupe);
|
|
FruitEnum.parse(Fruits.Apple);
|
|
FruitEnum.parse("apple");
|
|
FruitEnum.parse(0);
|
|
expect(() => FruitEnum.parse(1)).toThrow();
|
|
expect(() => FruitEnum.parse("Apple")).toThrow();
|
|
expect(() => FruitEnum.parse("Cantaloupe")).toThrow();
|
|
});
|
|
|
|
test("from const", () => {
|
|
const Greek = {
|
|
Alpha: "a",
|
|
Beta: "b",
|
|
Gamma: 3,
|
|
// @ts-ignore
|
|
} as const;
|
|
|
|
const GreekEnum = z.nativeEnum(Greek);
|
|
type _GreekEnum = z.infer<typeof GreekEnum>;
|
|
GreekEnum.parse("a");
|
|
GreekEnum.parse("b");
|
|
GreekEnum.parse(3);
|
|
expect(() => GreekEnum.parse("v")).toThrow();
|
|
expect(() => GreekEnum.parse("Alpha")).toThrow();
|
|
expect(() => GreekEnum.parse(2)).toThrow();
|
|
|
|
expect(GreekEnum.enum.Alpha).toEqual("a");
|
|
});
|