Skip to content

Conversation

Schimuneck
Copy link
Contributor

@Schimuneck Schimuneck commented Jul 25, 2025

Description

This PR adds comprehensive OpenAPI 3.0 documentation for the Llama Stack Modular UI Backend for Frontend (BFF) API. The documentation provides a complete specification of all public-facing endpoints, enabling developers to understand, test, and integrate with the API effectively.

What's Added:

  • Complete OpenAPI 3.0 specification (openapi/src/llama-stack-modular-ui.yaml)
  • Shared components (openapi/src/lib/common.yaml) for reusable error responses and security schemes
  • CORS support for healthcheck endpoint to enable Swagger UI testing

Documented Endpoints:

  • GET /healthcheck - Service health status with system information
  • GET /api/v1/config - Application configuration (OAuth settings, etc.)
  • GET /api/v1/models - List available LLM and embedding models with filtering
  • GET /api/v1/vector-dbs - List registered vector databases
  • POST /api/v1/vector-dbs - Register new vector databases
  • POST /api/v1/upload - Upload documents for indexing into vector databases
  • POST /api/v1/query - Query documents with RAG and chat completion
  • ALL /llama-stack/{proxy+} - Proxy endpoints for direct Llama Stack API access

Key Features:

  • Detailed request/response schemas with comprehensive examples
  • No authentication requirements (matches current implementation)
  • Public API contract focus - excludes internal implementation details
  • CORS-enabled for browser-based testing tools
  • OpenAPI 3.0 compliant for broad tooling compatibility

Technical Changes:

  • Added CORS middleware to healthcheck endpoint in app.go to enable Swagger UI testing
  • Removed internal-only schemas (like ChatMessage) that aren't part of the public API
  • Structured documentation with proper tags, examples, and error handling

How Has This Been Tested?

Manual Testing:

  1. Started BFF server with CORS enabled:

    make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"
  2. Verified all endpoints work correctly:

    • curl -X GET http://localhost:8080/healthcheck
    • curl -X GET http://localhost:8080/api/v1/config
    • curl -X GET http://localhost:8080/api/v1/models
    • All other endpoints tested via curl and respond correctly
  3. OpenAPI Documentation Testing:

    • Used OpenAPI (Swagger) Editor VSCode extension to preview documentation
    • Verified all schemas are valid and render correctly
    • Confirmed Swagger UI can successfully make requests (CORS working)
    • Tested with online Swagger Editor (editor.swagger.io)

Validation:

  • OpenAPI spec passes validation (minor linter warnings are false positives)
  • All endpoint examples work as documented
  • Request/response schemas match actual API behavior
  • No internal implementation details exposed in public documentation

Test Impact

Tests not applicable for this change because:

  • This is pure documentation (OpenAPI YAML files)
  • No functional code changes to API logic
  • CORS change is infrastructure-level (enables testing, doesn't change behavior)
  • Documentation accuracy verified through manual API testing

The OpenAPI specification serves as living documentation and can be used to generate tests, but the spec itself doesn't require unit tests.

Request review criteria:

Self checklist (all need to be checked):

  • The developer has manually tested the changes and verified that the changes work
  • Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
  • The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)

If you have UI changes:

  • Included any necessary screenshots or gifs if it was a UI change.
  • Included tags to the UX team if it was a UI/UX change.

After the PR is posted & before it merges:

  • The developer has tested their solution on a cluster by using the image produced by the PR to main

Usage Instructions

To preview the OpenAPI documentation:

  1. Start the BFF server with CORS enabled:

    make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"
  2. Preview the documentation using any of these methods:

    • VSCode/Cursor Extension: Install "OpenAPI (Swagger) Editor" extension and open openapi/src/llama-stack-modular-ui.yaml
    • Online Swagger Editor: Copy the YAML content to https://editor.swagger.io/
    • Local Swagger UI: Use any local Swagger UI setup
    • curl testing: All endpoints are fully functional for direct testing

The documentation provides complete API coverage for developers working with the Llama Stack Modular UI BFF.

Summary by CodeRabbit

  • New Features
    • Introduced a backend API server with structured routing, OAuth support, health checks, and static file serving for the frontend.
    • Added comprehensive OpenAPI documentation detailing all REST API endpoints, request/response schemas, and security requirements.
    • Standardized error handling and response envelopes for consistent API responses.
    • Implemented JWT bearer authentication for secure API access.
    • Enabled CORS headers on the health check endpoint for improved cross-origin support.

Copy link
Contributor

coderabbitai bot commented Jul 25, 2025

"""

Walkthrough

The health check endpoint handler in the backend Go API is updated to apply CORS middleware. Two new OpenAPI YAML files are added: one defining common reusable components including error schemas and JWT security, and another specifying the full REST API surface for the Llama Stack Modular UI BFF with detailed endpoints, schemas, and security requirements.

Changes

File(s) Change Summary
frontend/packages/llama-stack-modular-ui/bff/internal/api/app.go Updated health check endpoint registration to include CORS middleware alongside telemetry and panic recovery.
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml Added reusable OpenAPI components: error schemas, envelopes, standard error responses, and JWT bearer security scheme.
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml Added comprehensive OpenAPI 3.0.3 specification defining all REST API endpoints, request/response schemas, and security for the BFF.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant App (Go)
    participant OAuth
    participant LlamaStack
    participant Repo
    participant Frontend

    Client->>App (Go): HTTP Request (e.g., /api/models)
    alt OAuth enabled & protected route
        App (Go)->>OAuth: Validate/Exchange Token
        OAuth-->>App (Go): Auth result
    end
    App (Go)->>Repo: Fetch/Store Data
    App (Go)->>LlamaStack: Forward/Proxy API Calls
    App (Go)-->>Client: API Response

    Client->>App (Go): Request Frontend Asset
    App (Go)->>Frontend: Serve Static File or index.html
    App (Go)-->>Client: Asset Response

    Client->>App (Go): /healthcheck
    App (Go)-->>Client: Health Status (with CORS headers)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

🐇 Hopping through code with a joyful cheer,
CORS on healthchecks now appears!
OpenAPI shines with schemas so bright,
JWT guards through day and night.
Errors wrapped neat, responses clear,
Our modular stack is ready, my dear!
🌿✨
"""

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@openshift-ci openshift-ci bot requested review from akram and antowaddle July 25, 2025 10:45
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (2)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml (1)

9-11: Consider using integer type for error codes

The error code is defined as a string type with example "400". For consistency with HTTP status codes and better type safety, consider using an integer type.

         code:
-          type: string
-          example: "400"
+          type: integer
+          example: 400
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1)

133-133: Fix formatting issues

Static analysis identified formatting issues that should be addressed.

  • Remove trailing spaces from line 133
  • Reduce blank lines at lines 337 and 677 to maximum of 2

Also applies to: 337-337, 677-677

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0e7bbb4 and 8a17179.

📒 Files selected for processing (3)
  • frontend/packages/llama-stack-modular-ui/bff/internal/api/app.go (1 hunks)
  • frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml (1 hunks)
  • frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml

[error] 73-73: no new line character at the end of file

(new-line-at-end-of-file)


[error] 73-73: trailing spaces

(trailing-spaces)

frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[error] 133-133: trailing spaces

(trailing-spaces)


[warning] 337-337: too many blank lines (3 > 2)

(empty-lines)


[warning] 677-677: too many blank lines (3 > 2)

(empty-lines)

🪛 Checkov (3.2.334)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[HIGH] 1-749: Ensure that the global security field has rules defined

(CKV_OPENAPI_4)


[HIGH] 1-749: Ensure that security operations is not empty.

(CKV_OPENAPI_5)


[MEDIUM] 366-371: Ensure that arrays have a maximum number of items

(CKV_OPENAPI_21)

🔇 Additional comments (1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml (1)

72-73: Fix YAML formatting and confirm global security removal

Please address the formatting issues and verify whether the global Bearer security block should be removed to match the PR’s “no authentication” objective:

• Remove the trailing space on the Bearer: [] line and add a newline at the end of the file.
• Review whether this global security: section ( lines ~13–14 in common.yaml) should be removed entirely if the API truly requires no authentication.

Proposed formatting diff:

 security:
-  - Bearer: []·
+  - Bearer: []
+

Comment on lines 112 to 125
//// Register /api/v1/config as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/config", func(w http.ResponseWriter, r *http.Request) {
// app.HandleConfig(w, r, nil)
//})
//
//// Register /api/v1/auth/callback as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/auth/callback", func(w http.ResponseWriter, r *http.Request) {
// app.HandleOAuthCallback(w, r, nil)
//})
//
//// Register /api/v1/auth/state as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/auth/state", func(w http.ResponseWriter, r *http.Request) {
// app.HandleOAuthState(w, r, nil)
//})
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove commented-out code

Dead code should be removed to maintain code cleanliness. If this code is needed for reference, it should be documented or moved to version control history.

-	//// Register /api/v1/config as a public endpoint
-	//appMux.HandleFunc(ApiPathPrefix+"/config", func(w http.ResponseWriter, r *http.Request) {
-	//	app.HandleConfig(w, r, nil)
-	//})
-	//
-	//// Register /api/v1/auth/callback as a public endpoint
-	//appMux.HandleFunc(ApiPathPrefix+"/auth/callback", func(w http.ResponseWriter, r *http.Request) {
-	//	app.HandleOAuthCallback(w, r, nil)
-	//})
-	//
-	//// Register /api/v1/auth/state as a public endpoint
-	//appMux.HandleFunc(ApiPathPrefix+"/auth/state", func(w http.ResponseWriter, r *http.Request) {
-	//	app.HandleOAuthState(w, r, nil)
-	//})
-
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//// Register /api/v1/config as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/config", func(w http.ResponseWriter, r *http.Request) {
// app.HandleConfig(w, r, nil)
//})
//
//// Register /api/v1/auth/callback as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/auth/callback", func(w http.ResponseWriter, r *http.Request) {
// app.HandleOAuthCallback(w, r, nil)
//})
//
//// Register /api/v1/auth/state as a public endpoint
//appMux.HandleFunc(ApiPathPrefix+"/auth/state", func(w http.ResponseWriter, r *http.Request) {
// app.HandleOAuthState(w, r, nil)
//})
🤖 Prompt for AI Agents
In frontend/packages/llama-stack-modular-ui/bff/internal/api/app.go between
lines 112 and 125, there is commented-out code registering public API endpoints
that should be removed to keep the codebase clean. Delete all the commented-out
handler registrations for /api/v1/config, /api/v1/auth/callback, and
/api/v1/auth/state. If this code is needed later, it can be retrieved from
version control history.

Copy link
Contributor

@akram akram left a comment

Choose a reason for hiding this comment

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

minor comments, appart from that lgtm

Version = "1.0.0"

ApiPathPrefix = "/api/v1"
HealthCheckPath = "/healthcheck"
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: should we rename it to /health ? that's the commonly used name in many tools.

@akram
Copy link
Contributor

akram commented Jul 25, 2025

/assign @akram
/assign @Bobbins228

@akram
Copy link
Contributor

akram commented Jul 25, 2025

/assign @ChristianZaccaria

- Add comprehensive OpenAPI 3.0 specification for BFF endpoints
- Include /api/v1/query endpoint for RAG and chat completion
- Add vector database management endpoints
- Include model management endpoints
- Fix CORS configuration for healthcheck endpoint to enable Swagger UI
- Document only public-facing models and remove authentication requirements
- Add common schemas and responses in separate lib/common.yaml file

The OpenAPI documentation can be visualized using Swagger UI or any OpenAPI viewer.
Run the BFF with: make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"
@Schimuneck Schimuneck force-pushed the openapi-documentation-clean branch from 8a17179 to 9c50c4c Compare July 25, 2025 11:30
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1)

16-26: Healthcheck must override global auth

Monitoring systems rely on unauthenticated access. Add security: [] to the operation.

     get:
+      security: []
       tags:
         - HealthCheck
🧹 Nitpick comments (6)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml (1)

65-73: Remove trailing whitespace & add missing newline at EOF

Two YAML-lint violations (trailing spaces on line 73 and no new line character at the end of file) will break some CI linters and can cause unexpected diffs.

-  - Bearer:[]␠
+  - Bearer: []
+

(Keep the blank line at the end of the file.)

frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (5)

360-369: Add maxItems to unbounded arrays

Unbounded lists invite DoS attacks. Typical sane limit (tune to product requirements):

       items:
         type: array
+        maxItems: 100
         items:
           $ref: "#/components/schemas/Model"

Mirror the same constraint on VectorDBList.items, UploadRequest.documents, and QueryRequest.vector_db_ids.


469-473: Missing maxItems on vector_db_ids

       vector_db_ids:
         type: array
+        maxItems: 10
         items:
           type: string

130-135: Trailing whitespace on line 133

Remove the superfluous space at EOL to satisfy YAML-lint.

-      and generate responses using LLM chat completion.␠
+      and generate responses using LLM chat completion.

335-338: Excess blank lines (YAML-lint warning)

3 consecutive blank lines between 334-338. Collapse to at most one to avoid breaking style gates.


675-678: Excess blank lines (YAML-lint warning)

Collapse triple blank line after 675.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8a17179 and 9c50c4c.

📒 Files selected for processing (3)
  • frontend/packages/llama-stack-modular-ui/bff/internal/api/app.go (1 hunks)
  • frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml (1 hunks)
  • frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • frontend/packages/llama-stack-modular-ui/bff/internal/api/app.go
🧰 Additional context used
🪛 YAMLlint (1.37.1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/lib/common.yaml

[error] 73-73: no new line character at the end of file

(new-line-at-end-of-file)


[error] 73-73: trailing spaces

(trailing-spaces)

frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[error] 133-133: trailing spaces

(trailing-spaces)


[warning] 337-337: too many blank lines (3 > 2)

(empty-lines)


[warning] 677-677: too many blank lines (3 > 2)

(empty-lines)

🪛 Checkov (3.2.334)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[HIGH] 1-749: Ensure that the global security field has rules defined

(CKV_OPENAPI_4)


[HIGH] 1-749: Ensure that security operations is not empty.

(CKV_OPENAPI_5)


[MEDIUM] 366-371: Ensure that arrays have a maximum number of items

(CKV_OPENAPI_21)

🔇 Additional comments (1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1)

28-42: Config endpoint still inherits auth – override or update docs

If this endpoint is intended to be public (per earlier discussion and Go code), add the override:

     get:
+      security: []
       tags:
         - Configuration

If you changed your mind and want it secured, update the description to remove “used to retrieve … for the frontend” implication of openness.

Copy link

codecov bot commented Jul 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.15%. Comparing base (f31c05b) to head (48a0b15).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #4547   +/-   ##
=======================================
  Coverage   82.15%   82.15%           
=======================================
  Files        1811     1811           
  Lines       37935    37935           
  Branches    11281    11281           
=======================================
+ Hits        31165    31166    +1     
+ Misses       6770     6769    -1     

see 6 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f31c05b...48a0b15. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@agagancarczyk
Copy link
Contributor

/lgtm

- Add explicit security: [] to healthcheck and config endpoints for public access
- Clean up proxy endpoint descriptions by removing redundant authentication text
- Improve formatting consistency in OpenAPI specification
- Clarify which endpoints are public vs require authentication
@akram
Copy link
Contributor

akram commented Jul 25, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm label Jul 25, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1)

17-17: Remove trailing whitespace – YAML lint failure

Strip the stray spaces to keep the file YAML-lint-clean.

-    get:␠
+    get:

(and the blank line at 136)

Also applies to: 136-136

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9c50c4c and 46a9c6d.

📒 Files selected for processing (1)
  • frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml (1 hunks)
🧰 Additional context used
🪛 Checkov (3.2.334)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[HIGH] 1-752: Ensure that the global security field has rules defined

(CKV_OPENAPI_4)


[HIGH] 1-752: Ensure that security operations is not empty.

(CKV_OPENAPI_5)


[MEDIUM] 369-374: Ensure that arrays have a maximum number of items

(CKV_OPENAPI_21)

🪛 YAMLlint (1.37.1)
frontend/packages/llama-stack-modular-ui/bff/openapi/src/llama-stack-modular-ui.yaml

[error] 17-17: trailing spaces

(trailing-spaces)


[error] 136-136: trailing spaces

(trailing-spaces)


[warning] 340-340: too many blank lines (3 > 2)

(empty-lines)


[warning] 680-680: too many blank lines (3 > 2)

(empty-lines)

@openshift-ci openshift-ci bot removed the lgtm label Jul 25, 2025
@akram
Copy link
Contributor

akram commented Jul 25, 2025

/retest

@akram
Copy link
Contributor

akram commented Jul 25, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm label Jul 25, 2025
@pnaik1
Copy link
Contributor

pnaik1 commented Jul 28, 2025

/retest

@openshift-ci openshift-ci bot removed the lgtm label Jul 28, 2025
@agagancarczyk
Copy link
Contributor

/lgtm /approve

@akram
Copy link
Contributor

akram commented Jul 28, 2025

/lgtm

@openshift-ci openshift-ci bot added the lgtm label Jul 28, 2025
@akram
Copy link
Contributor

akram commented Jul 28, 2025

/approve

Copy link
Contributor

openshift-ci bot commented Jul 28, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: akram

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot openshift-merge-bot bot merged commit 230ef68 into opendatahub-io:main Jul 28, 2025
42 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Jul 28, 2025
6 tasks
d0w pushed a commit to d0w/odh-dashboard that referenced this pull request Jul 29, 2025
opendatahub-io#4547)

* feat: Add OpenAPI documentation for Llama Stack Modular UI BFF

- Add comprehensive OpenAPI 3.0 specification for BFF endpoints
- Include /api/v1/query endpoint for RAG and chat completion
- Add vector database management endpoints
- Include model management endpoints
- Fix CORS configuration for healthcheck endpoint to enable Swagger UI
- Document only public-facing models and remove authentication requirements
- Add common schemas and responses in separate lib/common.yaml file

The OpenAPI documentation can be visualized using Swagger UI or any OpenAPI viewer.
Run the BFF with: make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"

* docs: Improve OpenAPI specification clarity and security definitions

- Add explicit security: [] to healthcheck and config endpoints for public access
- Clean up proxy endpoint descriptions by removing redundant authentication text
- Improve formatting consistency in OpenAPI specification
- Clarify which endpoints are public vs require authentication

---------

Co-authored-by: Matias Schimuneck <[email protected]>
openshift-merge-bot bot pushed a commit that referenced this pull request Aug 11, 2025
* add feature flag (#4431)

* Add model metrics for KServe refactor (#4346)

* added lmeval improvements (#4438)

* serving runtime version status label and tests (#4398)

* Rhoaieng 26502 (#4440)

* Enable pipelines tests affected by RHOAIENG-24702

* enable test affected by RHOAIENG-27515

* Lint fixes

* Add feature flag for Feature store (#4437)

* Fixed bug where storage class select wouldn't appear in NIM Modal (#4427)

* Enhance ManageNIMServingModal to support OpenShift default storage class and improve storage class selection logic

- Added support for OpenShift default storage class in ManageNIMServingModal.
- Updated logic to prefer ODH default storage class over OpenShift default when both are available.
- Introduced a new prop `showDefaultWhenNoConfig` in StorageClassSelect to control visibility and enablement of storage class options based on configuration availability.
- Added comprehensive tests for ManageNIMServingModal and StorageClassSelect to cover new functionality and edge cases.

* removed debug logging

* removed extension on ts import

* fixed awkward logic

* fix: PVC resizing doesn't trigger a redeployment (#4334)

* fix: PVC resizing doesn't trigger a redeployment

* one annotation solution

* updated tests

* fixed lint

* NIM isolation

* generic version

* fix: lint

* deleted comment

* Serving refactor: Add tokens and hardware accelerators (#4441)

* Add tokens and hardware accelerators

* Remove unused kserve auth function

* Cypress e2e Test - Verify a model version can be registered via versions view (#4444)

* add test for registering via version view

* add page object with timeout

* enhance test

* add empty state object, update test

* update test object

* use common mr login function

* create versions page object

* remove duplicate v2 check

* add database checks

* update login pattern to standard approach

* sanitise queries

* add uid to object storage model

* update and apply nav method

* add feature flag tag

* fixed provider filter in resources (#4443)

* fixed provider filter in resources

* updated mocks for start basic workbench card

* made new component hidden from enabled page

* removed deprecated usage of useQueryParams

* Allow empty requested/limit for CPU and memory when hardware profile is disabled (#4407)

* Serving refactor: Show deployments of all projects in global page (#4451)

* Show deployments of all projects in global page

* Fix padding issue

* Fix spacing issue

* Fix deployment status bug (#4446)

* Cypress e2e Test - Verify model registry permissions can be managed (#4456)

* add new registry permissions test

* lint fix

* new line lint

* Change "Launch application" to "Open application" (#4409)

* change launch application to open application

* change link

* remove readme change

* Update Model Registry Plugin with latest upstream changes. (#4455)

* Update model-registry to 21197e57471e2a7fc6a09e178147540e8e218a94

* Revert changes

* Update model-registry to 6545c37be18e2ead22e2d0ba83ae7874c3bd8680

* Revert overriden files

* Pipeline failure feedback 2 (#4436)

* moved over changes from pipeline-failure-feedback manually into newest branch; also adjusted title and description upon erroring out

also: now only showing errors that have actual messages (reduce noise)

* working on finishing this up...now that i have an actual cluster/backend to use again :)

* removing the ignoreTimeout; not using anymore per UX

* cleaning up code

* removing timeout hacks that sped up development

* using server timeout directly now

* adjusted comment; next: remove the new css

* adding an overrideTimeout

* linter fix + removing unneeded timeOut alert

* fixed unit test

* (using cursor) added a div with an id for the mock tests; they are passing locally now

* used cursor to add section to ignore ChunkLoadErrors

* linter fix

* style (scss) changes removed

* Add toast notification upon successful datascience pipeline configuration (#4350)

* add polling

* fix linking

* remove unused util

* fix lint

* protect against null array

* change to use notificationwatchercontext

* fix autolint

* add test

* add testids

* change error msg

* remove comment

* fix linting

* adjust redundant const

* change time check

* use dspipelinekind metadata namespace

* use dspaloaded and server timeout functions

* fix lint

* add polling

* fix linking

* remove unused util

* fix lint

* protect against null array

* change to use notificationwatchercontext

* fix autolint

* add test

* add testids

* change error msg

* remove comment

* fix linting

* adjust redundant const

* change time check

* use dspipelinekind metadata namespace

* adjust notifications to not show during modal

* remove info notification

* fix imports

* check for undefined

* fix tests

* fix notifs

* add cypress tests

* e2e test (#4403)

* Microcopy updates for "project-scoped" items (#4448)

* microcopy updates

* ChunkLoadError fix

* microcopy updates

* Remove list and listitem imports

* Update test with global-scoped name

* li ul changes

* lint error fix

* adjust the content tags

* Update manageAcceleratorProfiles.cy.ts

* edit label microcopy (#4458)

* split frontend lint task into two separate runs (#4461)

* run type checking in all packages with turbo (#4381)

* run type checking in all packages with turbo

* remove type-check from unit test script as it is run separately

* Updates and enhancements for 'Verify the filters on Resources page' e2e test (#4463)

* enhance test with backend validation

* use inline types

* check namespace

* implement rhoai specific checks

* add self-managed step

* add navigate method

* update tags and apply lint

* Add more approvers (#4464)

* Fix type errors for array in es2021 (#4467)

* Add stopping status to model deployments (#4421)

* RHOAIENG-29339: Filter out outdated notebook image tags and only validate UI version dropdown for images with 2+ non-outdated versions\n\nThis change updates the Cypress workbench image/version test to:\n- Filter out outdated notebook image tags (using the opendatahub.io/image-tag-outdated annotation)\n- Only validate the UI version dropdown when there are 2 or more non-outdated versions for an image\n- Skip UI validation for images with only 1 non-outdated version, matching current UI behavior\n\nThis ensures the test is robust and cluster-agnostic, and resolves failures due to outdated or single-version images.\n\nJira: https://issues.redhat.com/browse/RHOAIENG-29339 (#4471)

* Quarantine model serving tests due to [Product Bug: RHOAIENG-29340]

* Small change for quarantine branch RHOAIENG-29340

* Remove accidentally added web-ui directory from index

* Update Hardware profile admin page (#4400)

* Update hardware profile CRD, add local queue and workload priority class options

* Added kueue fields to the details popover in HWP select

* easier to use feature flags via a button in the header (#4237)

* moved over a lot; the button is showing again.  need to control when/how the banner shows again tho

* better; need a break: next: compare tests (since files changed....)"

* tweaks re pr review

* tests are at lest running.....

* yay passing :)

* lint/prettier fixes

* unit test fix

* linter fix (unused import)

* lint fix (added space)

* fixing linter test error; (test runs locally just fine of course)

* fixing merge error

* Retrieve default local queue name from DSC (#4462)

* Remove deleted crd from kustomization file (#4478)

* Temporarily restore dashboard HWP crd (#4480)

* Serving refactor: Add modelmesh as a platform shortcircuit option (#4459)

* Add modelmesh as a platform shortcircuit option

* Fix eslint oom

* Add dependencies to package.json

* Update icon

* Internal model serving endpoint (#4475)

* Update Label url to Internal

* Updated Internal label test in cypress

* Upgrade cluster storage modal (#4457)

* upgrade cluster storage to include model context

* remove isGeneralPurpose useEffect

* remove redundant annotation setting

* feat: Enhance the dashboard to support deploying NIM with a PVC (#4447)

* v1

* fix: lint

* hide on edit

* refactor: DEFAULT_MODEL_PATH

* model pvc dropdown

* deletion logic

* fix: lint

* fix for current tests

* fix:lint

* lint

* defaultMockInferenceServiceData

* added testid's

* tests + info

* coderabbitai

* deleted comment

* no model is selected + relativeTime

* Change how model deployment links appear (#4442)

* Change how model deployment links appear

* Cypress fixes

* Adjustments from feedback

* Move instances of isModelStopped into a util

* Move duplicated code into shared resource

* Rebase fixes

* Integrate stop start changes

* Small fixes

* Fix issue with metrics link

* Quick fix for stopping

---------

Co-authored-by: Griffin-Sullivan <[email protected]>

* Remove Product Bug references and @Bug tags from model serving tests (#4488)

- Removed '[Product Bug: RHOAIENG-29340]' from describe blocks
- Removed '@Bug' tags from all test configurations
- Fixed linter formatting issues for tag arrays
- Tests are now unquarantined and ready for execution

* RHOAIENG-25339: Update application of hardware profiles in all workloads (#4413)

* conditionally set resources

* added unit tests

* bring back lost changes

* fixed unit tests

* fixed mock tests

* remove logic to unset resources for harware profiles

* added new annotation

* added new annotation to the serving runtime

* Revert "fixed mock tests"

This reverts commit 805f14d6294b429f5c4e0647f1606fdcc7141f8c.

* fix lint

* added a check for acc profile

* fix mock tests

* fixed more tests

* fix mode serving mock test

* added a better check

* fixed tests

* removed console

* fixed unit test

* Feature flag modal re-organization (#4481)

* starting on separating feature flags into groups

* comments and scaffolding

* starting with cursor...added tabs

* better

* better

* better

* better

* flags redistributed onto tabs now; easier to find the active ones

* no longer having indeterminate  checkboxes

* cleanup

* cleanup

* restoring package.json

* added scrolling to *just* the content of the tab that needs it (tried to use patternfly but capability not there)

* did find a patternfly way; with chatgpt (better than cursor in this case)

* working on test

* removed debugging code

* removing PageSection (review feedback)

* linter fix (removing unused import)

* Create a set of Cursor rules for Cypress e2e Development  (#4485)

* chore: initial changes for Cypress E2E rules and setup

* docs(cypress-e2e): update rules for linting scripts, cy.get usage, and tagging per PR feedback

* docs(cypress-e2e): clarify lint/fix commands for root, frontend, and backend per feedback

* docs(cypress-e2e): update lint/fix instructions to frontend-only for E2E tests

* Feature Store Initial Setup (#4487)

* Add types, mocks, feature store project context, empty state and project selector for feature store. (#5)

* Add types and mocks for feast

* Add feature store project context and project selector

* feat(RHOAIENG-28417):added feature store code block common component

* feat(RHOAIENG-28415):added single label and tags with overflow and show all tags component

* feat(RHOAIENG-28413): added feature store side navigation routes

* feat(RHOAIENG-28413):uncommented the feature store flag check for routes

* feat(RHOAIENG-28413):rearranged the nav items below experiments in the navbar and minor content changes in name

* feat(RHOAIENG-28413):added core loader in the routes for feature store

* fix(context):added featurestore context in app file

* removed unused component

* fix(feast-context): moved the feast context to the feast routes level

* style: addressed review comments (text and spacing)

---------

Co-authored-by: Pushpa Padti <[email protected]>

* Add missing frontmatter to cypress-e2e.mdc rule file

- Added description, globs, and alwaysApply fields to match jira-creation.mdc format
- Enables proper rule configuration and LLM-driven relevance detection
- Addresses reviewer feedback about missing frontmatter section

* Fix globs field to be empty array instead of null

- Changed 'globs:' to 'globs: []' to ensure it parses as empty array
- Prevents type errors in rule-runner which expects a list
- Addresses PR reviewer feedback

* Fix bug when stopping model with confirmation modal (#4492)

* Update cluster storage connected resources (#4469)

* Update cluster storage connected resources

* update ConnectedResourcesProps

* RHOAIENG-27574: Filter Hardware profiles if kueue disabled (#4490)

* added filter logic

* added unit tests

* fixed lint

* moved the filter logic

* enum

* renamed

* updated tests

* removed unnecessary const

* fix dupl issie

* RHOAIENG-30110: The workload priority is not maintained when switching between local queue and not selectors. (#4496)

* fixed the bug

* added gutter

* added unit tests

* Kueue extras (#4489)

* Set default hwp namespace in notebooks to dashboard namespace, remove non-legacy hwp from model mesh, move hwp annotations from serving runtime to inference service

* Small fix

* Additional fixes

* Add test IDs for deployed model names in ModelMesh and plugin components (#4499)

* Add test IDs for deployed model names in ModelMesh and plugin components

- Add 'deployed-model-name' test ID to InferenceServiceTableRow for ModelMesh deployments
- Add 'deployed-model-name' test ID to DeploymentsTableRow for plugin-based deployments
- Fix syntax error in testSingleModelAdminCreation.cy.ts test file
- Update Cypress tests to use new test ID selectors

Supports RHOAIENG-29747 and RHOAIENG-29977

* Fix mock tests by restoring metrics-link test IDs while adding model name selectors

- Restore original metrics-link-{name} test IDs for backward compatibility with existing tests
- Add data-model-name='deployed-model-name' attributes as additional selectors
- Update findModelServerDeployedName method to use new generic selector
- Add findModelDeployedName method for table-based model selection

This fixes the mock test failures while maintaining both specific (metrics link) and general (model name) test selectors.

* Revert PR changes to InferenceServiceTableRow.tsx

* Update test selector to use data-testid instead of data-model-name

* Add deployed-model-name test ID to InferenceServiceTableRow

- Add data-testid='deployed-model-name' to both Link and span elements
- Preserve existing metrics-link functionality
- Update page object to use new test ID selector
- Add uncaught exception handler for JavaScript parsing errors
- Support both loaded and unloaded model states

* Update model serving tests: remove exception handling and fix project deletion timeout

- Remove unnecessary Cypress.on('uncaught:exception') handling from all model serving tests
- Set 5-minute timeout for project deletion due to RHOAIENG-19969
- Add TODO comments to review timeout once RHOAIENG-19969 is resolved
- Support proper test retries by waiting for project deletion completion
- Clean up test code to be more focused and maintainable

* Address review comments: use findByTestId and remove redundant data-model-name

- Update findModelDeployedName() in page object to use findByTestId('deployed-model-name') for consistency
- Remove redundant data-model-name attribute from InferenceServiceTableRow component
- Keep only data-testid='deployed-model-name' for test selection

Addresses review feedback from Griffin-Sullivan on PR #4499

* Update frontend/src/__tests__/cypress/cypress/pages/modelServing.ts

Co-authored-by: Griffin Sullivan <[email protected]>

* Remove unused findModelDeployedName method from page object

- Method was not used anywhere in the codebase
- Clean up unnecessary code for better maintainability

* Rename findModelServerName to findModelMetricsLink for clarity

- Renamed findModelServerName(name: string) to findModelMetricsLink(name: string) in ModelServingSection
- This method actually finds metrics links using metrics-link-${name}, not model server names
- Updated all test file references to use the new method name
- Kept the original findModelServerName() method for input fields unchanged
- Addresses naming confusion between different findModelServerName methods

Updated files:
- testSingleModelContributorCreation.cy.ts
- testSingleModelAdminCreation.cy.ts
- testDeployOCIModel.cy.ts
- testModelServingTolerations.cy.ts

---------

Co-authored-by: Griffin Sullivan <[email protected]>

* Remove dashboard hardware profiles CRD (#4500)

* Add 'Last Deployed' column to model deployments (#4468)

* Add 'Last Deployed' column to model deployments

* Adjust extension and modify for model mesh

* Add generic component for last deployed

* Cypress fix

* Fix sorting for models refactor

* Adjust to only show timestamp for 'Started' models

* fixed filtering behavior for model registry page (#4482)

* fixed filtering behavior for model registry page

* fixed tests

* added filtering for model version table

* removed file extension

* upversion dashboard (#4503)

* Workbench Test Maintenance - implement dynamic notebook image selection with backend fallback (#4502)

* feat: implement dynamic notebook image selection with backend fallback

- Replace hardcoded 'jupyter' image validation with dynamic selection
- Add selectNotebookImageWithBackendFallback utility function:
  - Try UI selection first (createSpawnerPage.findNotebookImage)
  - Fall back to backend query if UI element not found
  - Uses opendatahub.io/notebook-image-name annotation for display name
- Update workbench tests to use scoped validation (notebookRow.shouldHaveNotebookImageName)
- Centralize all OC commands in imageStreams.ts utility per Cypress E2E rules
- Handle environment variables (APPLICATIONS_NAMESPACE) internally in utilities
- Fix async/sync mixing issues in Cypress command chaining

Resolves: RHOAIENG-30224

* feat: complete dynamic image selection for testWorkbenchVariables.cy.ts

- Replace all hardcoded 'code-server' validations with dynamic approach
- Both tests now use selectNotebookImageWithBackendFallback for UI-first selection
- All 4 workbench instances now validate using getImageStreamDisplayName
- Handle complex test structure with multiple workbenches per test
- Proper async chaining for nested workbench creation flows
- All 6 workbench test files now consistently use dynamic image selection

All workbench tests (11 total) now passing with dynamic image selection:
✅ testWorkbenchControlSuite.cy.ts (2 tests)
✅ testWorkbenchCreation.cy.ts (2 tests)
✅ testWorkbenchImages.cy.ts (1 test)
✅ testWorkbenchNegativeTests.cy.ts (2 tests)
✅ testWorkbenchStatus.cy.ts (1 test)
✅ testWorkbenchVariables.cy.ts (2 tests) - COMPLETED
✅ workbenches.cy.ts (1 test)

Resolves: RHOAIENG-30224

* refactor: remove unused helper functions from imageStreams.ts

Address CodeRabbit AI feedback by removing dead code:
- Remove verifyNotebookImageDisplayName (unused)
- Remove validateNotebookRowImageName (unused)
- Remove shouldHaveNotebookImageNameFromImageStream (unused)
- Remove selectTestImageStream (unused)

All tests use getImageStreamDisplayName directly with manual validation,
making these helper functions redundant. This cleanup reduces code
duplication and maintains only the functions actually used:

✅ getImageStreamDisplayName - Core function used in all tests
✅ selectNotebookImageWithBackendFallback - Main selection function
✅ getAvailableNotebookImageStreams - Used by fallback logic
✅ getNotebookImageNames - Used by testWorkbenchImages.cy.ts

File size reduced from 273 lines to ~150 lines with no functionality lost.

* test: add @Workbenches tag to workbenches.cy.ts test

Add missing @Workbenches tag to the 'Verify users can create a workbench
and connect an existent PersistentVolume' test case.

This ensures the test is included when running workbench tests with
tag filtering (e.g., --env grepTags='@Workbenches').

* Add back hardware profiles crd (#4507)

* Add back hardware profiles crd

* Add description

* Deploy a Model from a PVC (#4449)

* deploy a model from pvc

* existing uri bug fix

* simplify useEffect and hide uri when pvc found

* Refactor: Avoid destructuring from process.env (#4510)

* add documentation on extensibility (#4501)

* add documentation on extensibility

* add link under 'developer readmes'

* add cypress tests for missing links (#4513)

* add cypress tests for help links

* Refactor: Avoid destructuring from process.env

---------

Co-authored-by: Lucas Fernandez <[email protected]>

* Serving refactor: Backport nim platform (#4493)

* Add refactor platform card

* Update NIM context to be generic

* Updating naming

* Add tests

* import consistency updates

* cleaner isPlatformEnabled

* Feature Store Context and API setup (#4509)

* Feature Store Context and API setup:
* Backend proxy setup
* Routes
* Context
* Hooks
* API
* Unit tests

* remove title icon

* import updates and few changes

* adding unit tests

* PR review updates

* Invalid project selector

* adding prefix in proxy

* Add fix to image streams notebook enabling annotation (#4522)

* Splitting feature store types.ts (#4529)

* Add skeleton for accelerator profile while loading (#4454)

* change loading checks and update components

* add state for component

* fix lint

* Update AcceleratorProfileSelectField.tsx

* fix loading state issues

* remove imports

* add test case

* DevFeatureFlag removal (#4517)

* Status refresh for the Model Registry's Deployments (#4466)

* MR status refresh

* fix lint: imports

* address comments

* Globals page exports routes with metrics too (#4519)

* Globals page exports routes with metrics too

* better metric link logic

* Initial folder structure for llama stack ui (RAG/Gen AI v3) (#4535)

* feat: integrate model registry into the deployment (#4450)

* PVC Serving E2E Test (#4494)

* Add E2E test for deploying from PVC

* pr fixes

* remove feature flag flip

* PVC serving microcopy updates (#4516)

* PVC serving microcopy updates

* Add HelperTextItem

* change to popover

* warning title change

* fix: update title and label text in Enable NIM dialog to reference personal key (#4536)

Signed-off-by: Olga Lavtar <[email protected]>

* Refactor RegisterCatlogModel and Remove useEffect (#4420)

* Refactor RegisterCatlogModel and remove useEffect

* model name fix for cypress test

* simplify the hook

* mapping suggestion fix

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* remove timeout from test

Co-authored-by: Robert Sun <[email protected]>

* timeout removal

Co-authored-by: Robert Sun <[email protected]>

* timeout removal

Co-authored-by: Robert Sun <[email protected]>

* remove the prefilled values test

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Robert Sun <[email protected]>

* aggregate get/list/watch permissions to project admins/contributors (#4497)

* chore: e2e Test Maintenance - Jul 24th 25' (#4538)

* RHOAIENG-30472: Standardize deleteKueueResources function options to match deleteOpenShiftProject pattern

- Add standardized options parameter with timeout, wait, and ignoreNotFound properties
- Implement same pattern and defaults as deleteOpenShiftProject for consistency
- Fix async/sync code mixing issues that caused Cypress errors
- Update test files to use new options parameter syntax with proper comma placement
- Maintain backward compatibility while improving code consistency

* Add exception handler for webpack-dev-server fallback errors in E2E tests

- Ignore 'Unexpected token <' errors that occur due to webpack-dev-server fallback
- Prevents E2E tests from failing due to these development environment issues
- Added alongside existing ChunkLoadError handler for consistent error handling

* Add quarantine steps to model serving E2E tests

- Add quarantine steps to testModelStopStart.cy.ts
- Add quarantine steps to testSingleModelAdminCreation.cy.ts
- Add quarantine steps to testSingleModelContributorCreation.cy.ts
- Fix formatting issues with tag arrays per prettier requirements

* Update frontend/src/__tests__/cypress/cypress/utils/oc_commands/distributedWorkloads.ts

Co-authored-by: Noam Manos <[email protected]>

* Improve robustness of Kueue resource deletion commands

- Replace && with || : ; to ensure all deletion attempts run independently
- Prevents cleanup from stopping if one resource doesn't exist
- Addresses review feedback from @manosnoam in PR #4538

Co-authored-by: Noam Manos <[email protected]>

---------

Co-authored-by: Noam Manos <[email protected]>

* Add version labels to refactored code (#4523)

* Add version labels to refactored code

* Add generic component

* Modify servingruntime to servingdetails, create shared version component

* Added entire repo for llama-stack-modular-ui (#4541)

* Added entire repo for llama-stack-modular-ui

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Removed .github

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Added .eslintignore

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Added gh actions

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fix for lint errors

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Removed gh actions

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Ignoring tests in llama-stack-modular-ui directory

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

---------

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* [feat] Add real amd mock endpoints for Query and Chat completion (#4543)

This commit contains the following:
1. Mock and real endpoints for query.
2. Allows query when no DB is present.
3. Allows query when DB is present.

Signed-off-by: Varsha Prasad Narsing <[email protected]>
Co-authored-by: Matias Schimuneck <[email protected]>

* Add area/llama-stack-modular-ui label for PRs (#4551)

* Serving refactor  global models page backport (#4531)

* Add global models page backports

* Remove unused backport file

* Quarantine distributed workloads test - add bug tag and JIRA reference RHOAIENG-30510 (#4550)

* Unquarantine serving tests from RHOAIENG-30376 (#4554)

* add llama stack github action workflow (#4546)

* add llama stack workflow

* fix package.json in llama-stack-modular-ui

* change the workflow name

* feat: Add comprehensive OpenAPI documentation for Llama Stack Modular… (#4547)

* feat: Add OpenAPI documentation for Llama Stack Modular UI BFF

- Add comprehensive OpenAPI 3.0 specification for BFF endpoints
- Include /api/v1/query endpoint for RAG and chat completion
- Add vector database management endpoints
- Include model management endpoints
- Fix CORS configuration for healthcheck endpoint to enable Swagger UI
- Document only public-facing models and remove authentication requirements
- Add common schemas and responses in separate lib/common.yaml file

The OpenAPI documentation can be visualized using Swagger UI or any OpenAPI viewer.
Run the BFF with: make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"

* docs: Improve OpenAPI specification clarity and security definitions

- Add explicit security: [] to healthcheck and config endpoints for public access
- Clean up proxy endpoint descriptions by removing redundant authentication text
- Improve formatting consistency in OpenAPI specification
- Clarify which endpoints are public vs require authentication

---------

Co-authored-by: Matias Schimuneck <[email protected]>

* Bump form-data in /frontend/packages/model-registry/upstream/frontend (#4521)

Bumps [form-data](https://github.com/form-data/form-data) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Manaswini Das <[email protected]>

* config: enable typecheck for source files, disable only for test files (#4562)

- Enable typecheck linter for regular source code files
- Disable typecheck only for test files (*_test.go) to avoid Ginkgo framework errors
- Maintain proper type checking for production code while allowing test framework functions

* Removed all code related to chatbot openshift auth and chatbot sharing visuals (#4561)

* Removed all code related to oAuth

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Fixed eslint

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

---------

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* exclude llama-stack-modular-ui in tsconfig.json (#4566)

* Removed out of date documentation files (#4567)

* make rwo tag always show (#4524)

* Quarantine model serving tests for Product Bug RHOAIENG-30799

- Added [Product Bug: RHOAIENG-30799] to describe blocks for all model serving tests
- Added @Bug tag to all affected test cases
- Quarantined tests in:
  - testSingleModelAdminCreation.cy.ts
  - testSingleModelContributorCreation.cy.ts
  - testModelPvcDeployment.cy.ts
  - testModelStopStart.cy.ts
  - testMultiModelAdminCreation.cy.ts
  - testDeployOCIModel.cy.ts
  - testSingleServingRuntimeCreation.cy.ts

* module federation documentation (#4556)

* Feature view api (#4553)

* Feature View
* Table
* Routes
* API Hooks
* Empty state

* Ensuring API availability for feature store

* Feature view tags overflow fix

* empty owner placeholder

* Coderabit updates

* Updating feature view online offline label

* cypress tests

* Update failed unit test

* Test updates

* Uncommenting mock status

* Port start / stop models to the plugin (#4533)

* Model Registry - ODH Enablement (#4540)

* Lucas' test MR container

* Update params.env

* Update deployment.yaml

* Update deployment.yaml

* Fix issue with overlay

* Get target ports referenced by name

* Revert namespace

* Avoid using labels in this overlay

---------

Co-authored-by: Andrew Ballantyne <[email protected]>
Co-authored-by: Lucas Fernandez <[email protected]>

* Serving refactor global cypress test fixes (#4555)

* Add global models page backports

* Remove unused backport file

* fixes

* small test update

* Remove comments

* Fix more tests

* Fix last deployed tooltip mouseenter

* feat: adapt base images to red hat and migrate from ubi8 to ubi9 (#4565)

* Cypress e2e Test - Verify models can be deployed from model registry (#4564)

* add new deploy test

* increase timeout

* handle empty registry condition

* deploy secret

* handle single registry condition

* improve timeout mechanism

* minor enhancements

* combine mr utils

* add page object

* lint

* remove initial validation

* move clickRegisterModelButton to new util

* update tests

* follow up missing changes in commit (#4576)

* Upgrade mod arch upstream (#4579)

* Update model-registry to b4c43a0dfc6864f9a630a011e71f48c48b695df1

* Revert changes that override upstream

* RHOAIENG-28909: Add Storage Class Provisioner "disk.csi.azure.com" to Storage Enums (#4528)

* added disk.csi.azure.com

* added RWOP

* added unit tests

* added RWX

* rwo only

* New LMEval E2E tests for TrustyAI (#4511)

* New LMEval E2E tests for TrustyAI

This commit adds comprehensive LMEval tests and related E2E utilities:

- Add 2 scenarios for LMEval using static and dynamic models
- Add LMEval job utilities for configuration and job verification
- Add ModelTestSetup utility for any e2e test setup
- Add YAML support to ESLint: eslint-plugin-yml, yaml-eslint-parser
- Update LMEval form components with missing test IDs

Signed-off-by: manosnoam [email protected]

* Fix CodeRabbitAI comments

Signed-off-by: manosnoam <[email protected]>

* Multiple fixes to address Reviewers comments

Signed-off-by: manosnoam <[email protected]>

* fix(lm-eval): Dynamically detect port for InferenceService connections

LMEval jobs were failing with ConnectionRefusedError because they were
connecting to InferenceService models on the default port 80, while the
ServingRuntime was configured to listen on a different container port.

This fix fetches the ServingRuntime associated with each
InferenceService and extracts the containerPort from its definition.
The port is then used to construct the correct internal cluster URL.

Signed-off-by: manosnoam <[email protected]>

* Update LMEval mock tests and page object

Signed-off-by: manosnoam <[email protected]>

* Split LMEval tests into static and dynamic test files

Signed-off-by: manosnoam <[email protected]>

* Fix CodeRabbitAI suggestions

Signed-off-by: manosnoam <[email protected]>

* Rebase lmeval_e2e branch

Signed-off-by: manosnoam <[email protected]>

* Quarantine testLMEvalDynamic due to bug RHOAIENG-30642

Signed-off-by: manosnoam <[email protected]>

* Fix accessibility violations (A11y) with plain buttons in LMEval form

Signed-off-by: manosnoam <[email protected]>

* Add testId to LMEvalTaskSection

Signed-off-by: manosnoam <[email protected]>

* Rename lmEval.ts to lmEvalFormPage.ts

Signed-off-by: manosnoam <[email protected]>

* Fix e2e.ts before hook to skip test suites based on tags

Signed-off-by: manosnoam <[email protected]>

* Update LMEval E2E page objects and tests

- Remove complex dropdown logic, enhance model selection
- Move cleanup function, remove fallback project name
- Enhance YAML parsing with error handling
- Login before test, to avoid session race conditions with devFeatureFlags
- Remove Tag for bug RHOAIENG-30642
- Update README.md

Signed-off-by: manosnoam <[email protected]>

---------

Signed-off-by: manosnoam [email protected]
Signed-off-by: manosnoam <[email protected]>

* E2E Test for Token Authentication (#4572)

* add E2E test to validate token authentication

* copy tokens from UI

* remove comment

* Serving refactor: fix project details tab cypress tests (#4580)

* Make test ids more consistent

* Update project test too

* Feature store entities (#4568)

* feat(RHOAIENG-28420):added constants and feature store route for entitiy details page

* feat(RHOAIENG-28420,RHOAIENG-28421):added hooks for feature store entities

* feat(reusable-components):added a common timestamp component,scrollable links popover and import changes

* feat(reusable-toolbar):added a common toolbar component

* feat(entities-detail-page):added entitities detail and list view component

* feat(entities-table):added entity table component and row component

* fix(lint):addressed linting errors  for relative imports

* fix(jest-test-cases):added hook test cases and fixed test cases for error utils and api integration

* fix(components): added route fixes, empty state and error state for entity details page

* feat(cypress):added cypress mocks and test cases

* fix:added common route function

* fix(review):added spec file for utility functions and rearranged the options in the filter to match the column

* Remove bug tags from model serving tests (#4585)

* add bug tag

* add description tag

* remove bug tags

* lint fix

* add ticket to oci test

* Add dashboard support for the pipelines Kubernetes native API (#4484)

* add section

* store

* adjust types

* remove console

* add crd connection

* begin kfp upstream changes

* revert kfp changes

* remove dataid word

* begin kfp upstream changes

* add support for new versions

* add mock tests

* fix tests and add k8s name checking

* fix lint

* adjust tests and add auto scroll

* fix unit test

* add deel equal

* add component for k8s checkbox

* change to smooth

* Add deploy button, dropdown button, and connection autofill button as extension in MR midstream (#4453)

* Add deploy button and dropdown button as extension in MR midstream

* Add autofill connection button as extension when registering model

* rebase

* Update the extensions

* Rebase and update

* Update plugin context for the MR app to unblock midstream standalone mode

* address feedback

* Revert change to mandatoryNamespace

Signed-off-by: Mike Turley <[email protected]>

* Attempt to give lint job more memory

Signed-off-by: Mike Turley <[email protected]>

---------

Signed-off-by: Mike Turley <[email protected]>
Co-authored-by: Mike Turley <[email protected]>

* Update MR e2e test `testArchiveModels' (#4586)

* update test

* add should_be_enabled

* add page object

* linter fixes

* lint

* add selectors

* Add edit model modal to refactor (#4573)

* consolidate hooks

* deprecate hooks

* replace hooks with default hook

* fixed tests

* remove auto patch code for admin page

* delete deprecated hooks

* clean up

* fixed issue

* updated comment

* Feature store toolbar component (#4593)

* Feature store toolbar component

* solving linting

* fix:resolved linting issues

---------

Co-authored-by: Claudia Alphonse <[email protected]>

* Doc upload in chatbot (#4612)

* Converted to new designs

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Removed some eslint ignore statements

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Added document upload functionality

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* Refactor

Signed-off-by: Agnieszka Gancarczyk <[email protected]>

* test fix

* test fix

---------

Signed-off-by: Agnieszka Gancarczyk <[email protected]>
Co-authored-by: pnaik1 <[email protected]>

* Increasing memory allocation to 8GB for lint tests (#4616)

* feat: Add OpenAPI serving to BFF (#4560)

- Add OpenAPI handler with JSON, YAML, and Swagger UI endpoints
- Support external references in OpenAPI specification
- Integrate OpenAPI routes with existing routing system
- Preserve static file serving functionality with STATIC_ASSETS_DIR
- Add comprehensive API documentation endpoints:
  * /openapi.json - OpenAPI specification in JSON format
  * /openapi.yaml - OpenAPI specification in YAML format
  * /swagger-ui - Interactive Swagger UI interface
  * /openapi - Redirect to Swagger UI

The BFF now serves both frontend static files and provides
comprehensive OpenAPI documentation for the API endpoints.

* Link refactor deploy buttons to existing deploy modal (#4542)

* Link refactor deploy buttons to existing deploy modal

* Adjustments from feedback

* Add toolbar for refactored global models page

* Small bug fixes

* Refine some areas

* Remove references to refresh

* Clean up code and fix deploy button in global no models

* Kueue microcopy changes (#4620)

* Adds user_token auth mode to llama stack module (#4596)

* Updates authentication to follow pattern used by model registry. Now supports user_token mode.

* fix: properly disable authentication if auth_method=disabled

* refactor: optimize TokenClientFactory performance and make API path prefix configurable

- Move TokenClientFactory creation from per-request to app-level initialization
- Add configurable APIPathPrefix to EnvConfig with default /api/v1
- Add --api-path-prefix command-line flag and API_PATH_PREFIX env var
- Replace hardcoded ApiPathPrefix constants with dynamic path generation methods
- Update middleware to use app.tokenFactory instead of recreating per request
- Update isAPIRoute function to be App method using configurable prefix
- Update all tests to work with new configurable approach
- Maintain backward compatibility with default /api/v1 prefix

This improves performance by eliminating per-request object creation and
provides flexibility for different deployment scenarios.

---------

Co-authored-by: Akram Ben Aissi <[email protected]>

* E2E test for model deployment with Kserve Raw (#4583)

* Cypress E2E test for model deployment with Kserve Raw -20579

* refactored code

* Addressed review comments

* Add [Product Bug: RHOAIENG-31261]  and Bug Tag to Quarantine the test

* update checkInferenceServiceState utility method to check deployment mode

* Update deployment mode conditions

* remove getDeploymentModeLength() function.

* refactored code

* refactored code

* fixed tests

* add feature page (#4574)

* add feature page

* feat:added test cases,tooltip, common filter changes

* feat:added fature views api in the odh cypress file

* fix:reused the generic filter component and removed the unused featurestoolbar

* changed the test id for the toolbar

---------

Co-authored-by: Claudia Alphonse <[email protected]>

* Unquarantine missed serving test from RHOAIENG-30799 bug (#4617)

* Feature services (#4571)

* Feature service

* Added project col

* Coderabbit comments

* Tests added

* Feature view links

* feature service dates

* Feature service toolbar

* fixing lint

* Lint fix

* fixing tests

* Fixing tests 2

* Replace project column

* Adding back type and mocks

* typo fix

* TruncatedText truncation for tooltips in HardwareProfileSelection helper description (#4578)

* fix tooltip

* adjust other overflow

* update truncate text

* adjust truncation options

* add scroll
:

* use panel

* add back in support for no truncation

* adjust text

* fix truncation for simpleselect

* change back to truncated text

* fix mouse enter hook

* Dspa caching rebased (#4621)

* dspa cache enablement; squashing all the commits:
 (rebasing on derek's branch: story-21309)

  * using cacheEnabled (instead of cache: {enabled: <value>})
  * autoscrolling when the alert shows up now so alert is not hidden
      *turning off autoscroll unless user interacted with it
  * added 'Loading...' text
  * renamed View->Manage for the modal
  * added toast
  * added tests
     * added to cypress mock test
  * playing with titles/text sizes
  * adjusting layout depending on the context
     * alert looks better and takes up entire width now, no matter the layout mode

* linter fix (import order )

* fixing tests

* updated tests; did lint fixes; removed the lint:changed from package.json

* fixing import

* working on package files....

* restoring package-lock.json

* restored base package files

* starting on review comments:  fixed one layout issue and using 'useNotificaton' instead of the context

* fixing button alignment in the modal

* small tweaks:  style removed, test code adjusted per review

* fixed import

* linter fix

* test fix

* fixing test (to use useNotification hook instead of registerNotification)

* removing tag that cursor added

* fixing more tests

* adding in a StackItem to add a margin without adding explicit css; tested that the auto-scroll to view the alert is still functional

* Refractor ChatbotMain.tsx file (#4624)

* remove @app alias

* create separate folder

* add hooks

* add unit test for hooks

* Rhoaieng 28422 - 	Entities tab - feature views (#4626)

* feat:added entity param for the feature views tab

* feat:added cypress test for feature views tab and updated usefeature views hook spec test

* feat:added feature view tab for entities

* feat:added classname and a fixed test case

* [feat] Allow context message to be an input from the user (#4603)

This change allows users to input context message from the user
instead of hardcoding it.

To test the change, use the mock client and run the command:

curl -X POST http://localhost:8080/api/v1/query \
  -H "Content-Type: application/json" \
  -d '{
    "content": "What is machine learning?",
    "vector_db_ids": ["my-vector-db-identifier"],
    "llm_model_id": "ollama/llama3.2-3b",
     "system_prompt": "You are a technical consultant. Provide concise, actionable insights based on the available context."
  }'

Signed-off-by: Varsha Prasad Narsing <[email protected]>

* Feature service details (#4628)

* Feature service

* Added project col

* Feature service toolbar

* Replace project column

* Feature service details

* tests update

* Coderabbit comments

* Fallback for no tags

* Fix case sensitivity: rename featureServiceDetails.tsx to FeatureServiceDetails.tsx

* Details page empty states

* Empty message update

* solving tests

* resolving conflicts

* revert

* revert comment

* Package and feature flag setup for model training (#4615)

* serving refactor: cypress project details model fixes (#4601)

* Add checking runtimeTemplates for deploy button

* Fix accessibility error

* More consistent testids

* Add testid for project details table too

* Add missing testid for change platform button

* Minor fix to make deploy button a link in the section overview

* fix type and short circuit some template api calls

* Fix deploy button not having a project in global

* Fix templates load state

* final fixes

* Add PR review guidelines and best practices (#4486)

* Add PR review guidelines and best practices

* Fix indentation, wording, add to PR template

* Fix Markdown formatting issues

* Fix MD007 issues

* Add more details about when to and when not to use useCallback

* Add code examples

* make content clearer and add examples

* Serving refactor cypress: Re-add deploy from registry button link (#4623)

* Make and use nav back to registry button

* Fix gap being gone when aria-disabled true

* chore(deps): Upgrade PatternFly to 6.3.0 release (#4435)

fix lint

chore(deps): bump versions to latest prerelease candidates

chore(deps): bump versions to latest prerelease candidates

chore(deps): bump versions to latest prerelease candidates, update table components

chore(deps): fix lint

chore(deps): fix lint

chore(deps): bump to stable release versions

chore(deps): add isHamburgerButton prop for page toggle animation

chore(deps): fix tabs bug, add TODO for table, remove BarsIcon as child of PageToggleButton

chore(deps): remove BarsIcon from imports in Header.tsx

chore(deps): apply usePageInsets prop instead of util classes to match page margins

chore(deps): bump to latest patch release versions

chore(deps): revert hasAnimations on opt-in components

chore(deps): revert hasAnimations on opt-in components

chore(deps): revert hasAnimations on opt-in components

chore(deps): revert Header.tsx to apply isHamburgerButton

* test: create unit tests for internal api handlers and cmd package (#4619)

* Feature view tab for features (#4631)

* Add CY_RETRY option for Cypress test retry configuration

- Add new CY_RETRY environment variable to control test retry behavior
- Document all Cypress environment configuration in testing.md
- Reference main documentation from cypress README to avoid duplication

Signed-off-by: manosnoam <[email protected]>

* Fix uncaught exception handler conflict in e2e.ts

Multiple uncaught:exception handlers were interfering in e2e.ts,
causing timeout errors to be ignored instead of failing tests.
For example, pipelines/topology.ts had a timeout error handler that was
overriding the global one, causing tests to run for 1.5+ hours
(until Jenkins killed them).

Fixed by consolidating into a single uncaught exception handler.

Signed-off-by: manosnoam <[email protected]>

* Add support for both process.env and --env variables for all CY_ vars

Signed-off-by: manosnoam <[email protected]>

* Make modular architecture workspace enabled so it works with plugins (#4595)

* Move 'Use existing settings' to top of Hardware Profile select list (#4627)

* change order

* add unit test

* move to new describe block

* add not exist assertion

* Add params.env to modular architecture overlay so the operator can inject the image (#4575)

* fix: Update NIM enable test to be more resilient (#4590)

* feat: implement robust NIM application enablement test with automatic manifest application

- Add comprehensive NIM application enablement test with automatic manifest application
- Create dedicated nimCommands.ts file for NIM-specific functions
- Implement robust NIM card detection and enable button handling
- Add proper error handling for cases where NIM is already enabled
- Improve test reliability with proper timeouts and element detection
- Add NIM manifest fixture for testing
- Resolve async/sync mixing issues and improve scrolling behavior
- Add @SanitySet3 tag for test categorization
- Fix linting issues and improve code formatting

* fix: resolve linting issues in NIM test files

- Fix unnecessary else after return in NIMCard.ts
- Fix prettier formatting issues in testEnableNIM.cy.ts
- Fix indentation and spacing in nimCommands.ts
- Add proper function name for test function to resolve func-names warning
- Ensure all files pass eslint and prettier checks

* refactor: simplify NIM test by removing already-enabled checks

- Remove all logic around checking if NIM was already enabled
- Simplify executeNIMTestSteps function to return void instead of boolean
- Remove unnecessary conditional logic and skip statements
- Clean up the test flow since deleteNIMAccount in before() handles cleanup
- Make the test more straightforward and focused on the enablement flow

* refactor: improve NIM test with better step logging and page object encapsulation

- Replace cy.log() with cy.step() for test steps to improve test reporting
- Add reload() method to ExplorePage class for better encapsulation
- Use explorePage.reload() instead of direct cy.reload() calls
- Keep informative cy.log() calls for context that don't represent test steps
- Improve test readability and maintainability

* refactor: move direct DOM selectors to NIMCard page object methods

- Add findDrawerPanel() method to NIMCard class for drawer panel selector
- Add findActionList() method to NIMCard class for action list selector
- Add findEnableButton() method to NIMCard class for enable button selector
- Replace direct cy.get() calls with page object methods in test
- Improve encapsulation and follow mandatory coding guidelines for UI interactions

---------

Co-authored-by: Noam Manos <[email protected]>

* Model serving fix cypress platform selection errors (#4602)

* Reuse same platform error alert

* Add error alert for details page too

* Verify Required type and add system instruction (#4638)

* add required file

* add required type and system instructions

* add source toggle button

* fix test

* microcopy change for pipeline caching section; no functional changes (#4643)

* microcopy change for pipeline caching section; no functional changes

* updated relevant test that checked the text

* RHOAIENG 29677 -Feature Views details section (#4635)

* feat:updated mocks and cypress tests for feature services,views,entities

* feat:added apis getfeatureviewbyname, added routes for data sources, and updated jest test files

* feat:added hooks changes for feature store

* feat:updated props in featurestorecodeblock, and constant changes for feature store objects

* feat:added filter utils function to handle feature views, and types and utils files

* feat:added filtering changes for project column for entities

* feat:added filtering changes for project column for features

* feat:added filtering changes for project column for feature services

* feat:added filtering changes for project column for feature views and removed the unused toolbar for feature views

* feat:added feature views details tab, details page and the consuming tab component

* feat:added feature view tabs component, and feature view schema and transformation component

* feat:added feature view lineage tab and feature view materialization tab component

* fix:test cases fixes

* fix(review-comments):resolved code rabbit and other review comments

* fix(review-comments):added fallback for not interaction code block

* fix(store-type-filter-feature-view):added custom filtering fix for the feature view for the store type filter

* fix(review-comments): added feature view materialization component with sorting, replaced the table less header for entity details part with flex

* fix:added compact variant for materialization component

* fix:added minor textual changes and test id changes

* cypress config file

* cypress config file added to tsconfig for cypress

* Migrate /images POST, PUT, and DELETE endpoints to frontend (#4470)

* PVC Model Path Helper Text Update (#4651)

* helper text

* pull out connected resources

* Add reviewers in llama-stack-modular-ui (rag-playground) (#4625)

* Add ChristianZaccaria as reviewer in llama-stack-modular-ui (rag-playground)

* Add Bobbins228 and Ygnas as reviewers in rag-playground

* Fix the pipelines run metrics table (#4652)

* Ignore store_session_info when displaying pipeline run metrics

This is an implementation detail not directly set by the user, so it
does not need to be displayed.

Signed-off-by: mprahl <[email protected]>

* Fix displaying pipeline run metrics with zero values

If a metric had a `0` value, the code would call `toString` on `boolValue`
which is undefined and caused the UI to crash until the pipeline run was
archived.

Signed-off-by: mprahl <[email protected]>

---------

Signed-off-by: mprahl <[email protected]>

* Update start / stop models with UX improvements (#4645)

* remove model name (#4653)

* Update Tekton output-image tags to version v2.35.1-odh (#4430)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* updated tekton (#4432)

* upversion dashboard (#4434)

* Upversion Dashboard

---------

Signed-off-by: Olga Lavtar <[email protected]>
Signed-off-by: Agnieszka Gancarczyk <[email protected]>
Signed-off-by: Varsha Prasad Narsing <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: manosnoam [email protected]
Signed-off-by: manosnoam <[email protected]>
Signed-off-by: Mike Turley <[email protected]>
Signed-off-by: mprahl <[email protected]>
Co-authored-by: Katelynn Perry <[email protected]>
Co-authored-by: Griffin Sullivan <[email protected]>
Co-authored-by: Purva Naik <[email protected]>
Co-authored-by: Fede Alonso <[email protected]>
Co-authored-by: Pushpa Padti <[email protected]>
Co-authored-by: Theia <[email protected]>
Co-authored-by: mtalvi <[email protected]>
Co-authored-by: Emily Samoylov <[email protected]>
Co-authored-by: Conor O'Malley <[email protected]>
Co-authored-by: Robert Sun <[email protected]>
Co-authored-by: Juntao Wang <[email protected]>
Co-authored-by: Ashley McEntee <[email protected]>
Co-authored-by: Derek Xu <[email protected]>
Co-authored-by: Lucas Fernandez <[email protected]>
Co-authored-by: Jill Pelavin <[email protected]>
Co-authored-by: Arsheen Taj Syed <[email protected]>
Co-authored-by: Christian Vogt <[email protected]>
Co-authored-by: Anthony Coughlin <[email protected]>
Co-authored-by: Anthony Coughlin <[email protected]>
Co-authored-by: Nana Nosirova <[email protected]>
Co-authored-by: Sri Sai Sowjanya Darna <[email protected]>
Co-authored-by: Griffin-Sullivan <[email protected]>
Co-authored-by: Anish Surti <[email protected]>
Co-authored-by: Claudia Alphonse <[email protected]>
Co-authored-by: Lucas Fernandez <[email protected]>
Co-authored-by: Dipanshu Gupta <[email protected]>
Co-authored-by: Eder Ignatowicz <[email protected]>
Co-authored-by: olavtar <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Noam Manos <[email protected]>
Co-authored-by: Agnieszka Gancarczyk <[email protected]>
Co-authored-by: Varsha <[email protected]>
Co-authored-by: Matias Schimuneck <[email protected]>
Co-authored-by: Andrew Ballantyne <[email protected]>
Co-authored-by: Matias Schimuneck <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Akram Ben Aissi <[email protected]>
Co-authored-by: Andrew Ballantyne <[email protected]>
Co-authored-by: Mike Turley <[email protected]>
Co-authored-by: Anish Surti <[email protected]>
Co-authored-by: Alex Creasy <[email protected]>
Co-authored-by: Jenny <[email protected]>
Co-authored-by: IAN MILLER <[email protected]>
Co-authored-by: Gary Harden <[email protected]>
Co-authored-by: Christian Zaccaria <[email protected]>
Co-authored-by: Matt Prahl <[email protected]>
Co-authored-by: odh-devops-app[bot] <140140902+odh-devops-app[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
antowaddle pushed a commit to antowaddle/odh-dashboard that referenced this pull request Aug 15, 2025
opendatahub-io#4547)

* feat: Add OpenAPI documentation for Llama Stack Modular UI BFF

- Add comprehensive OpenAPI 3.0 specification for BFF endpoints
- Include /api/v1/query endpoint for RAG and chat completion
- Add vector database management endpoints
- Include model management endpoints
- Fix CORS configuration for healthcheck endpoint to enable Swagger UI
- Document only public-facing models and remove authentication requirements
- Add common schemas and responses in separate lib/common.yaml file

The OpenAPI documentation can be visualized using Swagger UI or any OpenAPI viewer.
Run the BFF with: make run STATIC_ASSETS_DIR=../frontend/dist MOCK_LS_CLIENT=true ALLOWED_ORIGINS="*"

* docs: Improve OpenAPI specification clarity and security definitions

- Add explicit security: [] to healthcheck and config endpoints for public access
- Clean up proxy endpoint descriptions by removing redundant authentication text
- Improve formatting consistency in OpenAPI specification
- Clarify which endpoints are public vs require authentication

---------

Co-authored-by: Matias Schimuneck <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants