feat(kserve-kubeflow-connector): RHIDP-15199- introduce plugin only OpenShift AI Connector - #3705
Conversation
…ore secure cause of CSB, laptop)
Add dist-dynamic to .prettierignore (matches other workspaces). Generate missing API report for kserve-kubeflow-connector-backend. Update stale API reports for ai-experience and model-catalog. Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mirror proposal and design from redhat-ai-dev/agentic-feature-refinement openspec/changes/transition-oai-connector-to-kserve-plugin into the local workspace, following the pattern from PR redhat-developer#3692. Tasks and behavioral specs will be added in follow-up branches as implementation stories are picked up. Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Important This PR includes changes that affect public-facing API. Please ensure you are adding/updating documentation for new features or behavior. Unnecessary ChangesetsThe following package(s) are private and do not need a changeset:
Changed Packages
|
|
🤖 Finished Review · ✅ Success · Started 7:29 PM UTC · Completed 7:35 PM UTC |
Review —
|
Minor bump for both packages — new discovery/auth service dependencies in the model-catalog entity provider, and bearer-token auth + path-based URL matching in the techdoc URL reader. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6
|
🤖 Finished Review · ✅ Success · Started 8:00 PM UTC · Completed 8:06 PM UTC |
- Fix case-sensitive config key: baseurl -> baseUrl (config.ts) - Fix cached backendToken expiry: get fresh token each run() call (ModelCatalogResourceEntityProvider.ts) - Fix inconsistent modelCardKey replacer in InformerService Path 2: use replacer() to strip spaces, matching Path 1 behavior - Fix yarn fix --check CI failure: correct repository.directory and backstage.pluginPackages in kserve-kubeflow-connector-backend package.json - Fix bridgePredicate test: provide config with matching id for path-based URL predicate matching - Add kserve-kubeflow-connector-backend patch to changeset Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Thanks for the thorough review. Here's how we've addressed each finding: Fixed in this PR (commit 4b5ddad)
Additionally fixed
Deferred to follow-up PRsThese are acknowledged and tracked but out of scope for this initial connector introduction:
|
|
🤖 Review · ❌ Terminated · Started 8:29 PM UTC · Ended 8:36 PM UTC |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3705 +/- ##
==========================================
- Coverage 54.55% 54.54% -0.01%
==========================================
Files 2349 2349
Lines 89735 89752 +17
Branches 25135 25132 -3
==========================================
+ Hits 48953 48959 +6
- Misses 40482 40503 +21
+ Partials 300 290 -10
*This pull request uses carry forward flags. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
🤖 Finished Review · ❌ Failure · Started 8:29 PM UTC · Completed 8:36 PM UTC |
using Marcel's fullsend skills claude and I were able to analyze the findings from https://github.com/redhat-developer/rhdh-plugins/actions/runs/28896478597/artifacts/8150535056 for that flake post analysis failure with the fullsend review agent no new findinds |
Response to Qodo reviewAlready fixed (qodo confirms with ✓ Resolved):
Already deferred (same findings as fullsend review, see earlier response):
Not actionable for this PR:
New findings — deferring both:
|
Remove Backstage CLI template comments, unused catalog mock entity, and stale 'todos' API references that don't apply to this plugin. Reduces SonarQube duplicate code flagging. Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Response to SonarQube duplicate code findings
All four are extractable into helper functions, but each touches the core reconciliation logic. Refactoring safely wants unit test coverage first (also tracked for follow-up). Deferring both together. |
|
🤖 Review · ❌ Terminated · Started 8:53 PM UTC · Ended 9:03 PM UTC |
|
🤖 Finished Review · ✅ Success · Started 8:53 PM UTC · Completed 9:03 PM UTC |
Replace mutable entityList concat inside Promise.all callbacks with collect-and-flatten pattern to avoid fragile concurrent mutation. Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
🤖 Finished Review · ✅ Success · Started 9:25 PM UTC · Completed 9:31 PM UTC |
johnmcollier
left a comment
There was a problem hiding this comment.
Didn't see any red flags that weren't already raised by fullsend's review, so approving from my end
rajin-kichannagari
left a comment
There was a problem hiding this comment.
Fullsend's review covers the main issues I saw. One small bug I noticed was that the fetchModelCatalogFromKey error test in BridgeResourceConnector.test.ts actually calls fetchModelCatalogKeys. Looks like it was pre-existing but otherwise lgtm.
The error test in the fetchModelCatalogFromKey describe block was calling fetchModelCatalogKeys instead. Also extended the fetch mock to handle errorTest/models/* URLs so the error path is properly exercised. Reported-by: rajin-kichannagari Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@rajin-kichannagari Good catch! You're right — the error test in the |
|
🤖 Review · ❌ Terminated · Started 3:44 PM UTC · Ended 3:50 PM UTC |
|
|
🤖 Finished Review · ✅ Success · Started 3:44 PM UTC · Completed 3:50 PM UTC |
…penShift AI Connector (redhat-developer#3705) * copy from redhat-ai-dev plus changes for minimal boostrap testing * pivot config to call router plugin * gabe-leverage-disc-service-cfg-upds * claude-conversion-25 * gabe-plugin-to-plugin-auth * gabe-basic-import-working * gabe get model card / techdocs working * demo-final-touches * switch from docker to local (disable docker in docker cause of new, more secure cause of CSB, laptop) * claude-fix-unit-tests * post-july06-rebase-yarn-install * fix pre-submit checks: prettier, api reports Add dist-dynamic to .prettierignore (matches other workspaces). Generate missing API report for kserve-kubeflow-connector-backend. Update stale API reports for ai-experience and model-catalog. Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * mirror kserve-kubeflow connector openspec into workspace Mirror proposal and design from redhat-ai-dev/agentic-feature-refinement openspec/changes/transition-oai-connector-to-kserve-plugin into the local workspace, following the pattern from PR redhat-developer#3692. Tasks and behavioral specs will be added in follow-up branches as implementation stories are picked up. Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * post-rebase-compile-fix * yarn-dedupe * chore: add changeset for model-catalog and techdoc-url-reader Minor bump for both packages — new discovery/auth service dependencies in the model-catalog entity provider, and bearer-token auth + path-based URL matching in the techdoc URL reader. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 * fix(ai-integrations): avoid skipLibCheck=false in build:api-reports The backstage-repo-tools --tsc flag forces skipLibCheck=false, which fails on transitive type mismatches in node_modules (@types/request, @octokit, react-use). Replace with tsc:full (skipLibCheck=true) piped into api-reports generation. Also regenerates ai-experience report.api.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 * fix: address review findings and CI failures - Fix case-sensitive config key: baseurl -> baseUrl (config.ts) - Fix cached backendToken expiry: get fresh token each run() call (ModelCatalogResourceEntityProvider.ts) - Fix inconsistent modelCardKey replacer in InformerService Path 2: use replacer() to strip spaces, matching Path 1 behavior - Fix yarn fix --check CI failure: correct repository.directory and backstage.pluginPackages in kserve-kubeflow-connector-backend package.json - Fix bridgePredicate test: provide config with matching id for path-based URL predicate matching - Add kserve-kubeflow-connector-backend patch to changeset Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: clean up dev/index.ts template boilerplate Remove Backstage CLI template comments, unused catalog mock entity, and stale 'todos' API references that don't apply to this plugin. Reduces SonarQube duplicate code flagging. Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: collect Promise.all results safely in entity provider Replace mutable entityList concat inside Promise.all callbacks with collect-and-flatten pattern to avoid fragile concurrent mutation. Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: correct fetchModelCatalogFromKey error test to call right function The error test in the fetchModelCatalogFromKey describe block was calling fetchModelCatalogKeys instead. Also extended the fetch mock to handle errorTest/models/* URLs so the error path is properly exercised. Reported-by: rajin-kichannagari Signed-off-by: gabemontero <gmontero@redhat.com> Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Signed-off-by: gabemontero <gmontero@redhat.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>


Hey, I just made a Pull Request!
this rebases and brings in the plugin only form of the connector that I prototyped during 1.10
also brings in openspec designs
I'll create tasks and I continue with the rest of the RHDHPLAN-404 Jiras
For now, tested against the dev cluster, both kserve onlyl and kubeflow model registry integrations (though they will be removed later) and kubeflow model catalog integrations (which will be kept, as well as tweaked to deal with kserve only)
@rajin-kichannagari FYI / PTAL
✔️ Checklist