@robinpath/slack
Advanced tools
+38
-7
| { | ||
| "name": "@robinpath/slack", | ||
| "version": "0.1.0", | ||
| "publishConfig": { "access": "public" }, | ||
| "version": "0.1.1", | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "type": "module", | ||
| "main": "dist/index.js", | ||
| "types": "dist/index.d.ts", | ||
| "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } }, | ||
| "files": ["dist"], | ||
| "scripts": { "build": "tsc" }, | ||
| "peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" }, | ||
| "devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" } | ||
| "exports": { | ||
| ".": { | ||
| "import": "./dist/index.js", | ||
| "types": "./dist/index.d.ts" | ||
| } | ||
| }, | ||
| "files": [ | ||
| "dist" | ||
| ], | ||
| "scripts": { | ||
| "build": "tsc" | ||
| }, | ||
| "peerDependencies": { | ||
| "@robinpath/core": ">=0.20.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@robinpath/core": "^0.30.1", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "description": "Slack Web API and Incoming Webhooks client for messaging, channels, reactions, file uploads, and user management", | ||
| "keywords": [ | ||
| "slack", | ||
| "messaging", | ||
| "api", | ||
| "webhook" | ||
| ], | ||
| "license": "MIT", | ||
| "robinpath": { | ||
| "category": "messaging", | ||
| "type": "integration", | ||
| "auth": "bearer-token", | ||
| "functionCount": 12, | ||
| "baseUrl": "https://slack.com" | ||
| } | ||
| } |
| import type { ModuleAdapter } from "@wiredwp/robinpath"; | ||
| declare const SlackModule: ModuleAdapter; | ||
| export default SlackModule; | ||
| export { SlackModule }; | ||
| export { SlackFunctions, SlackFunctionMetadata, SlackModuleMetadata } from "./slack.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,WAAW,EAAE,aAMlB,CAAC;AAEF,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"} |
| import { SlackFunctions, SlackFunctionMetadata, SlackModuleMetadata } from "./slack.js"; | ||
| const SlackModule = { | ||
| name: "slack", | ||
| functions: SlackFunctions, | ||
| functionMetadata: SlackFunctionMetadata, | ||
| moduleMetadata: SlackModuleMetadata, | ||
| global: false, | ||
| }; // as ModuleAdapter | ||
| export default SlackModule; | ||
| export { SlackModule }; | ||
| export { SlackFunctions, SlackFunctionMetadata, SlackModuleMetadata } from "./slack.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAExF,MAAM,WAAW,GAAkB;IACjC,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,cAAc;IACzB,gBAAgB,EAAE,qBAA4B;IAC9C,cAAc,EAAE,mBAA0B;IAC1C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"} |
-165
| import type { BuiltinHandler } from "@wiredwp/robinpath"; | ||
| export declare const SlackFunctions: Record<string, BuiltinHandler>; | ||
| export declare const SlackFunctionMetadata: { | ||
| setToken: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| send: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| sendWebhook: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| reply: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| react: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| upload: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| listChannels: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| getHistory: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| setStatus: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| userInfo: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| createChannel: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| updateMessage: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| }; | ||
| export declare const SlackModuleMetadata: { | ||
| description: string; | ||
| methods: string[]; | ||
| }; | ||
| //# sourceMappingURL=slack.d.ts.map |
| {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAoC,MAAM,oBAAoB,CAAC;AAyW3F,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAazD,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2IjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;CAgB/B,CAAC"} |
-455
| import { readFileSync, statSync } from "node:fs"; | ||
| import { basename } from "node:path"; | ||
| const workspaces = new Map(); | ||
| // ── Helper ────────────────────────────────────────────────────────── | ||
| async function callSlackApi(workspaceId, method, body) { | ||
| const config = workspaces.get(workspaceId); | ||
| if (!config) { | ||
| throw new Error(`Workspace "${workspaceId}" not configured. Call slack.setToken first.`); | ||
| } | ||
| const response = await fetch(`https://slack.com/api/${method}`, { | ||
| method: "POST", | ||
| headers: { | ||
| Authorization: `Bearer ${config.token}`, | ||
| "Content-Type": "application/json", | ||
| }, | ||
| body: JSON.stringify(body), | ||
| }); | ||
| const result = (await response.json()); | ||
| if (!result.ok) { | ||
| throw new Error(`Slack API ${method} failed: ${String(result.error ?? "unknown_error")}`); | ||
| } | ||
| return result; | ||
| } | ||
| // ── Function Handlers ─────────────────────────────────────────────── | ||
| const setToken = (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const token = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!token) | ||
| throw new Error("Token is required"); | ||
| workspaces.set(workspaceId, { | ||
| token, | ||
| defaultChannel: String(opts.defaultChannel ?? "general"), | ||
| }); | ||
| return { workspaceId, defaultChannel: opts.defaultChannel ?? "general" }; | ||
| }; | ||
| const send = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const text = String(args[2] ?? ""); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| if (!channel) { | ||
| const config = workspaces.get(workspaceId); | ||
| if (!config) | ||
| throw new Error("Channel is required"); | ||
| } | ||
| const body = { | ||
| channel: channel || workspaces.get(workspaceId)?.defaultChannel || "general", | ||
| text, | ||
| }; | ||
| if (opts.blocks) | ||
| body.blocks = opts.blocks; | ||
| if (opts.unfurlLinks !== undefined) | ||
| body.unfurl_links = Boolean(opts.unfurlLinks); | ||
| if (opts.threadTs) | ||
| body.thread_ts = String(opts.threadTs); | ||
| const result = (await callSlackApi(workspaceId, "chat.postMessage", body)); | ||
| return { ts: result.ts, channel: result.channel }; | ||
| }; | ||
| const sendWebhook = async (args) => { | ||
| const webhookUrl = String(args[0] ?? ""); | ||
| const text = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!webhookUrl) | ||
| throw new Error("Webhook URL is required"); | ||
| const body = { text }; | ||
| if (opts.username) | ||
| body.username = String(opts.username); | ||
| if (opts.iconEmoji) | ||
| body.icon_emoji = String(opts.iconEmoji); | ||
| if (opts.blocks) | ||
| body.blocks = opts.blocks; | ||
| if (opts.attachments) | ||
| body.attachments = opts.attachments; | ||
| const response = await fetch(webhookUrl, { | ||
| method: "POST", | ||
| headers: { "Content-Type": "application/json" }, | ||
| body: JSON.stringify(body), | ||
| }); | ||
| if (!response.ok) { | ||
| const errText = await response.text(); | ||
| throw new Error(`Webhook request failed (${response.status}): ${errText}`); | ||
| } | ||
| return { ok: true, status: response.status }; | ||
| }; | ||
| const reply = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const threadTs = String(args[2] ?? ""); | ||
| const text = String(args[3] ?? ""); | ||
| const opts = (typeof args[4] === "object" && args[4] !== null ? args[4] : {}); | ||
| if (!channel) | ||
| throw new Error("Channel is required"); | ||
| if (!threadTs) | ||
| throw new Error("Thread timestamp (threadTs) is required"); | ||
| const body = { | ||
| channel, | ||
| text, | ||
| thread_ts: threadTs, | ||
| }; | ||
| if (opts.blocks) | ||
| body.blocks = opts.blocks; | ||
| if (opts.unfurlLinks !== undefined) | ||
| body.unfurl_links = Boolean(opts.unfurlLinks); | ||
| const result = (await callSlackApi(workspaceId, "chat.postMessage", body)); | ||
| return { ts: result.ts, channel: result.channel }; | ||
| }; | ||
| const react = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const timestamp = String(args[2] ?? ""); | ||
| const emoji = String(args[3] ?? ""); | ||
| if (!channel) | ||
| throw new Error("Channel is required"); | ||
| if (!timestamp) | ||
| throw new Error("Message timestamp is required"); | ||
| if (!emoji) | ||
| throw new Error("Emoji name is required"); | ||
| // Strip colons if provided (e.g. ":thumbsup:" -> "thumbsup") | ||
| const emojiName = emoji.replace(/^:|:$/g, ""); | ||
| await callSlackApi(workspaceId, "reactions.add", { | ||
| channel, | ||
| timestamp, | ||
| name: emojiName, | ||
| }); | ||
| return { ok: true, channel, timestamp, emoji: emojiName }; | ||
| }; | ||
| const upload = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const filePath = String(args[2] ?? ""); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| if (!channel) | ||
| throw new Error("Channel is required"); | ||
| if (!filePath) | ||
| throw new Error("File path is required"); | ||
| const config = workspaces.get(workspaceId); | ||
| if (!config) { | ||
| throw new Error(`Workspace "${workspaceId}" not configured. Call slack.setToken first.`); | ||
| } | ||
| // Read file | ||
| const fileData = readFileSync(filePath); | ||
| const fileName = opts.title ? String(opts.title) : basename(filePath); | ||
| const fileSize = statSync(filePath).size; | ||
| // Step 1: Get upload URL | ||
| const uploadUrlResult = (await callSlackApi(workspaceId, "files.getUploadURLExternal", { | ||
| filename: fileName, | ||
| length: fileSize, | ||
| })); | ||
| const uploadUrl = String(uploadUrlResult.upload_url); | ||
| const fileId = String(uploadUrlResult.file_id); | ||
| // Step 2: PUT file data to the upload URL | ||
| const putResponse = await fetch(uploadUrl, { | ||
| method: "PUT", | ||
| headers: { "Content-Type": "application/octet-stream" }, | ||
| body: fileData, | ||
| }); | ||
| if (!putResponse.ok) { | ||
| throw new Error(`File upload PUT failed (${putResponse.status}): ${await putResponse.text()}`); | ||
| } | ||
| // Step 3: Complete the upload | ||
| const completeBody = { | ||
| files: [{ id: fileId, title: fileName }], | ||
| channel_id: channel, | ||
| }; | ||
| if (opts.initialComment) { | ||
| completeBody.initial_comment = String(opts.initialComment); | ||
| } | ||
| const completeResult = (await callSlackApi(workspaceId, "files.completeUploadExternal", completeBody)); | ||
| return { | ||
| ok: true, | ||
| fileId, | ||
| files: completeResult.files, | ||
| }; | ||
| }; | ||
| const listChannels = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| const body = { | ||
| limit: Number(opts.limit ?? 200), | ||
| }; | ||
| if (opts.types) | ||
| body.types = String(opts.types); // e.g. "public_channel,private_channel" | ||
| const result = (await callSlackApi(workspaceId, "conversations.list", body)); | ||
| const channels = result.channels ?? []; | ||
| return channels.map((ch) => ({ | ||
| id: ch.id, | ||
| name: ch.name, | ||
| topic: ch.topic?.value ?? "", | ||
| })); | ||
| }; | ||
| const getHistory = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!channel) | ||
| throw new Error("Channel is required"); | ||
| const body = { | ||
| channel, | ||
| limit: Number(opts.limit ?? 20), | ||
| }; | ||
| if (opts.oldest) | ||
| body.oldest = String(opts.oldest); | ||
| if (opts.latest) | ||
| body.latest = String(opts.latest); | ||
| const result = (await callSlackApi(workspaceId, "conversations.history", body)); | ||
| return result.messages ?? []; | ||
| }; | ||
| const setStatus = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const text = String(args[1] ?? ""); | ||
| const emoji = String(args[2] ?? ""); | ||
| const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {}); | ||
| const profile = { | ||
| status_text: text, | ||
| status_emoji: emoji, | ||
| }; | ||
| if (opts.expiration) { | ||
| profile.status_expiration = Number(opts.expiration); | ||
| } | ||
| const result = (await callSlackApi(workspaceId, "users.profile.set", { | ||
| profile, | ||
| })); | ||
| return { ok: true, profile: result.profile }; | ||
| }; | ||
| const userInfo = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const userId = String(args[1] ?? ""); | ||
| if (!userId) | ||
| throw new Error("User ID is required"); | ||
| const result = (await callSlackApi(workspaceId, "users.info", { | ||
| user: userId, | ||
| })); | ||
| const user = result.user; | ||
| const profile = (user.profile ?? {}); | ||
| return { | ||
| id: user.id, | ||
| name: user.name, | ||
| real_name: user.real_name, | ||
| email: profile.email ?? null, | ||
| is_admin: user.is_admin ?? false, | ||
| }; | ||
| }; | ||
| const createChannel = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const name = String(args[1] ?? ""); | ||
| const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {}); | ||
| if (!name) | ||
| throw new Error("Channel name is required"); | ||
| const body = { | ||
| name, | ||
| }; | ||
| if (opts.isPrivate) | ||
| body.is_private = true; | ||
| const result = (await callSlackApi(workspaceId, "conversations.create", body)); | ||
| const channel = result.channel; | ||
| return { | ||
| id: channel.id, | ||
| name: channel.name, | ||
| is_private: channel.is_private ?? false, | ||
| }; | ||
| }; | ||
| const updateMessage = async (args) => { | ||
| const workspaceId = String(args[0] ?? "default"); | ||
| const channel = String(args[1] ?? ""); | ||
| const ts = String(args[2] ?? ""); | ||
| const text = String(args[3] ?? ""); | ||
| const opts = (typeof args[4] === "object" && args[4] !== null ? args[4] : {}); | ||
| if (!channel) | ||
| throw new Error("Channel is required"); | ||
| if (!ts) | ||
| throw new Error("Message timestamp (ts) is required"); | ||
| const body = { | ||
| channel, | ||
| ts, | ||
| text, | ||
| }; | ||
| if (opts.blocks) | ||
| body.blocks = opts.blocks; | ||
| const result = (await callSlackApi(workspaceId, "chat.update", body)); | ||
| return { ts: result.ts, channel: result.channel, text: result.text }; | ||
| }; | ||
| // ── Exports ───────────────────────────────────────────────────────── | ||
| export const SlackFunctions = { | ||
| setToken, | ||
| send, | ||
| sendWebhook, | ||
| reply, | ||
| react, | ||
| upload, | ||
| listChannels, | ||
| getHistory, | ||
| setStatus, | ||
| userInfo, | ||
| createChannel, | ||
| updateMessage, | ||
| }; | ||
| export const SlackFunctionMetadata = { | ||
| setToken: { | ||
| description: "Store a Slack Bot User OAuth Token for a workspace", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier (e.g. 'default')", formInputType: "text", required: true }, | ||
| { name: "token", dataType: "string", description: "Bot User OAuth Token (xoxb-...)", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{defaultChannel?: string}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{workspaceId, defaultChannel}", | ||
| example: 'slack.setToken "default" "xoxb-your-token" {"defaultChannel": "general"}', | ||
| }, | ||
| send: { | ||
| description: "Send a message to a Slack channel via chat.postMessage", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID or name", formInputType: "text", required: true }, | ||
| { name: "text", dataType: "string", description: "Message text", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{blocks?, unfurlLinks?, threadTs?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ts, channel}", | ||
| example: 'slack.send "default" "#general" "Hello from RobinPath!"', | ||
| }, | ||
| sendWebhook: { | ||
| description: "Send a message via a Slack Incoming Webhook URL (no token needed)", | ||
| parameters: [ | ||
| { name: "webhookUrl", dataType: "string", description: "Incoming Webhook URL", formInputType: "text", required: true }, | ||
| { name: "text", dataType: "string", description: "Message text", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{username?, iconEmoji?, blocks?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ok, status}", | ||
| example: 'slack.sendWebhook "https://hooks.slack.com/services/T.../B.../xxx" "Deploy complete!"', | ||
| }, | ||
| reply: { | ||
| description: "Reply to a message thread via chat.postMessage with thread_ts", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID", formInputType: "text", required: true }, | ||
| { name: "threadTs", dataType: "string", description: "Parent message timestamp", formInputType: "text", required: true }, | ||
| { name: "text", dataType: "string", description: "Reply text", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{blocks?, unfurlLinks?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ts, channel}", | ||
| example: 'slack.reply "default" "C01234" "1234567890.123456" "Got it, thanks!"', | ||
| }, | ||
| react: { | ||
| description: "Add an emoji reaction to a message via reactions.add", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID", formInputType: "text", required: true }, | ||
| { name: "timestamp", dataType: "string", description: "Message timestamp", formInputType: "text", required: true }, | ||
| { name: "emoji", dataType: "string", description: "Emoji name (e.g. 'thumbsup' or ':thumbsup:')", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ok, channel, timestamp, emoji}", | ||
| example: 'slack.react "default" "C01234" "1234567890.123456" "thumbsup"', | ||
| }, | ||
| upload: { | ||
| description: "Upload a file to a Slack channel using the new file upload API", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID to share the file in", formInputType: "text", required: true }, | ||
| { name: "filePath", dataType: "string", description: "Local path to the file", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{title?, initialComment?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ok, fileId, files}", | ||
| example: 'slack.upload "default" "C01234" "./report.pdf" {"title": "Report", "initialComment": "Here is the report"}', | ||
| }, | ||
| listChannels: { | ||
| description: "List Slack channels via conversations.list", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{types?, limit?}. types: 'public_channel,private_channel'", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "array", | ||
| returnDescription: "Array of {id, name, topic}", | ||
| example: 'slack.listChannels "default" {"limit": 50}', | ||
| }, | ||
| getHistory: { | ||
| description: "Get message history for a channel via conversations.history", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{limit?, oldest?, latest?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "array", | ||
| returnDescription: "Array of message objects", | ||
| example: 'slack.getHistory "default" "C01234" {"limit": 10}', | ||
| }, | ||
| setStatus: { | ||
| description: "Set the authenticated user's status via users.profile.set", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "text", dataType: "string", description: "Status text", formInputType: "text", required: true }, | ||
| { name: "emoji", dataType: "string", description: "Status emoji (e.g. ':house_with_garden:')", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{expiration?: number} — Unix timestamp when status expires", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ok, profile}", | ||
| example: 'slack.setStatus "default" "Working from home" ":house_with_garden:"', | ||
| }, | ||
| userInfo: { | ||
| description: "Get user information via users.info", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "userId", dataType: "string", description: "Slack user ID (e.g. 'U01234')", formInputType: "text", required: true }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{id, name, real_name, email, is_admin}", | ||
| example: 'slack.userInfo "default" "U01234ABC"', | ||
| }, | ||
| createChannel: { | ||
| description: "Create a new Slack channel via conversations.create", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "name", dataType: "string", description: "Channel name (lowercase, no spaces)", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{isPrivate?: boolean}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{id, name, is_private}", | ||
| example: 'slack.createChannel "default" "project-updates" {"isPrivate": true}', | ||
| }, | ||
| updateMessage: { | ||
| description: "Update an existing message via chat.update", | ||
| parameters: [ | ||
| { name: "workspaceId", dataType: "string", description: "Workspace identifier", formInputType: "text", required: true }, | ||
| { name: "channel", dataType: "string", description: "Channel ID", formInputType: "text", required: true }, | ||
| { name: "ts", dataType: "string", description: "Timestamp of the message to update", formInputType: "text", required: true }, | ||
| { name: "text", dataType: "string", description: "New message text", formInputType: "text", required: true }, | ||
| { name: "options", dataType: "object", description: "{blocks?}", formInputType: "text", required: false }, | ||
| ], | ||
| returnType: "object", | ||
| returnDescription: "{ts, channel, text}", | ||
| example: 'slack.updateMessage "default" "C01234" "1234567890.123456" "Updated message text"', | ||
| }, | ||
| }; | ||
| export const SlackModuleMetadata = { | ||
| description: "Slack Web API and Incoming Webhooks client for messaging, channels, reactions, file uploads, and user management", | ||
| methods: [ | ||
| "setToken", | ||
| "send", | ||
| "sendWebhook", | ||
| "reply", | ||
| "react", | ||
| "upload", | ||
| "listChannels", | ||
| "getHistory", | ||
| "setStatus", | ||
| "userInfo", | ||
| "createChannel", | ||
| "updateMessage", | ||
| ], | ||
| }; | ||
| //# sourceMappingURL=slack.js.map |
| {"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"} |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Network access
Supply chain riskThis module accesses the network.
No License Found
LicenseLicense information could not be found.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
0
-100%1
-50%2
-33.33%4753
-90.55%2
-80%0
-100%