Skip to content

The unigraph plugin#2128

Merged
tk-o merged 11 commits into
mainfrom
refactor/1801-unigraph-plugin
May 18, 2026
Merged

The unigraph plugin#2128
tk-o merged 11 commits into
mainfrom
refactor/1801-unigraph-plugin

Conversation

@tk-o
Copy link
Copy Markdown
Member

@tk-o tk-o commented May 18, 2026

Lite PR

Tip: Review docs on the ENSNode PR process

Summary

  • Renamed ensv2 plugin to unigraph
  • AddedEnsIndexerConfig invariant: invariant_unigraphRequiresProtocolAcceleration
    • Previously, this invariant was defined, but unused during EnsIndexerConfig object validation.

Why


Testing

  • Successfully executed static code checks and integration testing suite.

Notes for Reviewer (Optional)


Pre-Review Checklist (Blocking)

  • This PR does not introduce significant changes and is low-risk to review quickly.
  • Relevant changesets are included (or are not required)

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 18, 2026

🦋 Changeset detected

Latest commit: 04b1c22

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 24 packages
Name Type
ensapi Minor
ensindexer Minor
@ensnode/ensnode-sdk Minor
ensadmin Minor
ensrainbow Minor
fallback-ensapi Minor
@namehash/ens-referrals Minor
@ensnode/ensdb-sdk Minor
@ensnode/ensrainbow-sdk Minor
@ensnode/integration-test-env Minor
@namehash/namehash-ui Minor
@docs/ensnode Minor
@docs/ensrainbow Minor
enssdk Minor
enscli Minor
enskit Minor
ensskills Minor
@ensnode/datasources Minor
@ensnode/ponder-sdk Minor
@ensnode/ponder-subgraph Minor
@ensnode/shared-configs Minor
@ensnode/ensindexer-perf-testing Minor
@ensnode/enskit-react-example Patch
@ensnode/enssdk-example Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 18, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
enskit-react-example.ensnode.io Ready Ready Preview, Comment May 18, 2026 7:36pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
admin.ensnode.io Skipped Skipped May 18, 2026 7:36pm
ensnode.io Skipped Skipped May 18, 2026 7:36pm
ensrainbow.io Skipped Skipped May 18, 2026 7:36pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

Review Change Stack

Warning

Rate limit exceeded

@tk-o has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 57 minutes and 4 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a599f3fd-1e0d-4339-9997-829759da8028

📥 Commits

Reviewing files that changed from the base of the PR and between c3aadd0 and 04b1c22.

📒 Files selected for processing (4)
  • apps/ensindexer/.env.local.example
  • apps/ensindexer/src/config/config.test.ts
  • packages/ensnode-sdk/src/ensindexer/config/types.ts
  • packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts
📝 Walkthrough

Walkthrough

This PR systematically renames the ENSv2 plugin to Unigraph across types, config validation, plugin registry, handler namespacing, API prerequisite checks, docs, changesets, and deployment/environment manifests.

Changes

ENSv2 Plugin Renamed to Unigraph

Layer / File(s) Summary
Core Type & Config Definition
packages/ensnode-sdk/src/ensindexer/config/types.ts, apps/ensindexer/src/config/validations.ts, apps/ensindexer/src/config/config.schema.ts
PluginName enum gains Unigraph = "unigraph" member; validation invariant renamed to invariant_unigraphRequiresProtocolAcceleration and updated to enforce Unigraph→ProtocolAcceleration dependency.
Plugin Registry & Handler Wiring
apps/ensindexer/src/plugins/index.ts, apps/ensindexer/src/plugins/unigraph/plugin.ts, apps/ensindexer/ponder/src/register-handlers.ts
Plugin registry replaces ensv2Plugin with unigraphPlugin in ALL_PLUGINS; handler attachments rewired so Unigraph handlers attach when PluginName.Unigraph is enabled; exported plugin name updated.
Event Handler Namespace Updates
apps/ensindexer/src/plugins/unigraph/handlers/ensv1/*, apps/ensindexer/src/plugins/unigraph/handlers/ensv2/*, apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts
Handler files update pluginName constant from PluginName.ENSv2 to PluginName.Unigraph, affecting event-listener namespaces for BaseRegistrar, ENSv1Registry, NameWrapper, RegistrarController, ENSv2Registry, ETHRegistrar, EnhancedAccessControl, and Resolver.
API Integration & Prerequisites
packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts, apps/ensapi/src/omnigraph-api/lib/get-domain-by-interpreted-name.ts, apps/ensapi/src/lib/resolution/forward-resolution.ts, apps/ensapi/src/middleware/can-accelerate.middleware.ts
Omnigraph prerequisites now check for Unigraph; JSDoc/comments in resolution and middleware reference Unigraph and Protocol Acceleration.
Ponder Config & Supporting Comments
apps/ensindexer/ponder/ponder.config.ts, apps/ensindexer/src/lib/indexing-engines/ponder.ts, apps/ensindexer/src/plugins/protocol-acceleration/handlers/node-migration.ts, packages/ponder-sdk/src/ponder-app-logger.ts
Ponder config warning detects Subgraph + Unigraph; indexing engine and protocol-acceleration comments updated; logger example adjusted.
Documentation & Schema Comments
.changeset/forward-resolution-ensv2-datasource.md, .changeset/quiet-streets-double.md, docs/ensnode.io/src/content/docs/docs/services/ensdb/concepts/database-schemas.mdx, packages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.ts, packages/ensdb-sdk/src/ensindexer-abstract/migrated-nodes.schema.ts
Changeset entries, docs, and SDK schema comments updated to attribute effective-owner materialization and Protocol Acceleration dependency to Unigraph.
Environment & Deployment Configuration
docker/envs/.env.docker.devnet, terraform/main.tf, docs/ensnode.io/src/content/docs/docs/integrate/hosted-instances.mdx, packages/integration-test-env/src/orchestrator.ts
Docker devnet, Terraform, hosted-instances docs, and integration-test orchestrator updated to enable/use unigraph (plus protocol-acceleration) instead of ensv2.

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Possibly related:
    • namehash/ensnode#1766: related changes to the invariant validation around ProtocolAcceleration requirements.

"A rabbit's note on the plugin rename—
From ENSv2 to Unigraph, the codebase takes its flight,
Through handlers and configs, the namespace shifts right,
Event listeners follow, all tuned to the new name,
One cohesive change, a systematic refrain! 🐇✨"

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive The PR successfully renames ensv2 to unigraph throughout the codebase, updates documentation and configurations accordingly, and enforces the previously-unused invariant. However, the linked issue #1801 mentions 'omnigraph' and 'namegraph' as alternative names being discussed; the PR implements 'unigraph' instead, which deviates from the issue's stated naming direction. Verify that 'unigraph' is the final agreed-upon plugin name. If issue #1801 specified 'omnigraph' or another name, confirm whether this PR's use of 'unigraph' was authorized or if the issue objectives changed.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'The unigraph plugin' is concise and clearly refers to the main change—renaming the ensv2 plugin to unigraph—which aligns with the PR's primary objective.
Description check ✅ Passed The PR description follows the template structure with Summary, Why, Testing, Notes, and Pre-Review Checklist sections. All required information is present and complete.
Out of Scope Changes check ✅ Passed All code changes are directly related to the plugin rename (ensv2 to unigraph) and associated documentation updates. No unrelated modifications or scope creep detected.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/1801-unigraph-plugin

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Renames the ENSIndexer ensv2 plugin to unigraph across the monorepo (SDK enum/constants, indexer plugin wiring, infra configs, and docs), aligning configuration and messaging with the new plugin name.

Changes:

  • Renamed PluginName.ENSv2PluginName.Unigraph and updated Omnigraph API prerequisite checks accordingly.
  • Updated ENSIndexer plugin registration, validation invariants, and handler attachment order to use unigraph.
  • Updated environment/config examples (Terraform, Docker env, docs) to reference unigraph.

Reviewed changes

Copilot reviewed 30 out of 31 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
terraform/main.tf Updates Render instance plugin lists to use unigraph (and adjusts v2-sepolia plugin set).
packages/ponder-sdk/src/ponder-app-logger.ts Updates logger docs/examples to reference Unigraph.
packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts Omnigraph API prereq now checks for PluginName.Unigraph.
packages/ensnode-sdk/src/ensindexer/config/types.ts Renames the plugin enum value from ensv2 to unigraph.
packages/ensdb-sdk/src/ensindexer-abstract/migrated-nodes.schema.ts Updates schema comment to reference Unigraph plugin dependency.
packages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.ts Updates ENSv2 schema comments to reference Unigraph plugin.
docs/ensnode.io/src/content/docs/docs/services/ensdb/concepts/database-schemas.mdx Updates docs wording from ENSv2 plugin to Unigraph plugin.
docs/ensnode.io/src/content/docs/docs/integrate/hosted-instances.mdx Updates hosted instance plugin strings to unigraph.
docker/envs/.env.docker.devnet Updates default devnet PLUGINS to include unigraph.
apps/ensindexer/src/plugins/unigraph/plugin.ts Sets the plugin’s name to PluginName.Unigraph.
apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts Updates handler plugin name constant + docs wording.
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ETHRegistrar.ts Updates handler plugin name constant.
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts Updates handler plugin name constant.
apps/ensindexer/src/plugins/unigraph/handlers/ensv2/EnhancedAccessControl.ts Updates namespaced contract key to PluginName.Unigraph.
apps/ensindexer/src/plugins/unigraph/handlers/ensv1/RegistrarController.ts Updates handler plugin name constant.
apps/ensindexer/src/plugins/unigraph/handlers/ensv1/NameWrapper.ts Updates handler plugin name constant.
apps/ensindexer/src/plugins/unigraph/handlers/ensv1/ENSv1Registry.ts Updates handler plugin name constant.
apps/ensindexer/src/plugins/unigraph/handlers/ensv1/BaseRegistrar.ts Updates handler plugin name constant and internal reference comment.
apps/ensindexer/src/plugins/unigraph/event-handlers.ts New entrypoint attaching Unigraph plugin handlers.
apps/ensindexer/src/plugins/protocol-acceleration/handlers/node-migration.ts Updates ordering comment to reference unigraph.
apps/ensindexer/src/plugins/protocol-acceleration/handlers/ENSv1Registry.ts Updates ordering comment to reference unigraph.
apps/ensindexer/src/plugins/index.ts Replaces ensv2 plugin import with unigraph.
apps/ensindexer/src/lib/indexing-engines/ponder.ts Updates comment mentioning plugin activation.
apps/ensindexer/src/config/validations.ts Renames + updates invariant enforcing protocol-acceleration dependency for Unigraph.
apps/ensindexer/src/config/config.schema.ts Wires the new invariant into config parsing.
apps/ensindexer/ponder/src/register-handlers.ts Updates handler attachment to use Unigraph and preserves required ordering.
apps/ensindexer/ponder/ponder.config.ts Updates dual-plugin warning to reference unigraph.
apps/ensapi/src/omnigraph-api/lib/get-domain-by-interpreted-name.ts Updates comment about protocol-acceleration dependency wording.
apps/ensapi/src/middleware/can-accelerate.middleware.ts Updates comment to reference Unigraph plugin.
apps/ensapi/src/lib/resolution/forward-resolution.ts Updates comment to reference Unigraph plugin.
.changeset/forward-resolution-ensv2-datasource.md Updates changeset text to reference unigraph plugin.
Comments suppressed due to low confidence (1)

apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts:14

  • The updated doc comment reads as a run-on sentence ("handles most indexing behavior, these additional indexing functions"). Consider rephrasing to a complete sentence so it's clearer what this file is responsible for relative to protocol-acceleration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread terraform/main.tf
Comment thread packages/ensnode-sdk/src/ensindexer/config/types.ts
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/ensindexer/src/config/config.schema.ts (1)

60-80: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Remove stale ensv2 plugin references from PLUGINS configuration.

The PluginName enum no longer includes ensv2. Two configuration files still reference it:

  • packages/integration-test-env/src/orchestrator.ts:320 — Remove ensv2 from PLUGINS: "ensv2,protocol-acceleration"
  • packages/integration-test-env/README.md:95 — Remove ensv2 from PLUGINS=ensv2,protocol-acceleration

Valid plugin names are: subgraph, basenames, lineanames, threedns, protocol-acceleration, registrars, tokenscope, unigraph.

🤖 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 `@apps/ensindexer/src/config/config.schema.ts` around lines 60 - 80, The
PLUGINS config still references the removed plugin name "ensv2"; update all
places that set PLUGINS (strings or defaults) to remove "ensv2" so they only
include valid names per the PluginName enum (e.g., change PLUGINS:
"ensv2,protocol-acceleration" to "protocol-acceleration" and
PLUGINS=ensv2,protocol-acceleration to PLUGINS=protocol-acceleration), and
verify PluginsSchema/PluginName validations continue to accept the remaining
comma-separated values and error messages remain accurate.
🤖 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 `@docker/envs/.env.docker.devnet`:
- Line 5: The devnet env enables Unigraph via the PLUGINS variable
(PLUGINS=subgraph,unigraph) but violates the new
invariant_unigraphRequiresProtocolAcceleration; update the PLUGINS value to also
include protocol-acceleration (or otherwise enable the protocol-acceleration
plugin) so that when unigraph is present the protocol-acceleration dependency is
satisfied; ensure the change is applied to the PLUGINS entry that currently
contains "subgraph,unigraph".

---

Outside diff comments:
In `@apps/ensindexer/src/config/config.schema.ts`:
- Around line 60-80: The PLUGINS config still references the removed plugin name
"ensv2"; update all places that set PLUGINS (strings or defaults) to remove
"ensv2" so they only include valid names per the PluginName enum (e.g., change
PLUGINS: "ensv2,protocol-acceleration" to "protocol-acceleration" and
PLUGINS=ensv2,protocol-acceleration to PLUGINS=protocol-acceleration), and
verify PluginsSchema/PluginName validations continue to accept the remaining
comma-separated values and error messages remain accurate.
🪄 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: 1d88512e-6d35-4f1c-ad48-0ec3eabc5dd2

📥 Commits

Reviewing files that changed from the base of the PR and between 010cd0c and 72b047b.

📒 Files selected for processing (31)
  • .changeset/forward-resolution-ensv2-datasource.md
  • apps/ensapi/src/lib/resolution/forward-resolution.ts
  • apps/ensapi/src/middleware/can-accelerate.middleware.ts
  • apps/ensapi/src/omnigraph-api/lib/get-domain-by-interpreted-name.ts
  • apps/ensindexer/ponder/ponder.config.ts
  • apps/ensindexer/ponder/src/register-handlers.ts
  • apps/ensindexer/src/config/config.schema.ts
  • apps/ensindexer/src/config/validations.ts
  • apps/ensindexer/src/lib/indexing-engines/ponder.ts
  • apps/ensindexer/src/plugins/index.ts
  • apps/ensindexer/src/plugins/protocol-acceleration/handlers/ENSv1Registry.ts
  • apps/ensindexer/src/plugins/protocol-acceleration/handlers/node-migration.ts
  • apps/ensindexer/src/plugins/unigraph/event-handlers.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv1/BaseRegistrar.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv1/ENSv1Registry.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv1/NameWrapper.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv1/RegistrarController.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ENSv2Registry.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv2/ETHRegistrar.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/ensv2/EnhancedAccessControl.ts
  • apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts
  • apps/ensindexer/src/plugins/unigraph/plugin.ts
  • docker/envs/.env.docker.devnet
  • docs/ensnode.io/src/content/docs/docs/integrate/hosted-instances.mdx
  • docs/ensnode.io/src/content/docs/docs/services/ensdb/concepts/database-schemas.mdx
  • packages/ensdb-sdk/src/ensindexer-abstract/ensv2.schema.ts
  • packages/ensdb-sdk/src/ensindexer-abstract/migrated-nodes.schema.ts
  • packages/ensnode-sdk/src/ensindexer/config/types.ts
  • packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts
  • packages/ponder-sdk/src/ponder-app-logger.ts
  • terraform/main.tf

Comment thread docker/envs/.env.docker.devnet Outdated
Copy link
Copy Markdown
Contributor

@vercel vercel Bot left a comment

Choose a reason for hiding this comment

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

Additional Suggestions:

  1. Integration test orchestrator references deprecated 'ensv2' plugin name instead of new 'unigraph' name, causing validation failure
  1. Comment references old plugin directory path 'apps/ensindexer/src/plugins/ensv2/handlers/ensv2/ENSv2Registry.ts' instead of the new renamed path

Fix on Vercel

Copy link
Copy Markdown
Member Author

@tk-o tk-o left a comment

Choose a reason for hiding this comment

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

Self-review completed

…conveys the idea of a single unified data model used for indexing both, ENSv1 and ENSv2.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 32 out of 33 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (2)

.changeset/quiet-streets-double.md:5

  • The changeset text has a small grammatical issue: "indexing both, ENSv1 and ENSv2" reads awkwardly. Consider changing to "indexing both ENSv1 and ENSv2" (no comma) for clarity.
Renamed the `ensv2` plugin to `unigraph`. It better conveys the idea of a single unified data model used for indexing both, ENSv1 and ENSv2.

apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts:13

  • The doc comment sentence reads grammatically incorrect: "the 'protocol-acceleration' plugin handles most indexing behavior, these additional indexing functions:". Consider splitting into two sentences or using a semicolon/"and" to make it clear what the Unigraph plugin adds on top of protocol-acceleration.

Comment thread packages/ensnode-sdk/src/ensindexer/config/types.ts
Comment thread .changeset/quiet-streets-double.md Outdated
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 18, 2026

Greptile Summary

This PR renames the ensv2 indexer plugin to unigraph across the monorepo, and activates a previously-defined-but-unwired config invariant (invariant_unigraphRequiresProtocolAcceleration) that enforces protocol-acceleration as a required co-plugin.

  • All renames are mechanical: directory moves (plugins/ensv2plugins/unigraph), enum member addition (PluginName.Unigraph), and downstream updates across Terraform, Docker, and docs.
  • PluginName.ENSv2 = \"ensv2\" is preserved in the SDK as @deprecated for backward compatibility; hasOmnigraphApiConfigSupport accepts either value; Zod config parsing now rejects \"ensv2\" at validation time (since the plugin is no longer registered in ALL_PLUGINS).
  • The invariant_unigraphRequiresProtocolAcceleration check is now wired into ENSIndexerConfigSchema via .check(), making it a hard runtime guard for the first time; several environment configs (docker devnet, v2-sepolia) were updated to satisfy this new constraint.

Confidence Score: 5/5

Safe to merge — the rename is fully mechanical and the newly-enforced invariant closes a pre-existing gap without altering indexing logic.

The only functional change is wiring invariant_unigraphRequiresProtocolAcceleration into the Zod schema; the invariant itself was already correct, and all deployment configs were updated to satisfy it. Backward compatibility for "ensv2" is preserved in the SDK prerequisites check. The rename across 35 files is consistent and complete.

No files require special attention. The config test file has a minor gap (no coverage for the newly-activated invariant), but this does not affect correctness.

Important Files Changed

Filename Overview
packages/ensnode-sdk/src/ensindexer/config/types.ts Adds PluginName.Unigraph = "unigraph" and marks PluginName.ENSv2 = "ensv2" as @deprecated. Both values coexist cleanly.
apps/ensindexer/src/config/config.schema.ts Wires invariant_unigraphRequiresProtocolAcceleration into the Zod schema chain via .check(). This is the primary functional change — the invariant was previously unreachable.
apps/ensindexer/src/config/validations.ts Renames invariant_ensv2RequiresProtocolAcceleration to invariant_unigraphRequiresProtocolAcceleration and updates its body to check PluginName.Unigraph. Logic is unchanged.
apps/ensindexer/src/config/config.test.ts Wraps the getPlugin() call in a try/catch to skip the deprecated ENSv2 enum value that no longer maps to a registered plugin. No test covers the newly-wired invariant.
packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts Adds backward-compat check for both PluginName.Unigraph and deprecated PluginName.ENSv2 so existing instances advertising "ensv2" in their public config continue to satisfy the prerequisite.
docker/envs/.env.docker.devnet Replaces ensv2 with unigraph and adds the now-required protocol-acceleration plugin that was previously missing from the devnet config.
terraform/main.tf Renames ensv2unigraph across all Terraform instance configs; removes subgraph from the v2-sepolia deployment (intentional — that namespace has already migrated to ENSv2).
.changeset/quiet-streets-double.md Bumps both ensindexer and @ensnode/ensnode-sdk as minor. Appropriate since ENSv2 is deprecated but not removed.
packages/integration-test-env/src/orchestrator.ts Switches from hardcoded "ensv2,protocol-acceleration" string to type-safe PluginName enum values joined at runtime.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[PLUGINS env var] --> B{Zod PluginsSchema}
    B -->|unigraph| C[PluginName.Unigraph]
    B -->|ensv2 deprecated| D[PluginName.ENSv2]
    C --> E{invariant_unigraphRequiresProtocolAcceleration}
    D --> F[getPlugin lookup in invariant_requiredDatasources]
    F -->|throws: not in ALL_PLUGINS| G[Config parse error]
    E -->|missing protocol-acceleration| H[Error: unigraph requires protocol-acceleration]
    E -->|protocol-acceleration present| I[Config valid]
    I --> J{hasOmnigraphApiConfigSupport}
    J -->|plugins includes unigraph or ensv2| K[Omnigraph API supported]
    J -->|neither present| L[Not supported]
Loading

Reviews (6): Last reviewed commit: "Apply AI PR feedback" | Re-trigger Greptile

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 33 out of 34 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts:14

  • The updated block comment has a grammar issue: “handles most indexing behavior, these additional indexing functions:” reads like a comma splice and is unclear about the relationship between the clauses.

Consider rephrasing (e.g., “handles most indexing behavior; this module adds…” or “handles most indexing behavior, but this module additionally…”).

Comment thread apps/ensindexer/src/config/config.test.ts Outdated
Comment thread packages/ensnode-sdk/src/ensindexer/config/types.ts
Comment thread packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts
Comment thread apps/ensindexer/src/config/config.test.ts
Copilot AI review requested due to automatic review settings May 18, 2026 19:34
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 18, 2026 19:34 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensnode.io May 18, 2026 19:34 Inactive
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 18, 2026 19:34 Inactive
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 18, 2026 19:36 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensnode.io May 18, 2026 19:36 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 18, 2026 19:36 Inactive
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 34 out of 35 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (2)

apps/ensindexer/src/plugins/unigraph/handlers/shared/Resolver.ts:14

  • This JSDoc sentence is grammatically incorrect: "handles most indexing behavior, these additional indexing functions" reads like a run-on and is missing a conjunction/semicolon. Please rephrase to clearly separate the clauses (e.g., "handles most indexing behavior; these handlers additionally …").
    apps/ensindexer/src/config/config.test.ts:551
  • The try/catch here will silently swallow any error from getPlugin() and make the test pass, which can hide regressions (e.g., accidentally removing a non-deprecated plugin from ALL_PLUGINS). Instead of catching everything, explicitly skip only the deprecated plugin(s) (e.g., PluginName.ENSv2) and rethrow for unexpected errors.
        const allSet = new Set(plugin.allDatasourceNames);
        for (const required of plugin.requiredDatasourceNames) {
          expect(
            allSet.has(required),

Comment thread packages/ensnode-sdk/src/omnigraph-api/prerequisites.ts
Comment on lines +145 to +149
config.plugins.includes(PluginName.Unigraph) &&
!config.plugins.includes(PluginName.ProtocolAcceleration)
) {
throw new Error(
`The '${PluginName.ENSv2}' plugin depends on the inclusion of '${PluginName.ProtocolAcceleration}' plugin.`,
`The '${PluginName.Unigraph}' plugin depends on the inclusion of '${PluginName.ProtocolAcceleration}' plugin.`,
Comment thread apps/ensindexer/src/plugins/index.ts
@tk-o tk-o merged commit 65cf37c into main May 18, 2026
20 checks passed
@tk-o tk-o deleted the refactor/1801-unigraph-plugin branch May 18, 2026 19:39
@github-actions github-actions Bot mentioned this pull request May 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Narrative Overhaul: Rename ENSv2 Plugin to Unigraph

4 participants