Skip to content

feat: generate-openapi script#1700

Open
notrab wants to merge 11 commits intomainfrom
generate-openapi-spec
Open

feat: generate-openapi script#1700
notrab wants to merge 11 commits intomainfrom
generate-openapi-spec

Conversation

@notrab
Copy link
Member

@notrab notrab commented Mar 1, 2026

Lite PR

Tip: Review docs on the ENSNode PR process

Summary

  • Add scripts/generate-ensapi-openapi.ts script that generates a static OpenAPI 3.1 JSON spec from the existing generateOpenApi31Document() function
  • Add generate:openapi script to root package.json for running the generator
  • Output is written to docs/docs.ensnode.io/ensapi-openapi.json and formatted with Biome
  • Follows {appname}-openapi.json naming convention per Set foundation for multiple OpenAPI.json files #1600, ready for future specs

Why

  • Replaces manually-uploaded Gist with a generated-from-source committed spec
  • {appname}-openapi.json naming sets foundation for multiple specs per Set foundation for multiple OpenAPI.json files #1600
  • Enables PR preview builds to reference the committed spec without depending on a running server

Testing

  • Ran pnpm generate:openapi — produces docs/docs.ensnode.io/ensapi-openapi.json with Biome formatting
  • Verified output contains all route groups and operations

Notes for Reviewer (Optional)

  • Generation script reuses generateOpenApi31Document() which has zero runtime deps (stub handlers, no config/env)
  • Static spec is identical to live /openapi.json minus the localhost server entry (posted in Slack about this)
  • Not done: CI check to verify committed spec stays in sync, openapi/ directory documentation

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). This doesn't yet warrant a changeset, only when we add to CI.

@notrab notrab requested a review from a team as a code owner March 1, 2026 10:11
Copilot AI review requested due to automatic review settings March 1, 2026 10:11
@changeset-bot
Copy link

changeset-bot bot commented Mar 1, 2026

⚠️ No Changeset found

Latest commit: 538b97c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@vercel
Copy link
Contributor

vercel bot commented Mar 1, 2026

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

3 Skipped Deployments
Project Deployment Actions Updated (UTC)
admin.ensnode.io Skipped Skipped Mar 1, 2026 1:01pm
ensnode.io Skipped Skipped Mar 1, 2026 1:01pm
ensrainbow.io Skipped Skipped Mar 1, 2026 1:01pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 1, 2026

Warning

Rate limit exceeded

@notrab has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 19 minutes and 35 seconds before requesting another review.

⌛ 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 2913a3a and 538b97c.

📒 Files selected for processing (2)
  • docs/docs.ensnode.io/README.md
  • docs/docs.ensnode.io/ensapi/preview.mdx
📝 Walkthrough

Walkthrough

This PR introduces OpenAPI generation capabilities for ENSApi by adding a new npm script, creating a TypeScript-based OpenAPI document generator, and updating documentation configuration and guides to reference the generated OpenAPI specification file.

Changes

Cohort / File(s) Summary
Documentation Configuration
docs/docs.ensnode.io/docs.json
Updated OpenAPI reference URL from gist to https://api.alpha.ensnode.io/openapi.json; added new hidden Preview group with ensapi-openapi.json reference.
Build & Scripts
package.json, scripts/generate-ensapi-openapi.ts
Added generate:openapi npm script that executes TypeScript-based OpenAPI 3.1 generation; new script generates static OpenAPI JSON, writes to docs directory, and formats output using Biome with error handling.
Documentation Guide
docs/docs.ensnode.io/README.md
Simplified Local Development section with bullet-point format; added direct browser URL link; added ENSNode Starlight docs link to Resources section.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 A script hops in with API in hand,
Generating specs across the documented land,
OpenAPI blooms in JSON so neat,
Docs dance with metadata, the ensemble complete! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly and concisely identifies the main change—adding the generate-openapi script. It directly reflects the primary feature introduced in this pull request.
Description check ✅ Passed Description follows the Lite PR template comprehensively: includes a clear Summary, Why section linking to issue #1600, Testing section with reproduction steps, and Notes for Reviewer acknowledging outstanding work. Pre-Review Checklist is fully completed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch generate-openapi-spec

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.

"lint:ci": "biome ci",
"typecheck": "tsgo --noEmit"
"typecheck": "tsgo --noEmit",
"generate:openapi": "tsx scripts/generate-openapi.ts"
Copy link
Member Author

Choose a reason for hiding this comment

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

This is auto-discovered, so any other packages can add a script for controlling their OpenAPI spece generation (so that logic stays relative to the folder), but the root script discovers this and outputs the files to the root openapi folder.

package.json Outdated
"docker:build:ensadmin": "docker build -f apps/ensadmin/Dockerfile -t ghcr.io/namehash/ensnode/ensadmin:latest .",
"docker:build:ensrainbow": "docker build -f apps/ensrainbow/Dockerfile -t ghcr.io/namehash/ensnode/ensrainbow:latest .",
"docker:build:ensapi": "docker build -f apps/ensapi/Dockerfile -t ghcr.io/namehash/ensnode/ensapi:latest .",
"generate:openapi": "pnpm -r generate:openapi",
Copy link
Member Author

Choose a reason for hiding this comment

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

Commented above why this is important for enabling multiple OpenAPI spec files/generation across projects to be autodiscovered.

@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 10:14 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 10:14 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 10:14 Inactive
Copy link
Member Author

Choose a reason for hiding this comment

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

Mintlify has no scope to go to the monorepo directory, so we need to symlink tpo it.

Copy link
Member Author

Choose a reason for hiding this comment

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

Looks like Mintlify still can't follow the symlink. Will try another method.

Copy link
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

Adds a generated-from-source, committed OpenAPI 3.1 spec for ENSApi and wires it into docs + scripts to support preview builds and future multi-spec expansion across the monorepo.

Changes:

  • Add an ENSApi script to generate a static OpenAPI 3.1 document and commit the generated spec at openapi/ensapi-openapi.json.
  • Add generate:openapi scripts at the app and monorepo root for easy regeneration.
  • Update Mintlify docs config to point the live API reference at the production OpenAPI endpoint and add a hidden preview group that references the committed spec file.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
package.json Bumps pinned pnpm version and adds a root generate:openapi script.
apps/ensapi/package.json Adds generate:openapi script for ENSApi.
apps/ensapi/scripts/generate-openapi.ts New generator script that writes the spec and formats it.
openapi/ensapi-openapi.json Newly committed generated OpenAPI 3.1 spec.
docs/docs.ensnode.io/docs.json Points API Reference to live OpenAPI endpoint and adds hidden preview spec reference.

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

Comment on lines 2586 to 2599
"schema": {
"type": "string",
"default": false
},
"required": false,
"name": "trace",
"in": "query"
},
{
"schema": {
"type": "string",
"default": false
},
"required": false,
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

This parameter schema declares type: "string" but sets default: false (a boolean). That makes the generated OpenAPI document inconsistent/invalid for schema-aware tooling and client generation. Either emit a string default (e.g. "false"), omit the default, or model the parameter as a boolean in the OpenAPI output.

Copilot uses AI. Check for mistakes.
Comment on lines 2394 to 2399
"schema": {
"type": "string",
"default": false,
"description": "Filter to only include actions with referrals"
},
"required": false,
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

This query parameter schema has type: "string" but default: false (boolean). This type/default mismatch can break OpenAPI validators and generated clients. Consider emitting a string default ("false"), removing the default, or changing the schema to boolean in the generated spec.

Copilot uses AI. Check for mistakes.
Copy link
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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@apps/ensapi/scripts/generate-openapi.ts`:
- Around line 19-20: The path for outputPath is brittle because it uses
hardcoded "../../.." traversal from __dirname; replace that with a robust root
discovery (e.g., implement a findMonorepoRoot function that walks parent
directories from dirname(fileURLToPath(import.meta.url)) or uses an env var like
MONOREPO_ROOT) and then build outputPath by resolve(monorepoRoot, "openapi",
"ensapi-openapi.json"); update references to __dirname/outputPath to use
fileURLToPath, dirname, and the new findMonorepoRoot (or env fallback) so the
script no longer depends on the file's exact relative depth.

In `@docs/docs.ensnode.io/docs.json`:
- Around line 30-31: The "Preview" group in docs.json references a non-existent
page "ensapi/preview" in its "pages" array; either remove "ensapi/preview" from
the "pages" array in the Preview group configuration or create a matching docs
file (e.g., add ensapi/preview.mdx) with the expected frontmatter and content so
the reference resolves; locate the "group": "Preview" entry and update its
"pages" array or add the new "ensapi/preview.mdx" file accordingly.

ℹ️ Review info

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3d7fb07 and 98b752d.

📒 Files selected for processing (5)
  • apps/ensapi/package.json
  • apps/ensapi/scripts/generate-openapi.ts
  • docs/docs.ensnode.io/docs.json
  • openapi/ensapi-openapi.json
  • package.json

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 1, 2026

Greptile Summary

Adds a script to generate OpenAPI spec from source, replacing the manual Gist workflow. The script implementation is solid with proper error handling and formatting.

  • Introduces scripts/generate-ensapi-openapi.ts that reuses existing generateOpenApi31Document() function
  • Adds generate:openapi command to root package.json with correct tsconfig reference
  • Updates docs.json to use live API URL and adds hidden preview section
  • Creates new preview page at ensapi/preview.mdx for branch-specific API documentation
  • Critical: The generated ensapi-openapi.json file is referenced but not committed - this will break the documentation build
  • README.md changes (simplifying local dev instructions) appear unrelated to the OpenAPI feature

Confidence Score: 0/5

  • This PR cannot be merged - documentation build will fail due to missing file
  • The docs.json references ensapi-openapi.json which is not included in the PR, causing a guaranteed build failure
  • docs/docs.ensnode.io/docs.json references a non-existent file that must be committed

Important Files Changed

Filename Overview
scripts/generate-ensapi-openapi.ts Well-structured script that generates OpenAPI spec with proper error handling and Biome formatting
package.json Correctly adds generate:openapi script with appropriate tsconfig reference
docs/docs.ensnode.io/docs.json References missing ensapi-openapi.json file - will break docs build; also updates API Reference to use live URL

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[pnpm generate:openapi] -->|executes| B[scripts/generate-ensapi-openapi.ts]
    B -->|imports| C[generateOpenApi31Document from @/openapi-document]
    C -->|generates| D[OpenAPI 3.1 JSON document]
    D -->|writes to| E[docs/docs.ensnode.io/ensapi-openapi.json]
    E -->|formats with| F[Biome formatter]
    F -->|committed file| G[Git repository]
    G -->|referenced by| H[docs.json Preview section]
    H -->|renders in| I[Mintlify docs site]
    
    J[docs.json API Reference] -->|points to| K[https://api.alpha.ensnode.io/openapi.json]
    
    style E fill:#ff6b6b
    style G fill:#ff6b6b
    style H fill:#ffe66d
Loading

Last reviewed commit: 538b97c

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

5 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Copilot AI review requested due to automatic review settings March 1, 2026 12:22
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 12:22 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 12:22 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 12:22 Inactive
Copy link
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 5 out of 6 changed files in this pull request and generated 4 comments.


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

},
{
"group": "Preview",
"pages": ["ensapi/preview"],
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

docs.json adds a Preview group that references "pages": ["ensapi/preview"], but there is no corresponding docs/docs.ensnode.io/ensapi/preview.mdx in the repo. Mintlify builds typically fail or show a 404 when navigation references a non-existent page. Either add the missing page file or remove the pages entry if the OpenAPI group is intended to stand alone.

Suggested change
"pages": ["ensapi/preview"],

Copilot uses AI. Check for mistakes.
Copy link
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 Suggestion:

The trace and accelerate Zod schemas use boolstring (which accepts string input) but set .default(false) with a boolean value, causing OpenAPI schema type/default mismatch

Fix on Vercel

Copy link
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 7 out of 8 changed files in this pull request and generated 4 comments.


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

Comment on lines +46 to +54
console.error("Error: Failed to format with Biome.");
if (error instanceof Error) {
const err = error as NodeJS.ErrnoException & { status?: number };
if (err.code === "ENOENT") {
console.error("'pnpm' or 'biome' is not available on your PATH.");
} else if (err.status !== undefined) {
console.error(`Biome exited with code ${err.status}.`);
console.error("Try running 'pnpm biome format --write' manually to debug.");
} else if (err.message) {
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

The Biome failure guidance is slightly misleading: the script runs pnpm exec biome format --write ..., but the error message suggests running pnpm biome format --write manually. Updating the message to match the actual command (and/or printing the exact command that failed) will make this easier to debug.

Copilot uses AI. Check for mistakes.
Comment on lines 26 to +33
"group": "API Reference",
"openapi": "https://gist.githubusercontent.com/notrab/94b637e77468cbddd895d7933ce88f64/raw/12cb5ed183558a9bdda5d1c7004db6c794dbd13e/green-ensnode-openapi.json"
"openapi": "https://api.alpha.ensnode.io/openapi.json"
},
{
"group": "Preview",
"pages": ["ensapi/preview"],
"openapi": "ensapi-openapi.json",
"hidden": true
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

The docs now point the public “API Reference” OpenAPI source at the live https://api.alpha.ensnode.io/openapi.json. That endpoint currently includes a Local Development server entry (http://localhost:<port>) in the served spec, which will show up in the published docs and can confuse users. Consider either (a) pointing this group at the committed static spec (which omits localhost) or (b) changing the API’s /openapi.json generation to only add the localhost server in local/dev environments.

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

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

We can't add localhost to the spec file unless we hard code the port since we don't have access (by design) to the config.port. We'll need to resolve this (by removing the local development server completely to always create a spec that can be correctly validated/diffed).

Copilot AI review requested due to automatic review settings March 1, 2026 12:55
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 12:55 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 12:55 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 12:55 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 12:56 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 12:56 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 12:56 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 12:59 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 12:59 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 12:59 Inactive
Copy link
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 5 out of 5 changed files in this pull request and generated 2 comments.


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

Comment on lines 26 to +28
"group": "API Reference",
"openapi": "https://gist.githubusercontent.com/notrab/94b637e77468cbddd895d7933ce88f64/raw/12cb5ed183558a9bdda5d1c7004db6c794dbd13e/green-ensnode-openapi.json"
"openapi": "https://api.alpha.ensnode.io/openapi.json"
},
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

docs.json now points the API reference OpenAPI spec to the live alpha endpoint (https://api.alpha.ensnode.io/openapi.json), but this PR also introduces a generator that writes a committed static spec at docs/docs.ensnode.io/ensapi-openapi.json. As-is, the generated/committed spec is not referenced anywhere, and the docs site will still depend on a running server (and will include the localhost server entry). Consider changing this openapi value to the committed file path (or, if the intent is to use the live endpoint, remove/relocate the generator and update the PR description accordingly).

Copilot uses AI. Check for mistakes.
Copy link
Member Author

Choose a reason for hiding this comment

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

My proposal is we remove the local development server object.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 1, 2026 13:01
@vercel vercel bot temporarily deployed to Preview – ensnode.io March 1, 2026 13:01 Inactive
@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io March 1, 2026 13:01 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io March 1, 2026 13:01 Inactive
@notrab
Copy link
Member Author

notrab commented Mar 1, 2026

@greptile-apps re-review

Copy link
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 5 out of 5 changed files in this pull request and generated 3 comments.


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

{
"group": "Preview",
"pages": ["ensapi/preview"],
"openapi": "ensapi-openapi.json",
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

docs.json references a local OpenAPI file (ensapi-openapi.json) for the Preview group, but that file does not exist in the repo (under docs/docs.ensnode.io/). Either commit the generated spec at that path or adjust the build process/docs.json so the file is generated/copied before Mintlify loads it; otherwise the Preview OpenAPI reference will be broken.

Suggested change
"openapi": "ensapi-openapi.json",

Copilot uses AI. Check for mistakes.
"docker:build:ensapi": "docker build -f apps/ensapi/Dockerfile -t ghcr.io/namehash/ensnode/ensapi:latest .",
"otel-desktop-viewer": "docker run -p 8000:8000 -p 4317:4317 -p 4318:4318 davetron5000/otel-desktop-viewer:alpine-3"
"otel-desktop-viewer": "docker run -p 8000:8000 -p 4317:4317 -p 4318:4318 davetron5000/otel-desktop-viewer:alpine-3",
"generate:openapi": "tsx --tsconfig apps/ensapi/tsconfig.json scripts/generate-ensapi-openapi.ts"
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

The root-level generate:openapi script invokes tsx, but tsx is not listed in the root devDependencies. With pnpm workspaces, running this script from the repo root likely won’t have the tsx binary on PATH, so pnpm generate:openapi will fail. Consider either adding tsx to the root devDependencies or running it via the ensapi workspace (e.g. pnpm --filter ensapi exec tsx ...).

Copilot uses AI. Check for mistakes.
console.error("'pnpm' or 'biome' is not available on your PATH.");
} else if (err.status !== undefined) {
console.error(`Biome exited with code ${err.status}.`);
console.error("Try running 'pnpm biome format --write' manually to debug.");
Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

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

The debug hint prints Try running 'pnpm biome format --write' ..., but there is no biome script in the root package.json, so that command will likely fail. Suggest updating the message to match the actual invocation (pnpm exec biome format --write ...) so users can reliably follow it.

Suggested change
console.error("Try running 'pnpm biome format --write' manually to debug.");
console.error("Try running 'pnpm exec biome format --write' manually to debug.");

Copilot uses AI. Check for mistakes.
{
"group": "Preview",
"pages": ["ensapi/preview"],
"openapi": "ensapi-openapi.json",
Copy link
Contributor

Choose a reason for hiding this comment

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

ensapi-openapi.json is not included in this PR - the docs build will fail because this file doesn't exist

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.

2 participants