@mono-agent/slack-adapter 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-client.js","sourceRoot":"","sources":["../src/slack-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function formatMarkdownForSlack(text: string): string;
2
+ //# sourceMappingURL=slack-markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-markdown.d.ts","sourceRoot":"","sources":["../src/slack-markdown.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,82 @@
1
+ const INLINE_CODE_PATTERN = /`[^`\n]+`/gu;
2
+ const FENCED_CODE_PATTERN = /```[\s\S]*?```/gu;
3
+ const MARKDOWN_LINK_PATTERN = /(?<!!)\[([^\]\n]+)\]\(([^)\s]+)\)/gu;
4
+ const TOKEN_PREFIX = "\uE000";
5
+ const TOKEN_SUFFIX = "\uE001";
6
+ let nextTokenNamespace = 0;
7
+ export function formatMarkdownForSlack(text) {
8
+ return replaceProtectedSegments(text, FENCED_CODE_PATTERN, formatMarkdownChunk);
9
+ }
10
+ function formatMarkdownChunk(text) {
11
+ return text
12
+ .split("\n")
13
+ .map((line) => formatMarkdownLine(line))
14
+ .join("\n");
15
+ }
16
+ function formatMarkdownLine(line) {
17
+ const quote = /^(>+\s?)(.*)$/u.exec(line);
18
+ if (quote !== null) {
19
+ return `${quote[1] ?? ">"}${formatMarkdownInline(quote[2] ?? "")}`;
20
+ }
21
+ const heading = /^(#{1,6})\s+(.+)$/u.exec(line);
22
+ if (heading !== null) {
23
+ const headingText = formatMarkdownInline(heading[2] ?? "");
24
+ return `*${trimSlackBoldDelimiters(headingText)}*`;
25
+ }
26
+ return formatMarkdownInline(line);
27
+ }
28
+ function formatMarkdownInline(text) {
29
+ return replaceProtectedSegments(text, INLINE_CODE_PATTERN, formatMarkdownPlainInline);
30
+ }
31
+ function formatMarkdownPlainInline(text) {
32
+ const tokenStore = createTokenStore();
33
+ const withLinkTokens = text.replace(MARKDOWN_LINK_PATTERN, (_match, rawLabel, rawUrl) => tokenStore.tokenFor(slackLink(rawUrl, rawLabel)));
34
+ const formatted = withLinkTokens
35
+ .replace(/\*\*([^*\n]+?)\*\*/gu, (_match, content) => tokenStore.tokenFor(`*${content}*`))
36
+ .replace(/__([^_\n]+?)__/gu, (_match, content) => tokenStore.tokenFor(`*${content}*`))
37
+ .replace(/~~([^~\n]+?)~~/gu, "~$1~")
38
+ .replace(/(?<!\*)\*([^*\n]+?)\*(?!\*)/gu, "_$1_");
39
+ return tokenStore.restore(escapeSlackText(formatted));
40
+ }
41
+ function replaceProtectedSegments(text, pattern, formatUnprotected) {
42
+ const tokenStore = createTokenStore();
43
+ const protectedText = text.replace(pattern, (match) => tokenStore.tokenFor(match));
44
+ return tokenStore.restore(formatUnprotected(protectedText));
45
+ }
46
+ function slackLink(rawUrl, rawLabel) {
47
+ return `<${escapeSlackText(rawUrl)}|${escapeSlackLinkLabel(rawLabel)}>`;
48
+ }
49
+ function escapeSlackText(text) {
50
+ return text
51
+ .replace(/&/gu, "&amp;")
52
+ .replace(/</gu, "&lt;")
53
+ .replace(/>/gu, "&gt;");
54
+ }
55
+ function escapeSlackLinkLabel(text) {
56
+ return escapeSlackText(text).replace(/\|/gu, "&#124;");
57
+ }
58
+ function createTokenStore() {
59
+ const namespace = nextTokenNamespace;
60
+ nextTokenNamespace += 1;
61
+ const tokens = [];
62
+ return {
63
+ tokenFor(value) {
64
+ const token = `${TOKEN_PREFIX}${namespace}:${tokens.length}${TOKEN_SUFFIX}`;
65
+ tokens.push(value);
66
+ return token;
67
+ },
68
+ restore(text) {
69
+ let restored = text;
70
+ for (let index = 0; index < tokens.length; index += 1) {
71
+ restored = restored.replaceAll(`${TOKEN_PREFIX}${namespace}:${index}${TOKEN_SUFFIX}`, tokens[index] ?? "");
72
+ }
73
+ return restored;
74
+ },
75
+ };
76
+ }
77
+ function trimSlackBoldDelimiters(text) {
78
+ return text.startsWith("*") && text.endsWith("*") && text.length >= 2
79
+ ? text.slice(1, -1)
80
+ : text;
81
+ }
82
+ //# sourceMappingURL=slack-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-markdown.js","sourceRoot":"","sources":["../src/slack-markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { SlackEventCallback, SlackWebApi } from "./types.js";
2
+ import type { SlackEventHandlingResult } from "./adapter.js";
3
+ export interface SlackEventCallbackHandler {
4
+ handleEventCallback(callback: SlackEventCallback): Promise<SlackEventHandlingResult>;
5
+ }
6
+ export interface SlackSocketModeRunnerBackoffOptions {
7
+ initialMs?: number;
8
+ maxMs?: number;
9
+ }
10
+ export interface SlackSocketModeRunnerLogger {
11
+ debug?(message: string, metadata?: Record<string, unknown>): void;
12
+ info?(message: string, metadata?: Record<string, unknown>): void;
13
+ warn?(message: string, metadata?: Record<string, unknown>): void;
14
+ error?(message: string, metadata?: Record<string, unknown>): void;
15
+ }
16
+ export interface SlackSocketModeRunnerOptions {
17
+ api: SlackWebApi;
18
+ handler: SlackEventCallbackHandler;
19
+ reconnect?: SlackSocketModeRunnerBackoffOptions;
20
+ webSocketFactory?: SlackWebSocketFactory;
21
+ onEventResult?: (result: SlackEventHandlingResult) => void | Promise<void>;
22
+ logger?: SlackSocketModeRunnerLogger;
23
+ }
24
+ export interface SlackSocketModeRunnerStartOptions {
25
+ signal?: AbortSignal;
26
+ }
27
+ export type SlackWebSocketFactory = (url: string) => SlackWebSocketLike;
28
+ export interface SlackWebSocketLike {
29
+ send(data: string): void;
30
+ close(code?: number, reason?: string): void;
31
+ on(event: "open", listener: () => void): this;
32
+ on(event: "message", listener: (data: unknown) => void): this;
33
+ on(event: "close", listener: (code?: number, reason?: unknown) => void): this;
34
+ on(event: "error", listener: (error: unknown) => void): this;
35
+ }
36
+ export declare class SlackSocketModeRunner {
37
+ private readonly api;
38
+ private readonly handler;
39
+ private readonly initialBackoffMs;
40
+ private readonly maxBackoffMs;
41
+ private readonly webSocketFactory;
42
+ private readonly onEventResult;
43
+ private readonly logger;
44
+ private activeSocket;
45
+ constructor(options: SlackSocketModeRunnerOptions);
46
+ start(options?: SlackSocketModeRunnerStartOptions): Promise<void>;
47
+ private connectOnce;
48
+ private handleEnvelope;
49
+ }
50
+ //# sourceMappingURL=socket-mode-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-mode-runner.d.ts","sourceRoot":"","sources":["../src/socket-mode-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ import WebSocket from "ws";
2
+ const DEFAULT_INITIAL_BACKOFF_MS = 500;
3
+ const DEFAULT_MAX_BACKOFF_MS = 10_000;
4
+ export class SlackSocketModeRunner {
5
+ api;
6
+ handler;
7
+ initialBackoffMs;
8
+ maxBackoffMs;
9
+ webSocketFactory;
10
+ onEventResult;
11
+ logger;
12
+ activeSocket;
13
+ constructor(options) {
14
+ this.api = options.api;
15
+ this.handler = options.handler;
16
+ this.initialBackoffMs = options.reconnect?.initialMs ?? DEFAULT_INITIAL_BACKOFF_MS;
17
+ this.maxBackoffMs = options.reconnect?.maxMs ?? DEFAULT_MAX_BACKOFF_MS;
18
+ this.webSocketFactory = options.webSocketFactory ?? ((url) => new WebSocket(url));
19
+ this.onEventResult = options.onEventResult;
20
+ this.logger = options.logger;
21
+ if (!Number.isFinite(this.initialBackoffMs) || this.initialBackoffMs < 0) {
22
+ throw new RangeError("SlackSocketModeRunner initial backoff must be non-negative.");
23
+ }
24
+ if (!Number.isFinite(this.maxBackoffMs) || this.maxBackoffMs < this.initialBackoffMs) {
25
+ throw new RangeError("SlackSocketModeRunner max backoff must be at least the initial backoff.");
26
+ }
27
+ }
28
+ async start(options = {}) {
29
+ if (isSignalAborted(options.signal)) {
30
+ return;
31
+ }
32
+ let backoffMs = this.initialBackoffMs;
33
+ while (!isSignalAborted(options.signal)) {
34
+ try {
35
+ await this.connectOnce(options.signal);
36
+ backoffMs = this.initialBackoffMs;
37
+ }
38
+ catch (error) {
39
+ if (isSignalAborted(options.signal)) {
40
+ return;
41
+ }
42
+ this.logger?.warn?.("Slack Socket Mode connection failed; backing off.", {
43
+ error: error instanceof Error ? error.message : String(error),
44
+ backoffMs,
45
+ });
46
+ await abortableDelay(backoffMs, options.signal);
47
+ backoffMs = Math.min(this.maxBackoffMs, Math.max(backoffMs * 2, 1));
48
+ }
49
+ }
50
+ }
51
+ async connectOnce(signal) {
52
+ const connection = await this.api.appsConnectionsOpen({ ...(signal === undefined ? {} : { signal }) });
53
+ if (isSignalAborted(signal)) {
54
+ return;
55
+ }
56
+ await new Promise((resolve, reject) => {
57
+ const socket = this.webSocketFactory(connection.url);
58
+ this.activeSocket = socket;
59
+ let settled = false;
60
+ const settle = (action) => {
61
+ if (settled) {
62
+ return;
63
+ }
64
+ settled = true;
65
+ signal?.removeEventListener("abort", onAbort);
66
+ if (this.activeSocket === socket) {
67
+ this.activeSocket = undefined;
68
+ }
69
+ action();
70
+ };
71
+ const onAbort = () => {
72
+ try {
73
+ socket.close();
74
+ }
75
+ finally {
76
+ settle(resolve);
77
+ }
78
+ };
79
+ const closeForReconnect = () => {
80
+ try {
81
+ socket.close();
82
+ }
83
+ catch {
84
+ settle(resolve);
85
+ }
86
+ };
87
+ const failForBackoff = (error) => {
88
+ settle(() => reject(error));
89
+ try {
90
+ socket.close();
91
+ }
92
+ catch {
93
+ // Already rejected; close errors do not change the reconnect decision.
94
+ }
95
+ };
96
+ socket.on("open", () => {
97
+ this.logger?.info?.("Slack Socket Mode connected.");
98
+ });
99
+ socket.on("message", (data) => {
100
+ const envelope = parseSocketEnvelope(data);
101
+ if (envelope === undefined) {
102
+ this.logger?.warn?.("Slack Socket Mode envelope was malformed.");
103
+ return;
104
+ }
105
+ if (envelope.type === "disconnect") {
106
+ this.logger?.info?.("Slack Socket Mode disconnect requested.", {
107
+ reason: envelope.reason,
108
+ });
109
+ if (envelope.reason !== "refresh_requested") {
110
+ failForBackoff(new Error(`Slack Socket Mode disconnect requested: ${envelope.reason ?? "unknown"}`));
111
+ return;
112
+ }
113
+ closeForReconnect();
114
+ return;
115
+ }
116
+ void this.handleEnvelope(socket, envelope).catch((error) => {
117
+ this.logger?.error?.("Slack Socket Mode envelope handling failed.", {
118
+ error: error instanceof Error ? error.message : String(error),
119
+ });
120
+ });
121
+ });
122
+ socket.on("close", () => {
123
+ settle(resolve);
124
+ });
125
+ socket.on("error", (error) => {
126
+ settle(() => reject(error instanceof Error ? error : new Error(String(error))));
127
+ });
128
+ if (signal?.aborted === true) {
129
+ onAbort();
130
+ return;
131
+ }
132
+ signal?.addEventListener("abort", onAbort, { once: true });
133
+ });
134
+ }
135
+ async handleEnvelope(socket, envelope) {
136
+ if (envelope.envelope_id !== undefined) {
137
+ socket.send(JSON.stringify({ envelope_id: envelope.envelope_id }));
138
+ }
139
+ if (envelope.type !== "events_api" || !isSlackEventCallback(envelope.payload)) {
140
+ return;
141
+ }
142
+ const result = await this.handler.handleEventCallback(envelope.payload);
143
+ await this.onEventResult?.(result);
144
+ }
145
+ }
146
+ function parseSocketEnvelope(data) {
147
+ const text = dataToString(data);
148
+ if (text === undefined) {
149
+ return undefined;
150
+ }
151
+ try {
152
+ const parsed = JSON.parse(text);
153
+ if (!isRecord(parsed)) {
154
+ return undefined;
155
+ }
156
+ const envelope = {};
157
+ if (typeof parsed.envelope_id === "string") {
158
+ envelope.envelope_id = parsed.envelope_id;
159
+ }
160
+ if (typeof parsed.type === "string") {
161
+ envelope.type = parsed.type;
162
+ }
163
+ if (typeof parsed.accepts_response_payload === "boolean") {
164
+ envelope.accepts_response_payload = parsed.accepts_response_payload;
165
+ }
166
+ if ("payload" in parsed) {
167
+ envelope.payload = parsed.payload;
168
+ }
169
+ if (typeof parsed.reason === "string") {
170
+ envelope.reason = parsed.reason;
171
+ }
172
+ return envelope;
173
+ }
174
+ catch {
175
+ return undefined;
176
+ }
177
+ }
178
+ function dataToString(data) {
179
+ if (typeof data === "string") {
180
+ return data;
181
+ }
182
+ if (data instanceof Buffer) {
183
+ return data.toString("utf8");
184
+ }
185
+ if (data instanceof ArrayBuffer) {
186
+ return Buffer.from(data).toString("utf8");
187
+ }
188
+ if (Array.isArray(data) && data.every((part) => part instanceof Buffer)) {
189
+ return Buffer.concat(data).toString("utf8");
190
+ }
191
+ return undefined;
192
+ }
193
+ function isSlackEventCallback(value) {
194
+ if (!isRecord(value) || value.type !== "event_callback") {
195
+ return false;
196
+ }
197
+ return typeof value.event_id === "string" && isRecord(value.event);
198
+ }
199
+ function isSignalAborted(signal) {
200
+ return signal?.aborted === true;
201
+ }
202
+ function abortableDelay(ms, signal) {
203
+ if (ms <= 0 || signal?.aborted === true) {
204
+ return Promise.resolve();
205
+ }
206
+ return new Promise((resolve) => {
207
+ const timeout = setTimeout(() => {
208
+ signal?.removeEventListener("abort", onAbort);
209
+ resolve();
210
+ }, ms);
211
+ const onAbort = () => {
212
+ clearTimeout(timeout);
213
+ signal?.removeEventListener("abort", onAbort);
214
+ resolve();
215
+ };
216
+ signal?.addEventListener("abort", onAbort, { once: true });
217
+ });
218
+ }
219
+ function isRecord(value) {
220
+ return typeof value === "object" && value !== null;
221
+ }
222
+ //# sourceMappingURL=socket-mode-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-mode-runner.js","sourceRoot":"","sources":["../src/socket-mode-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { SlackAdapter, type AgentResponder, type SlackAdapterLogger, type SlackAdapterMessages, type SlackAdapterStreamOptions, type SlackEventHandlingResult } from "./adapter.js";
2
+ import { SlackSocketModeRunner, type SlackSocketModeRunnerBackoffOptions, type SlackSocketModeRunnerLogger, type SlackWebSocketFactory } from "./socket-mode-runner.js";
3
+ import type { SlackChannelId, SlackUserId, SlackWebApi } from "./types.js";
4
+ export interface SlackAdapterStartLogger extends SlackAdapterLogger, SlackSocketModeRunnerLogger {
5
+ }
6
+ export interface SlackAdapterStartOptions {
7
+ /** Slack bot token used for chat.postMessage and chat.update. */
8
+ readonly botToken: string;
9
+ /** Slack app-level token with connections:write for Socket Mode. */
10
+ readonly appToken: string;
11
+ /** Optional override for the Slack Web API base URL. */
12
+ readonly apiBaseUrl?: string;
13
+ /** Optional fetch implementation forwarded to the default Slack client. */
14
+ readonly fetchImpl?: typeof fetch;
15
+ /** Optional request timeout (ms) forwarded to the default Slack client. */
16
+ readonly requestTimeoutMs?: number;
17
+ readonly allowedChannelIds?: readonly SlackChannelId[];
18
+ readonly allowAllChannels?: boolean;
19
+ readonly botUserIds?: readonly SlackUserId[];
20
+ readonly mentionTextAliases?: readonly string[];
21
+ readonly stripMentionText?: boolean;
22
+ readonly responder: AgentResponder;
23
+ readonly stream?: SlackAdapterStreamOptions;
24
+ readonly messages?: SlackAdapterMessages;
25
+ readonly logger?: SlackAdapterStartLogger;
26
+ /** Reconnect backoff bounds forwarded to the Socket Mode runner. */
27
+ readonly reconnect?: SlackSocketModeRunnerBackoffOptions;
28
+ /** Observe every Socket Mode event handling result. */
29
+ readonly onEventResult?: (result: SlackEventHandlingResult) => void | Promise<void>;
30
+ /**
31
+ * Injected Slack Web API factory. Defaults to constructing a real
32
+ * {@link SlackWebApiClient}. Tests can supply a fake transport here.
33
+ */
34
+ readonly createApi?: (input: SlackApiFactoryInput) => SlackWebApi;
35
+ /**
36
+ * Injected WebSocket factory forwarded to the Socket Mode runner. Tests can
37
+ * supply a fake socket so the start path runs without a real connection.
38
+ */
39
+ readonly webSocketFactory?: SlackWebSocketFactory;
40
+ }
41
+ export interface SlackApiFactoryInput {
42
+ readonly botToken: string;
43
+ readonly appToken: string;
44
+ readonly apiBaseUrl?: string;
45
+ readonly fetchImpl?: typeof fetch;
46
+ readonly requestTimeoutMs?: number;
47
+ }
48
+ export interface SlackAdapterStartResult {
49
+ /** The Slack Web API client driving the adapter and Socket Mode runner. */
50
+ readonly api: SlackWebApi;
51
+ /** The constructed adapter, exposed for advanced inspection. */
52
+ readonly adapter: SlackAdapter;
53
+ /** The Socket Mode runner driving the connection. */
54
+ readonly runner: SlackSocketModeRunner;
55
+ /** Cleanly aborts the Socket Mode connection and awaits the runner loop. */
56
+ stop(): Promise<void>;
57
+ }
58
+ export declare function startSlackAdapter(options: SlackAdapterStartOptions): Promise<SlackAdapterStartResult>;
59
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,KAAK,mCAAmC,EACxC,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB,EAAE,2BAA2B;CAAG;AAEnG,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAEpC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAE1C,oEAAoE;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,mCAAmC,CAAC;IACzD,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,WAAW,CAAC;IAClE;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,4EAA4E;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAyClC"}
package/dist/start.js ADDED
@@ -0,0 +1,101 @@
1
+ import { SlackAdapter, } from "./adapter.js";
2
+ import { SlackWebApiClient } from "./slack-client.js";
3
+ import { SlackSocketModeRunner, } from "./socket-mode-runner.js";
4
+ export async function startSlackAdapter(options) {
5
+ if (typeof options.responder?.respond !== "function") {
6
+ throw new TypeError("startSlackAdapter requires a responder.");
7
+ }
8
+ const api = (options.createApi ?? defaultCreateApi)({
9
+ botToken: options.botToken,
10
+ appToken: options.appToken,
11
+ ...(options.apiBaseUrl === undefined ? {} : { apiBaseUrl: options.apiBaseUrl }),
12
+ ...(options.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
13
+ ...(options.requestTimeoutMs === undefined ? {} : { requestTimeoutMs: options.requestTimeoutMs }),
14
+ });
15
+ const adapter = new SlackAdapter(buildAdapterOptions(api, options));
16
+ const runner = new SlackSocketModeRunner(buildRunnerOptions(api, adapter, options));
17
+ const controller = new AbortController();
18
+ // Fire-and-forget the reconnect loop. The runner resolves only when the
19
+ // signal aborts, so we hold the promise and await it during stop().
20
+ const loop = runner.start({ signal: controller.signal });
21
+ // Prevent unhandled rejections if the loop ever throws; stop() observes it too.
22
+ loop.catch((error) => {
23
+ options.logger?.error?.("Slack Socket Mode runner stopped unexpectedly.", {
24
+ error: error instanceof Error ? error.message : String(error),
25
+ });
26
+ });
27
+ let stopped = false;
28
+ return {
29
+ api,
30
+ adapter,
31
+ runner,
32
+ async stop() {
33
+ if (stopped) {
34
+ return;
35
+ }
36
+ stopped = true;
37
+ controller.abort();
38
+ await loop;
39
+ },
40
+ };
41
+ }
42
+ function defaultCreateApi(input) {
43
+ return new SlackWebApiClient({
44
+ botToken: input.botToken,
45
+ appToken: input.appToken,
46
+ ...(input.apiBaseUrl === undefined ? {} : { apiBaseUrl: input.apiBaseUrl }),
47
+ ...(input.fetchImpl === undefined ? {} : { fetchImpl: input.fetchImpl }),
48
+ ...(input.requestTimeoutMs === undefined ? {} : { requestTimeoutMs: input.requestTimeoutMs }),
49
+ });
50
+ }
51
+ function buildAdapterOptions(api, options) {
52
+ const adapterOptions = {
53
+ api,
54
+ responder: options.responder,
55
+ };
56
+ if (options.allowedChannelIds !== undefined) {
57
+ adapterOptions.allowedChannelIds = [...options.allowedChannelIds];
58
+ }
59
+ if (options.allowAllChannels !== undefined) {
60
+ adapterOptions.allowAllChannels = options.allowAllChannels;
61
+ }
62
+ if (options.botUserIds !== undefined) {
63
+ adapterOptions.botUserIds = [...options.botUserIds];
64
+ }
65
+ if (options.mentionTextAliases !== undefined) {
66
+ adapterOptions.mentionTextAliases = [...options.mentionTextAliases];
67
+ }
68
+ if (options.stripMentionText !== undefined) {
69
+ adapterOptions.stripMentionText = options.stripMentionText;
70
+ }
71
+ if (options.stream !== undefined) {
72
+ adapterOptions.stream = options.stream;
73
+ }
74
+ if (options.messages !== undefined) {
75
+ adapterOptions.messages = options.messages;
76
+ }
77
+ if (options.logger !== undefined) {
78
+ adapterOptions.logger = options.logger;
79
+ }
80
+ return adapterOptions;
81
+ }
82
+ function buildRunnerOptions(api, adapter, options) {
83
+ const runnerOptions = {
84
+ api,
85
+ handler: adapter,
86
+ };
87
+ if (options.reconnect !== undefined) {
88
+ runnerOptions.reconnect = options.reconnect;
89
+ }
90
+ if (options.webSocketFactory !== undefined) {
91
+ runnerOptions.webSocketFactory = options.webSocketFactory;
92
+ }
93
+ if (options.onEventResult !== undefined) {
94
+ runnerOptions.onEventResult = options.onEventResult;
95
+ }
96
+ if (options.logger !== undefined) {
97
+ runnerOptions.logger = options.logger;
98
+ }
99
+ return runnerOptions;
100
+ }
101
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}