Optionalsubcommand?: stringStamped by the matcher when the active YAML declares
subcommands: and the input named one. Absent for flat verbs
(no subcommands: block) and for subcommanded verbs invoked
without a subcommand (the controller decides what that means).
The controller's input model. Extends
ModelDatawith the one field the matcher always stamps when relevant —subcommand— so controllers can switch on it without a per-call cast.Concrete controllers narrow further by declaring their own field shape (
interface DropModel extends CommandModel { targets: Stuff[] }).Verb / commandText / executionId / commandId / the matched
CommandDefinitionlive onCommandContext; the model carries field data only.