Skip to content

feat(ci): use npm trusted publishing with OIDC#5806

Merged
killagu merged 1 commit intonextfrom
fix/release-provenance
Feb 25, 2026
Merged

feat(ci): use npm trusted publishing with OIDC#5806
killagu merged 1 commit intonextfrom
fix/release-provenance

Conversation

@killagu
Copy link
Copy Markdown
Contributor

@killagu killagu commented Feb 24, 2026

Summary

  • Switch release workflow from static npm tokens to OIDC-based trusted publishing
  • npm CLI auto-detects OIDC environment, no NODE_AUTH_TOKEN needed
  • Provenance attestation is automatically generated
  • Add --access public for automatic first-time publishing of new scoped packages

Required npm configuration

Each package needs trusted publisher configured on npmjs.com:

  • Settings → Trusted Publisher → GitHub Actions
  • Organization: eggjs, Repository: egg, Workflow: release.yml

Test plan

  • Configure trusted publisher on npmjs.com for all packages
  • Trigger Manual Release workflow with dry_run to verify
  • Trigger Manual Release workflow for full release

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Publish workflow now uses public access for dry-run and real publishes.
    • Real publishes include verbose logging and attach provenance metadata.
  • Releases
    • Many packages, plugins, and tools received patch/beta version bumps across the monorepo (metadata-only).

Copilot AI review requested due to automatic review settings February 24, 2026 10:58
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Feb 24, 2026

Deploying egg-v3 with  Cloudflare Pages  Cloudflare Pages

Latest commit: ce10c18
Status: ✅  Deploy successful!
Preview URL: https://e40db30b.egg-v3.pages.dev
Branch Preview URL: https://fix-release-provenance.egg-v3.pages.dev

View logs

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Feb 24, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds --access public to all pnpm publish invocations in the GitHub release workflow; actual publishes are prefixed with NPM_CONFIG_LOGLEVEL=verbose and include --provenance. Also bumps package versions across many packages, plugins, tegg modules, and tools (metadata-only changes).

Changes

Cohort / File(s) Summary
Release workflow
\.github/workflows/release.yml
Add --access public to every pnpm publish; prefix real publishes with NPM_CONFIG_LOGLEVEL=verbose and add --provenance for actual publish commands; retain existing error fallbacks.
Root & tooling manifests
package.json, tools/create-egg/package.json, tools/egg-bin/package.json, tools/scripts/package.json
Bumped root and tooling package versions (metadata-only).
Top-level packages
packages/core/package.json, packages/egg/package.json, packages/koa/package.json, packages/logger/package.json, packages/supertest/package.json, packages/tsconfig/package.json, packages/...
Patch/beta version increments for core packages (version field only).
Packages & plugins
packages/*/package.json, plugins/*/package.json
Widespread version bumps across packages and plugins (metadata-only).
Tegg modules & plugins
tegg/core/*/package.json, tegg/plugin/*/package.json, tegg/standalone/*/package.json
Version bumps across tegg core modules, plugins, and standalone (metadata-only).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped through YAML, adding a friendly shout,

"Make publishes public!" — I nudged the flags about.
Versions got a bump, a soft thump and cheer,
Logs now speak louder when the carrots appear.
Hop, publish, celebrate — a small rabbit cheer.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: switching to npm trusted publishing with OIDC for the CI/release workflow.
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 fix/release-provenance

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.

@socket-security
Copy link
Copy Markdown

socket-security bot commented Feb 24, 2026

@socket-security
Copy link
Copy Markdown

socket-security bot commented Feb 24, 2026

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: npm entities is 91.0% likely obfuscated

Confidence: 0.91

Location: Package overview

From: pnpm-lock.yamlnpm/cheerio@1.1.2npm/entities@4.5.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/entities@4.5.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm entities is 91.0% likely obfuscated

Confidence: 0.91

Location: Package overview

From: pnpm-lock.yamlnpm/cheerio@1.1.2npm/entities@6.0.1

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/entities@6.0.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm ioredis is 96.0% likely obfuscated

Confidence: 0.96

Location: Package overview

From: plugins/redis/package.jsonnpm/ioredis@5.8.1

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/ioredis@5.8.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm js-beautify is 100.0% likely obfuscated

Confidence: 1.00

Location: Package overview

From: pnpm-lock.yamlnpm/js-beautify@1.15.4

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/js-beautify@1.15.4. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm markdown-it is 91.0% likely obfuscated

Confidence: 0.91

Location: Package overview

From: pnpm-lock.yamlnpm/markdown-it@14.1.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/markdown-it@14.1.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@codecov
Copy link
Copy Markdown

codecov bot commented Feb 24, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.23%. Comparing base (1424058) to head (ce10c18).
⚠️ Report is 1 commits behind head on next.

Additional details and impacted files
@@           Coverage Diff           @@
##             next    #5806   +/-   ##
=======================================
  Coverage   85.23%   85.23%           
=======================================
  Files         650      650           
  Lines       12518    12518           
  Branches     1436     1436           
=======================================
  Hits        10670    10670           
  Misses       1728     1728           
  Partials      120      120           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.

Caution

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

⚠️ Outside diff range comments (1)
.github/workflows/release.yml (1)

113-135: ⚠️ Potential issue | 🔴 Critical

OIDC trusted publishing requires npm CLI ≥ 11.5.1, but Node 24 ships with npm 11.0.0 — the workflow will fail to authenticate.

The workflow relies on actions/setup-node with GitHub OIDC (id-token: write) to exchange an OIDC token for npm registry authentication. This token exchange is performed by npm CLI itself (≥ 11.5.1), not by pnpm. While pnpm does delegate publishing to the npm binary, Node 24 initially shipped with npm 11.0.0, which does not yet support OIDC trusted publishing. As a result, pnpm -r publish will invoke an npm version that cannot perform the OIDC exchange, causing authentication to fail.

Recommended fix: Add an npm upgrade step before publishing to ensure npm ≥ 11.5.1 is available:

Upgrade npm for OIDC support
+      - name: Upgrade npm for OIDC trusted publishing
+        run: npm install -g npm@latest
+
       - name: Publish packages (dry run)

Alternatively, replace pnpm -r publish with npm publish --workspaces, which makes the npm CLI invocation explicit and ensures OIDC token exchange happens correctly. The --access public additions are correct and necessary for scoped packages.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml around lines 113 - 135, The workflow uses pnpm
-r publish which relies on the system npm binary, but Node 24 ships with npm
11.0.0 and lacks OIDC trusted publishing support; update the job to ensure npm ≥
11.5.1 before publishing (after actions/setup-node with id-token: write) or
replace the pnpm invocation with an explicit npm publish --workspaces call so
the npm CLI performs the OIDC exchange; locate the publish steps referencing
"pnpm -r publish" and the job names "Publish packages (dry run)" / "Publish
packages" and either add an npm upgrade step (npm install -g npm@>=11.5.1) prior
to those runs or swap to npm publish --workspaces --access public (keeping the
prerelease tag logic).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In @.github/workflows/release.yml:
- Around line 113-135: The workflow uses pnpm -r publish which relies on the
system npm binary, but Node 24 ships with npm 11.0.0 and lacks OIDC trusted
publishing support; update the job to ensure npm ≥ 11.5.1 before publishing
(after actions/setup-node with id-token: write) or replace the pnpm invocation
with an explicit npm publish --workspaces call so the npm CLI performs the OIDC
exchange; locate the publish steps referencing "pnpm -r publish" and the job
names "Publish packages (dry run)" / "Publish packages" and either add an npm
upgrade step (npm install -g npm@>=11.5.1) prior to those runs or swap to npm
publish --workspaces --access public (keeping the prerelease tag logic).

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 121e5e4 and 9dd23c1.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

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

This PR modernizes the npm publishing workflow by migrating to OIDC-based trusted publishing, eliminating the need for static npm tokens. The workflow already has the required OIDC infrastructure (id-token: write permission and registry-url configuration), so this change simply adds the --access public flag to ensure all packages are published publicly.

Changes:

  • Add --access public flag to all pnpm publish commands (both dry-run and production)
  • Leverage existing OIDC setup for secure, token-less npm authentication
  • Enable automatic provenance attestation generation via OIDC

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Feb 25, 2026

Deploying egg with  Cloudflare Pages  Cloudflare Pages

Latest commit: ce10c18
Status: ✅  Deploy successful!
Preview URL: https://701369cc.egg-cci.pages.dev
Branch Preview URL: https://fix-release-provenance.egg-cci.pages.dev

View logs

Copilot AI review requested due to automatic review settings February 25, 2026 14:52
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.

Caution

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

⚠️ Outside diff range comments (2)
tegg/plugin/mcp-proxy/package.json (2)

16-20: ⚠️ Potential issue | 🟡 Minor

Missing license field.

All peer packages in the monorepo (dal-decorator, core-decorator, dal-runtime, etc.) declare "license": "MIT", but this file omits the field entirely. npm will default to unlicensed, which affects auditability and consumer tooling.

🛡️ Proposed fix
  "repository": {
    "type": "git",
    "url": "git+https://github.com/eggjs/egg.git",
    "directory": "tegg/plugin/mcp-proxy"
  },
+ "license": "MIT",
  "files": [
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tegg/plugin/mcp-proxy/package.json` around lines 16 - 20, The package.json is
missing a top-level "license" field; add "license": "MIT" to the package.json
(near the existing "repository" object) so the package aligns with peers like
dal-decorator/core-decorator and is correctly marked for npm and audits—ensure
the key is a top-level property named license with value "MIT".

54-65: ⚠️ Potential issue | 🟠 Major

Change cluster-client and content-type to use catalog: protocol — both are already defined in pnpm-workspace.yaml.

  • cluster-client should be "cluster-client": "catalog:" (currently ^3.7.0)
  • content-type should be "content-type": "catalog:" (currently ^1.0.5)

Additionally, the following dependencies used across the monorepo are not yet in the catalog:

  • @modelcontextprotocol/sdk, eventsource-parser, raw-body, eventsource

Either add these to the pnpm-workspace.yaml catalog and reference them with catalog:, or provide justification if they should remain as explicit versions specific to this plugin.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tegg/plugin/mcp-proxy/package.json` around lines 54 - 65, Update the
dependency entries in package.json so "cluster-client" and "content-type" use
the monorepo catalog protocol (change their versions to "catalog:"), and then
either add the other shared packages "@modelcontextprotocol/sdk",
"eventsource-parser", "raw-body", and "eventsource" to the pnpm-workspace.yaml
catalog and reference them with "catalog:" as well, or document why each of
those should remain pinned to a specific version; key symbols to change/inspect
are the "dependencies" entries for "cluster-client" and "content-type" and the
catalog section in pnpm-workspace.yaml for the other package names.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@tegg/plugin/mcp-proxy/package.json`:
- Around line 16-20: The package.json is missing a top-level "license" field;
add "license": "MIT" to the package.json (near the existing "repository" object)
so the package aligns with peers like dal-decorator/core-decorator and is
correctly marked for npm and audits—ensure the key is a top-level property named
license with value "MIT".
- Around line 54-65: Update the dependency entries in package.json so
"cluster-client" and "content-type" use the monorepo catalog protocol (change
their versions to "catalog:"), and then either add the other shared packages
"@modelcontextprotocol/sdk", "eventsource-parser", "raw-body", and "eventsource"
to the pnpm-workspace.yaml catalog and reference them with "catalog:" as well,
or document why each of those should remain pinned to a specific version; key
symbols to change/inspect are the "dependencies" entries for "cluster-client"
and "content-type" and the catalog section in pnpm-workspace.yaml for the other
package names.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b2df77 and aa3fd3a.

📒 Files selected for processing (75)
  • package.json
  • packages/cluster/package.json
  • packages/cookies/package.json
  • packages/core/package.json
  • packages/egg/package.json
  • packages/errors/package.json
  • packages/extend2/package.json
  • packages/koa-static-cache/package.json
  • packages/koa/package.json
  • packages/logger/package.json
  • packages/path-matching/package.json
  • packages/router/package.json
  • packages/supertest/package.json
  • packages/tsconfig/package.json
  • packages/utils/package.json
  • plugins/development/package.json
  • plugins/i18n/package.json
  • plugins/jsonp/package.json
  • plugins/logrotator/package.json
  • plugins/mock/package.json
  • plugins/multipart/package.json
  • plugins/onerror/package.json
  • plugins/redis/package.json
  • plugins/schedule/package.json
  • plugins/security/package.json
  • plugins/session/package.json
  • plugins/static/package.json
  • plugins/tracer/package.json
  • plugins/typebox-validate/package.json
  • plugins/view-nunjucks/package.json
  • plugins/view/package.json
  • plugins/watcher/package.json
  • tegg/core/ajv-decorator/package.json
  • tegg/core/aop-decorator/package.json
  • tegg/core/aop-runtime/package.json
  • tegg/core/background-task/package.json
  • tegg/core/common-util/package.json
  • tegg/core/controller-decorator/package.json
  • tegg/core/core-decorator/package.json
  • tegg/core/dal-decorator/package.json
  • tegg/core/dal-runtime/package.json
  • tegg/core/dynamic-inject-runtime/package.json
  • tegg/core/dynamic-inject/package.json
  • tegg/core/eventbus-decorator/package.json
  • tegg/core/eventbus-runtime/package.json
  • tegg/core/langchain-decorator/package.json
  • tegg/core/lifecycle/package.json
  • tegg/core/loader/package.json
  • tegg/core/mcp-client/package.json
  • tegg/core/metadata/package.json
  • tegg/core/orm-decorator/package.json
  • tegg/core/runtime/package.json
  • tegg/core/schedule-decorator/package.json
  • tegg/core/standalone-decorator/package.json
  • tegg/core/tegg/package.json
  • tegg/core/transaction-decorator/package.json
  • tegg/core/types/package.json
  • tegg/core/vitest/package.json
  • tegg/plugin/ajv/package.json
  • tegg/plugin/aop/package.json
  • tegg/plugin/common/package.json
  • tegg/plugin/config/package.json
  • tegg/plugin/controller/package.json
  • tegg/plugin/dal/package.json
  • tegg/plugin/eventbus/package.json
  • tegg/plugin/langchain/package.json
  • tegg/plugin/mcp-client/package.json
  • tegg/plugin/mcp-proxy/package.json
  • tegg/plugin/orm/package.json
  • tegg/plugin/schedule/package.json
  • tegg/plugin/tegg/package.json
  • tegg/standalone/standalone/package.json
  • tools/create-egg/package.json
  • tools/egg-bin/package.json
  • tools/scripts/package.json
✅ Files skipped from review due to trivial changes (38)
  • plugins/security/package.json
  • tegg/plugin/tegg/package.json
  • tegg/core/dynamic-inject-runtime/package.json
  • plugins/watcher/package.json
  • tegg/plugin/common/package.json
  • tegg/plugin/eventbus/package.json
  • plugins/static/package.json
  • packages/supertest/package.json
  • tegg/core/langchain-decorator/package.json
  • plugins/jsonp/package.json
  • tegg/core/aop-decorator/package.json
  • tegg/core/vitest/package.json
  • tools/scripts/package.json
  • tegg/core/eventbus-decorator/package.json
  • tegg/core/common-util/package.json
  • tegg/plugin/config/package.json
  • packages/utils/package.json
  • plugins/multipart/package.json
  • plugins/onerror/package.json
  • tegg/core/standalone-decorator/package.json
  • tegg/plugin/ajv/package.json
  • packages/errors/package.json
  • tegg/plugin/mcp-client/package.json
  • tegg/plugin/langchain/package.json
  • tools/create-egg/package.json
  • packages/cookies/package.json
  • tegg/plugin/orm/package.json
  • tegg/core/types/package.json
  • tegg/core/mcp-client/package.json
  • tegg/core/runtime/package.json
  • tegg/core/loader/package.json
  • package.json
  • tegg/core/background-task/package.json
  • packages/extend2/package.json
  • plugins/view/package.json
  • plugins/session/package.json
  • packages/koa-static-cache/package.json
  • plugins/typebox-validate/package.json

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

Copilot AI review requested due to automatic review settings February 25, 2026 15:16
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

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

Inline comments:
In @.github/workflows/release.yml:
- Around line 129-135: The publish commands use "pnpm -r publish ... || tail -n
100 ~/.npm/_logs/*.log" which can return success if tail succeeds, masking
failures; change each branch to run the publish and on failure print logs and
then exit non‑zero, e.g. replace "pnpm -r publish ... || tail -n 100
~/.npm/_logs/*.log" with a compound fallback that prints the logs and then exits
(for example: "pnpm -r publish ... || { tail -n 100 ~/.npm/_logs/*.log; exit 1;
}") so the workflow fails when the publish ("pnpm -r publish") fails.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aa3fd3a and ef10b7e.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

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 76 out of 76 changed files in this pull request and generated 1 comment.

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.

Caution

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

⚠️ Outside diff range comments (2)
tegg/plugin/mcp-client/package.json (1)

57-57: 🛠️ Refactor suggestion | 🟠 Major

@modelcontextprotocol/sdk should use catalog: rather than an inline version pin.

Same issue as in tegg/core/mcp-client/package.json. Once the package is added to the workspace catalog (see that file's comment), replace the pin here too.

♻️ Proposed fix
-    "@modelcontextprotocol/sdk": "^1.23.0",
+    "@modelcontextprotocol/sdk": "catalog:",

As per coding guidelines: "Use 'workspace:*' for internal package dependencies and 'catalog:' for external dependencies defined in pnpm-workspace.yaml."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tegg/plugin/mcp-client/package.json` at line 57, Replace the inline version
pin for the dependency "@modelcontextprotocol/sdk" with a catalog reference;
specifically update the dependency entry that currently reads
"@modelcontextprotocol/sdk": "<version>" to use
"catalog:`@modelcontextprotocol/sdk`" (i.e., set the version string to
catalog:`@modelcontextprotocol/sdk`) so the package is resolved from the workspace
catalog rather than a hard version pin.
tegg/core/mcp-client/package.json (1)

52-53: ⚠️ Potential issue | 🟡 Minor

Use catalog: for external dependencies @langchain/mcp-adapters and @modelcontextprotocol/sdk.

Both are pinned with inline semver ranges (^1.0.0, ^1.23.0) instead of the catalog: protocol. All external dependency versions should be centralized in pnpm-workspace.yaml and referenced as catalog: here, consistent with other dependencies in this file like urllib, @types/node, typescript, and vitest.

♻️ Proposed fix
-    "@langchain/mcp-adapters": "^1.0.0",
-    "@modelcontextprotocol/sdk": "^1.23.0",
+    "@langchain/mcp-adapters": "catalog:",
+    "@modelcontextprotocol/sdk": "catalog:",

Also add entries to pnpm-workspace.yaml catalog section:

"@langchain/mcp-adapters": "^1.0.0"
"@modelcontextprotocol/sdk": "^1.23.0"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tegg/core/mcp-client/package.json` around lines 52 - 53, Replace the inline
semver versions for the external deps in tegg/core/mcp-client/package.json by
changing "@langchain/mcp-adapters": "^1.0.0" and "@modelcontextprotocol/sdk":
"^1.23.0" to use the catalog protocol (e.g. "catalog:`@langchain/mcp-adapters`"
and "catalog:`@modelcontextprotocol/sdk`") and then add matching entries to the
pnpm-workspace.yaml catalog section mapping "@langchain/mcp-adapters" ->
"^1.0.0" and "@modelcontextprotocol/sdk" -> "^1.23.0" so versions are
centralized like the existing entries (e.g., urllib, `@types/node`, typescript,
vitest).
🧹 Nitpick comments (2)
plugins/watcher/package.json (1)

65-72: @eggjs/utils is listed in both dependencies and devDependencies.

Line 66 declares @eggjs/utils as a runtime dependency and line 72 duplicates it in devDependencies. The devDependencies entry is redundant and should be removed to avoid confusion. Pre-existing issue, not introduced by this PR.

Proposed fix
   "devDependencies": {
     "@eggjs/mock": "workspace:*",
-    "@eggjs/utils": "workspace:*",
     "egg": "workspace:*",
     "typescript": "catalog:"
   },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/watcher/package.json` around lines 65 - 72, The package.json
currently lists "@eggjs/utils" under both "dependencies" and "devDependencies";
remove the redundant entry from the "devDependencies" section so "@eggjs/utils"
remains declared only as a runtime dependency in "dependencies". Locate the
duplicate string "@eggjs/utils" in the package.json diff (the key under
"devDependencies") and delete that entry, leaving other devDependencies
untouched.
tegg/core/dynamic-inject-runtime/package.json (1)

61-63: Fix typo in eggModule.name: teggDyniamicInjectRuntimeteggDynamicInjectRuntime.

The "Dyniamic" has a typo and should be "Dynamic". This name doesn't appear to be referenced elsewhere in the codebase, but fixing it improves consistency with the actual package naming.

Proposed fix
   "eggModule": {
-    "name": "teggDyniamicInjectRuntime"
+    "name": "teggDynamicInjectRuntime"
   }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tegg/core/dynamic-inject-runtime/package.json` around lines 61 - 63, Update
the eggModule.name value in package.json to correct the typo: change
"teggDyniamicInjectRuntime" to "teggDynamicInjectRuntime" (adjust the "Dyniamic"
-> "Dynamic") so the eggModule.name matches the package's intended naming;
ensure you only modify the string value under the "eggModule" object and run a
quick search to confirm no other occurrences need updating.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@tegg/core/mcp-client/package.json`:
- Around line 52-53: Replace the inline semver versions for the external deps in
tegg/core/mcp-client/package.json by changing "@langchain/mcp-adapters":
"^1.0.0" and "@modelcontextprotocol/sdk": "^1.23.0" to use the catalog protocol
(e.g. "catalog:`@langchain/mcp-adapters`" and "catalog:`@modelcontextprotocol/sdk`")
and then add matching entries to the pnpm-workspace.yaml catalog section mapping
"@langchain/mcp-adapters" -> "^1.0.0" and "@modelcontextprotocol/sdk" ->
"^1.23.0" so versions are centralized like the existing entries (e.g., urllib,
`@types/node`, typescript, vitest).

In `@tegg/plugin/mcp-client/package.json`:
- Line 57: Replace the inline version pin for the dependency
"@modelcontextprotocol/sdk" with a catalog reference; specifically update the
dependency entry that currently reads "@modelcontextprotocol/sdk": "<version>"
to use "catalog:`@modelcontextprotocol/sdk`" (i.e., set the version string to
catalog:`@modelcontextprotocol/sdk`) so the package is resolved from the workspace
catalog rather than a hard version pin.

---

Nitpick comments:
In `@plugins/watcher/package.json`:
- Around line 65-72: The package.json currently lists "@eggjs/utils" under both
"dependencies" and "devDependencies"; remove the redundant entry from the
"devDependencies" section so "@eggjs/utils" remains declared only as a runtime
dependency in "dependencies". Locate the duplicate string "@eggjs/utils" in the
package.json diff (the key under "devDependencies") and delete that entry,
leaving other devDependencies untouched.

In `@tegg/core/dynamic-inject-runtime/package.json`:
- Around line 61-63: Update the eggModule.name value in package.json to correct
the typo: change "teggDyniamicInjectRuntime" to "teggDynamicInjectRuntime"
(adjust the "Dyniamic" -> "Dynamic") so the eggModule.name matches the package's
intended naming; ensure you only modify the string value under the "eggModule"
object and run a quick search to confirm no other occurrences need updating.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ef10b7e and c0114ec.

📒 Files selected for processing (75)
  • package.json
  • packages/cluster/package.json
  • packages/cookies/package.json
  • packages/core/package.json
  • packages/egg/package.json
  • packages/errors/package.json
  • packages/extend2/package.json
  • packages/koa-static-cache/package.json
  • packages/koa/package.json
  • packages/logger/package.json
  • packages/path-matching/package.json
  • packages/router/package.json
  • packages/supertest/package.json
  • packages/tsconfig/package.json
  • packages/utils/package.json
  • plugins/development/package.json
  • plugins/i18n/package.json
  • plugins/jsonp/package.json
  • plugins/logrotator/package.json
  • plugins/mock/package.json
  • plugins/multipart/package.json
  • plugins/onerror/package.json
  • plugins/redis/package.json
  • plugins/schedule/package.json
  • plugins/security/package.json
  • plugins/session/package.json
  • plugins/static/package.json
  • plugins/tracer/package.json
  • plugins/typebox-validate/package.json
  • plugins/view-nunjucks/package.json
  • plugins/view/package.json
  • plugins/watcher/package.json
  • tegg/core/ajv-decorator/package.json
  • tegg/core/aop-decorator/package.json
  • tegg/core/aop-runtime/package.json
  • tegg/core/background-task/package.json
  • tegg/core/common-util/package.json
  • tegg/core/controller-decorator/package.json
  • tegg/core/core-decorator/package.json
  • tegg/core/dal-decorator/package.json
  • tegg/core/dal-runtime/package.json
  • tegg/core/dynamic-inject-runtime/package.json
  • tegg/core/dynamic-inject/package.json
  • tegg/core/eventbus-decorator/package.json
  • tegg/core/eventbus-runtime/package.json
  • tegg/core/langchain-decorator/package.json
  • tegg/core/lifecycle/package.json
  • tegg/core/loader/package.json
  • tegg/core/mcp-client/package.json
  • tegg/core/metadata/package.json
  • tegg/core/orm-decorator/package.json
  • tegg/core/runtime/package.json
  • tegg/core/schedule-decorator/package.json
  • tegg/core/standalone-decorator/package.json
  • tegg/core/tegg/package.json
  • tegg/core/transaction-decorator/package.json
  • tegg/core/types/package.json
  • tegg/core/vitest/package.json
  • tegg/plugin/ajv/package.json
  • tegg/plugin/aop/package.json
  • tegg/plugin/common/package.json
  • tegg/plugin/config/package.json
  • tegg/plugin/controller/package.json
  • tegg/plugin/dal/package.json
  • tegg/plugin/eventbus/package.json
  • tegg/plugin/langchain/package.json
  • tegg/plugin/mcp-client/package.json
  • tegg/plugin/mcp-proxy/package.json
  • tegg/plugin/orm/package.json
  • tegg/plugin/schedule/package.json
  • tegg/plugin/tegg/package.json
  • tegg/standalone/standalone/package.json
  • tools/create-egg/package.json
  • tools/egg-bin/package.json
  • tools/scripts/package.json
✅ Files skipped from review due to trivial changes (5)
  • tegg/core/vitest/package.json
  • tegg/core/types/package.json
  • tegg/plugin/orm/package.json
  • tegg/core/dynamic-inject/package.json
  • tegg/core/schedule-decorator/package.json
🚧 Files skipped from review as they are similar to previous changes (45)
  • tegg/core/lifecycle/package.json
  • tegg/core/common-util/package.json
  • plugins/multipart/package.json
  • tegg/core/tegg/package.json
  • plugins/jsonp/package.json
  • packages/cookies/package.json
  • packages/path-matching/package.json
  • tools/create-egg/package.json
  • tegg/core/background-task/package.json
  • tegg/plugin/common/package.json
  • tegg/plugin/ajv/package.json
  • tegg/plugin/langchain/package.json
  • tegg/core/standalone-decorator/package.json
  • plugins/onerror/package.json
  • packages/egg/package.json
  • tegg/core/langchain-decorator/package.json
  • tegg/core/eventbus-decorator/package.json
  • tegg/core/core-decorator/package.json
  • plugins/redis/package.json
  • packages/cluster/package.json
  • tegg/standalone/standalone/package.json
  • plugins/view-nunjucks/package.json
  • tegg/core/transaction-decorator/package.json
  • tegg/core/runtime/package.json
  • tegg/core/aop-runtime/package.json
  • packages/koa-static-cache/package.json
  • packages/router/package.json
  • tegg/plugin/schedule/package.json
  • plugins/typebox-validate/package.json
  • tegg/plugin/dal/package.json
  • tegg/plugin/controller/package.json
  • tegg/core/aop-decorator/package.json
  • packages/supertest/package.json
  • packages/extend2/package.json
  • tegg/plugin/config/package.json
  • tegg/core/orm-decorator/package.json
  • plugins/i18n/package.json
  • tegg/core/controller-decorator/package.json
  • plugins/security/package.json
  • tegg/core/dal-runtime/package.json
  • plugins/tracer/package.json
  • tegg/core/metadata/package.json
  • tegg/core/loader/package.json
  • tegg/plugin/mcp-proxy/package.json
  • plugins/view/package.json

Switch from static npm tokens to OIDC-based trusted publishing.
npm CLI auto-detects OIDC environment and uses short-lived tokens,
eliminating the need for NODE_AUTH_TOKEN secret. Provenance attestation
is automatically generated. Add --access public for new scoped packages.

Requires configuring trusted publisher on npmjs.com for each package.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@killagu killagu force-pushed the fix/release-provenance branch from c0114ec to ce10c18 Compare February 25, 2026 15:45
@killagu killagu enabled auto-merge February 25, 2026 15:49
@killagu killagu added this pull request to the merge queue Feb 25, 2026
Merged via the queue into next with commit 2491bee Feb 25, 2026
50 of 51 checks passed
@killagu killagu deleted the fix/release-provenance branch February 25, 2026 16:26
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.

3 participants