From 3b6652dcd803c29f4408d8c0fb49c91d7109bda4 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 15 Mar 2026 18:50:30 -0700 Subject: [PATCH] Slack: map shared interactive sends in SDK actions --- src/plugin-sdk/slack-message-actions.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugin-sdk/slack-message-actions.ts b/src/plugin-sdk/slack-message-actions.ts index 5470be86df1..93e61944793 100644 --- a/src/plugin-sdk/slack-message-actions.ts +++ b/src/plugin-sdk/slack-message-actions.ts @@ -1,7 +1,9 @@ import type { AgentToolResult } from "@mariozechner/pi-agent-core"; import { parseSlackBlocksInput } from "../../extensions/slack/src/blocks-input.js"; +import { buildSlackInteractiveBlocks } from "../../extensions/slack/src/shared-interactive.js"; import { readNumberParam, readStringParam } from "../agents/tools/common.js"; import type { ChannelMessageActionContext } from "../channels/plugins/types.js"; +import { normalizeInteractiveReply } from "../interactive/payload.js"; type SlackActionInvoke = ( action: Record, @@ -37,7 +39,9 @@ export async function handleSlackMessageAction(params: { allowEmpty: true, }); const mediaUrl = readStringParam(actionParams, "media", { trim: false }); - const blocks = readSlackBlocksParam(actionParams); + const blocks = + readSlackBlocksParam(actionParams) ?? + buildSlackInteractiveBlocks(normalizeInteractiveReply(actionParams.interactive)); if (!content && !mediaUrl && !blocks) { throw new Error("Slack send requires message, blocks, or media."); }