2.0 KiB
2.0 KiB
B4 — Wizard step deduplication
Problem
Greenfield wizard testing showed completed wizard steps could be executed again after the menu marked them [done]. In practice this made the Providers/API-key flow and Skills flow appear twice in one wizard run.
There was a second related API-key duplication path: when the Providers step was completed with no key, gatewayConfigStage still prompted for ANTHROPIC_API_KEY during Finish because it only skipped the gateway API-key prompt when providerKey was non-empty.
Diagnosis
runMenuLooplabeled completed sections with[done], but still dispatched the selected step again if the user selected that row.- Quick Start ran Providers and Skills but did not mark those sections complete in
completedSections. runFinishPath/quickStartPathdefaultedproviderTypetononefor gateway config, which made it impossible forgatewayConfigStageto distinguish:- provider step completed and user intentionally skipped the key, vs.
- provider step was never run.
Fix
- Added a shared menu section key helper and a completed-step guard in
runMenuLoop. - Completed menu steps now log a skip message instead of re-running their stage.
- Quick Start marks Providers and Skills complete after running them.
- Finish/Quick Start now pass
state.providerTypeas-is to gateway config instead of defaulting tonone. gatewayConfigStagetreatsproviderType: 'none'as an explicit completed provider setup with no key and skips the second gateway API-key prompt.
Verification
- Added unified wizard regression coverage asserting repeated Providers/Skills menu selections only execute each stage once.
- Added gateway config coverage asserting
providerType: 'none'does not prompt for a gateway API key and writes no API key env var. - Targeted:
pnpm --filter @mosaicstack/mosaic test -- unified-wizard gateway-config pnpm format:checkpnpm typecheckpnpm lintpnpm buildpnpm test- Codex code review: approve.
- Codex security review: no findings.