Skip to content

Wire @rdi-ui/pipeline into the standalone v2 pipeline management page - #6506

Open
ArtemHoruzhenko wants to merge 3 commits into
mainfrom
feature/rdi-ui/pipeline-package
Open

ArtemHoruzhenko wants to merge 3 commits into
mainfrom
feature/rdi-ui/pipeline-package

Conversation

@ArtemHoruzhenko

@ArtemHoruzhenko ArtemHoruzhenko commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Renders the shared @rdi-ui/pipeline PipelineManagement component inside the standalone pipeline-management-v2 page (from #6502), pointed at the RDI proxy endpoint (rdi/:id/proxy, from #6504).

  • RdiPipeline wraps the package in its own styled-components ThemeProvider, overriding just this subtree's theme shape (via an aliased @redis-ui/styles 21 install) since the bundled components read a styles-21 theme shape RedisInsight's own styles-15 theme doesn't have yet.
  • useRdiPipelineNavigation adapts react-router's history to the package's NavigationService contract.
  • targetDatabase/sourceSecrets/multiSource/pipelineSecrets/configTranslate are wired to the minimum viable config for now; config-translation and secret-mounting are stubbed pending their own follow-up work.
  • Adds a TS 4.9 parse-failure workaround (zod-v4-stub.d.ts + tsconfig.json paths remap) for zod's TS5-only syntax, reached transitively via @rdi-ui/sdk - see the stub file for the full explanation. tsc-only; doesn't affect Vite or Jest.
  • Mocks @rdi-ui/pipeline wholesale for Jest (its UMD bundle doesn't interop with styled-components under Jest) and adds min-release-age-exclude for @rdi-ui/* (our own org's scope) to .npmrc, so we can pick up fixes immediately instead of waiting out the supply-chain cooldown that applies to third-party packages.
  • Bumps @rdi-ui/pipeline to the latest available release (0.1.28).

Test plan

  • Manually verified against a live RDI v1.19.1 instance - the create-pipeline wizard renders correctly inside the standalone page
  • npx jest on pages/rdi, components/main-router - 61/61 suites passing
  • eslint --fix on all touched files - 0 errors
  • tsc --noEmit - no new errors introduced (zod workaround verified to produce 0 zod-related errors)

🤖 Generated with Claude Code


Note

Medium Risk
Introduces a large new UI dependency subtree and dual theme stacks for RDI only; several integration surfaces (secrets, config translate, proxy client) are stubbed and may behave incorrectly until follow-ups land.

Overview
Replaces the pipeline-management-v2 “coming soon” placeholder with the shared @rdi-ui/pipeline PipelineManagement UI, wired to the per-instance RDI proxy (rdi/:id/proxy) and nested wizard routes.

RdiPipeline hosts the package under a styles-21 ThemeProvider (@redis-ui/styles-rdi) so bundled redis-ui components match the theme shape RedisInsight’s main styles-15 theme does not provide yet. It passes a memoized rdiClient (including Electron WindowId when needed, without withCredentials), stable stub props for secrets/config translation, and useRdiPipelineNavigation to implement the package’s NavigationService on react-router v5. The v2 route drops exact: true so subpaths like /create work.

Tooling/deps: adds @rdi-ui/pipeline and peer-related packages (@tanstack/react-query, react-hook-form, yup), Jest mapping + global mock for @rdi-ui/pipeline, .npmrc min-release-age-exclude for @rdi-ui/*, and a zod v4 TS 4.9 declaration stub + tsconfig path aliases so tsc can type-check without parsing zod’s TS5-only syntax from @rdi-ui/sdk.

Reviewed by Cursor Bugbot for commit 7c10652. Bugbot is set up for automated code reviews on this repo. Configure here.

Renders the shared @rdi-ui/pipeline PipelineManagement component
inside the standalone pipeline-management-v2 page, pointed at the RDI
proxy endpoint (rdi/:id/proxy) added earlier.

- RdiPipeline wraps the package in its own styled-components
  ThemeProvider, overriding just this subtree's theme shape (via an
  aliased @redis-ui/styles 21 install) since the bundled components
  read a styles-21 theme shape RedisInsight's own styles-15 theme
  doesn't have yet.
- useRdiPipelineNavigation adapts react-router's history to the
  package's NavigationService contract.
- targetDatabase/sourceSecrets/multiSource/pipelineSecrets/
  configTranslate are wired to the minimum viable config for now;
  config-translation and secret-mounting are stubbed pending their own
  follow-up work.
- Adds a TS 4.9 parse-failure workaround (zod-v4-stub.d.ts +
  tsconfig.json paths remap) for zod's TS5-only syntax, reached
  transitively via @rdi-ui/sdk - see the stub file for the full
  explanation. tsc-only; doesn't affect Vite or Jest.
- Mocks @rdi-ui/pipeline wholesale for Jest (its UMD bundle doesn't
  interop with styled-components under Jest) and adds
  min-release-age-exclude for @rdi-ui/*, our own org's scope, so we
  can pick up fixes immediately instead of waiting out the supply-
  chain cooldown that applies to everyone else.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ArtemHoruzhenko
ArtemHoruzhenko requested a review from a team as a code owner September 16, 2026 09:43

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c6c453b12d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage - Backend unit tests

St.
Category Percentage Covered / Total
🟢 Statements 93.29% 16884/18099
🟡 Branches 75.68% 5429/7174
🟢 Functions 87.75% 2592/2954
🟢 Lines 93.15% 16146/17334

Test suite run success

3924 tests passing in 331 suites.

Report generated by 🧪jest coverage report action from 7c10652

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage - Integration Tests

Status Category Percentage Covered / Total
🟡 Statements 79.63% 18589/23344
🟡 Branches 62.11% 8702/14009
🟡 Functions 67.37% 2517/3736
🟡 Lines 79.22% 17503/22092

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage - Frontend unit tests

St.
Category Percentage Covered / Total
🟢 Statements 83.64% 29027/34705
🟡 Branches 69.72% 12355/17721
🟡 Functions 78.7% 7654/9726
🟢 Lines 84.1% 28217/33552

Test suite run success

8130 tests passing in 876 suites.

Report generated by 🧪jest coverage report action from 7c10652

- Drop `exact: true` from the pipeline-management-v2 route: the
  package navigates to real sub-paths under `basePath` for its
  multi-step wizard, and exact matching unmounted the whole page the
  moment it did, falling through to the v1 instance route below it in
  the Switch. Safe to drop since this route is still declared before
  that non-exact v1 route.
- Attach `x-window-id` on the rdiClient config: Electron's
  WindowAuthMiddleware guards every API route unconditionally
  (including this proxy) on that header, but this client bypasses
  apiService's own interceptor that normally attaches it.
- Stop rebuilding the whole navigation service object on every
  navigation: getPath() now reads from a ref kept fresh every render,
  so it can't go stale if the package captures the object once instead
  of re-reading the prop each render - and the object's identity no
  longer changes on route changes either, which could otherwise
  retrigger the package's own mount-effects.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5d704682ff

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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 5d70468. Configure here.

rdiClient and its siblings (targetDatabase, sourceSecrets, multiSource,
pipelineSecrets, configTranslate) were inline object/function literals,
so every render created new identities for all of them - and this
component re-renders on every wizard-step navigation, since
useRdiPipelineNavigation subscribes to location. Same
mount-effect-retriggering risk already fixed for the navigation object
itself, left unaddressed on these.

rdiClient depends on rdiInstanceId, so it's memoized; the rest have no
dependencies at all, so they're hoisted to module-level constants for
a permanently stable reference instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.

1 participant