Skip to content

feat: path selection UI + wizard routing for fast path pipeline#566

Draft
gambtho wants to merge 19 commits intomainfrom
thgamble/fast-path-ui
Draft

feat: path selection UI + wizard routing for fast path pipeline#566
gambtho wants to merge 19 commits intomainfrom
thgamble/fast-path-ui

Conversation

@gambtho
Copy link
Copy Markdown
Collaborator

@gambtho gambtho commented Apr 2, 2026

Summary

Adds the user-facing UI for the fast path pipeline — when a Dockerfile is detected, users choose between three deployment paths directly in the wizard.

  • WizardShell — now accepts dynamic steps prop (string array) so fast path and agent path show different step labels ("Connect Source → Configure → Deploy" vs "Connect Source → Set up Copilot Agent → Review & Merge")
  • PathSelectionStep — card-based 3-option decision point: Deploy now (recommended, ~3-5 min), Deploy now + AI suggestions (~3-5 min + async), Full AI generation (~15-40 min)
  • GitHubPipelineWizard routing — at ReadyForSetup, when dockerfilePaths detected, shows PathSelectionStep. Fast path choices wire to useFastPathOrchestration with dedicated generating/PR/deploy/deployed states. Agent path continues with existing flow unchanged. Includes Dockerfile confirmation with build context override.

Changes Made

  • WizardShell.tsxsteps prop, AGENT_PATH_STEPS / FAST_PATH_STEPS exports, activeStep widened to number
  • New PathSelectionStep.tsx — 3-option selection UI with recommended badge
  • GitHubPipelineWizard.tsx — fast path state management, renderFastPathContent(), conditional footer actions, dynamic step labels, DockerfileConfirmation integration

Dependencies

⚠️ Based on PR #565 (state machine + orchestration), which depends on PRs #561, #562, #564. Will need rebase after those merge.

Related Issues

Part of #557 (Fast Path Pipeline)
Closes #554

Test Plan

  • Type check passes
  • Lint passes
  • All 110 existing tests pass (no regressions)
  • PathSelectionStep renders three options with correct labels
  • WizardShell accepts custom step labels without breaking existing 3-step flow
  • Fast path footer shows Back/Deploy buttons at Dockerfile confirmation
  • Fast path footer shows Retry on failure, Done/View Deployment on success

🤖 Generated with Claude Code

gambtho added 19 commits April 2, 2026 15:27
Pipeline identities need AKS RBAC Writer for annotation permissions
regardless of whether Azure RBAC is enabled on the cluster. Add an
isPipeline flag to IdentityRoleContext that forces inclusion of
AKS RBAC Writer in the normal namespace branch.
Thread the isPipeline flag from useWorkloadIdentitySetup through
EnsureIdentityWithRolesConfig to computeRequiredRoles so GitHub
pipeline identities always get AKS RBAC Writer.
Add a function to retrieve the kubelet identity's objectId from an
AKS cluster. This is needed to assign AcrPull so nodes can pull
container images built by the pipeline from ACR.
When isPipeline is true and an ACR is configured, resolve the cluster's
kubelet identity and assign AcrPull so nodes can pull container images
built by the pipeline. This is non-fatal if it fails, as the user may
have already configured ACR integration.

Closes #550
…lbacks

Add input validation to getKubeletIdentityObjectId, replace console.warn
with onStatusChange('warning-kubelet-acr-pull') for proper UI feedback,
and remove isPipeline from managed namespace role computation. Adds
comprehensive tests for error paths and edge cases.
Uses the Git Trees API with recursive traversal to find all files named
"Dockerfile" (case-insensitive) in a repository, returning their paths.
Adds dockerfilePaths field to RepoReadiness interface and integrates
findDockerfiles into checkRepoReadiness. When a default branch is
provided, Dockerfile discovery runs in parallel with existing file
existence checks.
Provides deriveBuildContext utility and useDockerfileDiscovery hook that
manages Dockerfile selection state. Auto-selects when exactly one
Dockerfile is found, and allows manual selection with build context
override for multi-Dockerfile repos.
Renders Dockerfile discovery results with auto-selection for single
Dockerfile repos and a dropdown for multi-Dockerfile repos. Includes
an editable build context field derived from the selected path.
…discovery' and 'thgamble/fast-path-templates' into thgamble/fast-path-state-machine
9-state machine with transition table, localStorage persistence,
RETRY logic, and transient state handling — mirrors the existing
useGitHubPipelineState patterns.
Creates branch, generates deterministic workflow + K8s manifests from
templates, pushes all files, and opens PR. Cleans up branch on failure.
Wires together fast path state machine, PR polling, workflow polling,
and deployment health. Handles deploy (generate + create PR + dispatch)
and redeploy callbacks with in-flight guards.
…ploy

Tests cover happy path, error handling, in-flight guard, and state-driven
PR merge transition. Fixes eager ref sync so deployment state ref stays
current within the async handleDeploy callback.
Adds optional steps prop (string array) so fast path and agent path
can show different step labels. Exports AGENT_PATH_STEPS and
FAST_PATH_STEPS constants. Widens activeStep to number.
Three-option decision point shown when Dockerfile is detected:
Deploy now (recommended), Deploy now + AI suggestions, Full AI generation.
Card-based layout with selection state matching existing wizard style.
When Dockerfiles detected, shows PathSelectionStep at ReadyForSetup.
User chooses: Deploy now, Deploy now + AI, or Full AI generation.
Fast path choices use useFastPathOrchestration for the deploy flow
with dedicated progress/deployed/error states. Agent path continues
with existing flow. Dynamic step labels switch between paths.
@gambtho gambtho changed the title Thgamble/fast path UI feat: path selection UI + wizard routing for fast path pipeline Apr 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fast Path Pipeline: Path selection UI + wizard routing

1 participant