No description
Moves the 247-line PrimitiveInspector function out of the 872-line CustomModifierEditor (now 533 lines) into its own ParamField module so the upcoming visual builder can reuse the same Zod-introspecting form renderer without coupling to the form-mode editor's three-pane layout. Discipline: - Snapshot test seeded under the original PrimitiveInspector first; component then extracted; snapshots re-verified byte-identical. - Renamed export from PrimitiveInspector to ParamField; props, data-testids, classNames, and Zod-internal access patterns preserved verbatim — including the existing block-move-type and override-promotion Zod-v4 enum bug (out of scope to fix here). - Internal helpers (isAttrFieldName, attrFieldPreferredType, attrFieldMode, collectSeededAttrs, ATTR_FIELD_NAMES) move with the component; generateDefaultParams stays in CustomModifierEditor since the palette button still uses it. Snapshot harness uses react-dom/server#renderToStaticMarkup for deterministic SSR — no @testing-library dependency added. vitest.config include pattern widened to *.test.tsx alongside *.test.ts. |
||
|---|---|---|
| .github/workflows | ||
| .sisyphus | ||
| docs | ||
| packages | ||
| scripts | ||
| .gitignore | ||
| eslint.config.js | ||
| lefthook.yml | ||
| LICENSE | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| tsconfig.base.json | ||
| tsconfig.json | ||
| vitest.workspace.ts | ||
@paratype
A Doorenbos-style Rete II rules engine for TypeScript games, with an authoritative WebSocket chess demo.
Packages
packages/rete— Rete II engine corepackages/chess— Browser chess demo (React + Vite)packages/server— Authoritative Bun WebSocket server
Docs
- SPEC.md — Engine specification
- PHASES.md — Development phases & perf budgets
- RULES.md — Chess rule presets
- PROTOCOL.md — WebSocket message protocol
Getting Started
bun install && bun run check