From ba1e4135142424fb02b8d417a4072f3cefe63e08 Mon Sep 17 00:00:00 2001 From: Hugo Dutka Date: Tue, 24 Feb 2026 19:04:49 +0100 Subject: [PATCH] fix(slack): implement snippets upload --- bun.lock | 2 +- packages/slack/package.json | 2 +- packages/slack/src/tools.ts | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/bun.lock b/bun.lock index e7d19d2..f9003b0 100644 --- a/bun.lock +++ b/bun.lock @@ -388,7 +388,7 @@ }, "packages/slack": { "name": "@blink-sdk/slack", - "version": "1.1.3", + "version": "1.1.4", "devDependencies": { "@ai-sdk/provider": "^2.0.0", "@slack/types": "^2.17.0", diff --git a/packages/slack/package.json b/packages/slack/package.json index eb05b10..3ff4b2e 100644 --- a/packages/slack/package.json +++ b/packages/slack/package.json @@ -1,6 +1,6 @@ { "name": "@blink-sdk/slack", - "version": "1.1.3", + "version": "1.1.4", "author": { "name": "Coder", "email": "support@blink.so", diff --git a/packages/slack/src/tools.ts b/packages/slack/src/tools.ts index e50b1a2..c49c68b 100644 --- a/packages/slack/src/tools.ts +++ b/packages/slack/src/tools.ts @@ -158,15 +158,45 @@ ${formattingRules}` if (!res.ok) { throw new Error(`Failed to send message: ${res.error}`); } + + const snippetErrors: Array<{ name: string; error: string }> = []; + if (args.text_snippets.length > 0) { + const threadTs = args.ts ?? res.ts; + for (const snippet of args.text_snippets) { + try { + await client.files.uploadV2({ + channel_id: args.channel, + thread_ts: threadTs, + content: snippet.content, + filename: snippet.name, + title: snippet.name, + snippet_type: + snippet.type === "text" ? undefined : snippet.type, + } as Parameters[0]); + } catch (err) { + snippetErrors.push({ + name: snippet.name, + error: err instanceof Error ? err.message : String(err), + }); + } + } + } + if (truncated) { return { success: true, truncated: true, message: `Your message was truncated from ${originalLength} to 3000 characters due to Slack's message limit. The last 100 characters sent were: "${text.slice(-100)}". Send a follow-up message to continue where you left off.`, + ...(snippetErrors.length > 0 + ? { snippet_errors: snippetErrors } + : {}), }; } return { success: true, + ...(snippetErrors.length > 0 + ? { snippet_errors: snippetErrors } + : {}), }; }, }),