feat(mcp): EP hardware gaps (TRT RTX, OpenVINO NPU, DirectML, WebGPU) - #131
tonythethompson merged 17 commits into
Conversation
There was a problem hiding this comment.
Sorry @tonythethompson, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 5 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (26)
📝 WalkthroughWalkthroughChangesMCP hardware and runtime capabilities
Knowledge base and pass discovery
Frontend state and test maintenance
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 7 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (7 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Warning Review ran into problems🔥 ProblemsLinked repositories: Public OSS repositories can only analyze public repositories installed in this organization. Analyzed Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoFill MCP EP hardware gaps for TensorRT RTX, OpenVINO NPU, DirectML, and WebGPU
AI Description
Diagram
High-Level Assessment
Files changed (12)
|
Greptile SummaryThe PR expands Olive MCP guidance and normalization for TensorRT RTX, Intel OpenVINO NPU, DirectML, and browser WebGPU.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; the current OpenVINO NPU LLM chain accepts both ONNX and Torch inputs and feeds a compatible OpenVINO model into weight compression.
|
| Filename | Overview |
|---|---|
| olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py | Adds target-specific strategy buckets and fixes the prior Intel NPU LLM chains by using OpenVINOConversion, which accepts both Torch and ONNX inputs. |
| olive-mcp-server/olive_mcp_server/tools/normalization.py | Adds structured hardware and OpenVINO-device resolution for the newly supported execution providers. |
| olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py | Introduces runtime installation and execution guidance for resolved execution-provider targets. |
| olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json | Adds TensorRT RTX, OpenVINO NPU, DirectML, and WebGPU hardware profiles and recommended pass metadata. |
| olive-mcp-server/tests/test_hardware_ep_profiles.py | Covers new EP aliases and strategies, including the corrected format-compatible OpenVINO NPU chain. |
Reviews (16): Last reviewed commit: "Merge remote-tracking branch 'origin/fea..." | Re-trigger Greptile
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 966cc6cea4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "Set openvinoTargetDevice to NPU in Olive Studio (EP id stays OpenVINOExecutionProvider).", | ||
| "Unsupported ops fall back to CPU; verify Core Ultra / Meteor Lake+ NPU driver.", | ||
| ] | ||
| pass_chain = ["OnnxConversion", "OpenVINOOptimumConversion", "OpenVINOWeightCompression"] |
There was a problem hiding this comment.
Use a format-compatible OpenVINO conversion chain
For every Intel NPU LLM recommendation, this chain feeds the ONNX output of OnnxConversion into OpenVINOOptimumConversion, whose knowledge-base metadata accepts only torch; users following the returned pass_chain therefore cannot execute the second pass. Remove the initial conversion, or replace the Optimum pass with OpenVINOConversion, which accepts ONNX; the same incompatible chain is also exposed by the new hardware profile.
Useful? React with 👍 / 👎.
| "target": "Windows DirectML GPU", | ||
| "accelerator": "gpu", | ||
| "execution_providers": ["DmlExecutionProvider"], | ||
| "recommended_passes": ["OnnxConversion", "OnnxStaticQuantization", "OnnxModelOptimizer"], |
There was a problem hiding this comment.
Optimize the DirectML graph before quantization
When the DirectML hardware guide is used, this ordered recommendation places OnnxModelOptimizer after OnnxStaticQuantization. The repository's get_pass_chain validator explicitly warns that graph optimization after quantization can produce a less clean quantized graph and recommends canonical conversion → optimization → quantization order; the new DirectML CNN/vision strategy repeats this ordering.
Useful? React with 👍 / 👎.
| "target": "WebGPU (Browser)", | ||
| "accelerator": "gpu", | ||
| "execution_providers": ["WebGpuExecutionProvider"], | ||
| "recommended_passes": ["OnnxConversion", "OnnxFloatToFloat16", "OnnxModelOptimizer"], |
There was a problem hiding this comment.
Run WebGPU optimization before the FP16 cast
For WebGPU guide requests, this chain runs OnnxModelOptimizer after OnnxFloatToFloat16. get_pass_chain warns that optimization in this order may revert FP16 precision, undermining the profile's stated FP16 deployment strategy; put the optimizer before the cast, including in the matching CNN/vision strategy branch.
Useful? React with 👍 / 👎.
| "openvinoTargetDevice", | ||
| "OpenVINO NPU", | ||
| "device NPU", | ||
| "OpenVINOExecutionProvider", |
There was a problem hiding this comment.
Require an NPU-specific troubleshooting signal
When a Studio error merely mentions OpenVINOExecutionProvider, or its configuration context contains the routinely present openvinoTargetDevice field, this entry receives a full keyword match even for CPU/GPU OpenVINO usage because troubleshooting patterns are OR alternatives. Such errors can therefore be misdiagnosed as an NPU-device-selection problem; restrict the patterns to text that actually identifies NPU, or require the generic field/provider token to co-occur with an NPU value.
Useful? React with 👍 / 👎.
| "localExecutionIssues", | ||
| "webgpu", | ||
| "isRunnable" |
There was a problem hiding this comment.
Remove generic recipe fields from WebGPU matching
When callers include a recipe or UI-state payload in config_context, nearly every recipe contains isRunnable and localExecutionIssues, and the scorer treats either substring as a complete keyword match. Unrelated Studio failures can consequently be ranked as the browser-only WebGPU issue, with both fields adding an extra multi-hit bonus; keep only WebGPU-specific provider/error tokens or require these fields to be paired with a WebGPU value.
Useful? React with 👍 / 👎.
Code Review by Qodo
1.
|
There was a problem hiding this comment.
Actionable comments posted: 15
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json`:
- Around line 235-250: Update the Windows DirectML GPU profile’s
execution_providers list to contain only the canonical DmlExecutionProvider
identifier. Remove the DirectMLExecutionProvider normalization alias while
preserving the rest of the profile unchanged.
- Around line 208-212: Clarify the tensorrt-rtx guidance to state that it
installs the standalone TensorRT RTX EP-ABI provider library implementing
NvTensorRTRTXExecutionProvider for ORT 1.23+, without implying a separate plugin
dependency. Apply this wording consistently in
olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json:208-212,
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json:233-237,
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json:959-963,
and olive-mcp-server/scripts/expand_kb.py:549-553.
In
`@olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json`:
- Around line 126-127: Update the TensorRT RTX guidance in
olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json:126-127
to require both tensorrt-rtx and the matching ONNX Runtime EP ABI plugin, and
explicitly instruct users to verify NvTensorRTRTXExecutionProvider appears in
onnxruntime.get_available_providers(). Update
olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json:856 to
state that the recipe requires both packages.
In `@olive-mcp-server/olive_mcp_server/tools/compatibility.py`:
- Around line 24-27: Update the return documentation for the compatibility
function to explicitly include the optional error key. State that invalid
OpenVINO device requests may return model-level data together with error, while
hardware-specific fields are omitted, distinguishing this partially populated
shape from the bare error responses of sibling tools.
In `@olive-mcp-server/olive_mcp_server/tools/normalization.py`:
- Around line 99-131: Remove all OpenVINO-related entries from
_HARDWARE_ALIASES, including NPU, GPU, iGPU, and Arc variants. Keep only the
TensorRT RTX, DirectML, and WebGPU aliases, leaving _try_parse_openvino as the
sole handler for OpenVINO inputs.
- Around line 323-332: The execution-provider mapping in the normalization flow
is case-sensitive while subsequent matching uses lowercase. Update the lookup
around _EXECUTION_PROVIDER_TO_TARGET to use the normalized lowercased input,
preserving the existing canonical target assignment and lower update so mixed-
or lowercase provider names resolve through the EP map before aliases and
profile matching.
In `@olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py`:
- Around line 351-369: Guard both the latency and accuracy override logic in the
strategy advisor so it runs only when the selected algorithm actually uses int4.
Update the conditions around the latency_rank_val handling and
accuracy-threshold replacement, preserving the existing LLM/CNN/vision behavior
for int4 algorithms while leaving FP16 algorithm descriptions and risks
unchanged.
- Around line 375-386: Update get_quantization_strategy’s result construction to
include "resolved_profile": parsed.profile while retaining "target_hardware" as
the strategy bucket. Document that target_hardware identifies the bucket and
resolved_profile preserves the resolved hardware description, with the existing
openvino_device details unchanged.
In `@olive-mcp-server/olive_mcp_server/tools/studio_loopback.py`:
- Around line 82-98: Update resolve_studio_base() to access parsed.port inside a
try block after URL parsing, catching invalid or out-of-range port ValueErrors
and returning studio_unavailable instead of allowing request-time failures.
Preserve the existing scheme, credential, and loopback validation, and add
regression coverage for malformed and out-of-range OLIVE_STUDIO_API_URL ports.
In `@olive-mcp-server/olive_mcp_server/tools/troubleshooting.py`:
- Around line 417-421: Update the candidate selection logic around the scored
results and require_keyword handling: when require_keyword is true, filter
scored to entries with hits greater than zero before selecting the best entry,
then apply the existing positive-score validation. Preserve the current ranking
order and behavior when require_keyword is false.
In `@olive-mcp-server/scripts/check_olive_pass_availability.py`:
- Around line 309-310: Update the success message in the claim-availability
reporting flow to say claims were recognized by the Olive registry, alias
mapping, or cloud-only allowlist, rather than asserting all claims are exact
local registry entries. Keep the existing _claim_in_registry validation and
missing-claim behavior unchanged.
- Around line 85-95: Update the exception handler in _olive_config_json_path to
resolve Ruff S110: either add an S110-specific suppression alongside BLE001 with
a comment explaining the intentional fallback to a site-packages walk, or log
the metadata lookup failure before continuing to the fallback. Preserve the
existing fallback behavior.
In `@olive-mcp-server/tests/test_hardware_ep_profiles.py`:
- Around line 73-98: Add a parameterized test case in
test_quantization_strategy_new_categories for WebGPU or DirectML using
latency_budget="<100ms", pass that budget to get_quantization_strategy, and
assert the recommended algorithm retains the expected FP16/INT8 strategy without
int4 KV-cache guidance.
In `@olive-mcp-server/tests/test_normalization.py`:
- Line 98: Remove the duplicate ("RTX 4090", "NVIDIA RTX 4090") entry from the
pytest.mark.parametrize case list in test_normalization.py, keeping the earlier
identical case and all other test cases unchanged.
- Around line 156-165: Update test_parse_hardware_target_bare_gpu_not_ov to
assert the expected bare-gpu fallback target, then adjust
parse_hardware_target’s unresolved path and _match_hardware_profile resolution
so the exact input "gpu" cannot select WebGPU (Browser). Add a dedicated
bare-gpu alias or explicit fallback that preserves non-OpenVINO status while
returning the intended generic GPU target.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 1f9e8ab1-750e-431f-b017-88d0dc25dc3d
📒 Files selected for processing (30)
olive-mcp-server/README.mdolive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.jsonolive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.jsonolive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.jsonolive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.jsonolive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.jsonolive-mcp-server/olive_mcp_server/mcp_server.pyolive-mcp-server/olive_mcp_server/tools/__init__.pyolive-mcp-server/olive_mcp_server/tools/compatibility.pyolive-mcp-server/olive_mcp_server/tools/hardware_guide.pyolive-mcp-server/olive_mcp_server/tools/normalization.pyolive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.pyolive-mcp-server/olive_mcp_server/tools/strategy_advisor.pyolive-mcp-server/olive_mcp_server/tools/studio_loopback.pyolive-mcp-server/olive_mcp_server/tools/studio_recipe.pyolive-mcp-server/olive_mcp_server/tools/troubleshooting.pyolive-mcp-server/scripts/check_olive_pass_availability.pyolive-mcp-server/scripts/expand_kb.pyolive-mcp-server/tests/test_compatibility_matrix.pyolive-mcp-server/tests/test_hardware_ep_profiles.pyolive-mcp-server/tests/test_integration.pyolive-mcp-server/tests/test_normalization.pyolive-mcp-server/tests/test_runtime_ep_hints.pyolive-mcp-server/tests/test_studio_recipe.pyolive-mcp-server/tests/test_tools.pysrc/components/features/BatchProcessingPanel.test.tsxsrc/components/features/ExecutionWorkspace.test.tsxsrc/components/features/MCPDiagnosticCard.tsxsrc/lib/pipelineValidation.tssrc/server/services/mcp/studioRecipeBridge.ts
🔗 Linked repositories identified
CodeRabbit considers these linked repositories for cross-repo context during reviews:
tonythethompson/QuickShell(manual)tonythethompson/numan(manual)tonythethompson/dependency-chain-substrate(manual)
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: Greptile Review
- GitHub Check: olive-pass-availability
- GitHub Check: python-tests
- GitHub Check: validate
🧰 Additional context used
📓 Path-based instructions (5)
olive-mcp-server/**/*.py
📄 CodeRabbit inference engine (CLAUDE.md)
Pin the Python
mcpdependency to a version below 2 because version 2.x removesmcp.server.fastmcpand breaks imports.
Files:
olive-mcp-server/olive_mcp_server/mcp_server.pyolive-mcp-server/scripts/expand_kb.pyolive-mcp-server/olive_mcp_server/tools/__init__.pyolive-mcp-server/tests/test_compatibility_matrix.pyolive-mcp-server/tests/test_hardware_ep_profiles.pyolive-mcp-server/olive_mcp_server/tools/compatibility.pyolive-mcp-server/tests/test_studio_recipe.pyolive-mcp-server/tests/test_integration.pyolive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.pyolive-mcp-server/olive_mcp_server/tools/hardware_guide.pyolive-mcp-server/tests/test_normalization.pyolive-mcp-server/tests/test_tools.pyolive-mcp-server/tests/test_runtime_ep_hints.pyolive-mcp-server/olive_mcp_server/tools/studio_recipe.pyolive-mcp-server/olive_mcp_server/tools/troubleshooting.pyolive-mcp-server/scripts/check_olive_pass_availability.pyolive-mcp-server/olive_mcp_server/tools/strategy_advisor.pyolive-mcp-server/olive_mcp_server/tools/normalization.pyolive-mcp-server/olive_mcp_server/tools/studio_loopback.py
src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
src/**/*.{ts,tsx}: Match existing naming, file layout, and TypeScript patterns insrc/.
Put shared recipe logic insrc/lib/, especiallypipelineValidation.ts,oliveRecipeBuilder.ts, andrecipePipeline.ts.
src/**/*.{ts,tsx}: Keep validation logic in shared libraries rather than duplicating it in UI cell helpers or inspectors.
Split theInputEnvironmentPanel,IHVIntegrationPanel, andExecutionWorkspacemega-panels into feature folders with colocated hooks and tests.
Keep server and UI AI provider catalogs synchronized, preferably through a shared provider ID list or synchronization test; register new providers in both catalogs.
Add test coverage forrecipe-graph/,passCatalog,oliveRecipeHub,jobHistoryStore, andvramEstimate, and strengthen component tests for the large panels.
src/**/*.{ts,tsx}: All UI state mutations must go throughcommitUiStateUpdateinsrc/lib/pipelineValidation.tsso invariants are enforced; useusePipelineState()for state access andreplaceStatefor recipe imports or preset loads.
Avoidexport *barrel imports; import directly from the actual module file to preserve Vite tree-shaking and component-test isolation.
src/**/*.{ts,tsx}: In React/TypeScript source, avoid barrel imports; import from the specific module/file instead of re-export index files.
In React/TypeScript source, eliminate waterfalls in data loading and rendering flows.
In React/TypeScript source, defer non-critical third-party libraries instead of loading them eagerly.
Files:
src/server/services/mcp/studioRecipeBridge.tssrc/lib/pipelineValidation.tssrc/components/features/MCPDiagnosticCard.tsxsrc/components/features/BatchProcessingPanel.test.tsxsrc/components/features/ExecutionWorkspace.test.tsx
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.{ts,tsx,js,jsx}: Place imports at the top of modules; use inline imports only for a documented circular dependency.
Run linting and ensure typecheck-related CI checks pass before submitting changes.
For UI or server changes, manually smoke-test development startup, recipe loading/building, validation banners, and live execution when execution behavior is touched.
Files:
src/server/services/mcp/studioRecipeBridge.tssrc/lib/pipelineValidation.tssrc/components/features/MCPDiagnosticCard.tsxsrc/components/features/BatchProcessingPanel.test.tsxsrc/components/features/ExecutionWorkspace.test.tsx
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
When working with React 19 or Vite 8 APIs, consult current Context7 documentation instead of assuming conventions from earlier major versions.
Files:
src/server/services/mcp/studioRecipeBridge.tssrc/lib/pipelineValidation.tssrc/components/features/MCPDiagnosticCard.tsxsrc/components/features/BatchProcessingPanel.test.tsxsrc/components/features/ExecutionWorkspace.test.tsx
src/lib/pipelineValidation.ts
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Extend validation rules in
pipelineValidation.tswhen pass-to-provider compatibility changes.
Files:
src/lib/pipelineValidation.ts
🧠 Learnings (1)
📚 Learning: 2026-08-04T12:36:02.655Z
Learnt from: tonythethompson
Repo: tonythethompson/Olive-Studio PR: 97
File: src/components/features/BatchProcessingPanel.tsx:0-0
Timestamp: 2026-08-04T12:36:02.655Z
Learning: When updating pipeline state through usePipelineState().setState in React components, do not wrap the update in another commitUiStateUpdate call. PipelineStore.setState already invokes commitUiStateUpdate(store.state, partial) to enforce UI state invariants; a second commit can duplicate the operation and merge against a stale component state snapshot.
Applied to files:
src/components/features/MCPDiagnosticCard.tsxsrc/components/features/BatchProcessingPanel.test.tsxsrc/components/features/ExecutionWorkspace.test.tsx
🪛 ast-grep (0.45.0)
olive-mcp-server/tests/test_runtime_ep_hints.py
[warning] 113-113: Do not make http calls without encryption
Context: "http://example.com:3000"
Note: [CWE-319] Cleartext Transmission of Sensitive Information.
(requests-http)
[info] 81-81: use jsonify instead of json.dumps for JSON output
Context: json.dumps(payload)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
olive-mcp-server/olive_mcp_server/tools/studio_loopback.py
[info] 144-144: use jsonify instead of json.dumps for JSON output
Context: json.dumps(body)
Note: [CWE-116] Improper Encoding or Escaping of Output.
(use-jsonify)
🪛 Checkov (3.3.9)
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json
[low] 280-281: Base64 High Entropy String
(CKV_SECRET_6)
🪛 Ruff (0.16.1)
olive-mcp-server/tests/test_normalization.py
[warning] 98-98: Duplicate of test case at index 2 in pytest.mark.parametrize
Remove duplicate test case
(PT014)
olive-mcp-server/scripts/check_olive_pass_availability.py
[error] 94-95: try-except-pass detected, consider logging the exception
(S110)
[warning] 154-154: Use key in dict instead of key in dict.keys()
Remove .keys()
(SIM118)
🔍 Remote MCP DeepWiki, GitHub Copilot
Relevant review context
- Studio runtime contract:
/api/system/hardware-probeaccepts bothrefresh=1andrefresh=true, so the new MCP hint tool’s refresh query is compatible with Studio./api/env/runtimeexposes per-family runtime capabilities. - Provider IDs: Studio’s canonical identifiers are
DmlExecutionProvider,OpenVINOExecutionProvider,NvTensorRTRTXExecutionProvider, andWebGpuExecutionProvider. The PR additionally acceptsDirectMLExecutionProvideras an alias, which should remain normalization-only rather than a runtime output. - OpenVINO device model: Studio keeps
OpenVINOExecutionProviderseparate from the target device (CPU/GPU/NPU) and maps that device into the Olive accelerator configuration. The PR’s structured OpenVINO parser follows this established contract. - TensorRT RTX installation warning: Existing Studio code states that
tensorrt-rtxalone does not registerNvTensorRTRTXExecutionProvider; the NVIDIA ORT EP-ABI plugin is also required. The PR troubleshooting solution currently says onlypip install tensorrt-rtx, so this remediation should be checked. - WebGPU behavior: Studio explicitly treats WebGPU as browser/ORT-Web-only and excludes it from local execution, matching the PR’s knowledge-base guidance.
- Related runtime architecture: Merged PR
#111established separatedefault,cuda, andopenvinoruntime families, with DirectML in the default family and OpenVINO isolated in.venvs/openvino; PR#131’s runtime hints should preserve that separation. - Checks: The PR head has a successful Vercel deployment; the CodeRabbit review status remains pending.
DeepWiki was attempted but the repository is not indexed there.
🔇 Additional comments (40)
olive-mcp-server/scripts/check_olive_pass_availability.py (3)
24-33: LGTM!
110-123: LGTM!Also applies to: 147-157, 245-247
261-273: LGTM!olive-mcp-server/olive_mcp_server/tools/studio_loopback.py (1)
23-65: LGTM!Also applies to: 101-209
olive-mcp-server/olive_mcp_server/tools/runtime_ep_hints.py (1)
1-196: LGTM!olive-mcp-server/olive_mcp_server/mcp_server.py (1)
57-60: LGTM!olive-mcp-server/olive_mcp_server/tools/__init__.py (1)
37-37: LGTM!Also applies to: 185-185
olive-mcp-server/tests/test_runtime_ep_hints.py (1)
1-211: LGTM!olive-mcp-server/olive_mcp_server/tools/studio_recipe.py (1)
12-18: LGTM!Also applies to: 49-68, 96-102
olive-mcp-server/tests/test_studio_recipe.py (1)
14-14: LGTM!Also applies to: 80-87
src/lib/pipelineValidation.ts (1)
799-802: 🎯 Functional CorrectnessApply
UiStatePatchat the state-update boundary.
mergeUiStatenow accepts shallow patches such as{ passes: { quantization: true } }, butcommitUiStateUpdatestill acceptsPartial<UIState>at Line 894. This leaves the required mutation API unable to accept the new nested patch shape without a cast. ChangecommitUiStateUpdateand any store-facing setter type toUiStatePatch, or verify that no caller needs partialpassesupdates.As per coding guidelines, all UI state mutations must go through
commitUiStateUpdateso invariants are enforced.Source: Coding guidelines
src/server/services/mcp/studioRecipeBridge.ts (1)
14-14: LGTM!Also applies to: 102-102
src/components/features/MCPDiagnosticCard.tsx (1)
52-54: LGTM!src/components/features/BatchProcessingPanel.test.tsx (1)
199-199: LGTM!Also applies to: 301-301
src/components/features/ExecutionWorkspace.test.tsx (1)
322-322: LGTM!olive-mcp-server/tests/test_integration.py (1)
26-26: LGTM!olive-mcp-server/olive_mcp_server/knowledge_base/integration_recipes.json (1)
2-3: LGTM!Also applies to: 264-350, 783-855, 858-1044
olive-mcp-server/olive_mcp_server/knowledge_base/studio_troubleshooting.json (1)
2-3: LGTM!Also applies to: 115-126, 128-129, 132-177
olive-mcp-server/olive_mcp_server/knowledge_base/troubleshooting.json (1)
2-3: LGTM!Also applies to: 619-649
olive-mcp-server/README.md (1)
14-18: LGTM!olive-mcp-server/tests/test_tools.py (1)
274-313: LGTM!olive-mcp-server/olive_mcp_server/tools/normalization.py (1)
157-176: LGTM!Also applies to: 196-270, 273-297, 365-375
olive-mcp-server/tests/test_normalization.py (1)
109-112: LGTM!Also applies to: 115-153
olive-mcp-server/olive_mcp_server/tools/compatibility.py (1)
66-89: LGTM!olive-mcp-server/olive_mcp_server/tools/hardware_guide.py (1)
6-6: LGTM!Also applies to: 25-33, 52-52, 68-70
olive-mcp-server/olive_mcp_server/tools/strategy_advisor.py (1)
10-37: LGTM!Also applies to: 64-96, 98-191, 193-297, 299-349
olive-mcp-server/olive_mcp_server/tools/troubleshooting.py (2)
365-366: LGTM!Also applies to: 529-535
272-277: 📐 Maintainability & Code QualityNo action needed. The six quirk-category keys match existing knowledge-base entry ids.
olive-mcp-server/tests/test_hardware_ep_profiles.py (1)
12-38: LGTM!Also applies to: 41-70, 101-107, 109-156
olive-mcp-server/olive_mcp_server/knowledge_base/compatibility_matrix.json (6)
2-3: LGTM!
425-562: LGTM!
1416-1461: LGTM!
1585-1630: LGTM!
1711-1745: LGTM!
2384-2416: LGTM!olive-mcp-server/olive_mcp_server/knowledge_base/hardware_profiles.json (3)
2-3: LGTM!
214-234: LGTM!
251-266: LGTM!olive-mcp-server/tests/test_compatibility_matrix.py (2)
400-400: LGTM!
420-420: LGTM!
This reverts commit f8be3d2.
Treat QNNQuantization, OnnxModelOptimizer, and AzureMLQuantization as aliases or cloud-only claims so olive-pass-availability matches the pinned olive-ai 0.12.1 config. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Add rocm strategy bucket + llama3_rocm_gptq; deepen ROCm matrix claims. Add get_runtime_ep_hints loopback proxy over hardware-probe/env runtime (shared studio_loopback client; no install logic).
Canonicalize DirectML EP id, clarify TensorRT RTX EP-ABI wording, harden hardware normalization (case-insensitive EP map, bare gpu fallback), guard int4-only strategy overrides, validate Studio URL ports, and tighten troubleshooting/CI messaging with regression tests. Co-authored-by: Anthony Thompson <github@trackdub.com>
…erns Use format-compatible OpenVINO NPU chains, put DirectML/WebGPU optimization before quant/FP16, and require NPU/WebGPU-specific troubleshooting signals. Co-authored-by: Anthony Thompson <github@trackdub.com>
Default to OpenVINOConversion (torch|onnx) before weight compression so ONNX-source LLMs are not routed through torch-only Optimum conversion. Co-authored-by: Anthony Thompson <github@trackdub.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
d59606c to
b051888
Compare
Reject OLIVE_STUDIO_API_URL values with path/query/fragment, and only forward HTTPError JSON bodies that include a structured error key. Co-authored-by: Anthony Thompson <github@trackdub.com>
…are-gaps Resolve check_olive_pass_availability conflict by keeping the logged metadata-lookup fallback from the base (CodeFactor) while preserving PR 131 EP-hardware content. Co-authored-by: Anthony Thompson <github@trackdub.com>
Dismissed because a newer commit was pushed; Greptile will re-review the current head.
…ck' into feature/mcp-ep-hardware-gaps Co-authored-by: Anthony Thompson <github@trackdub.com>
Stacked on
Stacked on #130 (
feature/mcp-validation-kb-feedback). Merge after #130.Summary
Fills Olive MCP knowledge gaps for EPs Studio already supports:
NvTensorRTRTXExecutionProvider)npu→ Qualcomm)DmlExecutionProvider)WebGpuExecutionProvider) — export/browser, not local Olive runChanges
Test plan