feat: add guided setup command - #753
Conversation
56fef68 to
3680877
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 3 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 97c6a7d. Configure here.
| quickStartCmd.Use = "quickstart" | ||
| quickStartCmd.Hidden = true | ||
| quickStartCmd.Deprecated = "use 'ldcli setup' for the new guided setup experience" | ||
| cmd.AddCommand(quickStartCmd) |
There was a problem hiding this comment.
Symbols command registration removed
High Severity
The symbols command import and AddCommand wiring were dropped from the root command, and its help entry was removed from the usage template, while cmd/symbols still exists and was recently shipped. Users can no longer run ldcli symbols.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 97c6a7d. Configure here.
| } | ||
| // Compute the plan preview shown before any action is taken. | ||
| args, _ := setup.InstallArgs(chosen.id, "") | ||
| m.planInstallCmd = strings.Join(args, " ") |
There was a problem hiding this comment.
Detected package manager discarded
High Severity
Detection finds PackageManager (yarn/pnpm/bun/npm), but the wizard only caches SDK id and entry point, then builds detectResult without it and previews install with an empty package manager. Node installs fall back to npm even in yarn/pnpm/bun projects.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 97c6a7d. Configure here.
| SDKID: chosen.id, | ||
| Language: chosen.language, | ||
| EntryPoint: m.detectedEntryPoint, | ||
| } |
There was a problem hiding this comment.
Wrong entry point after SDK override
Medium Severity
When the user picks a different SDK than the one detected, detectResult still reuses detectedEntryPoint. For append-safe SDKs, runInit then injects that SDK’s code into the original language’s file, which can corrupt the wrong source file.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 97c6a7d. Configure here.
|
Review resolution map — the 8 inline findings from the original review on the superseded #744 were migrated and resolved as follows (that PR was closed when this work was split into the #748–753 stack, so the threads were stranded there):
via LD Research 🤖 |
97c6a7d to
73cc570
Compare
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address two review findings on the setup wizard: - runInstall discarded the underlying install error, so the manual-install screen showed only the command with no indication of why the automatic install failed. Carry the error onto InstallResult.FailureReason and render it on the failure screen. - The "toggle your flag" link hardcoded https://app.launchdarkly.com, which is wrong on federal/custom instances. Derive the host from the configured --base-uri. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A file we create is not loaded by the project, so the user needs the chance to back out at the confirm gate and point setup at the real entry point. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
73cc570 to
fa402b8
Compare


Describe the solution you've provided
Final layer: the user-facing
setupcommand. Adds thecmd/setuppackage (detect,install,initsubcommands and the interactive wizard) over theinternal/setuplibrary, wires it into the root command, and deprecatesquickstartin favor ofsetup.The
ldcli setupwizard walks a user through detecting their project, installing the SDK, creating a first flag, injecting init code, and verifying an evaluation.Related issues
Top of the
setup-ldfeature stack. Stacked PR — base isffantl/setup-ld/4-verifier.Note: this branch's
cmd/root.goalso carries thePersistentPreRunchange from #748; that diff drops out once #748 merges to main and this stack is rebased.Requirements
Note
Medium Risk
The wizard runs package managers, writes project files, and creates flags via the API—high user impact but scoped to an explicit setup flow with tests; root auth-flag behavior changes affect all exempt commands.
Overview
ldcli setupis now the primary guided onboarding flow: an interactive Bubble Tea wizard that picks project/environment, auto-detects the repo, lets you confirm or override the SDK, shows a plan preview, then installs the package, creates a starter flag (my-new-flag), injects init code, and optionally verifies SDK activity. It fails fast with login guidance when no access token is set.Hidden subcommands
setup detect,setup install, andsetup initexpose the sameinternal/setupbuilding blocks for scripting (plaintext/JSON output, dry-run install).Root wiring:
APIClientsgains injectableDetectorandInstaller(defaults:FileDetector,PackageInstaller).quickstartis hidden and deprecated in favor ofsetup.--access-tokenexemption for auth-light commands now usesclearAccessTokenRequirement(includingsetup) instead ofDisableFlagParsing, so subcommand required flags still validate.Other:
InstallResultaddsfailure_reasonfor failed auto-installs; usage template updates;symbolsis dropped from root command registration and top-level help (package may still exist elsewhere).Reviewed by Cursor Bugbot for commit fa402b8. Bugbot is set up for automated code reviews on this repo. Configure here.