feat(editor): WCMD JSON round-trip closure

Adds --export-wcmd-json / --import-wcmd-json with the established
readEnumField template factoring int+name dual encoding for both
minSecurityLevel ("player"/"helper"/"moderator"/"gamemaster"/
"admin") and category ("info"/"movement"/"communication"/
"admincmd"/"debug"). Aliases array serialized as JSON string
array.

All 3 presets (basic/movement/admin) byte-identical binary
roundtrip OK including the movement preset's multi-alias
commands (/stand has aliases ["standup", "su"]).

Live-tested flat-namespace collision validator: hand-mutated
/stand (cmdId=11) to add 'sit' as an alias, colliding with the
canonical /sit command. Validator correctly errored: "alias
'sit' collides with another command name or alias — chat
parser would dispatch ambiguously". Catches the class of typo
bugs where a new alias would shadow an existing command, with
the failure surface being silent dispatch ambiguity rather
than an error.

CLI flag count 1488 -> 1490.
This commit is contained in:
Kelsi 2026-05-10 05:49:45 -07:00
parent 5f5a696495
commit 7fbf35e98c
3 changed files with 191 additions and 0 deletions

View file

@ -439,6 +439,7 @@ const char* const kArgRequired[] = {
"--export-wtur-json", "--import-wtur-json",
"--gen-cmd-basic", "--gen-cmd-movement", "--gen-cmd-admin",
"--info-wcmd", "--validate-wcmd",
"--export-wcmd-json", "--import-wcmd-json",
"--gen-weather-temperate", "--gen-weather-arctic",
"--gen-weather-desert", "--gen-weather-stormy",
"--gen-zone-atmosphere",