UNPKG

@chinchillaenterprises/mcp-slack

Version:

MCP server for Slack. Single account loaded from env (SLACK_BOT_TOKEN); multi-workspace via separate server entries.

163 lines 5.61 kB
#!/usr/bin/env node /** * Compact result formatter. Default (lean) form is single-line / minimal — NO * pretty-print — so it doesn't bloat the context window. Pass { verbose: true } for * the fuller, indented form when a human actually needs to read every field. * * Accepts an already-prepared `data` value. Callers are expected to have already * trimmed to the fields that matter for the lean case (see the READ tools), but this * function is also safe to hand a full object for the verbose path. */ export declare function leanResult(data: unknown, opts?: { verbose?: boolean; }): string; export declare function isFlatObject(v: unknown): v is Record<string, unknown>; interface RenderTableColumn { key: string; label?: string; align?: "left" | "right"; maxWidth?: number; } /** * Render tabular data as a clean, column-aligned monospace ASCII table using * box-drawing characters. The output is meant to be dropped inside a Slack code * block (```) so it renders with a fixed-width font and column alignment survives. * * Accepts any of: * - array of flat objects → columns inferred from keys (or pass `columns`) * - 2D array (string[][]) → first row treated as header * - a markdown table string (| a | b |\n|---|---|\n| 1 | 2 |) * * Long cells are truncated with an ellipsis past a per-column max width (default 40). * Numeric-looking columns are right-aligned automatically unless overridden. */ export declare function renderTable(rows: Record<string, unknown>[] | unknown[][] | string, columns?: RenderTableColumn[]): string; export declare function cellToString(v: unknown): string; export declare function parseMarkdownTable(md: string): { headers: string[]; body: string[][]; }; /** * Render a unicode progress bar, e.g. renderProgressBar(40) => "▰▰▰▰▱▱▱▱▱▱ 40%". */ export declare function renderProgressBar(pct: number, width?: number): string; interface CardSection { text?: string; fields?: { label?: string; value: string; }[]; } interface BuildCardOpts { header: string; sections?: CardSection[]; context?: string; color?: string; } /** * Build a Slack Block Kit blocks[] array: a header block, section blocks (each with * optional two-column fields), dividers between sections, and an optional context * footer. Used by slack_send_card and the task-lifecycle summary cards. * * Returns { blocks } always, plus { attachments } when a color bar is requested * (Slack only supports the colored left-bar via the legacy attachments wrapper). */ export declare function buildCard(opts: BuildCardOpts): { blocks: any[]; attachments?: any[]; }; export declare function truncatePlain(s: string, max: number): string; export declare class SlackerV3Server { private server; private accountState; private readonly CACHE_TTL_MS; private usersCache; private channelsCache; private taskRegistry; private browser; private browserIdleTimer; private readonly BROWSER_IDLE_MS; private static readonly NO_TOKEN_MESSAGE; constructor(); private loadAccountFromEnv; private getActiveClient; private getActiveUserClient; private ensureWorkspaceInfo; private currentAccountKey; private getAllUsersCached; private getAllChannelsCached; private describeActiveAccount; private getActiveAccount; private listAccounts; private slackListChannels; private convertMarkdownToSlackMrkdwn; private processExplicitMentions; private resolveRecipient; private slackSendMessage; private slackSendTable; private taskKey; private identityOverrides; private swapReaction; private slackSendCard; private slackStartTask; private slackUpdateTask; private slackCompleteTask; private static readonly NATO_CALL_SIGNS; private legateStateDir; private sanitizeCallSign; private loadLegateState; private saveLegateState; private tsGreater; private mentionsToken; private classifyAddressing; private looksSelfAuthored; private slackPoll; private laneKey; private parseLaneClaim; private slackClaimLane; private slackCheckin; private slackGetChannelHistory; private moreFooter; private slackAddReaction; private slackListUsers; private slackGetUserByName; private slackGetUserInfo; private slackSearchFiles; private slackSearchMessages; private searchFooter; private slackSearchByUser; private slackSearchByDateRange; private slackPinMessage; private slackUnpinMessage; private slackCreateChannel; private slackInviteUsers; private slackInviteExternal; private slackArchiveChannel; private slackRenameChannel; private slackSetChannelTopic; private slackDeleteMessage; private slackEditMessage; private slackScheduleMessage; private slackGetUserStatus; private slackGetUserProfile; private slackCreateReminder; private slackListReminders; private slackGetCustomEmoji; private slackSendFormattedMessage; private slackAuditUserActivity; private slackBulkReactMessages; private slackForwardMessage; private slackBulkForwardMessages; private slackGetThreadReplies; private slackGetWorkspaceStats; private slackUploadFile; private slackSendDiagram; private getBrowser; private scheduleBrowserIdleClose; private closeBrowser; private renderHtmlToPng; private setupHandlers; run(): Promise<void>; } export {}; //# sourceMappingURL=index.d.ts.map