Slack: validate runtime blocks in send and edit paths

This commit is contained in:
Colin
2026-02-16 13:04:42 -05:00
committed by Peter Steinberger
parent c01c6b7079
commit 6e790303df
5 changed files with 126 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ import { resolveMarkdownTableMode } from "../config/markdown-tables.js";
import { logVerbose } from "../globals.js";
import { loadWebMedia } from "../web/media.js";
import { resolveSlackAccount } from "./accounts.js";
import { validateSlackBlocksArray } from "./blocks-input.js";
import { createSlackWebClient } from "./client.js";
import { markdownToSlackMrkdwnChunks } from "./format.js";
import { parseSlackTarget } from "./targets.js";
@@ -222,7 +223,7 @@ export async function sendMessageSlack(
opts: SlackSendOpts = {},
): Promise<SlackSendResult> {
const trimmedMessage = message?.trim() ?? "";
const blocks = opts.blocks?.length ? opts.blocks : undefined;
const blocks = opts.blocks == null ? undefined : validateSlackBlocksArray(opts.blocks);
if (!trimmedMessage && !opts.mediaUrl && !blocks) {
throw new Error("Slack send requires text, blocks, or media");
}