Build the scopes for a new request so it extends the owner's live grant for this app rather than replacing it.
Gateway, owner, app identity, requested and removed scopes.
The merged scopes, the breakdown, and whether a live grant existed.
const union = await mergeWithLiveGrant({ gateway: createGatewayClient("https://dp-rpc.vana.org"), owner: "0xOwner...", appAddress: controller.appAddress, scopes: ["whoop.recovery"], removeScopes: ["oura.sleep"],});// union.scopes: live scopes minus oura.sleep, plus whoop.recovery Copy
const union = await mergeWithLiveGrant({ gateway: createGatewayClient("https://dp-rpc.vana.org"), owner: "0xOwner...", appAddress: controller.appAddress, scopes: ["whoop.recovery"], removeScopes: ["oura.sleep"],});// union.scopes: live scopes minus oura.sleep, plus whoop.recovery
When an entry is both requested and removed, or the app identity cannot be resolved from the input.
Build the scopes for a new request so it extends the owner's live grant for this app rather than replacing it.