Repository navigation
Ask: a shell task reaches command suggestions, not the nearest capability (#446) - #447
Merged
Merged
Conversation
…lity (QA F04) Physical QA (A12, Ghostty zsh, 68c1cbb): with Command suggestions set to Local model and Qwen3 0.6B running, `/btw convert every png here to webp` showed the folder listing instead of a suggestion. Reproduced with that model through the real Ask path: Ask's resolver had no notion of a shell task, so it called the request unclear; Auto then let the intent model read it, which answered {"capability":"files.list","confidence":0.99999}, and NMSh answered that capability's canonical "list files". Suggestions only follow what Ask cannot place, so the step never ran. "rename all .jpeg files to .jpg" became "Install which shell?" the same way. The existing test stubbed the intent model to say nothing, which hid it. - Ask recognises shell tasks it has no capability for: changing files in bulk (convert, resize, rename, "turn X into Y"…) and finding them by size, age, duplicates or a count. It says it does not run these itself; archives keep their recipes and destructive requests stay refusals. - A refusal or such an answer is never re-read by the intent model, in Auto or Always. Always could also turn "delete all my files" into a file listing. - Suggestions Off: the answer says where Command suggestions are. A model that declines is named ("suggested no command for this") instead of the answer silently falling back. Tests: tests/askCommandSuggestionsApp.test.ts, the QA model's own answer as the intent stub, Auto and Always, nine safe tasks, and NMSh's own nouns (branch, pane, session, theme) never taken for shell tasks.
Owner
Author
This was referenced Oct 19, 2026
Input ownership: a line queued during a command that is not a command waits for approval (#426)
#448
Merged
Merged
Composer: a block mixing NMSh and shell commands is reviewed, then offered one at a time (#450)
#451
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #446 (QA F04: v0.22 physical QA A12 failed).
Cause: Ask's resolver called shell tasks
unclear, so Auto let the intent model read them. Qwen3 0.6B mapped "convert every png here to webp" tofiles.listat 0.99999, NMSh answered "list files", and the suggestion step never ran. Reproduced with that model through the real Ask path.Change
Tests:
tests/askCommandSuggestionsApp.test.ts, 5 new tests that fail on68c1cbb7, using the QA model's own answer as the intent stub. Related suites: 157/157 (alltests/ask*,intelligenceHardening,understanding,setupCoverage). Typecheck clean.Real model, after the fix: the QA request returns a suggestion with NMSh's check and attribution. The 0.6B model's command quality is low (for example
convert -density 100 -quality 100 *png* webp); NMSh labels it "changes things" and never runs it. Whether that quality is fit to advertise is a separate release-scope question, raised in #444.Physical retest: A12 steps 1, 3, 4 and 6.