Skip to content

feat(messenger): add generate-action-types CLI tool as subpath export#8264

Open
cryptodev-2s wants to merge 24 commits intomainfrom
feat/messenger-generate-action-types-package
Open

feat(messenger): add generate-action-types CLI tool as subpath export#8264
cryptodev-2s wants to merge 24 commits intomainfrom
feat/messenger-generate-action-types-package

Conversation

@cryptodev-2s
Copy link
Contributor

@cryptodev-2s cryptodev-2s commented Mar 20, 2026

Explanation

The script scripts/generate-method-action-types.ts generates TypeScript action type files for controllers/services that define MESSENGER_EXPOSED_METHODS. It was a monorepo-local script invoked via tsx ../../scripts/generate-method-action-types.ts from 44 packages.

This PR moves it into @metamask/messenger as a subpath export (@metamask/messenger/generate-action-types), keeping the library lightweight while making the codegen reusable in other repositories.

What changed:

  • Add generate-action-types/ subdirectory under packages/messenger/src/ with modular source files (parse-source.ts, generate-content.ts, check.ts, fix.ts, cli.ts)
  • Add ./generate-action-types subpath export and messenger-generate-action-types bin entry to @metamask/messenger
  • All codegen dependencies (@metamask/utils, typescript, yargs, eslint) are optional peer dependencies — only needed when using the codegen tool. The core Messenger library remains truly zero-dependency.
  • Update all 44 consuming packages to invoke the CLI via tsx ../../packages/messenger/src/generate-action-types/cli.ts
  • Delete old scripts/generate-method-action-types.ts
  • Regenerate all *-method-action-types.ts files with updated header

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Medium Risk
Medium risk because it replaces a widely-used monorepo script with a new CLI entrypoint and updates many package scripts, so any behavioral mismatch or optional peer dependency resolution issues could break codegen/CI.

Overview
Moves the generate-method-action-types codegen from scripts/generate-method-action-types.ts into @metamask/messenger as a new src/generate-action-types module with a yargs-based CLI that can --check or --fix, optionally running ESLint formatting.

Updates all consuming packages to invoke the new tool (now also published as the messenger-generate-action-types bin) and adjusts @metamask/messenger packaging/peers to keep codegen deps optional. Regenerates some *-method-action-types.ts outputs and tweaks lint/jest config to accommodate the new CLI.

Written by Cursor Bugbot for commit 646a812. This will update automatically on new commits. Configure here.

@cryptodev-2s cryptodev-2s changed the title feat: create @metamask/messenger-generate-action-types package feat(messenger): add generate-action-types CLI tool as subpath export Mar 20, 2026
@cryptodev-2s
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@5.0.1-preview-f11c28cc2
@metamask-previews/accounts-controller@37.0.0-preview-f11c28cc2
@metamask-previews/address-book-controller@7.1.0-preview-f11c28cc2
@metamask-previews/ai-controllers@0.4.0-preview-f11c28cc2
@metamask-previews/analytics-controller@1.0.0-preview-f11c28cc2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-f11c28cc2
@metamask-previews/announcement-controller@8.0.0-preview-f11c28cc2
@metamask-previews/app-metadata-controller@2.0.0-preview-f11c28cc2
@metamask-previews/approval-controller@9.0.0-preview-f11c28cc2
@metamask-previews/assets-controller@3.0.0-preview-f11c28cc2
@metamask-previews/assets-controllers@101.0.1-preview-f11c28cc2
@metamask-previews/base-controller@9.0.0-preview-f11c28cc2
@metamask-previews/base-data-service@0.0.0-preview-f11c28cc2
@metamask-previews/bridge-controller@69.1.1-preview-f11c28cc2
@metamask-previews/bridge-status-controller@70.0.0-preview-f11c28cc2
@metamask-previews/build-utils@3.0.4-preview-f11c28cc2
@metamask-previews/chain-agnostic-permission@1.4.0-preview-f11c28cc2
@metamask-previews/claims-controller@0.4.3-preview-f11c28cc2
@metamask-previews/client-controller@1.0.0-preview-f11c28cc2
@metamask-previews/compliance-controller@1.0.1-preview-f11c28cc2
@metamask-previews/composable-controller@12.0.0-preview-f11c28cc2
@metamask-previews/config-registry-controller@0.1.1-preview-f11c28cc2
@metamask-previews/connectivity-controller@0.1.0-preview-f11c28cc2
@metamask-previews/controller-utils@11.19.0-preview-f11c28cc2
@metamask-previews/core-backend@6.2.0-preview-f11c28cc2
@metamask-previews/delegation-controller@2.0.2-preview-f11c28cc2
@metamask-previews/earn-controller@11.1.2-preview-f11c28cc2
@metamask-previews/eip-5792-middleware@3.0.1-preview-f11c28cc2
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-f11c28cc2
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-f11c28cc2
@metamask-previews/ens-controller@19.1.0-preview-f11c28cc2
@metamask-previews/error-reporting-service@3.0.1-preview-f11c28cc2
@metamask-previews/eth-block-tracker@15.0.1-preview-f11c28cc2
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-f11c28cc2
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-f11c28cc2
@metamask-previews/foundryup@1.0.1-preview-f11c28cc2
@metamask-previews/gas-fee-controller@26.1.0-preview-f11c28cc2
@metamask-previews/gator-permissions-controller@2.1.1-preview-f11c28cc2
@metamask-previews/geolocation-controller@0.1.1-preview-f11c28cc2
@metamask-previews/json-rpc-engine@10.2.3-preview-f11c28cc2
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-f11c28cc2
@metamask-previews/keyring-controller@25.1.0-preview-f11c28cc2
@metamask-previews/logging-controller@8.0.0-preview-f11c28cc2
@metamask-previews/message-manager@14.1.0-preview-f11c28cc2
@metamask-previews/messenger@0.3.0-preview-f11c28cc2
@metamask-previews/multichain-account-service@7.1.0-preview-f11c28cc2
@metamask-previews/multichain-api-middleware@1.2.7-preview-f11c28cc2
@metamask-previews/multichain-network-controller@3.0.5-preview-f11c28cc2
@metamask-previews/multichain-transactions-controller@7.0.2-preview-f11c28cc2
@metamask-previews/name-controller@9.1.0-preview-f11c28cc2
@metamask-previews/network-controller@30.0.0-preview-f11c28cc2
@metamask-previews/network-enablement-controller@5.0.0-preview-f11c28cc2
@metamask-previews/notification-services-controller@23.0.0-preview-f11c28cc2
@metamask-previews/permission-controller@12.2.1-preview-f11c28cc2
@metamask-previews/permission-log-controller@5.0.0-preview-f11c28cc2
@metamask-previews/perps-controller@1.3.0-preview-f11c28cc2
@metamask-previews/phishing-controller@17.0.0-preview-f11c28cc2
@metamask-previews/polling-controller@16.0.3-preview-f11c28cc2
@metamask-previews/preferences-controller@23.0.0-preview-f11c28cc2
@metamask-previews/profile-metrics-controller@3.1.1-preview-f11c28cc2
@metamask-previews/profile-sync-controller@28.0.0-preview-f11c28cc2
@metamask-previews/ramps-controller@12.0.0-preview-f11c28cc2
@metamask-previews/rate-limit-controller@7.0.0-preview-f11c28cc2
@metamask-previews/react-data-query@0.0.0-preview-f11c28cc2
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-f11c28cc2
@metamask-previews/sample-controllers@4.0.3-preview-f11c28cc2
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-f11c28cc2
@metamask-previews/selected-network-controller@26.0.3-preview-f11c28cc2
@metamask-previews/shield-controller@5.0.2-preview-f11c28cc2
@metamask-previews/signature-controller@39.1.0-preview-f11c28cc2
@metamask-previews/storage-service@1.0.0-preview-f11c28cc2
@metamask-previews/subscription-controller@6.0.2-preview-f11c28cc2
@metamask-previews/transaction-controller@63.0.0-preview-f11c28cc2
@metamask-previews/transaction-pay-controller@18.0.0-preview-f11c28cc2
@metamask-previews/user-operation-controller@41.1.0-preview-f11c28cc2

Extract `scripts/generate-method-action-types.ts` into a publishable
CLI package so it can be reused across repositories.

- Scaffold `@metamask/messenger-generate-action-types` with bin entry
- Split script into modular source files (parse, generate, check, fix)
- Use named TypeScript imports, optional ESLint peer dependency
- Update 44 consuming packages to use the new binary
- Update package template, CODEOWNERS, teams.json, eslint config
- Add ESLint config exception for Node.js module imports
- Regenerate all action type files with updated header
- Delete old `scripts/generate-method-action-types.ts`
The binary requires a build step before it can be used. Using tsx
to run the source TypeScript directly avoids this dependency.
Move the CLI tool into @metamask/messenger as a subpath export
instead of a separate package. This keeps the library lightweight
while making the codegen available via optional peer dependencies.

- Move source files to packages/messenger/src/generate-action-types/
- Add ./generate-action-types subpath export and bin entry
- typescript, yargs, eslint are optional peerDependencies
- @metamask/utils added as dependency (needed by codegen)
- Remove standalone @metamask/messenger-generate-action-types package
- Update 44 consuming packages to point to new location
- Revert CODEOWNERS, teams.json, tsconfig, README changes
- Remove unused `MethodInfo.signature` field
- Remove redundant `ControllerInfo.exposedMethods` (derivable from methods)
- Extract shared ESLint types to `types.ts`, deduplicate across check/fix
- Combine eslint/eslintStatic params into single `ESLint | null` object
- Inline single-use `capitalize()` helper
- Remove unused `Identifier` type import and `extractMethodSignature`
@cryptodev-2s cryptodev-2s force-pushed the feat/messenger-generate-action-types-package branch from 89da66f to 0202e79 Compare March 23, 2026 18:35
@cryptodev-2s cryptodev-2s self-assigned this Mar 23, 2026
@cryptodev-2s cryptodev-2s marked this pull request as ready for review March 23, 2026 18:50
@cryptodev-2s cryptodev-2s requested review from a team as code owners March 23, 2026 18:50
@github-actions
Copy link
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@5.0.1-preview-b9ae764
@metamask-previews/accounts-controller@37.0.0-preview-b9ae764
@metamask-previews/address-book-controller@7.1.0-preview-b9ae764
@metamask-previews/ai-controllers@0.5.0-preview-b9ae764
@metamask-previews/analytics-controller@1.0.0-preview-b9ae764
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-b9ae764
@metamask-previews/announcement-controller@8.0.0-preview-b9ae764
@metamask-previews/app-metadata-controller@2.0.0-preview-b9ae764
@metamask-previews/approval-controller@9.0.0-preview-b9ae764
@metamask-previews/assets-controller@3.0.0-preview-b9ae764
@metamask-previews/assets-controllers@101.0.1-preview-b9ae764
@metamask-previews/base-controller@9.0.0-preview-b9ae764
@metamask-previews/base-data-service@0.0.0-preview-b9ae764
@metamask-previews/bridge-controller@69.2.0-preview-b9ae764
@metamask-previews/bridge-status-controller@70.0.0-preview-b9ae764
@metamask-previews/build-utils@3.0.4-preview-b9ae764
@metamask-previews/chain-agnostic-permission@1.4.0-preview-b9ae764
@metamask-previews/claims-controller@0.4.3-preview-b9ae764
@metamask-previews/client-controller@1.0.0-preview-b9ae764
@metamask-previews/compliance-controller@1.0.1-preview-b9ae764
@metamask-previews/composable-controller@12.0.0-preview-b9ae764
@metamask-previews/config-registry-controller@0.1.1-preview-b9ae764
@metamask-previews/connectivity-controller@0.1.0-preview-b9ae764
@metamask-previews/controller-utils@11.19.0-preview-b9ae764
@metamask-previews/core-backend@6.2.0-preview-b9ae764
@metamask-previews/delegation-controller@2.0.2-preview-b9ae764
@metamask-previews/earn-controller@11.1.2-preview-b9ae764
@metamask-previews/eip-5792-middleware@3.0.1-preview-b9ae764
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-b9ae764
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-b9ae764
@metamask-previews/ens-controller@19.1.0-preview-b9ae764
@metamask-previews/error-reporting-service@3.0.1-preview-b9ae764
@metamask-previews/eth-block-tracker@15.0.1-preview-b9ae764
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-b9ae764
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-b9ae764
@metamask-previews/foundryup@1.0.1-preview-b9ae764
@metamask-previews/gas-fee-controller@26.1.0-preview-b9ae764
@metamask-previews/gator-permissions-controller@2.1.1-preview-b9ae764
@metamask-previews/geolocation-controller@0.1.1-preview-b9ae764
@metamask-previews/json-rpc-engine@10.2.3-preview-b9ae764
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-b9ae764
@metamask-previews/keyring-controller@25.1.0-preview-b9ae764
@metamask-previews/logging-controller@8.0.0-preview-b9ae764
@metamask-previews/message-manager@14.1.0-preview-b9ae764
@metamask-previews/messenger@0.3.0-preview-b9ae764
@metamask-previews/multichain-account-service@7.1.0-preview-b9ae764
@metamask-previews/multichain-api-middleware@1.2.7-preview-b9ae764
@metamask-previews/multichain-network-controller@3.0.5-preview-b9ae764
@metamask-previews/multichain-transactions-controller@7.0.2-preview-b9ae764
@metamask-previews/name-controller@9.1.0-preview-b9ae764
@metamask-previews/network-controller@30.0.0-preview-b9ae764
@metamask-previews/network-enablement-controller@5.0.0-preview-b9ae764
@metamask-previews/notification-services-controller@23.0.0-preview-b9ae764
@metamask-previews/permission-controller@12.2.1-preview-b9ae764
@metamask-previews/permission-log-controller@5.0.0-preview-b9ae764
@metamask-previews/perps-controller@1.3.0-preview-b9ae764
@metamask-previews/phishing-controller@17.0.0-preview-b9ae764
@metamask-previews/polling-controller@16.0.3-preview-b9ae764
@metamask-previews/preferences-controller@23.0.0-preview-b9ae764
@metamask-previews/profile-metrics-controller@3.1.1-preview-b9ae764
@metamask-previews/profile-sync-controller@28.0.0-preview-b9ae764
@metamask-previews/ramps-controller@12.0.1-preview-b9ae764
@metamask-previews/rate-limit-controller@7.0.0-preview-b9ae764
@metamask-previews/react-data-query@0.0.0-preview-b9ae764
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-b9ae764
@metamask-previews/sample-controllers@4.0.3-preview-b9ae764
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-b9ae764
@metamask-previews/selected-network-controller@26.0.3-preview-b9ae764
@metamask-previews/shield-controller@5.0.2-preview-b9ae764
@metamask-previews/signature-controller@39.1.0-preview-b9ae764
@metamask-previews/storage-service@1.0.0-preview-b9ae764
@metamask-previews/subscription-controller@6.0.2-preview-b9ae764
@metamask-previews/transaction-controller@63.1.0-preview-b9ae764
@metamask-previews/transaction-pay-controller@18.0.0-preview-b9ae764
@metamask-previews/user-operation-controller@41.1.0-preview-b9ae764

…action-types

Rename types, functions, params, and variables to be neutral:
ControllerInfo → SourceInfo, parseControllerFile → parseSourceFile,
findControllersWithExposedMethods → findSourcesWithExposedMethods.
The tool works for both controllers and services.
@cryptodev-2s
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@5.0.1-preview-3f2e0ea
@metamask-previews/accounts-controller@37.0.0-preview-3f2e0ea
@metamask-previews/address-book-controller@7.1.0-preview-3f2e0ea
@metamask-previews/ai-controllers@0.5.0-preview-3f2e0ea
@metamask-previews/analytics-controller@1.0.0-preview-3f2e0ea
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-3f2e0ea
@metamask-previews/announcement-controller@8.0.0-preview-3f2e0ea
@metamask-previews/app-metadata-controller@2.0.0-preview-3f2e0ea
@metamask-previews/approval-controller@9.0.0-preview-3f2e0ea
@metamask-previews/assets-controller@3.0.0-preview-3f2e0ea
@metamask-previews/assets-controllers@101.0.1-preview-3f2e0ea
@metamask-previews/base-controller@9.0.0-preview-3f2e0ea
@metamask-previews/base-data-service@0.0.0-preview-3f2e0ea
@metamask-previews/bridge-controller@69.2.0-preview-3f2e0ea
@metamask-previews/bridge-status-controller@70.0.0-preview-3f2e0ea
@metamask-previews/build-utils@3.0.4-preview-3f2e0ea
@metamask-previews/chain-agnostic-permission@1.4.0-preview-3f2e0ea
@metamask-previews/claims-controller@0.4.3-preview-3f2e0ea
@metamask-previews/client-controller@1.0.0-preview-3f2e0ea
@metamask-previews/compliance-controller@1.0.1-preview-3f2e0ea
@metamask-previews/composable-controller@12.0.0-preview-3f2e0ea
@metamask-previews/config-registry-controller@0.1.1-preview-3f2e0ea
@metamask-previews/connectivity-controller@0.1.0-preview-3f2e0ea
@metamask-previews/controller-utils@11.19.0-preview-3f2e0ea
@metamask-previews/core-backend@6.2.0-preview-3f2e0ea
@metamask-previews/delegation-controller@2.0.2-preview-3f2e0ea
@metamask-previews/earn-controller@11.1.2-preview-3f2e0ea
@metamask-previews/eip-5792-middleware@3.0.1-preview-3f2e0ea
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-3f2e0ea
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-3f2e0ea
@metamask-previews/ens-controller@19.1.0-preview-3f2e0ea
@metamask-previews/error-reporting-service@3.0.1-preview-3f2e0ea
@metamask-previews/eth-block-tracker@15.0.1-preview-3f2e0ea
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-3f2e0ea
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-3f2e0ea
@metamask-previews/foundryup@1.0.1-preview-3f2e0ea
@metamask-previews/gas-fee-controller@26.1.0-preview-3f2e0ea
@metamask-previews/gator-permissions-controller@2.1.1-preview-3f2e0ea
@metamask-previews/geolocation-controller@0.1.1-preview-3f2e0ea
@metamask-previews/json-rpc-engine@10.2.3-preview-3f2e0ea
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-3f2e0ea
@metamask-previews/keyring-controller@25.1.0-preview-3f2e0ea
@metamask-previews/logging-controller@8.0.0-preview-3f2e0ea
@metamask-previews/message-manager@14.1.0-preview-3f2e0ea
@metamask-previews/messenger@0.3.0-preview-3f2e0ea
@metamask-previews/multichain-account-service@7.1.0-preview-3f2e0ea
@metamask-previews/multichain-api-middleware@1.2.7-preview-3f2e0ea
@metamask-previews/multichain-network-controller@3.0.5-preview-3f2e0ea
@metamask-previews/multichain-transactions-controller@7.0.2-preview-3f2e0ea
@metamask-previews/name-controller@9.1.0-preview-3f2e0ea
@metamask-previews/network-controller@30.0.0-preview-3f2e0ea
@metamask-previews/network-enablement-controller@5.0.0-preview-3f2e0ea
@metamask-previews/notification-services-controller@23.0.0-preview-3f2e0ea
@metamask-previews/permission-controller@12.2.1-preview-3f2e0ea
@metamask-previews/permission-log-controller@5.0.0-preview-3f2e0ea
@metamask-previews/perps-controller@1.3.0-preview-3f2e0ea
@metamask-previews/phishing-controller@17.0.0-preview-3f2e0ea
@metamask-previews/polling-controller@16.0.3-preview-3f2e0ea
@metamask-previews/preferences-controller@23.0.0-preview-3f2e0ea
@metamask-previews/profile-metrics-controller@3.1.1-preview-3f2e0ea
@metamask-previews/profile-sync-controller@28.0.0-preview-3f2e0ea
@metamask-previews/ramps-controller@12.0.1-preview-3f2e0ea
@metamask-previews/rate-limit-controller@7.0.0-preview-3f2e0ea
@metamask-previews/react-data-query@0.0.0-preview-3f2e0ea
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-3f2e0ea
@metamask-previews/sample-controllers@4.0.3-preview-3f2e0ea
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-3f2e0ea
@metamask-previews/selected-network-controller@26.0.3-preview-3f2e0ea
@metamask-previews/shield-controller@5.0.2-preview-3f2e0ea
@metamask-previews/signature-controller@39.1.0-preview-3f2e0ea
@metamask-previews/storage-service@1.0.0-preview-3f2e0ea
@metamask-previews/subscription-controller@6.0.2-preview-3f2e0ea
@metamask-previews/transaction-controller@63.1.0-preview-3f2e0ea
@metamask-previews/transaction-pay-controller@18.0.0-preview-3f2e0ea
@metamask-previews/user-operation-controller@41.1.0-preview-3f2e0ea

@cryptodev-2s
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@5.0.1-preview-74da211
@metamask-previews/accounts-controller@37.0.0-preview-74da211
@metamask-previews/address-book-controller@7.1.0-preview-74da211
@metamask-previews/ai-controllers@0.5.0-preview-74da211
@metamask-previews/analytics-controller@1.0.0-preview-74da211
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-74da211
@metamask-previews/announcement-controller@8.0.0-preview-74da211
@metamask-previews/app-metadata-controller@2.0.0-preview-74da211
@metamask-previews/approval-controller@9.0.0-preview-74da211
@metamask-previews/assets-controller@3.0.0-preview-74da211
@metamask-previews/assets-controllers@101.0.1-preview-74da211
@metamask-previews/base-controller@9.0.0-preview-74da211
@metamask-previews/base-data-service@0.0.0-preview-74da211
@metamask-previews/bridge-controller@69.2.0-preview-74da211
@metamask-previews/bridge-status-controller@70.0.0-preview-74da211
@metamask-previews/build-utils@3.0.4-preview-74da211
@metamask-previews/chain-agnostic-permission@1.4.0-preview-74da211
@metamask-previews/claims-controller@0.4.3-preview-74da211
@metamask-previews/client-controller@1.0.0-preview-74da211
@metamask-previews/compliance-controller@1.0.1-preview-74da211
@metamask-previews/composable-controller@12.0.0-preview-74da211
@metamask-previews/config-registry-controller@0.1.1-preview-74da211
@metamask-previews/connectivity-controller@0.1.0-preview-74da211
@metamask-previews/controller-utils@11.19.0-preview-74da211
@metamask-previews/core-backend@6.2.0-preview-74da211
@metamask-previews/delegation-controller@2.0.2-preview-74da211
@metamask-previews/earn-controller@11.1.2-preview-74da211
@metamask-previews/eip-5792-middleware@3.0.1-preview-74da211
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-74da211
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-74da211
@metamask-previews/ens-controller@19.1.0-preview-74da211
@metamask-previews/error-reporting-service@3.0.1-preview-74da211
@metamask-previews/eth-block-tracker@15.0.1-preview-74da211
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-74da211
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-74da211
@metamask-previews/foundryup@1.0.1-preview-74da211
@metamask-previews/gas-fee-controller@26.1.0-preview-74da211
@metamask-previews/gator-permissions-controller@2.1.1-preview-74da211
@metamask-previews/geolocation-controller@0.1.1-preview-74da211
@metamask-previews/json-rpc-engine@10.2.3-preview-74da211
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-74da211
@metamask-previews/keyring-controller@25.1.0-preview-74da211
@metamask-previews/logging-controller@8.0.0-preview-74da211
@metamask-previews/message-manager@14.1.0-preview-74da211
@metamask-previews/messenger@0.3.0-preview-74da211
@metamask-previews/multichain-account-service@7.1.0-preview-74da211
@metamask-previews/multichain-api-middleware@1.2.7-preview-74da211
@metamask-previews/multichain-network-controller@3.0.5-preview-74da211
@metamask-previews/multichain-transactions-controller@7.0.2-preview-74da211
@metamask-previews/name-controller@9.1.0-preview-74da211
@metamask-previews/network-controller@30.0.0-preview-74da211
@metamask-previews/network-enablement-controller@5.0.0-preview-74da211
@metamask-previews/notification-services-controller@23.0.0-preview-74da211
@metamask-previews/permission-controller@12.2.1-preview-74da211
@metamask-previews/permission-log-controller@5.0.0-preview-74da211
@metamask-previews/perps-controller@1.3.0-preview-74da211
@metamask-previews/phishing-controller@17.0.0-preview-74da211
@metamask-previews/polling-controller@16.0.3-preview-74da211
@metamask-previews/preferences-controller@23.0.0-preview-74da211
@metamask-previews/profile-metrics-controller@3.1.1-preview-74da211
@metamask-previews/profile-sync-controller@28.0.0-preview-74da211
@metamask-previews/ramps-controller@12.0.1-preview-74da211
@metamask-previews/rate-limit-controller@7.0.0-preview-74da211
@metamask-previews/react-data-query@0.0.0-preview-74da211
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-74da211
@metamask-previews/sample-controllers@4.0.3-preview-74da211
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-74da211
@metamask-previews/selected-network-controller@26.0.3-preview-74da211
@metamask-previews/shield-controller@5.0.2-preview-74da211
@metamask-previews/signature-controller@39.1.0-preview-74da211
@metamask-previews/storage-service@1.0.0-preview-74da211
@metamask-previews/subscription-controller@6.0.2-preview-74da211
@metamask-previews/transaction-controller@63.1.0-preview-74da211
@metamask-previews/transaction-pay-controller@18.0.0-preview-74da211
@metamask-previews/user-operation-controller@41.1.0-preview-74da211

Recursively search subdirectories for source files, matching the
snaps repo implementation. This allows packages with controllers
or services in nested directories to be discovered automatically.
@cryptodev-2s cryptodev-2s requested a review from Mrtenz March 23, 2026 21:52
@cryptodev-2s
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@5.0.1-preview-a462582
@metamask-previews/accounts-controller@37.0.0-preview-a462582
@metamask-previews/address-book-controller@7.1.0-preview-a462582
@metamask-previews/ai-controllers@0.5.0-preview-a462582
@metamask-previews/analytics-controller@1.0.0-preview-a462582
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-a462582
@metamask-previews/announcement-controller@8.0.0-preview-a462582
@metamask-previews/app-metadata-controller@2.0.0-preview-a462582
@metamask-previews/approval-controller@9.0.0-preview-a462582
@metamask-previews/assets-controller@3.0.0-preview-a462582
@metamask-previews/assets-controllers@101.0.1-preview-a462582
@metamask-previews/base-controller@9.0.0-preview-a462582
@metamask-previews/base-data-service@0.0.0-preview-a462582
@metamask-previews/bridge-controller@69.2.0-preview-a462582
@metamask-previews/bridge-status-controller@70.0.0-preview-a462582
@metamask-previews/build-utils@3.0.4-preview-a462582
@metamask-previews/chain-agnostic-permission@1.4.0-preview-a462582
@metamask-previews/claims-controller@0.4.3-preview-a462582
@metamask-previews/client-controller@1.0.0-preview-a462582
@metamask-previews/compliance-controller@1.0.1-preview-a462582
@metamask-previews/composable-controller@12.0.0-preview-a462582
@metamask-previews/config-registry-controller@0.1.1-preview-a462582
@metamask-previews/connectivity-controller@0.1.0-preview-a462582
@metamask-previews/controller-utils@11.19.0-preview-a462582
@metamask-previews/core-backend@6.2.0-preview-a462582
@metamask-previews/delegation-controller@2.0.2-preview-a462582
@metamask-previews/earn-controller@11.1.2-preview-a462582
@metamask-previews/eip-5792-middleware@3.0.1-preview-a462582
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-a462582
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-a462582
@metamask-previews/ens-controller@19.1.0-preview-a462582
@metamask-previews/error-reporting-service@3.0.1-preview-a462582
@metamask-previews/eth-block-tracker@15.0.1-preview-a462582
@metamask-previews/eth-json-rpc-middleware@23.1.0-preview-a462582
@metamask-previews/eth-json-rpc-provider@6.0.0-preview-a462582
@metamask-previews/foundryup@1.0.1-preview-a462582
@metamask-previews/gas-fee-controller@26.1.0-preview-a462582
@metamask-previews/gator-permissions-controller@2.1.1-preview-a462582
@metamask-previews/geolocation-controller@0.1.1-preview-a462582
@metamask-previews/json-rpc-engine@10.2.3-preview-a462582
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-a462582
@metamask-previews/keyring-controller@25.1.0-preview-a462582
@metamask-previews/logging-controller@8.0.0-preview-a462582
@metamask-previews/message-manager@14.1.0-preview-a462582
@metamask-previews/messenger@0.3.0-preview-a462582
@metamask-previews/multichain-account-service@7.1.0-preview-a462582
@metamask-previews/multichain-api-middleware@1.2.7-preview-a462582
@metamask-previews/multichain-network-controller@3.0.5-preview-a462582
@metamask-previews/multichain-transactions-controller@7.0.2-preview-a462582
@metamask-previews/name-controller@9.1.0-preview-a462582
@metamask-previews/network-controller@30.0.0-preview-a462582
@metamask-previews/network-enablement-controller@5.0.0-preview-a462582
@metamask-previews/notification-services-controller@23.0.0-preview-a462582
@metamask-previews/permission-controller@12.2.1-preview-a462582
@metamask-previews/permission-log-controller@5.0.0-preview-a462582
@metamask-previews/perps-controller@1.3.0-preview-a462582
@metamask-previews/phishing-controller@17.0.0-preview-a462582
@metamask-previews/polling-controller@16.0.3-preview-a462582
@metamask-previews/preferences-controller@23.0.0-preview-a462582
@metamask-previews/profile-metrics-controller@3.1.1-preview-a462582
@metamask-previews/profile-sync-controller@28.0.0-preview-a462582
@metamask-previews/ramps-controller@12.0.1-preview-a462582
@metamask-previews/rate-limit-controller@7.0.0-preview-a462582
@metamask-previews/react-data-query@0.0.0-preview-a462582
@metamask-previews/remote-feature-flag-controller@4.1.0-preview-a462582
@metamask-previews/sample-controllers@4.0.3-preview-a462582
@metamask-previews/seedless-onboarding-controller@9.0.0-preview-a462582
@metamask-previews/selected-network-controller@26.0.3-preview-a462582
@metamask-previews/shield-controller@5.0.2-preview-a462582
@metamask-previews/signature-controller@39.1.0-preview-a462582
@metamask-previews/storage-service@1.0.0-preview-a462582
@metamask-previews/subscription-controller@6.0.2-preview-a462582
@metamask-previews/transaction-controller@63.1.0-preview-a462582
@metamask-previews/transaction-pay-controller@18.0.0-preview-a462582
@metamask-previews/user-operation-controller@41.1.0-preview-a462582

"typedoc-plugin-missing-exports": "^2.0.0",
"typescript": "~5.3.3"
"typescript": "~5.3.3",
"yargs": "^17.7.2"
Copy link
Contributor

Choose a reason for hiding this comment

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

Should these be in dependencies, since they're being referred to in code that we are publishing?

Copy link
Member

Choose a reason for hiding this comment

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

yargs probably, but TypeScript should probably be a peer dependency?

Copy link
Contributor

@mcmire mcmire Mar 24, 2026

Choose a reason for hiding this comment

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

Now that you say it, yes, that would probably make more sense. I guess we want a peer dependency on ESLint for the same reason. They're tools that the project should already have, and we don't want to use a different version of them.

So 1) typescript and eslint should be in peer dependencies, but they should not be optional peer dependencies (we need them or else this script won't work) and 2) only yargs/@types/yargs needs to be in dependencies.

// The display name when running multiple projects
displayName,

coveragePathIgnorePatterns: ['./src/generate-action-types/cli.ts'],
Copy link
Contributor

Choose a reason for hiding this comment

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

Instead of ignoring this file, what are your thoughts on writing functional tests that run the CLI for real on a set of example files?

Recursive search makes per-subdirectory scripts unnecessary in
assets-controllers, notification-services-controller, and
profile-sync-controller.
github-merge-queue bot pushed a commit that referenced this pull request Mar 24, 2026
## Explanation

The auto-generated method action type files previously referenced the
generator script path in their header comment (`This file is auto
generated by scripts/generate-method-action-types.ts`). This simplifies
it to just `This file is auto generated.`.

For context why we are making this change
#8264 (comment)

## References

N/A

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Only changes a comment string in generated `*-method-action-types.ts`
files and the generator script; no runtime logic or types are modified
beyond file header text.
> 
> **Overview**
> **Simplifies the header comment** across all auto-generated
`*-method-action-types.ts` files by removing the explicit generator
script path reference and leaving `This file is auto generated.` plus
`Do not edit manually.`
> 
> Updates `scripts/generate-method-action-types.ts` so future
generations produce the new header format.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
472e809. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

},
"yargs": {
"optional": true
}
Copy link

Choose a reason for hiding this comment

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

Required codegen dependencies missing from dependencies

High Severity

yargs, @metamask/utils, and typescript are directly imported (top-level, no try/catch) in cli.ts and parse-source.ts, but all are only in devDependencies and marked as optional peer dependencies. When the package is published, devDependencies aren't installed and optional peers won't trigger warnings. The bin entry messenger-generate-action-types and the ./generate-action-types subpath export will crash at runtime for external consumers. Per the PR discussion, yargs belongs in dependencies and typescript/eslint should be non-optional peer dependencies, but this wasn't implemented.

Additional Locations (2)
Fix in Cursor Fix in Web

No consumers import programmatically. The tool is CLI-only.
micaelae pushed a commit that referenced this pull request Mar 24, 2026
## Explanation

The auto-generated method action type files previously referenced the
generator script path in their header comment (`This file is auto
generated by scripts/generate-method-action-types.ts`). This simplifies
it to just `This file is auto generated.`.

For context why we are making this change
#8264 (comment)

## References

N/A

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Only changes a comment string in generated `*-method-action-types.ts`
files and the generator script; no runtime logic or types are modified
beyond file header text.
> 
> **Overview**
> **Simplifies the header comment** across all auto-generated
`*-method-action-types.ts` files by removing the explicit generator
script path reference and leaving `This file is auto generated.` plus
`Do not edit manually.`
> 
> Updates `scripts/generate-method-action-types.ts` so future
generations produce the new header format.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
472e809. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants