Conversation
Subscribe to autoramp-activity.v1 and emit eventReceived so clients can refresh authoritative NeoBank state. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep Autoramp messenger dependency unions package-internal so lint matches Core controller guidelines. Co-authored-by: Cursor <cursoragent@cursor.com>
Subscribe to ramps-activity.v1 so Core matches the Gateway channel for all ramps lifecycle signals. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ 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 4d369a6. Configure here.
| } catch (error) { | ||
| log('Unable to subscribe to ramps activity', { error }); | ||
| } | ||
| } |
There was a problem hiding this comment.
Concurrent subscribe can duplicate channels
Medium Severity
#subscribeToCurrentProfile and #replaceSubscription can run at the same time on init, sign-in, or unlock. BackendWebSocketService:connect publishes connectionStateChanged before it resolves, and the messenger does not wait for that handler. Both in-flight calls can pass channelHasSubscription and create two server subscriptions, so RampsActivityService:eventReceived fires twice for the rest of the session.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 4d369a6. Configure here.
|
@metamaskbot publish-previews |
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
Co-authored-by: Cursor <cursoragent@cursor.com>
|
@metamaskbot publish-previews |
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
|
Mobile consumer PR: MetaMask/metamask-mobile#36526 (uses |


Explanation
Adds
RampsActivityServiceto@metamask/core-backendas the shared Mobile/Extension adapter for Gateway ramps lifecycle signals.The service:
ramps-activity.v1.<profileId>throughBackendWebSocketServiceAuthenticationController:getSessionProfileRampsActivityService:eventReceivedRampsControllerremains the domain owner and treats these events as refresh signals; GET remains authoritative. Keeping socket lifecycle incore-backendavoids duplicating reconnect/profile logic in Mobile and Extension.References
Testing
yarn workspace @metamask/core-backend run jest --no-coverage src/ws/RampsActivityService.test.ts— 35 passedyarn workspace @metamask/core-backend run test— passed;RampsActivityServiceat 100% statements/branches/functions/linesyarn workspace @metamask/core-backend run build— passedyarn workspace @metamask/core-backend run changelog:validate— passedyarn lint— passed under Node 22.15.1The monorepo-wide
yarn buildreaches an unrelated existing error inMultichainAccountWallet.ts(in-progress:delete-accounts); the changed package builds successfully.Made with Cursor