* feat(discord): add exec approval forwarding to DMs Add support for forwarding exec approval requests to Discord DMs, allowing users to approve/deny command execution via interactive buttons. Features: - New DiscordExecApprovalHandler that connects to gateway and listens for exec.approval.requested/resolved events - Sends DMs with embeds showing command details and 3 buttons: Allow once, Always allow, Deny - Configurable via channels.discord.execApprovals with: - enabled: boolean - approvers: Discord user IDs to notify - agentFilter: only forward for specific agents - sessionFilter: only forward for matching session patterns - Updates message embed when approval is resolved or expires Also fixes exec completion routing: when async exec completes after approval, the heartbeat now uses a specialized prompt to ensure the model relays the result to the user instead of responding HEARTBEAT_OK. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: generic exec approvals forwarding (#1621) (thanks @czekaj) --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
export type ExecApprovalForwardingMode = "session" | "targets" | "both";
|
|
|
|
export type ExecApprovalForwardTarget = {
|
|
/** Channel id (e.g. "discord", "slack", or plugin channel id). */
|
|
channel: string;
|
|
/** Destination id (channel id, user id, etc. depending on channel). */
|
|
to: string;
|
|
/** Optional account id for multi-account channels. */
|
|
accountId?: string;
|
|
/** Optional thread id to reply inside a thread. */
|
|
threadId?: string | number;
|
|
};
|
|
|
|
export type ExecApprovalForwardingConfig = {
|
|
/** Enable forwarding exec approvals to chat channels. Default: false. */
|
|
enabled?: boolean;
|
|
/** Delivery mode (session=origin chat, targets=config targets, both=both). Default: session. */
|
|
mode?: ExecApprovalForwardingMode;
|
|
/** Only forward approvals for these agent IDs. Omit = all agents. */
|
|
agentFilter?: string[];
|
|
/** Only forward approvals matching these session key patterns (substring or regex). */
|
|
sessionFilter?: string[];
|
|
/** Explicit delivery targets (used when mode includes targets). */
|
|
targets?: ExecApprovalForwardTarget[];
|
|
};
|
|
|
|
export type ApprovalsConfig = {
|
|
exec?: ExecApprovalForwardingConfig;
|
|
};
|