Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ae2f54e
feat(commands): extend defineCommand for the CLI's own commands
edusperoni Sep 14, 2026
e4bf7da
refactor(commands): migrate every command to defineCommand
edusperoni Sep 14, 2026
13db77e
feat(commands): register commands lazily against a checked definition…
edusperoni Sep 14, 2026
70ff020
feat(commands)!: dispatch in process, rename ctx.arguments to ctx.params
edusperoni Sep 14, 2026
83381c5
feat(key-shortcuts): declarative table with a generic engine
edusperoni Sep 14, 2026
6d8cc6e
feat(key-shortcuts): registry contract and command-declared shortcuts
edusperoni Sep 14, 2026
53551c7
fix(bundler): tear the bundler down before starting another one
edusperoni Sep 14, 2026
2b1ee61
feat(key-shortcuts): r/R/B restart ladder, hint reprint, session scoping
edusperoni Sep 14, 2026
e58a9e8
refactor(commands): infer command services from setup
edusperoni Sep 14, 2026
c502143
feat(commands): provide the invocation context through an injection t…
edusperoni Sep 14, 2026
2ffeb51
feat(commands): add a class form built on defineCommand
edusperoni Sep 14, 2026
1aed823
refactor(commands): move three commands to the class form
edusperoni Sep 14, 2026
92002a2
refactor(commands): build one context per invocation
edusperoni Sep 14, 2026
60d2885
feat(commands): ask another command whether it can execute
edusperoni Sep 14, 2026
955efb2
refactor(commands): move the structured commands to the class form
edusperoni Sep 14, 2026
0b8d65b
refactor(commands): inline the simple command definitions
edusperoni Sep 14, 2026
0158722
docs(commands): describe where a handler gets its services
edusperoni Sep 14, 2026
25f15ec
feat(commands): make the in-process dispatcher a contract
edusperoni Sep 14, 2026
71c4324
fix(commands): run a definition passed to the dispatcher as given
edusperoni Sep 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
692 changes: 653 additions & 39 deletions defining-commands.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ rejected with a warning.
**The manifest key decides how a command is invoked.** It has to: the CLI routes
`ns hello world` to your module before that module has been loaded, so the key
is the only name it can know. A `name` inside the definition is metadata — it is
what `registerCommandDefinition` uses when a module registers itself, and it is
what `registerCommand` uses when a module registers itself, and it is
useful documentation, but a manifest entry overrides it. If the two disagree the
CLI warns, naming both, and runs the command under the manifest key.

Expand Down
Loading