Use CommandExecuted.
The same emitter under the old binding name, so a template still binding (commandExecuted) keeps working. Must stay AFTER CommandExecuted: class fields initialise in order, and the other way round this captures undefined.
Use Commands.
Use Disabled.
Use IsConversationOwner.
Use IsLastMessage.
Use IsVisible.
Check if component should be visible
Recipients to show BESIDE a compose:email button, or null for any other command.
SECURITY, not decoration. The button renders only the agent-authored label, so without this
the user cannot see who a draft is addressed to until their mail client is already open and
populated. An agent influenced by injected content in retrieved material could pair a benign
label ("Open draft in Mail") with an attacker's address and the conversation's context as the
body; showing the address is what lets the user notice before they send from their real
mailbox. Empty recipients read as "no recipient" rather than rendering nothing, so an address
the agent never supplied cannot be mistaken for one it did.
Use GetButtonVariant.
Get button variant based on command type
Component for displaying actionable command buttons These are actions the user can trigger after an agent completes a task