feat: add Altimate AI setup step and MCP gating to onboarding wizard#1820
feat: add Altimate AI setup step and MCP gating to onboarding wizard#1820ralphstodomingo wants to merge 39 commits intofeat/onboarding-dbt-troubleshootingfrom
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Important
Looks good to me! 👍
Reviewed everything up to 01d0dc2 in 20 seconds. Click for details.
- Reviewed
2070lines of code in6files - Skipped
0files when reviewing. - Skipped posting
0draft comments. View those below. - Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
Workflow ID: wflow_KYMobSZve4kNvEhj
You can customize by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.
| dbtIntegration = newDbtIntegration; | ||
| try { | ||
| await this.dbtProjectContainer.reinitialize(); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
d4cf349 to
051a505
Compare
| dbtIntegration = newDbtIntegration; | ||
| try { | ||
| await this.dbtProjectContainer.reinitialize(); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
b846982 to
b743a74
Compare
| "Onboarding completed, proceeding with tools registration", | ||
| ); | ||
| if (!this.altimateAuthService.handlePreviewFeatures()) { | ||
| if (this.altimateAuthService.getCredentialsMessage()) { |
There was a problem hiding this comment.
Bug: The altimate.onboardedMcpServer configuration flag is checked to gate MCP tool registration but is never set to true after onboarding, effectively disabling the feature.
Severity: CRITICAL
Suggested Fix
Upon successful completion of the onboarding wizard, update the global configuration to enable MCP. This can be done by calling workspace.getConfiguration("altimate").update("onboardedMcpServer", true, ConfigurationTarget.Global).
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: src/mcp/index.ts#L109
Potential issue: The MCP registration logic in `src/mcp/index.ts` includes a check for
the `altimate.onboardedMcpServer` configuration flag. This flag is intended to be set to
`true` after a user completes the new onboarding wizard. However, no code path in the
pull request updates this flag's value from its default of `false`. As a result, the
registration code always returns early, preventing MCP tools from ever being registered
or becoming available to any user, regardless of their credential status. This
completely disables the Model Confidence Platform (MCP) functionality.
| ) { | ||
| dbtIntegration = newDbtIntegration; | ||
| try { | ||
| await this.dbtProjectContainer.reinitialize(); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
Add the Altimate setup step (Step 2) to the onboarding wizard, enabling API key validation, dbt integration creation, sync status tracking, and DataPilot installation. - Add `AltimateSetupStep.tsx` with credential management, integration creation UI, and progress cards - Add `AltimateKeySetup.tsx` for standalone API key input - Update `SetupWizard.tsx` to include `setupAltimate` between prerequisites and tutorials (now 3 steps) - Add Altimate handlers to `onboardingPanel.ts`: `saveAltimateKey`, `checkAltimateConfiguration`, `createDbtIntegration`, `getIntegrations`, `getIntegrationSyncStatus`, `checkDatapilotInstalled`, `installDatapilot`, `getAltimateConfig` - Add MCP gating in `src/mcp/index.ts` — tools only register after Altimate setup completes - Update `dbtPowerUserExtension.ts` to call `reinitialize()` on integration type change instead of reloading the window Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace `onBack` with `onReadyChange` callback in `AltimateSetupStep` - Report readiness to wizard: key phase ready when configured, integration always ready - Add `altimateKey` to `needsReadinessCheck` in `SetupWizard` - Remove "Back to API Key Setup" button (wizard's Back handles this) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
b743a74 to
f578302
Compare
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Only show substeps for the currently active parent group. Inactive parent groups appear collapsed without their children, keeping the sidebar clean as the wizard grows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| setSelectedEnvironmentId(firstEnv.id); | ||
|
|
||
| // Fetch sync status for the first environment | ||
| void fetchSyncStatus(integrationId, firstEnv.name); |
There was a problem hiding this comment.
Bug: A race condition in fetchSyncStatus can display incorrect sync data. Rapidly switching environments causes concurrent updates to the shared integration.sync_history, leading to a data mismatch.
Severity: MEDIUM
Suggested Fix
Modify the data structure to store sync_history on a per-environment basis instead of a single field on the Integration object. This could involve moving sync_history to the IntegrationEnvironment interface or changing it to a dictionary keyed by environment ID on the Integration object. Additionally, consider implementing a mechanism to cancel previous pending requests when a new one is initiated.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: webview_panels/src/modules/onboarding/AltimateSetupStep.tsx#L456
Potential issue: A race condition occurs when fetching the synchronization status for
different environments within the same integration. The `fetchSyncStatus` function is
called without `await` when a user changes the selected environment. If a user switches
environments quickly, multiple asynchronous requests are fired. Because the
`sync_history` is stored on the parent `Integration` object rather than per-environment,
a slower, earlier request can resolve after a newer one, overwriting the `sync_history`
with stale data. This causes the UI to display an incorrect sync status for the
currently selected environment.
Move "Validate Setup" button inline next to the project dropdown, keeping it always re-runnable. The wizard Next button is now independent and always enabled on the validation step. - Remove auto-progression after validation completes - Add inline Validate Setup button with overflow-safe flex layout - Validation step no longer gates wizard navigation - Remove step counter from wizard footer Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add `skipConfirmation` param to `validateProjects` and `installDeps` in `walkthroughCommands` so the onboarding panel bypasses the confirmation dialog. Re-throw errors after showing the toast so they propagate back to the webview. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove `setError` from validation catch block since the terminal already shows the error. Change Next button text to "Validate Setup" on the prerequisites step to indicate what the next step is. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
| const validationResult = | ||
| await this.altimateRequest.validateCredentials( | ||
| instanceName, | ||
| apiKey, | ||
| ); |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
Co-authored-by: Shreyas Telkar <shretel@gmail.com>
… install (#1821) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nts (#1826) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
#1830) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename `playground.md` → `studio.md` - Move `playground/images/` → `studio/images/` - Update all "Playground" text references to "Studio" - Update `mkdocs.yml` nav entry: `Playground (Beta)` → `Studio (Beta)` Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…rm support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… dedup (#1829) - Consume `entry.command` (full reconstructed label) for tree item labels and dedup keys - Parse subcommand from `entry.command` in `rerunFromHistory` for routing - Simplify `entryKey()` to `projectName + command` - Backward-compat fallback when `command` doesn't start with `dbt ` - Consolidate duplicated test fixture into shared `createEntry` helper Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…olution Webpack now copies platform-specific .node files directly into the altimate-core/ directory so relative requires work without cross-package resolution in the VS Code host. prepareBuild.js prunes non-target platform .node files from this directory. Adds a warning log when computeColumnLineage returns null to aid debugging native module loading. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
npm install --force still respects os/cpu filters and silently skips cross-platform packages. Switch to npm pack + tar extraction to bypass platform filtering and ensure all platform binaries are bundled. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Michiel De Smet <mdesmet@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
#1825) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… key mismatch (#1839) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Incorporates master fixes (PR #1841 setup page UX improvements) while preserving branch's Altimate setup step, MCP gating, substeps, and wizard navigation enhancements. Key integrations from master: - Responsive sidebar layout (`isNarrow` / `useSyncExternalStore`) - Clickable sidebar steps and contextual button labels - Image zoom/expand on tutorials page - Silent diagnostics refresh (no loading flicker) - `initialIntegrationType` prop pass-through - URL fixes, typo fix, optional chaining safety - `refreshPythonVersion()` utility method - Improved Python env listener (`onDBTInstallationVerification`) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
I htink you should rebase this to latest master |
Summary
Add the Altimate AI setup step to the onboarding wizard (stacked on #1819). This enables API key management, dbt integration creation, and MCP tool gating.
AltimateSetupStep.tsxwith API key validation, integration creation, sync status tracking, DataPilot installation, and progress cardsAltimateKeySetup.tsxstandalone componentonboardingPanel.ts(saveAltimateKey,checkAltimateConfiguration,createDbtIntegration,getIntegrations,getIntegrationSyncStatus,checkDatapilotInstalled,installDatapilot,getAltimateConfig)src/mcp/index.ts)dbtPowerUserExtension.tsnow callsreinitialize()instead of reloading the windowDependencies
Stacked on PR #1819 (
feat/onboarding-dbt-troubleshooting).Test plan
npm run compilepassesnpm run test— all 13 suites pass (135/136, 1 pre-existing skip)🤖 Generated with Claude Code
Important
Adds Altimate AI setup step and MCP gating to onboarding wizard, with API key management and dbt integration support.
AltimateSetupStep.tsxfor Altimate AI setup in onboarding wizard, handling API key validation, integration creation, sync status, and DataPilot installation.AltimateKeySetup.tsxfor standalone API key input.src/mcp/index.tsto register tools only after Altimate setup.onboardingPanel.tsfor Altimate setup (saveAltimateKey,checkAltimateConfiguration,createDbtIntegration,getIntegrations,getIntegrationSyncStatus,checkDatapilotInstalled,installDatapilot,getAltimateConfig).dbtPowerUserExtension.tsto callreinitialize()on dbt integration type change instead of reloading window.SetupWizard.tsxto include Altimate setup step in the wizard.This description was created by
for 01d0dc2. You can customize this summary. It will automatically update as commits are pushed.