docs: ENS Resolutions page#2273
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Warning Review limit reached
More reviews will be available in 52 minutes and 13 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds an "ENS Resolution" documentation page, embeds example sets, updates example fixtures and SDK example queries, extends the GraphQL schema (UnindexedDomain, resolver fields), tweaks example description rendering, and updates sidebar/frontmatter to surface the new content. ChangesENS Resolution Documentation & Examples
Sequence Diagram(s)sequenceDiagram
participant Client
participant OmnigraphAPI as Omnigraph API
participant DomainResolver as DomainResolver
participant AddressResolver as AddressResolver
Client->>OmnigraphAPI: domain.resolve.profile(name)
activate OmnigraphAPI
OmnigraphAPI->>DomainResolver: forward resolve name -> profile
DomainResolver-->>OmnigraphAPI: avatar, addresses, socials, website
OmnigraphAPI-->>Client: structured profile (null for missing)
deactivate OmnigraphAPI
Client->>OmnigraphAPI: resolve.primaryNames(address, chain)
activate OmnigraphAPI
OmnigraphAPI->>AddressResolver: reverse resolve -> primary name (or null)
AddressResolver-->>OmnigraphAPI: primary name
OmnigraphAPI->>DomainResolver: forward resolve primary name -> profile
DomainResolver-->>OmnigraphAPI: profile data
OmnigraphAPI-->>Client: chained identity response (null-safe)
deactivate OmnigraphAPI
Estimated code review effort🎯 4 (Complex) | ⏱️ ~40 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
| { | ||
| !hideDescription && ( | ||
| <div class="sl-markdown-content"> | ||
| <p set:html={description} /> |
There was a problem hiding this comment.
to render segments of Example's description
| title: Account Events | ||
| description: Indexed events involving an address across ENS contracts. | ||
| sidebar: | ||
| order: 11 |
There was a problem hiding this comment.
looks like it's redundant since we define order in sidebar config already
| title: "Hello World", | ||
| description: | ||
| "From a wallet address: Ethereum primary name and interpreted profile, plus ENSv1 and ENSv2 ownership counts.", | ||
| "This query below loads, from a wallet address, the Ethereum primary name and interpreted profile, plus ENSv1 and ENSv2 ownership counts.", |
There was a problem hiding this comment.
for description to better fit into page content
Greptile SummaryThis PR adds a new ENS Resolution documentation page explaining forward, reverse, and identity resolution via the Omnigraph API. It also introduces two new example queries (
Confidence Score: 4/5Safe to merge after fixing one broken sidebar link caused by a missing page file. The
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[ENS Resolution Page] --> B[Forward Resolution]
A --> C[Reverse Resolution]
A --> D[Identity Resolution]
B --> B1["domain-profile\n(interpreted profile)"]
B --> B2["domain-records\n(raw protocol records)"]
B --> B3["domain-profile-and-records\n(side-by-side comparison)"]
C --> C1["account-primary-names\n(multi-chain primary names)"]
D --> D1["account-primary-name-records\n(primary name + profile in one query)"]
B1 & B2 & B3 & C1 & D1 --> E[OmnigraphStaticExampleSet]
E --> F[config.ts / examples.json / responses.json]
C1 -.->|hostSeparatePage:true but NO .mdx file| G["⚠️ Broken sidebar link\n/examples/account-primary-names"]
Reviews (4): Last reviewed commit: "rename" | Re-trigger Greptile |
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/ensnode.io/src/components/organisms/OmnigraphStaticExampleSet.astro`:
- Around line 42-44: The template in OmnigraphStaticExampleSet uses a <p
set:html={description}/> which can produce invalid HTML when description
contains block-level elements; replace the <p> wrapper with a block-level
container (e.g., a plain <div> or another suitable block element) and apply
set:html to that element so injected HTML is not nested inside a
paragraph—update the element around the description variable accordingly.
In `@docs/ensnode.io/src/data/omnigraph-examples/schema.graphql`:
- Around line 610-613: The current description for DomainResolver.effective
conflates behavior for UnindexedDomain and indexed domains; update the comment
to state that effective: Resolver is null when no active Resolver exists, and
add a clarifying clause that the "Domain is not in the Canonical Nametree"
condition specifically applies to lookup via getDomainEffectiveResolver (used
for indexed domains that may lack canonicalName), while noting UnindexedDomain
resolves resolver.effective directly from domain.effectiveResolverId and can
return the wildcard ancestor’s resolver even when resolver.assigned is null (see
UnindexedDomain, domain.effectiveResolverId, resolver.assigned, and
getDomainEffectiveResolver).
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 73d593cf-cfe5-4329-8f5a-87182963124b
📒 Files selected for processing (29)
docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.tsdocs/ensnode.io/src/components/organisms/OmnigraphStaticExampleSet.astrodocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/ens-resolution.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-events.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-migrated-names.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-primary-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-resolver-permissions.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-by-name.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-events.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-profile.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-records.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-resolver.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-subdomains-recently-registered.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-subdomains.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domains-by-address.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/eth-by-version.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/find-domains.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/namegraph.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/permissions-by-contract.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/permissions-by-user.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/registry-domains.mdxdocs/ensnode.io/src/data/omnigraph-examples/config.tsdocs/ensnode.io/src/data/omnigraph-examples/examples.jsondocs/ensnode.io/src/data/omnigraph-examples/responses.jsondocs/ensnode.io/src/data/omnigraph-examples/schema.graphqldocs/ensnode.io/src/data/omnigraph-examples/snapshot.jsonpackages/ensnode-sdk/src/omnigraph-api/example-queries.tspackages/ensskills/skills/omnigraph/SKILL.md
💤 Files with no reviewable changes (19)
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-records.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/registry-domains.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-by-name.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-resolver-permissions.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/permissions-by-user.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-profile.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-resolver.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-primary-name.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-subdomains-recently-registered.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-subdomains.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/eth-by-version.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/find-domains.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/namegraph.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-events.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domain-events.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/permissions-by-contract.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/domains-by-address.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-migrated-names.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/index.mdx
| title: "Account Domains", | ||
| description: "Load domains owned by an address via the Omnigraph `account` root field.", | ||
| description: | ||
| "This query below loads domains owned by an address via the Omnigraph `account` root field.", |
There was a problem hiding this comment.
Three descriptions still use markdown backtick syntax on lines 99, 187, and 196. Since
OmnigraphStaticExampleSet.astro now renders description via set:html, Astro bypasses markdown processing and emits the string as raw HTML. Backticks render as literal ` characters in the browser instead of <code>-styled elements. The other descriptions updated in this PR already use <code> tags — these three need the same treatment.
| "This query below loads domains owned by an address via the Omnigraph `account` root field.", | |
| "This query below loads domains owned by an address via the Omnigraph <code>account</code> root field.", |
shrugs
left a comment
There was a problem hiding this comment.
unindexed domain seems to have snuck in
|
|
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 `@packages/ensnode-sdk/src/omnigraph-api/example-queries.ts`:
- Line 518: The GraphQL operation name `AccountPrimaryName` should be renamed to
the plural form `AccountPrimaryNames` to match the example ID
`account-primary-names` and the `primaryNames` field that returns an array;
update the operation declaration (change `query AccountPrimaryName(...)` to
`query AccountPrimaryNames(...)`) and update any references or example metadata
that reference the operation name so they remain consistent with
`account-primary-names` and the `primaryNames` field.
In `@packages/ensskills/skills/omnigraph/SKILL.md`:
- Line 724: The GraphQL operation name AccountPrimaryName should be renamed to
the plural form (e.g., AccountPrimaryNames) to match the section ID
account-primary-names and the returned field primaryNames; update the operation
declaration in the SKILL.md query and any corresponding usages in
example-queries.ts to use the new operation name so names are consistent across
docs and examples.
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: fb460eb6-21a6-4b0f-b67b-c16d38d4927a
📒 Files selected for processing (8)
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/ens-resolution.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/account-primary-name.mdxdocs/ensnode.io/src/data/omnigraph-examples/config.tsdocs/ensnode.io/src/data/omnigraph-examples/examples.jsondocs/ensnode.io/src/data/omnigraph-examples/responses.jsondocs/ensnode.io/src/data/omnigraph-examples/snapshot.jsonpackages/ensnode-sdk/src/omnigraph-api/example-queries.tspackages/ensskills/skills/omnigraph/SKILL.md
| id: "account-primary-name", | ||
| id: "account-primary-names", | ||
| query: ` | ||
| query AccountPrimaryName($address: Address!) { |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win
Rename query operation to match plural semantics.
The operation name is AccountPrimaryName (singular) but the example ID is account-primary-names (plural) and the field being queried is primaryNames which returns an array. This mismatch could confuse users.
♻️ Rename to match plural convention
-query AccountPrimaryName($address: Address!) {
+query AccountPrimaryNames($address: Address!) {
account(by: { address: $address }) {📝 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.
| query AccountPrimaryName($address: Address!) { | |
| query AccountPrimaryNames($address: Address!) { | |
| account(by: { address: $address }) { |
🤖 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/ensnode-sdk/src/omnigraph-api/example-queries.ts` at line 518, The
GraphQL operation name `AccountPrimaryName` should be renamed to the plural form
`AccountPrimaryNames` to match the example ID `account-primary-names` and the
`primaryNames` field that returns an array; update the operation declaration
(change `query AccountPrimaryName(...)` to `query AccountPrimaryNames(...)`) and
update any references or example metadata that reference the operation name so
they remain consistent with `account-primary-names` and the `primaryNames`
field.
| ### account-primary-names | ||
|
|
||
| ```graphql | ||
| query AccountPrimaryName($address: Address!) { |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win
Rename query operation to match plural semantics.
The operation name is AccountPrimaryName (singular) but the section ID is account-primary-names (plural) and the field being queried is primaryNames which returns an array. This mismatch mirrors the issue in example-queries.ts and should be fixed consistently.
♻️ Rename to match plural convention
-query AccountPrimaryName($address: Address!) {
+query AccountPrimaryNames($address: Address!) {
account(by: { address: $address }) {📝 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.
| query AccountPrimaryName($address: Address!) { | |
| query AccountPrimaryNames($address: Address!) { | |
| account(by: { address: $address }) { |
🤖 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/ensskills/skills/omnigraph/SKILL.md` at line 724, The GraphQL
operation name AccountPrimaryName should be renamed to the plural form (e.g.,
AccountPrimaryNames) to match the section ID account-primary-names and the
returned field primaryNames; update the operation declaration in the SKILL.md
query and any corresponding usages in example-queries.ts to use the new
operation name so names are consistent across docs and examples.
| title: "Account Domains", | ||
| description: "Load domains owned by an address via the Omnigraph `account` root field.", | ||
| description: | ||
| "This query below loads domains owned by an address via the Omnigraph `account` root field.", |
| namespace: ENSNamespaceIds.Mainnet, | ||
| hostSeparatePage: true, | ||
| }, | ||
| { |
| { | ||
| id: "account-primary-names", | ||
| title: "Account Primary Names", | ||
| description: "This query loads the primary names for an account on Ethereum and Base.", | ||
| category: "Accounts", | ||
| namespace: ENSNamespaceIds.Mainnet, | ||
| hostSeparatePage: true, | ||
| }, |
There was a problem hiding this comment.
Missing
.mdx page for account-primary-names
account-primary-names has hostSeparatePage: true, which causes OMNIGRAPH_EXAMPLES_SIDEBAR_ITEMS to include a sidebar entry pointing to /docs/integrate/omnigraph/examples/account-primary-names. No corresponding .mdx file exists at that path (compare: account-primary-name-records.mdx was added, but account-primary-names.mdx was not). Any reader who clicks that sidebar link will get a 404. Either set hostSeparatePage: false or add the missing page file.
Lite PR
Tip: Review docs on the ENSNode PR process
Summary
Why
Testing
Notes for Reviewer (Optional)
Pre-Review Checklist (Blocking)