T9: Wizard pick phase (runWizardPick)#373
Merged
philcunliffe merged 1 commit intoJul 22, 2026
Merged
Conversation
Add `runWizardPick(opts)` in `src/core/cli/wizard/pick.js`, extracting the pick/compose/guard/write shape from `runPickerWalkthrough` but sourcing rows from `catalog.pickerDescriptors` (T2) instead of the retired `PICKER_SOURCES` table. A row's checked state is `detected.has(id) || locked.includes(id)`; a locked id renders `disabled: true` with the `· managed by your fleet` label (LLP 0031 provenance vocabulary) and is filtered out of the returned sources before composition, so a central-layer source is never re-composed into the local layer (LLP 0129 join-before-picker). Composition itself reuses T6's descriptor-driven `composePickerConfig`. Non-interactive callers set `opts.picks` and skip prompting/detection, matching the existing `interactive = !opts.picks` split. Support the locked rendering by threading an optional `disabled` flag through the TUI multiselect (types, reducer, render): a disabled row is context-only, not toggleable by space or select-all, and renders dimmed. Export the shared pick helpers from `walkthrough.js` for reuse rather than duplicating them. Tests: pick-phase behavior (non-interactive compose, detection pre-check, descriptor-sourced options, locked-row disable + filter, overwrite guard, cancel) plus TUI reducer/render coverage for disabled rows. Task-Id: T9
philcunliffe
merged commit Jul 22, 2026
7fc6777
into
integration/install-experience-overhaul
8 checks passed
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.
Implements task T9 of install-experience-overhaul.
Adds
runWizardPick(opts)insrc/core/cli/wizard/pick.js: the wizard pick phase, keepingwalkthrough.js's prompt/write/guard/overwrite-confirm shape but sourcing rows fromcatalog.pickerDescriptors(T2) instead ofPICKER_SOURCES. Locked (central-layer) rows renderdisabled: truelabeled· managed by your fleetand are filtered out of the returned sources before composition (LLP 0129 join-before-picker, LLP 0031 provenance). Composition reuses T6'scomposePickerConfig. Non-interactive callers (--yes/--dry-run/presets/--from-file) invoke it directly via theinteractive = !opts.pickssplit.Threads an optional
disabledflag through the TUI multiselect (types/reducer/render) so locked rows are shown-but-not-toggleable. Exports the shared pick helpers fromwalkthrough.jsfor reuse.Checks:
npm test(only the 7 pre-existingleave-commandfailures remain, unrelated to this task) andtsctypecheck both green; new tests cover the pick phase and the disabled-row TUI behavior.Task-Id: T9