Skip to content

add money account upgrade controller#8426

Open
Jwhiles wants to merge 16 commits intomainfrom
add-money-account-upgrade-controller
Open

add money account upgrade controller#8426
Jwhiles wants to merge 16 commits intomainfrom
add-money-account-upgrade-controller

Conversation

@Jwhiles
Copy link
Copy Markdown
Contributor

@Jwhiles Jwhiles commented Apr 10, 2026

Explanation

This PR adds a scaffold for the money account upgrade controller, as well the first step in the upgrade process.

I'll make follow up PRs adding the further steps so they can be reviewed more easily.

Addresses
MUSD-447 and MUSD-449

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

@Jwhiles Jwhiles changed the base branch from main to add-chomp-api April 10, 2026 16:01
Comment thread packages/money-account-upgrade-controller/src/MoneyAccountUpgradeController.ts Outdated
@Jwhiles Jwhiles force-pushed the add-chomp-api branch 4 times, most recently from d8926ef to 010ce60 Compare April 14, 2026 15:22
@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch 5 times, most recently from 8b2387c to 2e23109 Compare April 14, 2026 18:53
@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 14, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
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@7.0.0-preview-2e231093e
@metamask-previews/accounts-controller@37.2.0-preview-2e231093e
@metamask-previews/address-book-controller@7.1.1-preview-2e231093e
@metamask-previews/ai-controllers@0.6.3-preview-2e231093e
@metamask-previews/analytics-controller@1.0.1-preview-2e231093e
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-2e231093e
@metamask-previews/announcement-controller@8.1.0-preview-2e231093e
@metamask-previews/app-metadata-controller@2.0.1-preview-2e231093e
@metamask-previews/approval-controller@9.0.1-preview-2e231093e
@metamask-previews/assets-controller@5.0.0-preview-2e231093e
@metamask-previews/assets-controllers@103.1.1-preview-2e231093e
@metamask-previews/base-controller@9.0.1-preview-2e231093e
@metamask-previews/base-data-service@0.1.1-preview-2e231093e
@metamask-previews/bridge-controller@70.0.1-preview-2e231093e
@metamask-previews/bridge-status-controller@70.0.5-preview-2e231093e
@metamask-previews/build-utils@3.0.4-preview-2e231093e
@metamask-previews/chain-agnostic-permission@1.5.0-preview-2e231093e
@metamask-previews/chomp-api-service@0.0.0-preview-2e231093e
@metamask-previews/claims-controller@0.5.0-preview-2e231093e
@metamask-previews/client-controller@1.0.1-preview-2e231093e
@metamask-previews/compliance-controller@2.0.0-preview-2e231093e
@metamask-previews/composable-controller@12.0.1-preview-2e231093e
@metamask-previews/config-registry-controller@0.2.0-preview-2e231093e
@metamask-previews/connectivity-controller@0.2.0-preview-2e231093e
@metamask-previews/controller-utils@11.20.0-preview-2e231093e
@metamask-previews/core-backend@6.2.1-preview-2e231093e
@metamask-previews/delegation-controller@3.0.0-preview-2e231093e
@metamask-previews/earn-controller@12.0.0-preview-2e231093e
@metamask-previews/eip-5792-middleware@3.0.3-preview-2e231093e
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-2e231093e
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-2e231093e
@metamask-previews/ens-controller@19.1.1-preview-2e231093e
@metamask-previews/eth-block-tracker@15.0.1-preview-2e231093e
@metamask-previews/eth-json-rpc-middleware@23.1.1-preview-2e231093e
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-2e231093e
@metamask-previews/foundryup@1.0.1-preview-2e231093e
@metamask-previews/gas-fee-controller@26.1.1-preview-2e231093e
@metamask-previews/gator-permissions-controller@3.0.1-preview-2e231093e
@metamask-previews/geolocation-controller@0.1.2-preview-2e231093e
@metamask-previews/json-rpc-engine@10.2.4-preview-2e231093e
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-2e231093e
@metamask-previews/keyring-controller@25.2.0-preview-2e231093e
@metamask-previews/logging-controller@8.0.1-preview-2e231093e
@metamask-previews/message-manager@14.1.1-preview-2e231093e
@metamask-previews/messenger@1.1.1-preview-2e231093e
@metamask-previews/messenger-cli@0.1.0-preview-2e231093e
@metamask-previews/money-account-controller@0.1.0-preview-2e231093e
@metamask-previews/money-account-upgrade-controller@0.1.0-preview-2e231093e
@metamask-previews/multichain-account-service@8.0.1-preview-2e231093e
@metamask-previews/multichain-api-middleware@2.0.0-preview-2e231093e
@metamask-previews/multichain-network-controller@3.0.6-preview-2e231093e
@metamask-previews/multichain-transactions-controller@7.0.4-preview-2e231093e
@metamask-previews/name-controller@9.1.1-preview-2e231093e
@metamask-previews/network-controller@30.0.1-preview-2e231093e
@metamask-previews/network-enablement-controller@5.0.2-preview-2e231093e
@metamask-previews/notification-services-controller@23.0.1-preview-2e231093e
@metamask-previews/permission-controller@12.3.0-preview-2e231093e
@metamask-previews/permission-log-controller@5.1.0-preview-2e231093e
@metamask-previews/perps-controller@3.0.0-preview-2e231093e
@metamask-previews/phishing-controller@17.1.1-preview-2e231093e
@metamask-previews/polling-controller@16.0.4-preview-2e231093e
@metamask-previews/preferences-controller@23.1.0-preview-2e231093e
@metamask-previews/profile-metrics-controller@3.1.3-preview-2e231093e
@metamask-previews/profile-sync-controller@28.0.2-preview-2e231093e
@metamask-previews/ramps-controller@13.1.0-preview-2e231093e
@metamask-previews/rate-limit-controller@7.0.1-preview-2e231093e
@metamask-previews/react-data-query@0.2.0-preview-2e231093e
@metamask-previews/remote-feature-flag-controller@4.2.0-preview-2e231093e
@metamask-previews/sample-controllers@4.0.4-preview-2e231093e
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-2e231093e
@metamask-previews/selected-network-controller@26.1.0-preview-2e231093e
@metamask-previews/shield-controller@5.1.1-preview-2e231093e
@metamask-previews/signature-controller@39.1.2-preview-2e231093e
@metamask-previews/social-controllers@0.1.0-preview-2e231093e
@metamask-previews/storage-service@1.0.1-preview-2e231093e
@metamask-previews/subscription-controller@6.1.2-preview-2e231093e
@metamask-previews/transaction-controller@64.2.0-preview-2e231093e
@metamask-previews/transaction-pay-controller@19.1.1-preview-2e231093e
@metamask-previews/user-operation-controller@41.2.0-preview-2e231093e

@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 14, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
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@7.0.0-preview-7bb388270
@metamask-previews/accounts-controller@37.2.0-preview-7bb388270
@metamask-previews/address-book-controller@7.1.1-preview-7bb388270
@metamask-previews/ai-controllers@0.6.3-preview-7bb388270
@metamask-previews/analytics-controller@1.0.1-preview-7bb388270
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-7bb388270
@metamask-previews/announcement-controller@8.1.0-preview-7bb388270
@metamask-previews/app-metadata-controller@2.0.1-preview-7bb388270
@metamask-previews/approval-controller@9.0.1-preview-7bb388270
@metamask-previews/assets-controller@5.0.0-preview-7bb388270
@metamask-previews/assets-controllers@103.1.1-preview-7bb388270
@metamask-previews/base-controller@9.0.1-preview-7bb388270
@metamask-previews/base-data-service@0.1.1-preview-7bb388270
@metamask-previews/bridge-controller@70.0.1-preview-7bb388270
@metamask-previews/bridge-status-controller@70.0.5-preview-7bb388270
@metamask-previews/build-utils@3.0.4-preview-7bb388270
@metamask-previews/chain-agnostic-permission@1.5.0-preview-7bb388270
@metamask-previews/chomp-api-service@0.0.0-preview-7bb388270
@metamask-previews/claims-controller@0.5.0-preview-7bb388270
@metamask-previews/client-controller@1.0.1-preview-7bb388270
@metamask-previews/compliance-controller@2.0.0-preview-7bb388270
@metamask-previews/composable-controller@12.0.1-preview-7bb388270
@metamask-previews/config-registry-controller@0.2.0-preview-7bb388270
@metamask-previews/connectivity-controller@0.2.0-preview-7bb388270
@metamask-previews/controller-utils@11.20.0-preview-7bb388270
@metamask-previews/core-backend@6.2.1-preview-7bb388270
@metamask-previews/delegation-controller@3.0.0-preview-7bb388270
@metamask-previews/earn-controller@12.0.0-preview-7bb388270
@metamask-previews/eip-5792-middleware@3.0.3-preview-7bb388270
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-7bb388270
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-7bb388270
@metamask-previews/ens-controller@19.1.1-preview-7bb388270
@metamask-previews/eth-block-tracker@15.0.1-preview-7bb388270
@metamask-previews/eth-json-rpc-middleware@23.1.1-preview-7bb388270
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-7bb388270
@metamask-previews/foundryup@1.0.1-preview-7bb388270
@metamask-previews/gas-fee-controller@26.1.1-preview-7bb388270
@metamask-previews/gator-permissions-controller@3.0.1-preview-7bb388270
@metamask-previews/geolocation-controller@0.1.2-preview-7bb388270
@metamask-previews/json-rpc-engine@10.2.4-preview-7bb388270
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-7bb388270
@metamask-previews/keyring-controller@25.2.0-preview-7bb388270
@metamask-previews/logging-controller@8.0.1-preview-7bb388270
@metamask-previews/message-manager@14.1.1-preview-7bb388270
@metamask-previews/messenger@1.1.1-preview-7bb388270
@metamask-previews/messenger-cli@0.1.0-preview-7bb388270
@metamask-previews/money-account-controller@0.1.0-preview-7bb388270
@metamask-previews/money-account-upgrade-controller@0.1.0-preview-7bb388270
@metamask-previews/multichain-account-service@8.0.1-preview-7bb388270
@metamask-previews/multichain-api-middleware@2.0.0-preview-7bb388270
@metamask-previews/multichain-network-controller@3.0.6-preview-7bb388270
@metamask-previews/multichain-transactions-controller@7.0.4-preview-7bb388270
@metamask-previews/name-controller@9.1.1-preview-7bb388270
@metamask-previews/network-controller@30.0.1-preview-7bb388270
@metamask-previews/network-enablement-controller@5.0.2-preview-7bb388270
@metamask-previews/notification-services-controller@23.0.1-preview-7bb388270
@metamask-previews/permission-controller@12.3.0-preview-7bb388270
@metamask-previews/permission-log-controller@5.1.0-preview-7bb388270
@metamask-previews/perps-controller@3.0.0-preview-7bb388270
@metamask-previews/phishing-controller@17.1.1-preview-7bb388270
@metamask-previews/polling-controller@16.0.4-preview-7bb388270
@metamask-previews/preferences-controller@23.1.0-preview-7bb388270
@metamask-previews/profile-metrics-controller@3.1.3-preview-7bb388270
@metamask-previews/profile-sync-controller@28.0.2-preview-7bb388270
@metamask-previews/ramps-controller@13.1.0-preview-7bb388270
@metamask-previews/rate-limit-controller@7.0.1-preview-7bb388270
@metamask-previews/react-data-query@0.2.0-preview-7bb388270
@metamask-previews/remote-feature-flag-controller@4.2.0-preview-7bb388270
@metamask-previews/sample-controllers@4.0.4-preview-7bb388270
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-7bb388270
@metamask-previews/selected-network-controller@26.1.0-preview-7bb388270
@metamask-previews/shield-controller@5.1.1-preview-7bb388270
@metamask-previews/signature-controller@39.1.2-preview-7bb388270
@metamask-previews/social-controllers@0.1.0-preview-7bb388270
@metamask-previews/storage-service@1.0.1-preview-7bb388270
@metamask-previews/subscription-controller@6.1.2-preview-7bb388270
@metamask-previews/transaction-controller@64.2.0-preview-7bb388270
@metamask-previews/transaction-pay-controller@19.1.1-preview-7bb388270
@metamask-previews/user-operation-controller@41.2.0-preview-7bb388270

Comment thread .github/CODEOWNERS Outdated
Comment thread .github/CODEOWNERS Outdated
Comment thread .github/CODEOWNERS Outdated
@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch from 7bb3882 to debd7eb Compare April 16, 2026 10:46
@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 16, 2026

@metamaskbot publish-preview

@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch from debd7eb to e31c503 Compare April 16, 2026 11:54
@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 16, 2026

@metamaskbot publish-preview

@socket-security
Copy link
Copy Markdown

socket-security bot commented Apr 16, 2026

No dependency changes detected. Learn more about Socket for GitHub.

👍 No dependency changes detected in pull request

@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 16, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
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@7.1.0-preview-9c8c0a0
@metamask-previews/accounts-controller@37.2.0-preview-9c8c0a0
@metamask-previews/address-book-controller@7.1.1-preview-9c8c0a0
@metamask-previews/ai-controllers@0.6.3-preview-9c8c0a0
@metamask-previews/analytics-controller@1.0.1-preview-9c8c0a0
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-9c8c0a0
@metamask-previews/announcement-controller@8.1.0-preview-9c8c0a0
@metamask-previews/app-metadata-controller@2.0.1-preview-9c8c0a0
@metamask-previews/approval-controller@9.0.1-preview-9c8c0a0
@metamask-previews/assets-controller@6.0.0-preview-9c8c0a0
@metamask-previews/assets-controllers@104.0.0-preview-9c8c0a0
@metamask-previews/base-controller@9.1.0-preview-9c8c0a0
@metamask-previews/base-data-service@0.1.1-preview-9c8c0a0
@metamask-previews/bridge-controller@70.1.1-preview-9c8c0a0
@metamask-previews/bridge-status-controller@70.0.5-preview-9c8c0a0
@metamask-previews/build-utils@3.0.4-preview-9c8c0a0
@metamask-previews/chain-agnostic-permission@1.5.0-preview-9c8c0a0
@metamask-previews/chomp-api-service@0.0.0-preview-9c8c0a0
@metamask-previews/claims-controller@0.5.0-preview-9c8c0a0
@metamask-previews/client-controller@1.0.1-preview-9c8c0a0
@metamask-previews/compliance-controller@2.0.0-preview-9c8c0a0
@metamask-previews/composable-controller@12.0.1-preview-9c8c0a0
@metamask-previews/config-registry-controller@0.2.0-preview-9c8c0a0
@metamask-previews/connectivity-controller@0.2.0-preview-9c8c0a0
@metamask-previews/controller-utils@11.20.0-preview-9c8c0a0
@metamask-previews/core-backend@6.2.1-preview-9c8c0a0
@metamask-previews/delegation-controller@3.0.0-preview-9c8c0a0
@metamask-previews/earn-controller@12.0.0-preview-9c8c0a0
@metamask-previews/eip-5792-middleware@3.0.3-preview-9c8c0a0
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-9c8c0a0
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-9c8c0a0
@metamask-previews/ens-controller@19.1.1-preview-9c8c0a0
@metamask-previews/eth-block-tracker@15.0.1-preview-9c8c0a0
@metamask-previews/eth-json-rpc-middleware@23.1.1-preview-9c8c0a0
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-9c8c0a0
@metamask-previews/foundryup@1.0.1-preview-9c8c0a0
@metamask-previews/gas-fee-controller@26.1.1-preview-9c8c0a0
@metamask-previews/gator-permissions-controller@4.0.0-preview-9c8c0a0
@metamask-previews/geolocation-controller@0.1.2-preview-9c8c0a0
@metamask-previews/json-rpc-engine@10.2.4-preview-9c8c0a0
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-9c8c0a0
@metamask-previews/keyring-controller@25.2.0-preview-9c8c0a0
@metamask-previews/logging-controller@8.0.1-preview-9c8c0a0
@metamask-previews/message-manager@14.1.1-preview-9c8c0a0
@metamask-previews/messenger@1.1.1-preview-9c8c0a0
@metamask-previews/messenger-cli@0.1.0-preview-9c8c0a0
@metamask-previews/money-account-balance-service@0.1.0-preview-9c8c0a0
@metamask-previews/money-account-controller@0.1.0-preview-9c8c0a0
@metamask-previews/money-account-upgrade-controller@0.1.0-preview-9c8c0a0
@metamask-previews/multichain-account-service@8.0.1-preview-9c8c0a0
@metamask-previews/multichain-api-middleware@2.0.0-preview-9c8c0a0
@metamask-previews/multichain-network-controller@3.0.6-preview-9c8c0a0
@metamask-previews/multichain-transactions-controller@7.0.4-preview-9c8c0a0
@metamask-previews/name-controller@9.1.1-preview-9c8c0a0
@metamask-previews/network-controller@30.0.1-preview-9c8c0a0
@metamask-previews/network-enablement-controller@5.0.2-preview-9c8c0a0
@metamask-previews/notification-services-controller@23.1.0-preview-9c8c0a0
@metamask-previews/permission-controller@12.3.0-preview-9c8c0a0
@metamask-previews/permission-log-controller@5.1.0-preview-9c8c0a0
@metamask-previews/perps-controller@3.1.1-preview-9c8c0a0
@metamask-previews/phishing-controller@17.1.1-preview-9c8c0a0
@metamask-previews/polling-controller@16.0.4-preview-9c8c0a0
@metamask-previews/preferences-controller@23.1.0-preview-9c8c0a0
@metamask-previews/profile-metrics-controller@3.1.3-preview-9c8c0a0
@metamask-previews/profile-sync-controller@28.0.2-preview-9c8c0a0
@metamask-previews/ramps-controller@13.2.0-preview-9c8c0a0
@metamask-previews/rate-limit-controller@7.0.1-preview-9c8c0a0
@metamask-previews/react-data-query@0.2.0-preview-9c8c0a0
@metamask-previews/remote-feature-flag-controller@4.2.0-preview-9c8c0a0
@metamask-previews/sample-controllers@4.0.4-preview-9c8c0a0
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-9c8c0a0
@metamask-previews/selected-network-controller@26.1.0-preview-9c8c0a0
@metamask-previews/shield-controller@5.1.1-preview-9c8c0a0
@metamask-previews/signature-controller@39.2.0-preview-9c8c0a0
@metamask-previews/social-controllers@0.2.0-preview-9c8c0a0
@metamask-previews/storage-service@1.0.1-preview-9c8c0a0
@metamask-previews/subscription-controller@6.1.2-preview-9c8c0a0
@metamask-previews/transaction-controller@64.3.0-preview-9c8c0a0
@metamask-previews/transaction-pay-controller@19.2.0-preview-9c8c0a0
@metamask-previews/user-operation-controller@41.2.0-preview-9c8c0a0

@Jwhiles
Copy link
Copy Markdown
Contributor Author

Jwhiles commented Apr 16, 2026

@metamaskbot publish-preview

@github-actions
Copy link
Copy Markdown
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@7.1.0-preview-9fac52d
@metamask-previews/accounts-controller@37.2.0-preview-9fac52d
@metamask-previews/address-book-controller@7.1.1-preview-9fac52d
@metamask-previews/ai-controllers@0.6.3-preview-9fac52d
@metamask-previews/analytics-controller@1.0.1-preview-9fac52d
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-9fac52d
@metamask-previews/announcement-controller@8.1.0-preview-9fac52d
@metamask-previews/app-metadata-controller@2.0.1-preview-9fac52d
@metamask-previews/approval-controller@9.0.1-preview-9fac52d
@metamask-previews/assets-controller@6.0.0-preview-9fac52d
@metamask-previews/assets-controllers@104.0.0-preview-9fac52d
@metamask-previews/base-controller@9.1.0-preview-9fac52d
@metamask-previews/base-data-service@0.1.1-preview-9fac52d
@metamask-previews/bridge-controller@70.1.1-preview-9fac52d
@metamask-previews/bridge-status-controller@70.0.5-preview-9fac52d
@metamask-previews/build-utils@3.0.4-preview-9fac52d
@metamask-previews/chain-agnostic-permission@1.5.0-preview-9fac52d
@metamask-previews/chomp-api-service@0.0.0-preview-9fac52d
@metamask-previews/claims-controller@0.5.0-preview-9fac52d
@metamask-previews/client-controller@1.0.1-preview-9fac52d
@metamask-previews/compliance-controller@2.0.0-preview-9fac52d
@metamask-previews/composable-controller@12.0.1-preview-9fac52d
@metamask-previews/config-registry-controller@0.2.0-preview-9fac52d
@metamask-previews/connectivity-controller@0.2.0-preview-9fac52d
@metamask-previews/controller-utils@11.20.0-preview-9fac52d
@metamask-previews/core-backend@6.2.1-preview-9fac52d
@metamask-previews/delegation-controller@3.0.0-preview-9fac52d
@metamask-previews/earn-controller@12.0.0-preview-9fac52d
@metamask-previews/eip-5792-middleware@3.0.3-preview-9fac52d
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.0-preview-9fac52d
@metamask-previews/eip1193-permission-middleware@1.0.3-preview-9fac52d
@metamask-previews/ens-controller@19.1.1-preview-9fac52d
@metamask-previews/eth-block-tracker@15.0.1-preview-9fac52d
@metamask-previews/eth-json-rpc-middleware@23.1.1-preview-9fac52d
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-9fac52d
@metamask-previews/foundryup@1.0.1-preview-9fac52d
@metamask-previews/gas-fee-controller@26.1.1-preview-9fac52d
@metamask-previews/gator-permissions-controller@4.0.0-preview-9fac52d
@metamask-previews/geolocation-controller@0.1.2-preview-9fac52d
@metamask-previews/json-rpc-engine@10.2.4-preview-9fac52d
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-9fac52d
@metamask-previews/keyring-controller@25.2.0-preview-9fac52d
@metamask-previews/logging-controller@8.0.1-preview-9fac52d
@metamask-previews/message-manager@14.1.1-preview-9fac52d
@metamask-previews/messenger@1.1.1-preview-9fac52d
@metamask-previews/messenger-cli@0.1.0-preview-9fac52d
@metamask-previews/money-account-balance-service@0.1.0-preview-9fac52d
@metamask-previews/money-account-controller@0.1.0-preview-9fac52d
@metamask-previews/money-account-upgrade-controller@0.1.0-preview-9fac52d
@metamask-previews/multichain-account-service@8.0.1-preview-9fac52d
@metamask-previews/multichain-api-middleware@2.0.0-preview-9fac52d
@metamask-previews/multichain-network-controller@3.0.6-preview-9fac52d
@metamask-previews/multichain-transactions-controller@7.0.4-preview-9fac52d
@metamask-previews/name-controller@9.1.1-preview-9fac52d
@metamask-previews/network-controller@30.0.1-preview-9fac52d
@metamask-previews/network-enablement-controller@5.0.2-preview-9fac52d
@metamask-previews/notification-services-controller@23.1.0-preview-9fac52d
@metamask-previews/permission-controller@12.3.0-preview-9fac52d
@metamask-previews/permission-log-controller@5.1.0-preview-9fac52d
@metamask-previews/perps-controller@3.1.1-preview-9fac52d
@metamask-previews/phishing-controller@17.1.1-preview-9fac52d
@metamask-previews/polling-controller@16.0.4-preview-9fac52d
@metamask-previews/preferences-controller@23.1.0-preview-9fac52d
@metamask-previews/profile-metrics-controller@3.1.3-preview-9fac52d
@metamask-previews/profile-sync-controller@28.0.2-preview-9fac52d
@metamask-previews/ramps-controller@13.2.0-preview-9fac52d
@metamask-previews/rate-limit-controller@7.0.1-preview-9fac52d
@metamask-previews/react-data-query@0.2.0-preview-9fac52d
@metamask-previews/remote-feature-flag-controller@4.2.0-preview-9fac52d
@metamask-previews/sample-controllers@4.0.4-preview-9fac52d
@metamask-previews/seedless-onboarding-controller@9.1.0-preview-9fac52d
@metamask-previews/selected-network-controller@26.1.0-preview-9fac52d
@metamask-previews/shield-controller@5.1.1-preview-9fac52d
@metamask-previews/signature-controller@39.2.0-preview-9fac52d
@metamask-previews/social-controllers@0.2.0-preview-9fac52d
@metamask-previews/storage-service@1.0.1-preview-9fac52d
@metamask-previews/subscription-controller@6.1.2-preview-9fac52d
@metamask-previews/transaction-controller@64.3.0-preview-9fac52d
@metamask-previews/transaction-pay-controller@19.2.0-preview-9fac52d
@metamask-previews/user-operation-controller@41.2.0-preview-9fac52d

@Jwhiles Jwhiles force-pushed the add-chomp-api branch 2 times, most recently from 178d32d to a820fad Compare April 16, 2026 18:29
@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch from 9fac52d to 3ad67f2 Compare April 17, 2026 10:25
@Jwhiles Jwhiles added team-earn team-delegation MetaMask Delegation Team labels Apr 17, 2026
@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch 5 times, most recently from 320839f to e0cc75e Compare April 17, 2026 13:54
Base automatically changed from add-chomp-api to main April 17, 2026 14:41
Jwhiles and others added 16 commits April 17, 2026 17:54
Each step now checks persisted state via #isStepCompleted before running,
so a retry after a mid-sequence failure resumes from the last incomplete
step rather than re-running everything from scratch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Moves ROOT_AUTHORITY, MAX_UINT256, and STEP_ORDER into constants.ts,
and the inline #encodeCaveatTerms private method into a standalone
encode-caveat-terms.ts module with direct unit tests. First step in
splitting up the growing MoneyAccountUpgradeController file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduces src/steps/ with a StepContext/StepResult/Step type scaffold
and a #runStep orchestration helper on the controller that handles the
skip check, context build, and state patch merge. The associate-address
step is the first extracted — direct unit tests cover its behavior, and
the corresponding describe block is removed from the controller tests
since orchestration is already covered by the resumability tests.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduce a Step type ({ name, run }) with a StepResult union
('already-done' | 'completed') and iterate an internal steps array from
upgradeAccount. Errors from a step propagate and halt the sequence.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Implements step 0 of the Money Account upgrade: signs a fresh
"CHOMP Authentication {timestamp}" message via KeyringController and
submits it to ChompApiService.associateAddress. The endpoint is
idempotent, so the step has no pre-check and always returns 'completed'.

upgradeAccount now takes the account address as a parameter and passes
a { messenger, address } context to each step.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Jwhiles Jwhiles force-pushed the add-money-account-upgrade-controller branch from 67bcc7c to 07a2265 Compare April 17, 2026 16:56
@Jwhiles Jwhiles marked this pull request as ready for review April 17, 2026 16:56
@Jwhiles Jwhiles requested a review from a team as a code owner April 17, 2026 16:56
Copy link
Copy Markdown

@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 1 potential issue.

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.

Reviewed by Cursor Bugbot for commit 07a2265. Configure here.

async upgradeAccount(address: Hex): Promise<void> {
for (const step of this.#steps) {
await step.run({ messenger: this.messenger, address });
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

init result discarded, initialized flag never enforced

Low Severity

The init method fetches and validates service details, sets this.initialized = true, but upgradeAccount never checks the initialized flag before running steps. The initialized property is assigned in the constructor and in init but never read anywhere in the controller's production code — only in tests. This makes it dead code within the controller and means the chain validation performed by init is entirely unenforced; callers can invoke upgradeAccount without init, bypassing all validation.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 07a2265. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team-delegation MetaMask Delegation Team team-earn

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants