Conversation
|
No dependency changes detected. Learn more about Socket for GitHub. 👍 No dependency changes detected in pull request |
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.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3903 +/- ##
=======================================
Coverage 98.55% 98.56%
=======================================
Files 425 425
Lines 12358 12381 +23
Branches 1935 1938 +3
=======================================
+ Hits 12180 12203 +23
Misses 178 178 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| endowmentGetter: (_getterOptions?: EndowmentGetterParams) => null, | ||
| validator: createGenericPermissionValidator([ | ||
| { type: SnapCaveatType.KeyringOrigin }, | ||
| { type: SnapCaveatType.KeyringCapabilities, optional: true }, |
There was a problem hiding this comment.
Did we decide on behaviour if this is not defined? Since we are making it optional
| ), | ||
| }); | ||
|
|
||
| export const KeyringCapabilitiesStruct = object({ |
There was a problem hiding this comment.
Perhaps this would fit better in a new file? keyring.ts or something?
| ### Added | ||
|
|
||
| - Add `capabilities` caveat support to `endowment:keyring` ([#3903](https://github.com/MetaMask/snaps/pull/3903)) | ||
| - Snap manifests can now declare a `capabilities` object under `endowment:keyring` the capabilities supported by the keyring. |
There was a problem hiding this comment.
| - Snap manifests can now declare a `capabilities` object under `endowment:keyring` the capabilities supported by the keyring. | |
| - Snap manifests can now declare a `capabilities` object under `endowment:keyring` describing the capabilities supported by the keyring. |
| }, | ||
| ], | ||
| }; | ||
| const input = value as KeyringCaveatMapperInput; |
There was a problem hiding this comment.
Why do we need this cast? Which then forces us to cast back to Json later?
Perhaps we could follow the pattern from https://github.com/MetaMask/snaps/blob/main/packages/snaps-rpc-methods/src/endowments/protocol.ts#L78-L95

Adding capabilities to the keyring endowment as part of keyring v2 work (https://github.com/MetaMask/decisions/blob/main/decisions/core/0006-keyring-interface.md)
Note
Medium Risk
Expands the
endowment:keyringpermission/manifest surface with a new validated caveat, which could impact permission granting/validation and downstream keyring behavior if mis-specified or inconsistently interpreted.Overview
Adds optional
capabilitiessupport to theendowment:keyringpermission by introducing a newkeyringCapabilitiescaveat, updating the endowment specification/mapper, and exportinggetKeyringCaveatCapabilitiesto read it from permissions.Updates
@metamask/snaps-utilsto includeSnapCaveatType.KeyringCapabilitiesplus a newKeyringCapabilitiesStruct/assertIsKeyringCapabilities, and extends manifest validation and SDKInitialPermissionstypings to accept acapabilitiesobject underendowment:keyring. Tests and snapshots are updated accordingly (plus minor coverage threshold bump).Written by Cursor Bugbot for commit 5f1946d. This will update automatically on new commits. Configure here.