Skip to content

refactor: retrieve edge entity info via get relationship by id BED-8743#2972

Open
urangel wants to merge 11 commits into
mainfrom
BED-8743
Open

refactor: retrieve edge entity info via get relationship by id BED-8743#2972
urangel wants to merge 11 commits into
mainfrom
BED-8743

Conversation

@urangel

@urangel urangel commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Description

The main changes involved in this pull request are:

  • API now exposes relationship id in graph responses
  • UI now calls for realtionship entity information using the new GET /api/v2/relationships/{relationship_id} endpoint

Aside from that there are various refactors in the UI to adapt to the new response shapes for passing, using, and displaying data in various components.

Motivation and Context

Resolves BED-8743

In order to support opengraph entity panels for relationships we need to start using the new get relationship by id endpoint to pull kind info data for a given edge since it will contain content to populate the collapsible sections.

How Has This Been Tested?

Unit tests have been updated to expect the new response shape as well as to call the new endpoint in the test server.

Screenshots (optional):

Types of changes

  • Chore (a change that does not modify the application functionality)

Checklist:

Summary by CodeRabbit

  • New Features
    • Graph edges now include stable id values end-to-end for more reliable selection, labeling, and click/hover behavior.
    • Explore UI now drives edge and panel details from node/relationship data, improving Source/Target and relationship property display.
    • Added/strengthened “hidden” edge handling and undisclosed-information messaging.
    • Improved primary kind detection and asset-group tag evaluation for privilege-zone flows.
  • Bug Fixes
    • Fixed context-menu node targeting and asset-group add/remove behavior to use the correct node identifiers.
    • Updated explore graph edge construction and test expectations to ensure correct deduplication and metadata shaping.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: d2f316bf-825d-4907-9607-a51070df83a4

📥 Commits

Reviewing files that changed from the base of the PR and between a8ea0ec and 43e743c.

📒 Files selected for processing (53)
  • cmd/api/src/api/bloodhoundgraph/bloodhoundgraph.go
  • cmd/api/src/api/bloodhoundgraph/conversions.go
  • cmd/api/src/api/v2/cypherquery_test.go
  • cmd/api/src/model/unified_graph.go
  • cmd/ui/src/components/SigmaChart/GraphEdgeEvents.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.tsx
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.tsx
  • cmd/ui/src/views/Explore/GraphView.test.tsx
  • cmd/ui/src/views/Explore/GraphView.tsx
  • cmd/ui/src/views/Explore/utils.test.ts
  • cmd/ui/src/views/Explore/utils.ts
  • packages/javascript/bh-shared-ui/src/components/ExploreTable/ExploreTable.test.tsx
  • packages/javascript/bh-shared-ui/src/components/GraphDataCheckboxes/GraphDataCheckboxes.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/shared/ACLInheritance.tsx
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.test.tsx
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.tsx
  • packages/javascript/bh-shared-ui/src/components/index.ts
  • packages/javascript/bh-shared-ui/src/constants.ts
  • packages/javascript/bh-shared-ui/src/hooks/index.ts
  • packages/javascript/bh-shared-ui/src/hooks/useAssetGroupTags/useAssetGroupTags.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useAssetGroupTags/useTagGlyphs.ts
  • packages/javascript/bh-shared-ui/src/hooks/useExploreGraph/queries/utils.ts
  • packages/javascript/bh-shared-ui/src/hooks/useExploreSelectedItem.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useFetchEntityInfo/utils.ts
  • packages/javascript/bh-shared-ui/src/hooks/useGraphItem.tsx
  • packages/javascript/bh-shared-ui/src/hooks/usePrimaryKind.ts
  • packages/javascript/bh-shared-ui/src/hooks/useSourceKinds.ts
  • packages/javascript/bh-shared-ui/src/mocks/handlers/zoneHandlers.ts
  • packages/javascript/bh-shared-ui/src/providers/AppNameProvider.tsx
  • packages/javascript/bh-shared-ui/src/providers/index.ts
  • packages/javascript/bh-shared-ui/src/types.ts
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/AssetGroupMenuItemPrivilegeZonesEnabled.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/AssetGroupMenuItemPrivilegeZonesEnabled.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/ContextMenuPrivilegeZonesEnabled.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/ContextMenuPrivilegeZonesEnabled.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoHeader.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoPane.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ExploreSearch/CypherSearch.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/GraphItemInformationPanel.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/index.ts
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZones.tsx
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZonesCypherEditor/PrivilegeZonesCypherEditor.tsx
  • packages/javascript/js-client-library/src/client.ts
  • packages/javascript/js-client-library/src/responses.ts
  • packages/javascript/js-client-library/src/types.ts
💤 Files with no reviewable changes (1)
  • packages/javascript/bh-shared-ui/src/components/index.ts
🚧 Files skipped from review as they are similar to previous changes (44)
  • packages/javascript/bh-shared-ui/src/mocks/handlers/zoneHandlers.ts
  • cmd/api/src/api/bloodhoundgraph/conversions.go
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/shared/ACLInheritance.tsx
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.test.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useExploreGraph/queries/utils.ts
  • packages/javascript/bh-shared-ui/src/constants.ts
  • packages/javascript/bh-shared-ui/src/views/Explore/ExploreSearch/CypherSearch.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/index.ts
  • cmd/ui/src/components/SigmaChart/GraphEdgeEvents.tsx
  • packages/javascript/bh-shared-ui/src/hooks/usePrimaryKind.ts
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZonesCypherEditor/PrivilegeZonesCypherEditor.tsx
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZones.tsx
  • cmd/ui/src/views/Explore/utils.ts
  • packages/javascript/js-client-library/src/client.ts
  • packages/javascript/js-client-library/src/responses.ts
  • packages/javascript/bh-shared-ui/src/hooks/index.ts
  • packages/javascript/bh-shared-ui/src/providers/AppNameProvider.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.tsx
  • packages/javascript/bh-shared-ui/src/types.ts
  • packages/javascript/bh-shared-ui/src/components/ExploreTable/ExploreTable.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useSourceKinds.ts
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.tsx
  • cmd/ui/src/views/Explore/GraphView.test.tsx
  • cmd/api/src/api/bloodhoundgraph/bloodhoundgraph.go
  • cmd/api/src/model/unified_graph.go
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.tsx
  • packages/javascript/js-client-library/src/types.ts
  • packages/javascript/bh-shared-ui/src/hooks/useAssetGroupTags/useTagGlyphs.ts
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoPane.tsx
  • cmd/ui/src/views/Explore/utils.test.ts
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.tsx
  • cmd/api/src/api/v2/cypherquery_test.go
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoHeader.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.test.tsx
  • packages/javascript/bh-shared-ui/src/components/GraphDataCheckboxes/GraphDataCheckboxes.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/ContextMenuPrivilegeZonesEnabled.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.test.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useGraphItem.tsx
  • cmd/ui/src/views/Explore/GraphView.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.tsx

📝 Walkthrough

Walkthrough

The PR adds explicit graph-edge IDs, introduces node and relationship detail queries, updates Explore components to consume the new response shapes, and centralizes source-kind, tag-label, and application-name utilities.

Changes

Graph response contracts

Layer / File(s) Summary
Graph and client response contracts
cmd/api/src/api/bloodhoundgraph/*, cmd/api/src/model/unified_graph.go, packages/javascript/js-client-library/src/*
Graph edge payloads now include IDs, relationship conversions populate them, and source-kind response types are shared by the client.

Shared detail hooks and providers

Layer / File(s) Summary
Shared detail hooks and providers
packages/javascript/bh-shared-ui/src/hooks/*, packages/javascript/bh-shared-ui/src/providers/*, packages/javascript/bh-shared-ui/src/constants.ts
Dedicated node and relationship queries, primary-kind selection, tag-label handling, hidden selection state, and application-name context are added or centralized.

Explore integration

Layer / File(s) Summary
Explore graph and context-menu integration
cmd/ui/src/views/Explore/*, packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/*
Explore graph edges use explicit IDs, while context menus and copy actions read node response properties and use node endpoint fixtures.

Edge information rendering

Layer / File(s) Summary
Relationship information rendering
packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/*, packages/javascript/bh-shared-ui/src/views/Explore/GraphItemInformationPanel.tsx
Edge information now consumes relationship details and fetched source/target nodes, with updated hidden-state rendering and deep-link parameters.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Explore
  participant useGraphItem
  participant API
  participant InformationPanel
  Explore->>useGraphItem: resolve selected item ID
  useGraphItem->>API: fetch node or relationship details
  API-->>InformationPanel: return detail response
  InformationPanel->>API: fetch source and target node details
  API-->>InformationPanel: return node responses
Loading

Possibly related PRs

Suggested labels: bug

Suggested reviewers: catsiller, elikmiller, jvacca-specterops, maffkipp, holocraft

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and clearly describes the main change: fetching edge entity info by relationship ID.
Description check ✅ Passed The description follows the required template and includes the main sections, issue reference, testing summary, and checklist.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch BED-8743

Comment @coderabbitai help to get the list of available commands.

@urangel urangel self-assigned this Jul 9, 2026
@urangel urangel added api A pull request containing changes affecting the API code. user interface A pull request containing changes affecting the UI code. javascript Pull requests that update javascript code go Pull requests that update go code labels Jul 9, 2026
@urangel urangel force-pushed the BED-8743 branch 3 times, most recently from a2164a4 to 94153c1 Compare July 9, 2026 16:16
@urangel urangel changed the base branch from main to BED-8742 July 9, 2026 16:17
@urangel urangel force-pushed the BED-8743 branch 3 times, most recently from 6c10d2e to b0c929a Compare July 13, 2026 13:49
@urangel urangel marked this pull request as ready for review July 13, 2026 14:03
Base automatically changed from BED-8742 to main July 13, 2026 15:09
@coderabbitai coderabbitai Bot added the enhancement New feature or request label Jul 13, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
cmd/api/src/api/v2/cypherquery_test.go (1)

147-147: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Assert a non-zero relationship ID.

All fixtures leave edge IDs at their zero value, so these tests would pass even if relationship ID propagation were broken. Use a populated edge ID in at least one visible and hidden-edge case.

Also applies to: 473-473, 540-540, 623-623, 696-696

🤖 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 `@cmd/api/src/api/v2/cypherquery_test.go` at line 147, Update the edge fixtures
in the cypher query tests, including the visible cases and the hidden-edge cases
at the referenced repeated locations, to use a non-zero relationship ID. Keep
the assertions and other fixture fields unchanged so the tests verify
relationship ID propagation rather than accepting the zero value.
🤖 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
`@packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.tsx`:
- Around line 62-64: The handleCopyCypher function includes an extra closing
brace in the generated Cypher label pattern. Remove the stray `}` from the
template so copied queries use valid MATCH syntax such as MATCH (n:User).

In
`@packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.tsx`:
- Around line 36-42: Update the EdgeInfoContent rendering flow around
sourceNodeQuery and targetNodeQuery to handle either query’s error state before
rendering node details. Return the established error or fallback UI when either
fetch fails, while preserving the existing loading guard and successful
rendering path.

---

Nitpick comments:
In `@cmd/api/src/api/v2/cypherquery_test.go`:
- Line 147: Update the edge fixtures in the cypher query tests, including the
visible cases and the hidden-edge cases at the referenced repeated locations, to
use a non-zero relationship ID. Keep the assertions and other fixture fields
unchanged so the tests verify relationship ID propagation rather than accepting
the zero value.
🪄 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: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 3029b706-002a-4f86-a9fd-6f8e49b3ddcd

📥 Commits

Reviewing files that changed from the base of the PR and between 2e7b71b and a8ea0ec.

📒 Files selected for processing (53)
  • cmd/api/src/api/bloodhoundgraph/bloodhoundgraph.go
  • cmd/api/src/api/bloodhoundgraph/conversions.go
  • cmd/api/src/api/v2/cypherquery_test.go
  • cmd/api/src/model/unified_graph.go
  • cmd/ui/src/components/SigmaChart/GraphEdgeEvents.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/AssetGroupMenuItem.tsx
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.test.tsx
  • cmd/ui/src/views/Explore/ContextMenu/ContextMenu.tsx
  • cmd/ui/src/views/Explore/GraphView.test.tsx
  • cmd/ui/src/views/Explore/GraphView.tsx
  • cmd/ui/src/views/Explore/utils.test.ts
  • cmd/ui/src/views/Explore/utils.ts
  • packages/javascript/bh-shared-ui/src/components/ExploreTable/ExploreTable.test.tsx
  • packages/javascript/bh-shared-ui/src/components/GraphDataCheckboxes/GraphDataCheckboxes.tsx
  • packages/javascript/bh-shared-ui/src/components/HelpTexts/shared/ACLInheritance.tsx
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.test.tsx
  • packages/javascript/bh-shared-ui/src/components/PageWithTitle.tsx
  • packages/javascript/bh-shared-ui/src/components/index.ts
  • packages/javascript/bh-shared-ui/src/constants.ts
  • packages/javascript/bh-shared-ui/src/hooks/index.ts
  • packages/javascript/bh-shared-ui/src/hooks/useAssetGroupTags/useAssetGroupTags.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useAssetGroupTags/useTagGlyphs.ts
  • packages/javascript/bh-shared-ui/src/hooks/useExploreGraph/queries/utils.ts
  • packages/javascript/bh-shared-ui/src/hooks/useExploreSelectedItem.tsx
  • packages/javascript/bh-shared-ui/src/hooks/useFetchEntityInfo/utils.ts
  • packages/javascript/bh-shared-ui/src/hooks/useGraphItem.tsx
  • packages/javascript/bh-shared-ui/src/hooks/usePrimaryKind.ts
  • packages/javascript/bh-shared-ui/src/hooks/useSourceKinds.ts
  • packages/javascript/bh-shared-ui/src/mocks/handlers/zoneHandlers.ts
  • packages/javascript/bh-shared-ui/src/providers/AppNameProvider.tsx
  • packages/javascript/bh-shared-ui/src/providers/index.ts
  • packages/javascript/bh-shared-ui/src/types.ts
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/AssetGroupMenuItemPrivilegeZonesEnabled.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/AssetGroupMenuItemPrivilegeZonesEnabled.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/ContextMenuPrivilegeZonesEnabled.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/ContextMenuPrivilegeZonesEnabled.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoHeader.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoPane.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeObjectInformation.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/ExploreSearch/CypherSearch.test.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/GraphItemInformationPanel.tsx
  • packages/javascript/bh-shared-ui/src/views/Explore/index.ts
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZones.tsx
  • packages/javascript/bh-shared-ui/src/views/PrivilegeZones/PrivilegeZonesCypherEditor/PrivilegeZonesCypherEditor.tsx
  • packages/javascript/js-client-library/src/client.ts
  • packages/javascript/js-client-library/src/responses.ts
  • packages/javascript/js-client-library/src/types.ts
💤 Files with no reviewable changes (1)
  • packages/javascript/bh-shared-ui/src/components/index.ts

Comment thread packages/javascript/bh-shared-ui/src/views/Explore/ContextMenu/CopyMenuItem.tsx Outdated
Comment on lines +36 to +42
const { data: sourceNode, ...sourceNodeQuery } = useGetNodeById(source_node_id);
const { data: targetNode, ...targetNodeQuery } = useGetNodeById(target_node_id);

const sourcePrimaryKind = usePrimaryKind(sourceNode?.kinds ?? []);
const targetPrimaryKind = usePrimaryKind(targetNode?.kinds ?? []);

if (sourceNodeQuery.isLoading || targetNodeQuery.isLoading) return null;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

No handling for sourceNodeQuery/targetNodeQuery error state.

Only isLoading is checked before rendering; if either node fetch errors, sourceNode/targetNode stay undefined and the panel silently renders with blank names instead of an error/fallback state.

🤖 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
`@packages/javascript/bh-shared-ui/src/views/Explore/EdgeInfo/EdgeInfoContent.tsx`
around lines 36 - 42, Update the EdgeInfoContent rendering flow around
sourceNodeQuery and targetNodeQuery to handle either query’s error state before
rendering node details. Return the established error or fallback UI when either
fetch fails, while preserving the existing loading guard and successful
rendering path.

Comment thread packages/javascript/bh-shared-ui/src/hooks/usePrimaryKind.ts
@coderabbitai coderabbitai Bot added bug Something isn't working and removed enhancement New feature or request labels Jul 13, 2026

@ddlees ddlees left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm just a lowly manager but it LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api A pull request containing changes affecting the API code. bug Something isn't working go Pull requests that update go code javascript Pull requests that update javascript code user interface A pull request containing changes affecting the UI code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants