Skip to content

Neobank demo - #9853

Open
georgeweiler wants to merge 77 commits into
mainfrom
neobank-demo
Open

Neobank demo#9853
georgeweiler wants to merge 77 commits into
mainfrom
neobank-demo

Conversation

@georgeweiler

@georgeweiler georgeweiler commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Explanation

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

High Risk
New identity/KYC orchestration touches auth tokens, encrypted frame credentials, UKYC crypto, and cross-vendor state; incorrect async/reset handling could leak stale customer ids or completion status (mitigated by extensive tests in the diff).

Overview
Introduces @metamask/kyc-controller, a platform-agnostic package that centralizes identity/KYC across clients: KycController (phase machine, MoonPay Check/Auth frames + X25519 decrypt, UKYC/SumSub via injected launcher) and KycService (UKYC + vendor HTTP via messenger auth/geolocation).

Iron / Money (VBA) is added as a second vendor: no MoonPay frames; Iron customer creation, Iron disclaimers, POST /consents, GET /kyc/status, refreshKycStatus + statusChanged, and user-status polling. getCustomerIdentity() exposes a session-scoped vendor customer id for downstream calls (e.g. ramps).

Wallet registration (MoonPay customer id, self-hosted wallet) is removed from KYC and documented as moving to @metamask/ramps-controller / NeoBankService. README dependency graph adds kyc_controller and transaction_pay_controller → money_account_utils.

Repo hygiene: Universal KYC CODEOWNERS, ESLint relaxations for kyc-controller/scripts, build:watch, mint:ukyc-token dev CLI, and a large ARCHITECTURE.md. Changelog also notes fixes for vendor id clearing on vendor switch, safe poll unref() outside Node, and ignoring late session_not_in_valid_state after reset().

Reviewed by Cursor Bugbot for commit 8bc742f. Bugbot is set up for automated code reviews on this repo. Configure here.

Akaryatrh and others added 30 commits July 24, 2026 12:26
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
…b flow opening

Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
… been reset

Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Signed-off-by: Sébastien Van Eyck <sebastien.vaneyck@consensys.net>
Comment thread packages/kyc-controller/src/KycController.ts
@georgeweiler

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@amitabh94

Copy link
Copy Markdown
Contributor

KYC + Iron status on this demo branch: feat/kyc-controller is an ancestor, and Iron feature commit a40fa2fc3f is already merged here. Follow-up #9855 brings the remaining Iron CI lint/oxfmt fixes onto neobank-demo so preview/mobile pins match the Iron tip.

For mobile demo consumers: after #9855 merges, comment @metamaskbot publish-preview here (or on #9855) to publish @metamask/kyc-controller (and sibling packages as needed) for a mobile pin onto demo/vba-kyc.

## Summary
- `neobank-demo` already includes Sébastien’s `feat/kyc-controller`
stack and the Iron feature commit from #9852 (`a40fa2fc3f`, merged by
George).
- This PR cherry-picks the remaining #9852 CI fixes (`lint` / changelog
PR link / `oxfmt`) so the demo branch matches the Iron tip for package
publish/preview and mobile consumption.
- Keeps #9852 targeting `feat/kyc-controller` for the eventual mainline
path via #9615. Does **not** merge to `main`.

## Context (demo topology)
- Integration branch: `neobank-demo` (owner: @georgeweiler) — umbrella
PR #9853 → `main`
- Iron feature PR (mainline stack): #9852 → `feat/kyc-controller`
- KYC controller PR: #9615 → `main`

## Test plan
- [ ] Confirm diff is formatting/lint/changelog only (no Iron behavior
change)
- [ ] CI green on this PR
- [ ] After merge, `@metamaskbot publish-preview` on #9853 (or this PR)
if mobile needs a preview pin of `@metamask/kyc-controller`


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@amitabh94

Copy link
Copy Markdown
Contributor

@metamaskbot publish-preview

georgeweiler and others added 6 commits August 12, 2026 16:35
The constant was annotated with the full RampsService/TransakService/
NeoBankService action unions, so spreading it into a messenger delegation
widened the element type to every service action. Hosts that only delegate
the actions RampsController actually calls (mobile) failed to typecheck once
NeoBankService grew Pix and quote methods.

Use `as const satisfies` so the type is the literal members while still being
checked against the service action unions. Also record the kyc-controller
dependency in the tsconfig project references so the package builds.

Co-authored-by: Cursor <cursoragent@cursor.com>
…demo

Keeps both sides of the KYC surface: the demo's `getCustomerIdentity`
action and the incoming Money Account wallet registration APIs.

Adds the missing `keyring-controller` project reference to the
kyc-controller tsconfigs, which the incoming ownership-message signing
imports but did not declare.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add an address-only KycController action that resolves the MoonPay customer, signs a Monad ownership proof, and registers the wallet through the MetaMask proxy.
Retarget Money Account self-hosted wallet registration from kyc-api
/vendors/moonpay/* to onramp-api neobank-proxy /neobank/... so Core
matches Money Movement ownership and transparent proxy semantics.
Prefer KycController identity when present, otherwise map the Profile
Sync id through NeoBankService.getCustomerByExternalId so autoramp
creation works before KYC has cached a MoonPay customer id.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reconciles the independently pushed wallet-registration commits with the
local merge of feat/moonpay-wallet-registration-stacked.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread packages/ramps-controller/src/RampsController.ts
amitabh94 and others added 2 commits August 13, 2026 01:03
…r to ramps-controller (#9858)

## Summary

Money Account self-hosted wallet registration (proving wallet ownership
to MoonPay Iron via the neobank-proxy) lived in
`@metamask/kyc-controller`. This PR moves it to
`@metamask/ramps-controller`, which is the correct Money Movement owner,
and removes the ramps→kyc package dependency that broke the monorepo
TypeScript project-reference build.

- Moved `wallet-registration-service.ts`,
`wallet-registration-machine.ts`, `ownership-message.ts` (and tests)
from `packages/kyc-controller/src` to `packages/ramps-controller/src`.
- Moved `registerMoneyAccountWallet` from `KycController` to
`RampsController` (resolves customer id via `resolveAutorampCustomerId`,
signs via `KeyringController:signPersonalMessage`, submits via
`NeoBankService`).
- Moved the three wallet HTTP methods from `KycService` to
`NeoBankService` (`getMoonpayCustomerId`, `getWalletRegistrationStatus`,
`registerSelfHostedWallet`), built lazily so an invalid environment only
throws at request time. Removed the `neobankBaseUrl` KycService option.
- Removed the `@metamask/kyc-controller` dependency (package.json + both
tsconfigs) from `ramps-controller`, and the unused
`@metamask/keyring-controller` dependency from `kyc-controller`.
`RampsController` now declares local structural types for the two
type-only messenger actions it needs, so the packages are decoupled in
the build graph.
- Regenerated messenger action types for both packages, updated both
`index.ts` export surfaces, moved/ported wallet-registration tests into
ramps, and updated both CHANGELOGs.

## Why

1. **Architectural ownership** — wallet ownership signing is a Money
Movement / neobank-proxy concern, not KYC identity.
2. **Unblocks monorepo build / preview publish** — the ramps→kyc package
dependency caused TS6059 / TS6307 with project references and blocked
`@metamaskbot publish-preview` on core PR #9853.

## Test plan

- [x] `yarn build` (full monorepo, with project references) — exit 0;
kyc-controller and ramps-controller build cleanly
- [x] `yarn workspace @metamask/kyc-controller test` — passing, 100%
coverage
- [x] `yarn workspace @metamask/ramps-controller test:verbose` — 842/842
tests, 18/18 suites (coverage thresholds for pre-existing untested areas
like `autoramp-syncing/controller-integration.ts` are pre-existing on
`neobank-demo`, not introduced here)
- [x] `yarn workspace @metamask/kyc-controller
messenger-action-types:check` — up to date
- [x] `yarn workspace @metamask/ramps-controller
messenger-action-types:check` — up to date
- [x] `yarn eslint packages/kyc-controller/src` — clean
- [ ] Confirm CI build / typecheck / tests are green on this PR before
merge


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
#9859)

## Summary
- `RampsController.resolveAutorampCustomerId()` no longer calls
`KycController:getCustomerIdentity`. Autoramp / Money Account wallet
registration always resolve the MoonPay customer id via Profile Sync
(`AuthenticationController:getSessionProfile`) →
`NeoBankService:getCustomerByExternalId`, preferring
`canonicalProfileId` then `profileId` (same pattern as
`NeoBankService.#getCanonicalExternalId`).
- Removed the local `KycControllerGetCustomerIdentityAction` type, its
`AllowedActions` union entry, index export, and the action from
`RAMPS_CONTROLLER_REQUIRED_CONTROLLER_ACTIONS`.
- Updated createAutoramp / registerMoneyAccountWallet tests and
CHANGELOG Unreleased.

## Residual risk
Iron / MoonPay customers must already be mapped by external id for
`createAutoramp` and `registerMoneyAccountWallet` to succeed. There is
no longer a KYC-session identity shortcut.

## Test plan
- [x] `yarn workspace @metamask/ramps-controller test --coverage=false
--reporters=default` → 18 suites / 843+ tests passed
- [x] Focused createAutoramp / registerMoneyAccountWallet cases pass
- [ ] Host apps: confirm they no longer need to delegate
`KycController:getCustomerIdentity` to the RampsController messenger for
autoramp / wallet registration
- [ ] Manual: autoramp create + Money Account wallet registration with a
profile that has a neo-bank external-id mapping


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
amitabh94 added a commit that referenced this pull request Aug 13, 2026
Keep Profile Sync customer-id changelog wording from #9859 and retain

Co-authored-by: Cursor <cursoragent@cursor.com>
#9853 Unreleased PR links for the umbrella PR check.
## Summary
- Fix eslint/oxfmt issues blocking lint on the neobank-demo stack
(NeoBankService naming, test titles, return types, JSDoc, MethodActions
export)
- Add `#9853` Unreleased changelog PR links for
kyc/ramps/profile-sync/transaction-pay
- Fix transaction-pay jest `resolves` matchers restricted by eslint

## Test plan
- [x] `yarn eslint` on ramps-controller + fixed transaction-pay test
- [x] `yarn lint:misc --check` on touched packages
- [x] `yarn workspace @metamask/ramps-controller
messenger-action-types:check`
- [ ] CI lint jobs on this PR / #9853 after merge


Made with [Cursor](https://cursor.com)

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
@amitabh94

Copy link
Copy Markdown
Contributor

@metamaskbot publish-preview

@cursor cursor Bot left a comment

Copy link
Copy Markdown

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 c6b9443. Configure here.

Comment thread packages/ramps-controller/src/autorampAccount.ts Outdated
…9861)

## Summary

Fixes the three real CI failures on
[#9853](#9853) and resolves the
outstanding Cursor/Bugbot findings.

### CI failures fixed

| Failing check | Root cause | Fix |
| --- | --- | --- |
| `Build (24.x)` | `TS2345`/`TS2739` in `RampsController.addAutoramp` —
the inline union check did not narrow `AutorampAccount` | Extracted an
`isFullAutorampAccount` type guard |
| `Lint (messenger-action-types:check)` |
`TransactionPayController-method-action-types.ts` was stale after a
JSDoc update to `vaultIronPayout` | Regenerated via
`messenger-action-types:generate` |
| `Test (18/20/22.x) (@metamask/ramps-controller)` | Coverage below
thresholds (statements 96.94%, branches 93.50%, functions 97.04%, lines
96.96%) | Added tests; now 100% statements/functions/lines and 98.41%
branches |

### Cursor/Bugbot findings

- **Unsafe timer unref call** (high) — `#ensureUserStatusPolling` called
`.unref()` directly, which throws in React Native/browser where timers
are numbers. Now `unref?.()`.
- **Unguarded status write after reset** (medium) — the
`session_not_in_valid_state` path called `#applyUserStatus` with no
generation check, so a `reset()` mid-flight could force `userStatus:
completed` and publish `statusChanged` on an idle controller. Added the
generation guard.
- **Wrong vendor on customer identity** (medium) — `moonpayCustomerId`
survived a switch to another vendor, so `getCustomerIdentity` could
report a MoonPay id under `iron`. It is now cleared in `initialize`
(non-MoonPay vendor) and `createIronCustomer`.
- **Empty remote fields wipe local** (medium) — the `??` merge
introduced for lint let an empty-string remote
`customerId`/`walletAddress` overwrite valid local values. Restored
explicit non-empty checks in `applyAutorampRemoteStatus` and
`mapNeoBankAutorampToRemoteSnapshot`.

## Notes

- The three defensive guards marked `/* istanbul ignore next */` in
`controller-integration.ts` are unreachable through the public surface
(every caller filters on `isSyncableAutoramp` or a non-empty storage
key). The unused default parameter on the private
`saveAutorampsToUserStorage` was dropped instead.

## Test plan

- [x] `yarn workspace @metamask/ramps-controller run test` — pass,
thresholds met
- [x] `yarn workspace @metamask/kyc-controller run test` — pass, 100%
coverage
- [x] `yarn workspace @metamask/transaction-pay-controller run test` —
pass
- [x] `yarn build` — pass
- [x] `yarn lint:tsc` — pass
- [x] `yarn messenger-action-types:check` — pass
- [x] `eslint` + `oxfmt --check` on all changed files — pass
- [x] `changelog:validate` for the three packages — pass

Made with [Cursor](https://cursor.com)
@amitabh94

Copy link
Copy Markdown
Contributor

@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.6.1-preview-c34a16a37
@metamask-previews/accounts-controller@39.1.0-preview-c34a16a37
@metamask-previews/address-book-controller@7.1.2-preview-c34a16a37
@metamask-previews/ai-controllers@0.8.0-preview-c34a16a37
@metamask-previews/analytics-controller@2.0.0-preview-c34a16a37
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-c34a16a37
@metamask-previews/announcement-controller@8.1.0-preview-c34a16a37
@metamask-previews/app-metadata-controller@2.0.1-preview-c34a16a37
@metamask-previews/approval-controller@9.0.2-preview-c34a16a37
@metamask-previews/assets-controller@13.1.2-preview-c34a16a37
@metamask-previews/assets-controllers@111.1.0-preview-c34a16a37
@metamask-previews/authenticated-user-storage@3.0.1-preview-c34a16a37
@metamask-previews/base-controller@9.1.0-preview-c34a16a37
@metamask-previews/base-data-service@0.1.3-preview-c34a16a37
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-c34a16a37
@metamask-previews/bridge-controller@79.2.0-preview-c34a16a37
@metamask-previews/bridge-status-controller@75.1.0-preview-c34a16a37
@metamask-previews/build-utils@3.0.4-preview-c34a16a37
@metamask-previews/chain-agnostic-permission@1.7.0-preview-c34a16a37
@metamask-previews/chomp-api-service@4.0.0-preview-c34a16a37
@metamask-previews/claims-controller@0.6.0-preview-c34a16a37
@metamask-previews/client-controller@1.0.1-preview-c34a16a37
@metamask-previews/client-utils@2.0.2-preview-c34a16a37
@metamask-previews/compliance-controller@2.1.0-preview-c34a16a37
@metamask-previews/composable-controller@12.0.1-preview-c34a16a37
@metamask-previews/config-registry-controller@2.0.1-preview-c34a16a37
@metamask-previews/connectivity-controller@0.3.0-preview-c34a16a37
@metamask-previews/controller-utils@12.3.0-preview-c34a16a37
@metamask-previews/core-backend@8.1.1-preview-c34a16a37
@metamask-previews/delegation-controller@3.0.2-preview-c34a16a37
@metamask-previews/earn-controller@12.2.4-preview-c34a16a37
@metamask-previews/eip-5792-middleware@3.0.5-preview-c34a16a37
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-c34a16a37
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-c34a16a37
@metamask-previews/ens-controller@19.1.6-preview-c34a16a37
@metamask-previews/eth-block-tracker@15.0.1-preview-c34a16a37
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-c34a16a37
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-c34a16a37
@metamask-previews/foundryup@1.0.1-preview-c34a16a37
@metamask-previews/gas-fee-controller@26.3.1-preview-c34a16a37
@metamask-previews/gator-permissions-controller@5.0.1-preview-c34a16a37
@metamask-previews/geolocation-controller@1.0.0-preview-c34a16a37
@metamask-previews/java-tron-up@1.0.0-preview-c34a16a37
@metamask-previews/json-rpc-engine@10.5.0-preview-c34a16a37
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-c34a16a37
@metamask-previews/keyring-controller@27.1.1-preview-c34a16a37
@metamask-previews/kyc-controller@0.0.0-preview-c34a16a37
@metamask-previews/local-node-utils@1.0.0-preview-c34a16a37
@metamask-previews/logging-controller@9.0.0-preview-c34a16a37
@metamask-previews/message-manager@14.1.2-preview-c34a16a37
@metamask-previews/messenger@2.0.0-preview-c34a16a37
@metamask-previews/messenger-cli@0.2.0-preview-c34a16a37
@metamask-previews/money-account-api-data-service@0.4.0-preview-c34a16a37
@metamask-previews/money-account-balance-service@2.4.1-preview-c34a16a37
@metamask-previews/money-account-controller@1.0.0-preview-c34a16a37
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-c34a16a37
@metamask-previews/money-account-utils@1.1.0-preview-c34a16a37
@metamask-previews/multichain-account-service@13.0.1-preview-c34a16a37
@metamask-previews/multichain-api-middleware@4.0.2-preview-c34a16a37
@metamask-previews/multichain-network-controller@3.2.3-preview-c34a16a37
@metamask-previews/multichain-transactions-controller@7.1.2-preview-c34a16a37
@metamask-previews/name-controller@9.1.2-preview-c34a16a37
@metamask-previews/network-connection-banner-controller@0.1.2-preview-c34a16a37
@metamask-previews/network-controller@35.0.1-preview-c34a16a37
@metamask-previews/network-enablement-controller@6.0.3-preview-c34a16a37
@metamask-previews/notification-services-controller@26.0.1-preview-c34a16a37
@metamask-previews/passkey-controller@3.0.0-preview-c34a16a37
@metamask-previews/permission-controller@13.1.1-preview-c34a16a37
@metamask-previews/permission-log-controller@5.1.0-preview-c34a16a37
@metamask-previews/perps-controller@11.0.0-preview-c34a16a37
@metamask-previews/phishing-controller@17.3.1-preview-c34a16a37
@metamask-previews/platform-api-docs@0.0.0-preview-c34a16a37
@metamask-previews/polling-controller@16.0.9-preview-c34a16a37
@metamask-previews/preferences-controller@23.1.0-preview-c34a16a37
@metamask-previews/profile-metrics-controller@4.0.3-preview-c34a16a37
@metamask-previews/profile-sync-controller@29.0.0-preview-c34a16a37
@metamask-previews/ramps-controller@20.0.0-preview-c34a16a37
@metamask-previews/rate-limit-controller@7.0.1-preview-c34a16a37
@metamask-previews/react-data-query@0.2.2-preview-c34a16a37
@metamask-previews/remote-feature-flag-controller@5.0.0-preview-c34a16a37
@metamask-previews/sample-controllers@5.0.4-preview-c34a16a37
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-c34a16a37
@metamask-previews/selected-network-controller@26.1.6-preview-c34a16a37
@metamask-previews/sentinel-api-service@1.0.0-preview-c34a16a37
@metamask-previews/shield-controller@6.0.0-preview-c34a16a37
@metamask-previews/signature-controller@39.2.9-preview-c34a16a37
@metamask-previews/smart-transactions-controller@25.1.0-preview-c34a16a37
@metamask-previews/snap-account-service@2.1.2-preview-c34a16a37
@metamask-previews/social-controllers@2.7.1-preview-c34a16a37
@metamask-previews/solana-test-validator-up@1.0.0-preview-c34a16a37
@metamask-previews/stellar-quickstart-up@0.0.0-preview-c34a16a37
@metamask-previews/storage-service@1.0.2-preview-c34a16a37
@metamask-previews/subscription-controller@7.0.0-preview-c34a16a37
@metamask-previews/transaction-controller@69.5.2-preview-c34a16a37
@metamask-previews/transaction-pay-controller@26.3.0-preview-c34a16a37
@metamask-previews/user-operation-controller@41.2.8-preview-c34a16a37
@metamask-previews/wallet@10.0.0-preview-c34a16a37
@metamask-previews/wallet-cli@0.0.0-preview-c34a16a37

A single autoramp creation attempt fired the same request four times because
the service policy retried MoonPay's 403 "Customer is not active", which is a
statement about account state and never resolves by re-issuing the request.
Filter retries to 429, 5xx, and non-HTTP errors, matching the existing
chomp-api-service and subscription-controller policies.

Also surface the upstream response body in HttpError. The neobank proxy mirrors
MoonPay's body verbatim and it is usually the only explanation of a 4xx, so
dropping it left failures undiagnosable.

Co-authored-by: Cursor <cursoragent@cursor.com>
amitabh94 added a commit to MetaMask/metamask-mobile that referenced this pull request Aug 13, 2026
## Summary
- Replaces `file:../core/packages/...` linking for
`@metamask/kyc-controller` and `@metamask/ramps-controller` with
published MetaMask core preview packages so the `demo/vba-kyc` branch
can be shared without a sibling core build.
- Pins from MetaMask/core#9853 preview publish (`-preview-c34a16a37`),
comment:
MetaMask/core#9853 (comment)

### Exact version pins
| Package | Version |
| --- | --- |
| `@metamask/kyc-controller` |
`npm:@metamask-previews/kyc-controller@0.0.0-preview-c34a16a37` |
| `@metamask/ramps-controller` |
`npm:@metamask-previews/ramps-controller@20.0.0-preview-c34a16a37` |

Updated in both `dependencies` and `resolutions`.

**Note:** Re-bump these pins when a new `@metamaskbot publish-preview`
lands on core#9853 (or a follow-up PR).

## Test plan
- [ ] `yarn install` resolves the preview packages (no `file:../core`
links)
- [ ] `yarn start:ios` (run `yarn pod:install` if native deps need
refresh)
- [ ] Smoke NeoBank / VBA KYC entry and Money Account wallet
registration flows that depend on these controllers


Made with [Cursor](https://cursor.com)

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

6 participants