plugin and sidebar fixes - #4213
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR normalizes app names into a canonical context key, updates the logging plugin to set that context, preserves typed MCPAuthRequired errors through plugin pipeline paths, moves tool preparation inside the plugin pipeline callback, adds VK credential detection with optional auth bypass, inserts MCP tool execution logs, and adds tests for pre-hook short-circuiting plus a UI layout tweak. ChangesMCP app context and execution flow
Auth middleware updates
UI layout refinement
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ❌ 5❌ Failed checks (4 warnings, 1 inconclusive)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
|
31e8395 to
4d35169
Compare
2d856db to
f5ae62d
Compare
4d35169 to
8e156c7
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@docs/edge/supported-applications.mdx`:
- Around line 52-76: The docs include a "Databricks" Card that is not
implemented in code (no core/providers/databricks, no Databricks entry in the
ModelProvider enum in core/schemas/bifrost.go), so either remove the Card and
update the wording that claims "every provider Bifrost supports" or implement
Databricks support; to fix, choose one: (A) remove the Card with title
"Databricks" from docs/edge/supported-applications.mdx and change the
accompanying copy to avoid claiming all providers are supported, or (B)
implement the provider by adding a databricks provider implementation under
core/providers (matching other providers), add a Databricks variant to the
ModelProvider enum in core/schemas/bifrost.go, and wire any necessary
transport/schemas so rg tests find no missing references; ensure tests/build
pass after the change.
In `@plugins/logging/operations_test.go`:
- Around line 99-128: The new tests call Init(...) which starts background
workers but never stop them; after successfully creating plugin in
TestPreLLMHookSetsAppContextFromDetectedApp (and the other affected tests at
lines ~136-168 and ~193-229), ensure you call plugin.Cleanup() to avoid leaking
goroutines—i.e., after checking err != nil from Init, add a defer
plugin.Cleanup() (or explicit cleanup at test end) so background workers started
by Init are properly stopped; reference the Init(...) call and the plugin
variable in each test and add the cleanup immediately after Init succeeds.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 00fcb12b-d9d8-4526-93f4-1c0bdd584439
⛔ Files ignored due to path filters (2)
docs/media/edge/edge-app-policy.pngis excluded by!**/*.pngplugins/modelcatalogresolver/go.sumis excluded by!**/*.sum
📒 Files selected for processing (15)
core/internal/mcptests/plugin_test.gocore/mcp/exec.gocore/mcp/pluginpipeline.gocore/schemas/bifrost.gocore/schemas/useragents.gocore/schemas/useragents_test.godocs/edge/admin-approvals.mdxdocs/edge/admin-configurations.mdxdocs/edge/admin-devices.mdxdocs/edge/deployment-mdm.mdxdocs/edge/supported-applications.mdxplugins/logging/main.goplugins/logging/operations_test.goplugins/modelcatalogresolver/go.modui/app/workspace/edge-control/inventory/page.tsx
f5ae62d to
f768a43
Compare
8e156c7 to
16f313e
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
core/mcp/exec.go (1)
84-110:⚠️ Potential issue | 🟠 Major | ⚡ Quick winRecompute MCP attribution after pre-hook rerouting.
Moving
prepareToolExecutioninto the callback meansPreMCPHookcan now rewrite the tool target before resolution, butRunWithPluginPipelinestill snapshotsclientName/toolNamebefore this closure runs. If a hook changes the tool name without also keepingpreReq.ClientNamein sync, the call executes against one MCP client while the response/post-hook metadata are attributed to another.Please recompute the attributed client/tool after
op(preReq)returns, or have the callback surface the resolved client name back to the pipeline. As per coding guidelines, MCP pre-hooks may mutate requests, so post-hook consumers need metadata that matches the resolved target.🤖 Prompt for 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. In `@core/mcp/exec.go` around lines 84 - 110, The pipeline currently snapshots client/tool attribution before the callback, but because PreMCPHook may mutate preReq (and you now call prepareToolExecution inside the callback), you must recompute or return the resolved client/tool after execution so post-hook attribution matches the actual resolved target; modify the callback used in RunWithPluginPipeline (the closure that calls prepareToolExecution and m.toolsManager.ExecuteTool) to either (a) return the resolved client and tool name alongside the MCP response or (b set fields on the response/metadata with the resolved values from prepareToolExecution (e.g., state.ExecutionConfig/client name or mapping) before returning so RunWithPluginPipeline can use those values for post-hook attribution, ensuring PreMCPHook mutations are reflected in post-hook metadata.Source: Coding guidelines
🤖 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 `@transports/bifrost-http/handlers/mcpserver.go`:
- Around line 334-335: The Info-level log in the MCP tool handler is leaking
user-supplied request.GetArguments(); remove the raw arguments from the default
Info log and only log stable metadata such as toolName (e.g., change
logger.Info("[mcp-server] tool handler start tool=%q", toolName)). If you need
to inspect arguments, log them at Debug level or behind an explicit
redaction/consent flag and ensure any debug path redacts secrets before logging;
avoid printing request.GetArguments() at Info level in the handler that calls
request.GetArguments().
---
Outside diff comments:
In `@core/mcp/exec.go`:
- Around line 84-110: The pipeline currently snapshots client/tool attribution
before the callback, but because PreMCPHook may mutate preReq (and you now call
prepareToolExecution inside the callback), you must recompute or return the
resolved client/tool after execution so post-hook attribution matches the actual
resolved target; modify the callback used in RunWithPluginPipeline (the closure
that calls prepareToolExecution and m.toolsManager.ExecuteTool) to either (a)
return the resolved client and tool name alongside the MCP response or (b set
fields on the response/metadata with the resolved values from
prepareToolExecution (e.g., state.ExecutionConfig/client name or mapping) before
returning so RunWithPluginPipeline can use those values for post-hook
attribution, ensuring PreMCPHook mutations are reflected in post-hook metadata.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: b1cedee7-cf56-4f91-89b5-cfe38e2df3da
📒 Files selected for processing (11)
core/internal/mcptests/plugin_test.gocore/mcp/exec.gocore/mcp/pluginpipeline.gocore/schemas/bifrost.gocore/schemas/useragents.gocore/schemas/useragents_test.goplugins/logging/main.goplugins/logging/operations_test.gotransports/bifrost-http/handlers/mcpserver.gotransports/bifrost-http/lib/config.goui/app/workspace/edge-control/inventory/page.tsx
💤 Files with no reviewable changes (1)
- transports/bifrost-http/lib/config.go
16f313e to
d324fe8
Compare
f768a43 to
bda3243
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
plugins/logging/operations_test.go (1)
99-128:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd plugin cleanup in the new
PreLLMHookapp-context tests (duplicate)
Init(...)starts background workers; these three new tests close the store but never callplugin.Cleanup(). This can leak goroutines and create cross-test flakiness.Add cleanup after Init succeeds:
t.Cleanup(func() { if cleanupErr := plugin.Cleanup(); cleanupErr != nil { t.Errorf("Cleanup() error = %v", cleanupErr) } })This issue was already flagged in a previous review.
Also applies to: 136-168, 193-229
🤖 Prompt for 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. In `@plugins/logging/operations_test.go` around lines 99 - 128, The tests that call Init (e.g., TestPreLLMHookSetsAppContextFromDetectedApp) start background workers but do not call plugin.Cleanup(), causing goroutine leaks and flakiness; after a successful Init in each affected test add a t.Cleanup that calls plugin.Cleanup() and reports any error (e.g., if cleanupErr := plugin.Cleanup(); cleanupErr != nil { t.Errorf("Cleanup() error = %v", cleanupErr) }) so the plugin is always torn down when the test finishes.
🤖 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 `@core/internal/mcptests/plugin_test.go`:
- Around line 732-743: Replace the ad-hoc test initialization that calls
setupMCPManager and core.Init with the declarative mcptests harness: use
DynamicLLMMocker and the SetupAgentTest helper to build the test fixture and
register the TestShortCircuitPlugin (NewTestShortCircuitPlugin) with the MCP
plugins in the declarative config instead of passing schemas.BifrostConfig to
core.Init; ensure the test uses the shared manager provided by the harness
rather than calling SetMCPManager directly, and categorize the test using the
harness pattern for MCP cases (agent/tool/connection/codemode) per existing
mcptests conventions.
---
Duplicate comments:
In `@plugins/logging/operations_test.go`:
- Around line 99-128: The tests that call Init (e.g.,
TestPreLLMHookSetsAppContextFromDetectedApp) start background workers but do not
call plugin.Cleanup(), causing goroutine leaks and flakiness; after a successful
Init in each affected test add a t.Cleanup that calls plugin.Cleanup() and
reports any error (e.g., if cleanupErr := plugin.Cleanup(); cleanupErr != nil {
t.Errorf("Cleanup() error = %v", cleanupErr) }) so the plugin is always torn
down when the test finishes.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 9ec74cc0-52dc-47d8-9772-8bf18dc9c514
📒 Files selected for processing (11)
core/internal/mcptests/plugin_test.gocore/mcp/exec.gocore/mcp/pluginpipeline.gocore/schemas/bifrost.gocore/schemas/useragents.gocore/schemas/useragents_test.goplugins/logging/main.goplugins/logging/operations_test.gotransports/bifrost-http/handlers/mcpserver.gotransports/bifrost-http/lib/config.goui/app/workspace/edge-control/inventory/page.tsx
💤 Files with no reviewable changes (1)
- transports/bifrost-http/lib/config.go
bda3243 to
656034e
Compare
d324fe8 to
19abc8a
Compare
656034e to
f319645
Compare
9556524 to
2ef33fc
Compare
f319645 to
4d079c0
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@core/schemas/useragents.go`:
- Around line 149-151: The regex branch for UserAgentMappingMatchTypeRegex
currently compiles the pattern case-sensitively; modify the regex compilation in
that branch to be case-insensitive by prepending the inline flag to the pattern
(e.g., use regexp.Compile("(?i)"+pattern) or equivalent) so that the call that
creates re and the subsequent re.MatchString(userAgent) perform a
case-insensitive match consistent with the other match types.
In `@ui/app/workspace/edge-control/inventory/page.tsx`:
- Line 1: The import of InventoryView from
"`@enterprise/components/edge-control/inventoryView`" is unresolvable in the
fallback enterprise tree; either add the missing fallback component file(s named
and cased exactly as referenced under the fallback enterprise components (create
ui/app/_fallbacks/enterprise/components/edge-control/inventoryView.[tsx|ts|jsx|js]
as appropriate) so the module exists, or change the import in page.tsx to the
correct existing module path/name (matching filename casing) that exports
InventoryView (or update the imported symbol if the export is named
differently).
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 70fabe7c-5c56-45c5-abe6-edef329eabc1
📒 Files selected for processing (11)
core/internal/mcptests/plugin_test.gocore/mcp/exec.gocore/mcp/pluginpipeline.gocore/schemas/bifrost.gocore/schemas/useragents.gocore/schemas/useragents_test.goplugins/logging/main.goplugins/logging/operations_test.gotransports/bifrost-http/handlers/mcpserver.gotransports/bifrost-http/handlers/middlewares.goui/app/workspace/edge-control/inventory/page.tsx
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 2
🤖 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 `@core/schemas/useragents.go`:
- Around line 149-151: The regex branch for UserAgentMappingMatchTypeRegex
currently compiles the pattern case-sensitively; modify the regex compilation in
that branch to be case-insensitive by prepending the inline flag to the pattern
(e.g., use regexp.Compile("(?i)"+pattern) or equivalent) so that the call that
creates re and the subsequent re.MatchString(userAgent) perform a
case-insensitive match consistent with the other match types.
In `@ui/app/workspace/edge-control/inventory/page.tsx`:
- Line 1: The import of InventoryView from
"`@enterprise/components/edge-control/inventoryView`" is unresolvable in the
fallback enterprise tree; either add the missing fallback component file(s named
and cased exactly as referenced under the fallback enterprise components (create
ui/app/_fallbacks/enterprise/components/edge-control/inventoryView.[tsx|ts|jsx|js]
as appropriate) so the module exists, or change the import in page.tsx to the
correct existing module path/name (matching filename casing) that exports
InventoryView (or update the imported symbol if the export is named
differently).
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 70fabe7c-5c56-45c5-abe6-edef329eabc1
📒 Files selected for processing (11)
core/internal/mcptests/plugin_test.gocore/mcp/exec.gocore/mcp/pluginpipeline.gocore/schemas/bifrost.gocore/schemas/useragents.gocore/schemas/useragents_test.goplugins/logging/main.goplugins/logging/operations_test.gotransports/bifrost-http/handlers/mcpserver.gotransports/bifrost-http/handlers/middlewares.goui/app/workspace/edge-control/inventory/page.tsx
🛑 Comments failed to post (2)
core/schemas/useragents.go (1)
149-151:
⚠️ Potential issue | 🟡 Minor | ⚡ Quick winMake regex matching case-insensitive to align with other match types.
Line 149–151 currently applies case-sensitive regex matching, while other match modes are case-insensitive. This creates inconsistent behavior for equivalent patterns.
Suggested fix
case UserAgentMappingMatchTypeRegex: - re, err := regexp.Compile(pattern) - return err == nil && re.MatchString(userAgent) + re, err := regexp.Compile("(?i)" + pattern) + return err == nil && re.MatchString(userAgent)📝 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.case UserAgentMappingMatchTypeRegex: re, err := regexp.Compile("(?i)" + pattern) return err == nil && re.MatchString(userAgent)🤖 Prompt for 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. In `@core/schemas/useragents.go` around lines 149 - 151, The regex branch for UserAgentMappingMatchTypeRegex currently compiles the pattern case-sensitively; modify the regex compilation in that branch to be case-insensitive by prepending the inline flag to the pattern (e.g., use regexp.Compile("(?i)"+pattern) or equivalent) so that the call that creates re and the subsequent re.MatchString(userAgent) perform a case-insensitive match consistent with the other match types.ui/app/workspace/edge-control/inventory/page.tsx (1)
1-1:
⚠️ Potential issue | 🔴 Critical🧩 Analysis chain
🏁 Script executed:
#!/bin/bash # Description: Verify enterprise component import resolution # Check if the enterprise symlink exists and the target file is present # 1. Check if `@enterprise` symlink/alias exists in tsconfig or vite config echo "=== Checking tsconfig paths ===" jq '.compilerOptions.paths["`@enterprise/`*"]' ui/tsconfig.json 2>/dev/null || echo "Not found in tsconfig" # 2. List available enterprise components echo "=== Checking for enterprise components directory ===" find ui -type d -name enterprise 2>/dev/null | head -20 # 3. Check if the specific component file exists echo "=== Checking for inventoryView component ===" find ui -name "inventoryView*" -o -name "InventoryView*" 2>/dev/null # 4. Check vite config for alias resolution echo "=== Checking vite.config.ts for `@enterprise` alias ===" grep -n "`@enterprise`" ui/vite.config.ts 2>/dev/null || echo "Not configured in vite" # 5. Verify the symlink in ui/app/_fallbacks/enterprise (if it exists) echo "=== Checking _fallbacks symlink ===" ls -la ui/app/_fallbacks/ 2>/dev/null | grep enterprise || echo "Symlink not found"Repository: maximhq/bifrost
Length of output: 452
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "=== ui/vite.config.ts (resolve / plugins) ===" sed -n '1,200p' ui/vite.config.ts || true echo "=== grep for tsconfigPaths / alias setup ===" rg -n "tsconfig|paths|alias|`@enterprise`" ui/vite.config.ts ui/tsconfig.json ui/**/*.ts ui/**/*.tsx || true echo "=== Search for inventoryView file/component ===" # Find any file that mentions inventoryView in its path find ui -type f | rg -i "inventoryview" || true # Search code for import specifier rg -n "`@enterprise/components/edge-control/inventoryView`" ui || true rg -n "inventoryView" ui/app ui/components ui/lib || trueRepository: maximhq/bifrost
Length of output: 1598
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "=== Find Vite config files ===" ls -ლა | rg -n "vite\.config\." || true ls -la ui | rg -n "vite\.config\." || true find ui -maxdepth 2 -type f | rg -i "vite\.config\." || true echo "=== Search for edge-control/inventoryView references ===" rg -n "edge-control/inventoryView|inventoryView" ui || true rg -n "edge-control.*inventory" ui || true echo "=== Locate any enterprise component for edge-control inventory ===" find ui/app/enterprise ui/app/_fallbacks/enterprise -type f | rg -i "inventory" || true echo "=== List directories under edge-control in enterprise roots ===" ls -la ui/app/enterprise/components/edge-control 2>/dev/null || true ls -la ui/app/_fallbacks/enterprise/components/edge-control 2>/dev/null || true find ui/app/_fallbacks/enterprise -maxdepth 4 -type f | rg -i "edge-control.*inventory" || true echo "=== Show top of ui/package.json (to see build tooling/plugins) ===" cat ui/package.json | head -n 60Repository: maximhq/bifrost
Length of output: 3038
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "=== ui/vite.config.mts (alias / tsconfig paths bits) ===" # Print a focused window around likely alias/paths/plugin config rg -n "enterprise|tsconfig|paths|alias|resolve" ui/vite.config.mts || true sed -n '1,220p' ui/vite.config.mts || true echo "=== Check for expected fallback component file(s) ===" # If tsconfig path maps `@enterprise/`* -> ./app/_fallbacks/enterprise/* # then expected path is: ui/app/_fallbacks/enterprise/components/edge-control/inventoryView.* find ui/app/_fallbacks/enterprise -type f | rg -i "edge-control|inventoryview|inventory-view|inventory" || true echo "=== List edge-control under fallbacks/components ===" ls -la ui/app/_fallbacks/enterprise 2>/dev/null || true ls -la ui/app/_fallbacks/enterprise/components 2>/dev/null || true ls -la ui/app/_fallbacks/enterprise/components/edge-control 2>/dev/null || true echo "=== Exact filename matches for inventoryView ===" find ui/app/_fallbacks/enterprise -type f -iname "inventoryview*" -o -iname "*inventoryView*" 2>/dev/null || trueRepository: maximhq/bifrost
Length of output: 5303
Fix unresolvable enterprise import for Edge inventory fallback
The import
@enterprise/components/edge-control/inventoryViewcan’t be resolved because this build resolves@enterprisetoui/app/_fallbacks/enterprise(whenui/app/enterpriseis absent), and the fallback tree contains noedge-control/inventoryViewcomponent (only the import reference exists). Either add the missing fallback component file(s) underui/app/_fallbacks/enterprise/components/edge-control/or correct the import to the actual existing component path/name (including filename casing).🧰 Tools
🪛 GitHub Actions: Snyk checks / 0_Snyk Open Source (deps).txt
[error] 1-1: UI build failed (Vite/rolldown): [UNLOADABLE_DEPENDENCY] Could not load app/_fallbacks/enterprise/components/edge-control/inventoryView. Import "
@enterprise/components/edge-control/inventoryView" failed: No such file or directory (os error 2).🪛 GitHub Actions: Snyk checks / 1_Snyk Code (SAST).txt
[error] 1-1: Vite build failed: UNLOADABLE_DEPENDENCY. Could not load app/_fallbacks/enterprise/components/edge-control/inventoryView. Import "
@enterprise/components/edge-control/inventoryView" could not be resolved. No such file or directory (os error 2).🪛 GitHub Actions: Snyk checks / Snyk Code (SAST)
[error] 1-1: vite build failed: [UNLOADABLE_DEPENDENCY] Could not load app/_fallbacks/enterprise/components/edge-control/inventoryView. Missing module '
@enterprise/components/edge-control/inventoryView'. (os error 2: No such file or directory)
[error] 1-1: UI build step failed: 'vite build' reported 'Build failed with 3 errors' and exited non-zero, causing make build LOCAL=1 (Makefile:306: build-ui) to fail (exit code 1/2).
🪛 GitHub Actions: Snyk checks / Snyk Open Source (deps)
[error] 1-1: Vite build failed (UNLOADABLE_DEPENDENCY): Could not load app/_fallbacks/enterprise/components/edge-control/inventoryView. No such file or directory (os error 2). Import: "
@enterprise/components/edge-control/inventoryView".🤖 Prompt for 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. In `@ui/app/workspace/edge-control/inventory/page.tsx` at line 1, The import of InventoryView from "`@enterprise/components/edge-control/inventoryView`" is unresolvable in the fallback enterprise tree; either add the missing fallback component file(s named and cased exactly as referenced under the fallback enterprise components (create ui/app/_fallbacks/enterprise/components/edge-control/inventoryView.[tsx|ts|jsx|js] as appropriate) so the module exists, or change the import in page.tsx to the correct existing module path/name (matching filename casing) that exports InventoryView (or update the imported symbol if the export is named differently).
c04197b to
f1a54bc
Compare
4d411a7 to
f74a943
Compare
f1a54bc to
6e196ef
Compare
f74a943 to
0c9a5f0
Compare
6e196ef to
48ec58a
Compare
0c9a5f0 to
5a5dcb3
Compare
48ec58a to
8c0eb89
Compare
5a5dcb3 to
037c637
Compare
8c0eb89 to
a039045
Compare
037c637 to
54162ef
Compare
a039045 to
754a759
Compare
54162ef to
c42aa9b
Compare
754a759 to
474514a
Compare
c42aa9b to
0f8dad9
Compare
0f8dad9 to
96edbe3
Compare
474514a to
100efa1
Compare
Merge activity
|

Summary
Briefly explain the purpose of this PR and the problem it solves.
Changes
Type of change
Affected areas
How to test
Describe the steps to validate this change. Include commands and expected outcomes.
If adding new configs or environment variables, document them here.
Screenshots/Recordings
If UI changes, add before/after screenshots or short clips.
Breaking changes
If yes, describe impact and migration instructions.
Related issues
Link related issues and discussions. Example: Closes #123
Security considerations
Note any security implications (auth, secrets, PII, sandboxing, etc.).
Checklist
docs/contributing/README.mdand followed the guidelinesSummary by CodeRabbit
Bug Fixes
New Features
Tests
Style