ask-slack-mcp-server 2.3.0 → 2.5.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.
- package/dist/server.js +26 -3
- package/dist/server.js.map +1 -1
- package/dist/slack.d.ts +12 -1
- package/dist/slack.js +218 -47
- package/dist/slack.js.map +1 -1
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import "dotenv/config";
|
|
3
3
|
import http from "node:http";
|
|
4
4
|
import { createRequire } from "module";
|
|
5
|
-
import { sendQuestionAndWait, startBoltApp, stopBoltApp } from "./slack.js";
|
|
5
|
+
import { sendQuestionAndWait, waitForExistingQuestion, startBoltApp, stopBoltApp } from "./slack.js";
|
|
6
6
|
import { getServerPort, getServerApiKey } from "./config.js";
|
|
7
7
|
const require = createRequire(import.meta.url);
|
|
8
8
|
const { version: VERSION } = require("../package.json");
|
|
@@ -67,8 +67,8 @@ const httpServer = http.createServer(async (req, res) => {
|
|
|
67
67
|
// Abort when the HTTP client disconnects so we don't leak pending questions
|
|
68
68
|
const abortController = new AbortController();
|
|
69
69
|
req.on("close", () => abortController.abort());
|
|
70
|
-
const
|
|
71
|
-
sendJson(res, 200, { answer });
|
|
70
|
+
const result = await sendQuestionAndWait(fullMessage, body.slack_user_id, slackOptions, body.multi_select, abortController.signal);
|
|
71
|
+
sendJson(res, 200, { answer: result.answer, question_id: result.questionId });
|
|
72
72
|
}
|
|
73
73
|
catch (err) {
|
|
74
74
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -77,6 +77,29 @@ const httpServer = http.createServer(async (req, res) => {
|
|
|
77
77
|
}
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
|
+
// Reconnect to existing pending question (no message resent)
|
|
81
|
+
if (req.method === "POST" && req.url === "/api/wait") {
|
|
82
|
+
const providedKey = req.headers["x-api-key"] ??
|
|
83
|
+
req.headers["authorization"]?.replace(/^Bearer\s+/i, "");
|
|
84
|
+
if (!providedKey || providedKey !== API_KEY) {
|
|
85
|
+
sendJson(res, 401, { error: "Invalid or missing API key" });
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const rawBody = await readBody(req);
|
|
90
|
+
const body = JSON.parse(rawBody);
|
|
91
|
+
const abortController = new AbortController();
|
|
92
|
+
req.on("close", () => abortController.abort());
|
|
93
|
+
const result = await waitForExistingQuestion(body.slack_user_id, body.question_id, abortController.signal);
|
|
94
|
+
sendJson(res, 200, { answer: result.answer, question_id: result.questionId });
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
+
console.error("[Server] Error handling /api/wait:", message);
|
|
99
|
+
sendJson(res, 500, { error: message });
|
|
100
|
+
}
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
80
103
|
sendJson(res, 404, { error: "Not found" });
|
|
81
104
|
});
|
|
82
105
|
async function main() {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAuB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/slack.d.ts
CHANGED
|
@@ -4,4 +4,15 @@ export interface SlackQuestionOption {
|
|
|
4
4
|
}
|
|
5
5
|
export declare function startBoltApp(): Promise<void>;
|
|
6
6
|
export declare function stopBoltApp(): Promise<void>;
|
|
7
|
-
export declare function sendQuestionAndWait(question: string, slackUserId?: string, options?: SlackQuestionOption[], multiSelect?: boolean, signal?: AbortSignal): Promise<
|
|
7
|
+
export declare function sendQuestionAndWait(question: string, slackUserId?: string, options?: SlackQuestionOption[], multiSelect?: boolean, signal?: AbortSignal): Promise<{
|
|
8
|
+
answer: string;
|
|
9
|
+
questionId: string;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Re-attach to an existing pending question without sending a new Slack message.
|
|
13
|
+
* Used by the reconnect flow when the HTTP connection drops before the user answers.
|
|
14
|
+
*/
|
|
15
|
+
export declare function waitForExistingQuestion(slackUserId?: string, questionId?: string, signal?: AbortSignal): Promise<{
|
|
16
|
+
answer: string;
|
|
17
|
+
questionId: string;
|
|
18
|
+
}>;
|
package/dist/slack.js
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
1
|
import { WebClient } from "@slack/web-api";
|
|
2
2
|
import { App } from "@slack/bolt";
|
|
3
|
+
function createDeferred() {
|
|
4
|
+
let resolve;
|
|
5
|
+
const promise = new Promise((r) => { resolve = r; });
|
|
6
|
+
return { promise, resolve };
|
|
7
|
+
}
|
|
8
|
+
function raceWithAbort(promise, signal) {
|
|
9
|
+
if (!signal)
|
|
10
|
+
return promise;
|
|
11
|
+
if (signal.aborted)
|
|
12
|
+
return Promise.reject(new Error("Client disconnected"));
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const onAbort = () => reject(new Error("Client disconnected"));
|
|
15
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
16
|
+
promise.then((answer) => {
|
|
17
|
+
signal.removeEventListener("abort", onAbort);
|
|
18
|
+
resolve(answer);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
3
22
|
const STARTUP_DELAY_MS = 6000; // Wait for stale Slack connections to expire
|
|
23
|
+
const POLL_INTERVAL_MS = 15_000; // Poll every 15s as fallback for dead Socket Mode
|
|
24
|
+
// Keyed by messageTs (unique per question) — supports multiple pending questions per channel
|
|
4
25
|
const pendingQuestions = new Map();
|
|
26
|
+
// Cache of recently answered questions so reconnecting clients can pick up the answer
|
|
27
|
+
const resolvedAnswers = new Map(); // key: messageTs
|
|
28
|
+
const RESOLVED_ANSWER_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
29
|
+
let pollTimer;
|
|
5
30
|
const web = new WebClient(process.env.SLACK_BOT_TOKEN);
|
|
6
31
|
const boltApp = new App({
|
|
7
32
|
token: process.env.SLACK_BOT_TOKEN,
|
|
@@ -10,23 +35,39 @@ const boltApp = new App({
|
|
|
10
35
|
appToken: process.env.SLACK_APP_TOKEN,
|
|
11
36
|
});
|
|
12
37
|
// --- Helpers ---
|
|
13
|
-
function resolvePending(
|
|
14
|
-
const pending = pendingQuestions.get(
|
|
38
|
+
function resolvePending(messageTs, answer) {
|
|
39
|
+
const pending = pendingQuestions.get(messageTs);
|
|
15
40
|
if (!pending)
|
|
16
41
|
return false;
|
|
17
|
-
console.error("[Bolt] Resolving pending question
|
|
18
|
-
pending.resolve(answer);
|
|
19
|
-
pendingQuestions.delete(
|
|
20
|
-
//
|
|
42
|
+
console.error("[Bolt] Resolving pending question:", messageTs, "in channel:", pending.channelId, "with:", answer);
|
|
43
|
+
pending.deferred.resolve(answer);
|
|
44
|
+
pendingQuestions.delete(messageTs);
|
|
45
|
+
// Cache the answer so reconnecting clients can still pick it up
|
|
46
|
+
resolvedAnswers.set(messageTs, { answer, channelId: pending.channelId });
|
|
47
|
+
setTimeout(() => resolvedAnswers.delete(messageTs), RESOLVED_ANSWER_TTL_MS);
|
|
48
|
+
// Confirm to the user on Slack that the answer was received (in thread of the original question)
|
|
21
49
|
web.chat.postMessage({
|
|
22
|
-
channel: channelId,
|
|
50
|
+
channel: pending.channelId,
|
|
23
51
|
text: `✅ Your answer: ${answer}`,
|
|
52
|
+
thread_ts: messageTs,
|
|
24
53
|
mrkdwn: true,
|
|
25
54
|
}).catch((err) => {
|
|
26
55
|
console.error("[Bolt] Failed to send confirmation message:", err);
|
|
27
56
|
});
|
|
28
57
|
return true;
|
|
29
58
|
}
|
|
59
|
+
/** Find the most recent pending question for a given channel. */
|
|
60
|
+
function findLatestPendingForChannel(channelId) {
|
|
61
|
+
let latest;
|
|
62
|
+
for (const pending of pendingQuestions.values()) {
|
|
63
|
+
if (pending.channelId === channelId) {
|
|
64
|
+
if (!latest || pending.createdAt > latest.createdAt) {
|
|
65
|
+
latest = pending;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return latest;
|
|
70
|
+
}
|
|
30
71
|
function formatSelected(labels) {
|
|
31
72
|
return `Selected: ${labels.join(", ")}`;
|
|
32
73
|
}
|
|
@@ -128,8 +169,24 @@ boltApp.message(async ({ message }) => {
|
|
|
128
169
|
console.error("[Bolt] Ignoring message subtype:", msg.subtype);
|
|
129
170
|
return;
|
|
130
171
|
}
|
|
131
|
-
|
|
132
|
-
|
|
172
|
+
if (!msg.text) {
|
|
173
|
+
console.error("[Bolt] No text in message, skipping.");
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// Route reply to the correct pending question:
|
|
177
|
+
// 1. Thread reply (thread_ts set) → find question matching that thread_ts
|
|
178
|
+
// 2. Direct reply (no thread_ts) → find the most recent pending question in this channel
|
|
179
|
+
let pending;
|
|
180
|
+
if (msg.thread_ts) {
|
|
181
|
+
pending = pendingQuestions.get(msg.thread_ts);
|
|
182
|
+
if (pending) {
|
|
183
|
+
console.error("[Bolt] Matched thread reply to question:", msg.thread_ts);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (!pending) {
|
|
187
|
+
pending = findLatestPendingForChannel(msg.channel);
|
|
188
|
+
}
|
|
189
|
+
if (!pending) {
|
|
133
190
|
console.error("[Bolt] No pending question for channel:", msg.channel);
|
|
134
191
|
return;
|
|
135
192
|
}
|
|
@@ -142,20 +199,20 @@ boltApp.message(async ({ message }) => {
|
|
|
142
199
|
}
|
|
143
200
|
// Otherwise pass through as freeform text
|
|
144
201
|
}
|
|
145
|
-
resolvePending(
|
|
202
|
+
resolvePending(pending.messageTs, answer);
|
|
146
203
|
});
|
|
147
204
|
// Single-select button click
|
|
148
205
|
boltApp.action(/^ask_slack_btn_\d+$/, async ({ body, ack }) => {
|
|
149
206
|
await ack();
|
|
150
207
|
const blockBody = body;
|
|
151
|
-
const
|
|
152
|
-
if (!
|
|
208
|
+
const messageTs = blockBody.message?.ts;
|
|
209
|
+
if (!messageTs)
|
|
153
210
|
return;
|
|
154
211
|
const action = blockBody.actions[0];
|
|
155
212
|
const selectedLabel = action.type === "button" ? action.value : "";
|
|
156
213
|
if (selectedLabel) {
|
|
157
|
-
console.error("[Bolt] Button clicked:", selectedLabel, "
|
|
158
|
-
resolvePending(
|
|
214
|
+
console.error("[Bolt] Button clicked:", selectedLabel, "for question:", messageTs);
|
|
215
|
+
resolvePending(messageTs, formatSelected([selectedLabel]));
|
|
159
216
|
}
|
|
160
217
|
});
|
|
161
218
|
// Checkbox toggle — just acknowledge, wait for Submit
|
|
@@ -166,8 +223,8 @@ boltApp.action("ask_slack_checkboxes", async ({ ack }) => {
|
|
|
166
223
|
boltApp.action("ask_slack_submit", async ({ body, ack }) => {
|
|
167
224
|
await ack();
|
|
168
225
|
const blockBody = body;
|
|
169
|
-
const
|
|
170
|
-
if (!
|
|
226
|
+
const messageTs = blockBody.message?.ts;
|
|
227
|
+
if (!messageTs)
|
|
171
228
|
return;
|
|
172
229
|
const stateValues = blockBody.state?.values;
|
|
173
230
|
const checkboxState = stateValues?.["ask_slack_options"]?.["ask_slack_checkboxes"];
|
|
@@ -176,9 +233,87 @@ boltApp.action("ask_slack_submit", async ({ body, ack }) => {
|
|
|
176
233
|
console.error("[Bolt] Submit clicked but no options selected");
|
|
177
234
|
return;
|
|
178
235
|
}
|
|
179
|
-
console.error("[Bolt] Submit — selected:", selectedLabels, "
|
|
180
|
-
resolvePending(
|
|
236
|
+
console.error("[Bolt] Submit — selected:", selectedLabels, "for question:", messageTs);
|
|
237
|
+
resolvePending(messageTs, formatSelected(selectedLabels));
|
|
181
238
|
});
|
|
239
|
+
// --- Polling fallback ---
|
|
240
|
+
// When Socket Mode dies silently, we poll conversations.history to pick up replies.
|
|
241
|
+
async function pollForReplies() {
|
|
242
|
+
// Group pending questions by channel to minimize API calls
|
|
243
|
+
const byChannel = new Map();
|
|
244
|
+
for (const pending of pendingQuestions.values()) {
|
|
245
|
+
const list = byChannel.get(pending.channelId) ?? [];
|
|
246
|
+
list.push(pending);
|
|
247
|
+
byChannel.set(pending.channelId, list);
|
|
248
|
+
}
|
|
249
|
+
for (const [channelId, pendings] of byChannel) {
|
|
250
|
+
try {
|
|
251
|
+
// Use the oldest pending question's messageTs as the starting point
|
|
252
|
+
const oldest = pendings.reduce((min, p) => (p.messageTs < min ? p.messageTs : min), pendings[0].messageTs);
|
|
253
|
+
const history = await web.conversations.history({
|
|
254
|
+
channel: channelId,
|
|
255
|
+
oldest,
|
|
256
|
+
inclusive: false,
|
|
257
|
+
limit: 20,
|
|
258
|
+
});
|
|
259
|
+
const messages = history.messages ?? [];
|
|
260
|
+
for (const msg of messages) {
|
|
261
|
+
if (msg.bot_id)
|
|
262
|
+
continue;
|
|
263
|
+
if (msg.subtype)
|
|
264
|
+
continue;
|
|
265
|
+
const text = msg.text;
|
|
266
|
+
if (!text)
|
|
267
|
+
continue;
|
|
268
|
+
const threadTs = msg.thread_ts;
|
|
269
|
+
let matched;
|
|
270
|
+
// Thread reply → match to specific question
|
|
271
|
+
if (threadTs) {
|
|
272
|
+
matched = pendings.find((p) => p.messageTs === threadTs);
|
|
273
|
+
}
|
|
274
|
+
// Direct reply → match to latest pending question in channel
|
|
275
|
+
if (!matched) {
|
|
276
|
+
matched = pendings.reduce((latest, p) => !latest || p.createdAt > latest.createdAt ? p : latest, undefined);
|
|
277
|
+
}
|
|
278
|
+
if (!matched)
|
|
279
|
+
continue;
|
|
280
|
+
let answer = text;
|
|
281
|
+
if (matched.options && matched.options.length > 0) {
|
|
282
|
+
const parsed = tryParseNumberedReply(text, matched.options);
|
|
283
|
+
if (parsed)
|
|
284
|
+
answer = parsed;
|
|
285
|
+
}
|
|
286
|
+
console.error("[Poll] Found reply for question:", matched.messageTs, "answer:", answer);
|
|
287
|
+
resolvePending(matched.messageTs, answer);
|
|
288
|
+
// Remove from local array so we don't double-match
|
|
289
|
+
const idx = pendings.indexOf(matched);
|
|
290
|
+
if (idx >= 0)
|
|
291
|
+
pendings.splice(idx, 1);
|
|
292
|
+
if (pendings.length === 0)
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
console.error("[Poll] Error polling channel", channelId, err);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Stop polling when no more pending questions
|
|
301
|
+
if (pendingQuestions.size === 0 && pollTimer) {
|
|
302
|
+
clearInterval(pollTimer);
|
|
303
|
+
pollTimer = undefined;
|
|
304
|
+
console.error("[Poll] No more pending questions, polling stopped.");
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
function ensurePolling() {
|
|
308
|
+
if (pollTimer)
|
|
309
|
+
return;
|
|
310
|
+
console.error(`[Poll] Starting polling fallback (every ${POLL_INTERVAL_MS / 1000}s)`);
|
|
311
|
+
pollTimer = setInterval(() => {
|
|
312
|
+
pollForReplies().catch((err) => {
|
|
313
|
+
console.error("[Poll] Unhandled error in pollForReplies:", err);
|
|
314
|
+
});
|
|
315
|
+
}, POLL_INTERVAL_MS);
|
|
316
|
+
}
|
|
182
317
|
// --- Exported functions ---
|
|
183
318
|
export async function startBoltApp() {
|
|
184
319
|
console.error(`[Bolt] Waiting ${STARTUP_DELAY_MS / 1000}s for stale connections to expire...`);
|
|
@@ -187,6 +322,10 @@ export async function startBoltApp() {
|
|
|
187
322
|
console.error("[Bolt] Socket Mode app started successfully.");
|
|
188
323
|
}
|
|
189
324
|
export async function stopBoltApp() {
|
|
325
|
+
if (pollTimer) {
|
|
326
|
+
clearInterval(pollTimer);
|
|
327
|
+
pollTimer = undefined;
|
|
328
|
+
}
|
|
190
329
|
await boltApp.stop();
|
|
191
330
|
console.error("[Bolt] Socket Mode app stopped.");
|
|
192
331
|
}
|
|
@@ -200,9 +339,10 @@ export async function sendQuestionAndWait(question, slackUserId, options, multiS
|
|
|
200
339
|
const channelId = dmResult.channel.id;
|
|
201
340
|
// Build and send message
|
|
202
341
|
const hasOptions = options && options.length > 0;
|
|
342
|
+
let sentResult;
|
|
203
343
|
if (hasOptions) {
|
|
204
344
|
const blocks = buildOptionsBlocks(question, options, multiSelect ?? false);
|
|
205
|
-
await web.chat.postMessage({
|
|
345
|
+
sentResult = await web.chat.postMessage({
|
|
206
346
|
channel: channelId,
|
|
207
347
|
text: question, // fallback for notifications
|
|
208
348
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -211,7 +351,7 @@ export async function sendQuestionAndWait(question, slackUserId, options, multiS
|
|
|
211
351
|
});
|
|
212
352
|
}
|
|
213
353
|
else {
|
|
214
|
-
await web.chat.postMessage({
|
|
354
|
+
sentResult = await web.chat.postMessage({
|
|
215
355
|
channel: channelId,
|
|
216
356
|
text: question,
|
|
217
357
|
mrkdwn: true,
|
|
@@ -219,33 +359,64 @@ export async function sendQuestionAndWait(question, slackUserId, options, multiS
|
|
|
219
359
|
}
|
|
220
360
|
// Wait for response (text reply or interactive action) — no server-side timeout,
|
|
221
361
|
// the client controls how long to wait via its own HTTP timeout.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
if (signal.aborted) {
|
|
235
|
-
reject(new Error("Client disconnected"));
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
signal.addEventListener("abort", onAbort, { once: true });
|
|
239
|
-
}
|
|
240
|
-
pendingQuestions.set(channelId, {
|
|
241
|
-
resolve: (answer) => {
|
|
242
|
-
if (signal)
|
|
243
|
-
signal.removeEventListener("abort", onAbort);
|
|
244
|
-
resolve(answer);
|
|
245
|
-
},
|
|
246
|
-
options: hasOptions ? options : undefined,
|
|
247
|
-
multiSelect,
|
|
248
|
-
});
|
|
362
|
+
const messageTs = sentResult.ts;
|
|
363
|
+
console.error(`[Slack] Waiting for reply to question ${messageTs} in channel ${channelId} (no timeout)`);
|
|
364
|
+
// Use a deferred promise so that if the HTTP client disconnects,
|
|
365
|
+
// the pending question survives and can be picked up by /api/wait.
|
|
366
|
+
const deferred = createDeferred();
|
|
367
|
+
pendingQuestions.set(messageTs, {
|
|
368
|
+
deferred,
|
|
369
|
+
options: hasOptions ? options : undefined,
|
|
370
|
+
multiSelect,
|
|
371
|
+
messageTs,
|
|
372
|
+
channelId,
|
|
373
|
+
createdAt: Date.now(),
|
|
249
374
|
});
|
|
375
|
+
ensurePolling();
|
|
376
|
+
const answer = await raceWithAbort(deferred.promise, signal);
|
|
377
|
+
return { answer, questionId: messageTs };
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Re-attach to an existing pending question without sending a new Slack message.
|
|
381
|
+
* Used by the reconnect flow when the HTTP connection drops before the user answers.
|
|
382
|
+
*/
|
|
383
|
+
export async function waitForExistingQuestion(slackUserId, questionId, signal) {
|
|
384
|
+
// If a specific questionId is provided, look it up directly
|
|
385
|
+
if (questionId) {
|
|
386
|
+
const cached = resolvedAnswers.get(questionId);
|
|
387
|
+
if (cached !== undefined) {
|
|
388
|
+
resolvedAnswers.delete(questionId);
|
|
389
|
+
return { answer: cached.answer, questionId };
|
|
390
|
+
}
|
|
391
|
+
const pending = pendingQuestions.get(questionId);
|
|
392
|
+
if (!pending) {
|
|
393
|
+
throw new Error("No pending question found with this ID");
|
|
394
|
+
}
|
|
395
|
+
console.error(`[Slack] Client reconnected — re-attaching to question ${questionId}`);
|
|
396
|
+
const answer = await raceWithAbort(pending.deferred.promise, signal);
|
|
397
|
+
return { answer, questionId };
|
|
398
|
+
}
|
|
399
|
+
// No questionId — find by channel (backward compatible)
|
|
400
|
+
const userId = slackUserId ?? process.env.SLACK_USER_ID;
|
|
401
|
+
if (!userId) {
|
|
402
|
+
throw new Error("Missing slack_user_id parameter and SLACK_USER_ID environment variable");
|
|
403
|
+
}
|
|
404
|
+
const dmResult = await web.conversations.open({ users: userId });
|
|
405
|
+
const channelId = dmResult.channel.id;
|
|
406
|
+
// If the answer arrived between disconnect and reconnect, return the latest
|
|
407
|
+
for (const [msgTs, cached] of resolvedAnswers) {
|
|
408
|
+
if (cached.channelId === channelId) {
|
|
409
|
+
resolvedAnswers.delete(msgTs);
|
|
410
|
+
return { answer: cached.answer, questionId: msgTs };
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Find the latest pending question for this channel
|
|
414
|
+
const pending = findLatestPendingForChannel(channelId);
|
|
415
|
+
if (!pending) {
|
|
416
|
+
throw new Error("No pending question found for this user");
|
|
417
|
+
}
|
|
418
|
+
console.error(`[Slack] Client reconnected — re-attaching to latest pending question ${pending.messageTs} in channel ${channelId}`);
|
|
419
|
+
const answer = await raceWithAbort(pending.deferred.promise, signal);
|
|
420
|
+
return { answer, questionId: pending.messageTs };
|
|
250
421
|
}
|
|
251
422
|
//# sourceMappingURL=slack.js.map
|
package/dist/slack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|