@mono-agent/slack-adapter 0.3.0 → 0.4.1

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.
@@ -1,22 +1,90 @@
1
1
  import WebSocket from "ws";
2
+ function onPingPong(socket, listener) {
3
+ const listenable = socket;
4
+ if (typeof listenable.on !== "function") {
5
+ return;
6
+ }
7
+ try {
8
+ listenable.on("ping", listener);
9
+ listenable.on("pong", listener);
10
+ }
11
+ catch {
12
+ // A transport whose `on` rejects unknown events simply opts out of
13
+ // ping/pong-based liveness; inbound messages still refresh the watchdog.
14
+ }
15
+ }
2
16
  const DEFAULT_INITIAL_BACKOFF_MS = 500;
3
- const DEFAULT_MAX_BACKOFF_MS = 10_000;
17
+ // Raised from 10s to 30s (matching the Telegram poller's restart ceiling): a
18
+ // `too_many_websockets` disconnect signals the app exceeded Slack's per-app
19
+ // connection budget, so a longer cool-down gives an orphaned socket time to clear
20
+ // server-side instead of re-hammering the limit every 10s.
21
+ const DEFAULT_MAX_BACKOFF_MS = 30_000;
22
+ // Slack's Socket Mode server pings clients periodically; a healthy idle socket
23
+ // therefore sees inbound frames well within this window. These defaults probe
24
+ // every 30s and declare a socket dead after 90s of total silence — long enough
25
+ // to avoid false positives on a quiet connection, short enough to self-heal a
26
+ // half-open socket (e.g. after the host sleeps) within ~1.5 min.
27
+ const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
28
+ const DEFAULT_HEARTBEAT_TIMEOUT_MS = 90_000;
29
+ const DEFAULT_STABILITY_MS = 30_000;
30
+ const DEFAULT_STARTUP_GRACE_MS = 10_000;
31
+ const DEFAULT_DRAIN_DEADLINE_MS = 5_000;
32
+ const DEFAULT_BACKOFF_JITTER_RATIO = 0.2;
33
+ // Small floor between graceful reconnects so a pathological refresh/warning storm
34
+ // cannot busy-loop. Far below the failure backoff, so a routine refresh is unaffected.
35
+ const DEFAULT_GRACEFUL_RECONNECT_FLOOR_MS = 250;
36
+ // Slack `disconnect` reasons that are a planned, graceful refresh: Slack is (or is
37
+ // about to be) closing this socket as routine maintenance. `warning` is the courtesy
38
+ // heads-up sent shortly before a refresh — reacting to it as a failure (the old
39
+ // behavior) doubled the reconnect rate and was a primary `too_many_websockets`
40
+ // amplifier. These reconnect immediately with no backoff and are not a degradation.
41
+ const GRACEFUL_DISCONNECT_REASONS = new Set(["refresh_requested", "warning"]);
4
42
  export class SlackSocketModeRunner {
5
43
  api;
6
44
  handler;
7
45
  initialBackoffMs;
8
46
  maxBackoffMs;
47
+ heartbeatIntervalMs;
48
+ heartbeatTimeoutMs;
49
+ stabilityMs;
50
+ startupGraceMs;
51
+ drainDeadlineMs;
52
+ gracefulReconnectFloorMs;
53
+ jitterRatio;
54
+ random;
9
55
  webSocketFactory;
10
56
  onEventResult;
57
+ onInteraction;
58
+ onConnectionLost;
59
+ onConnectionRestored;
11
60
  logger;
12
61
  activeSocket;
62
+ // Per-`start()` run state (reset on each start). The backoff is class-scoped so the
63
+ // stability timer (inside connectOnce) can reset it only after a socket proves
64
+ // healthy, rather than it resetting on every connect.
65
+ currentBackoffMs = 0;
66
+ connectionDegraded = false;
67
+ hasEverConnected = false;
68
+ startedAt = 0;
13
69
  constructor(options) {
14
70
  this.api = options.api;
15
71
  this.handler = options.handler;
16
72
  this.initialBackoffMs = options.reconnect?.initialMs ?? DEFAULT_INITIAL_BACKOFF_MS;
17
73
  this.maxBackoffMs = options.reconnect?.maxMs ?? DEFAULT_MAX_BACKOFF_MS;
74
+ this.heartbeatIntervalMs = options.heartbeat?.intervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS;
75
+ this.heartbeatTimeoutMs = options.heartbeat?.timeoutMs ?? DEFAULT_HEARTBEAT_TIMEOUT_MS;
76
+ this.stabilityMs = options.reconnect?.stabilityMs ?? DEFAULT_STABILITY_MS;
77
+ this.startupGraceMs = options.reconnect?.startupGraceMs ?? DEFAULT_STARTUP_GRACE_MS;
78
+ this.drainDeadlineMs = options.reconnect?.drainDeadlineMs ?? DEFAULT_DRAIN_DEADLINE_MS;
79
+ this.gracefulReconnectFloorMs =
80
+ options.reconnect?.gracefulReconnectFloorMs ?? DEFAULT_GRACEFUL_RECONNECT_FLOOR_MS;
81
+ this.jitterRatio = options.reconnect?.jitterRatio ?? DEFAULT_BACKOFF_JITTER_RATIO;
82
+ this.random = options.random ?? Math.random;
18
83
  this.webSocketFactory = options.webSocketFactory ?? ((url) => new WebSocket(url));
19
84
  this.onEventResult = options.onEventResult;
85
+ this.onInteraction = options.onInteraction;
86
+ this.onConnectionLost = options.onConnectionLost;
87
+ this.onConnectionRestored = options.onConnectionRestored;
20
88
  this.logger = options.logger;
21
89
  if (!Number.isFinite(this.initialBackoffMs) || this.initialBackoffMs < 0) {
22
90
  throw new RangeError("SlackSocketModeRunner initial backoff must be non-negative.");
@@ -24,16 +92,46 @@ export class SlackSocketModeRunner {
24
92
  if (!Number.isFinite(this.maxBackoffMs) || this.maxBackoffMs < this.initialBackoffMs) {
25
93
  throw new RangeError("SlackSocketModeRunner max backoff must be at least the initial backoff.");
26
94
  }
95
+ if (!Number.isFinite(this.heartbeatIntervalMs) || this.heartbeatIntervalMs < 0) {
96
+ throw new RangeError("SlackSocketModeRunner heartbeat interval must be non-negative.");
97
+ }
98
+ if (!Number.isFinite(this.heartbeatTimeoutMs) || this.heartbeatTimeoutMs < 0) {
99
+ throw new RangeError("SlackSocketModeRunner heartbeat timeout must be non-negative.");
100
+ }
101
+ if (!Number.isFinite(this.stabilityMs) || this.stabilityMs < 0) {
102
+ throw new RangeError("SlackSocketModeRunner stability window must be non-negative.");
103
+ }
104
+ if (!Number.isFinite(this.startupGraceMs) || this.startupGraceMs < 0) {
105
+ throw new RangeError("SlackSocketModeRunner startup grace must be non-negative.");
106
+ }
107
+ if (!Number.isFinite(this.drainDeadlineMs) || this.drainDeadlineMs < 0) {
108
+ throw new RangeError("SlackSocketModeRunner drain deadline must be non-negative.");
109
+ }
110
+ if (!Number.isFinite(this.gracefulReconnectFloorMs) || this.gracefulReconnectFloorMs < 0) {
111
+ throw new RangeError("SlackSocketModeRunner graceful reconnect floor must be non-negative.");
112
+ }
113
+ if (!Number.isFinite(this.jitterRatio) || this.jitterRatio < 0 || this.jitterRatio > 1) {
114
+ throw new RangeError("SlackSocketModeRunner jitter ratio must be between 0 and 1.");
115
+ }
27
116
  }
28
117
  async start(options = {}) {
29
118
  if (isSignalAborted(options.signal)) {
30
119
  return;
31
120
  }
32
- let backoffMs = this.initialBackoffMs;
121
+ // (Re)initialize per-run state for this start cycle.
122
+ this.currentBackoffMs = this.initialBackoffMs;
123
+ this.connectionDegraded = false;
124
+ this.hasEverConnected = false;
125
+ this.startedAt = Date.now();
33
126
  while (!isSignalAborted(options.signal)) {
34
127
  try {
35
128
  await this.connectOnce(options.signal);
36
- backoffMs = this.initialBackoffMs;
129
+ // A graceful exit (refresh/warning/clean close) resolves here and reconnects
130
+ // with no backoff. Apply a small jittered floor so a degenerate server that
131
+ // drops every socket at/before open cannot spin into a zero-delay storm. The
132
+ // backoff is reset only by the stability timer once a socket proves healthy
133
+ // (see connectOnce), NOT on every connect — a flap must keep accumulating it.
134
+ await abortableDelay(this.jitteredDelay(this.gracefulReconnectFloorMs), options.signal);
37
135
  }
38
136
  catch (error) {
39
137
  if (isSignalAborted(options.signal)) {
@@ -41,13 +139,25 @@ export class SlackSocketModeRunner {
41
139
  }
42
140
  this.logger?.warn?.("Slack Socket Mode connection failed; backing off.", {
43
141
  error: error instanceof Error ? error.message : String(error),
44
- backoffMs,
142
+ backoffMs: this.currentBackoffMs,
45
143
  });
46
- await abortableDelay(backoffMs, options.signal);
47
- backoffMs = Math.min(this.maxBackoffMs, Math.max(backoffMs * 2, 1));
144
+ await abortableDelay(this.jitteredDelay(this.currentBackoffMs), options.signal);
145
+ this.currentBackoffMs = Math.min(this.maxBackoffMs, Math.max(this.currentBackoffMs * 2, 1));
48
146
  }
49
147
  }
50
148
  }
149
+ /**
150
+ * Apply band jitter to a backoff base: uniformly within ±`jitterRatio` of `baseMs`.
151
+ * De-synchronizes reconnect attempts so colliding clients (or a restart loop) stop
152
+ * re-triggering Slack's `too_many_websockets` in lockstep.
153
+ */
154
+ jitteredDelay(baseMs) {
155
+ if (baseMs <= 0 || this.jitterRatio <= 0) {
156
+ return baseMs;
157
+ }
158
+ const factor = 1 - this.jitterRatio + this.random() * this.jitterRatio * 2;
159
+ return baseMs * factor;
160
+ }
51
161
  async connectOnce(signal) {
52
162
  const connection = await this.api.appsConnectionsOpen({ ...(signal === undefined ? {} : { signal }) });
53
163
  if (isSignalAborted(signal)) {
@@ -57,26 +167,58 @@ export class SlackSocketModeRunner {
57
167
  const socket = this.webSocketFactory(connection.url);
58
168
  this.activeSocket = socket;
59
169
  let settled = false;
170
+ let heartbeatTimer;
171
+ let stabilityTimer;
172
+ let drainTimer;
173
+ let lastActivityAt = Date.now();
174
+ const markActivity = () => {
175
+ lastActivityAt = Date.now();
176
+ };
177
+ const clearTimers = () => {
178
+ if (heartbeatTimer !== undefined) {
179
+ clearInterval(heartbeatTimer);
180
+ heartbeatTimer = undefined;
181
+ }
182
+ if (stabilityTimer !== undefined) {
183
+ clearTimeout(stabilityTimer);
184
+ stabilityTimer = undefined;
185
+ }
186
+ if (drainTimer !== undefined) {
187
+ clearTimeout(drainTimer);
188
+ drainTimer = undefined;
189
+ }
190
+ };
60
191
  const settle = (action) => {
61
192
  if (settled) {
62
193
  return;
63
194
  }
64
195
  settled = true;
196
+ clearTimers();
65
197
  signal?.removeEventListener("abort", onAbort);
66
198
  if (this.activeSocket === socket) {
67
199
  this.activeSocket = undefined;
68
200
  }
69
201
  action();
70
202
  };
71
- const onAbort = () => {
203
+ // Hard teardown: drop the TCP connection immediately (no closing handshake) so
204
+ // a throttled/half-dead peer cannot linger against Slack's per-app connection
205
+ // budget and re-trigger `too_many_websockets`. Falls back to close() on a
206
+ // transport without terminate().
207
+ const drainHard = () => {
72
208
  try {
73
- socket.close();
209
+ if (typeof socket.terminate === "function") {
210
+ socket.terminate();
211
+ }
212
+ else {
213
+ socket.close();
214
+ }
74
215
  }
75
- finally {
76
- settle(resolve);
216
+ catch {
217
+ // settle still happens via the close/error handlers or the drain deadline.
77
218
  }
78
219
  };
79
- const closeForReconnect = () => {
220
+ // Graceful teardown: a normal close handshake for a planned, expected swap.
221
+ const drainGraceful = () => {
80
222
  try {
81
223
  socket.close();
82
224
  }
@@ -84,33 +226,134 @@ export class SlackSocketModeRunner {
84
226
  settle(resolve);
85
227
  }
86
228
  };
87
- const failForBackoff = (error) => {
88
- settle(() => reject(error));
229
+ // Backstop after a watchdog terminate: if the socket emits neither close nor
230
+ // error in time, force-settle so the reconnect loop can never wedge on a stuck
231
+ // socket. (The disconnect/error paths settle synchronously and never arm this.)
232
+ const armDrainDeadline = () => {
233
+ if (this.drainDeadlineMs <= 0 || drainTimer !== undefined) {
234
+ return;
235
+ }
236
+ drainTimer = setTimeout(() => {
237
+ this.logger?.warn?.("Slack Socket Mode socket did not close after terminate; forcing reconnect.");
238
+ settle(resolve);
239
+ }, this.drainDeadlineMs);
240
+ drainTimer.unref?.();
241
+ };
242
+ // Report a real degradation exactly once. Suppressed for a lingering
243
+ // prior-process socket inside the startup grace (the common post-restart case),
244
+ // where retrying quietly with backoff is expected rather than an outage.
245
+ const reportLost = (reason) => {
246
+ if (this.connectionDegraded) {
247
+ return;
248
+ }
249
+ if (!this.hasEverConnected && Date.now() - this.startedAt < this.startupGraceMs) {
250
+ this.logger?.info?.("Slack Socket Mode rejected during startup grace; retrying quietly.", { reason });
251
+ return;
252
+ }
253
+ this.connectionDegraded = true;
254
+ this.logger?.warn?.("Slack Socket Mode connection degraded; transport is recovering.", { reason });
255
+ this.onConnectionLost?.(reason);
256
+ };
257
+ // Watchdog for a silently dead ("half-open") socket: if no inbound frame
258
+ // arrives within heartbeatTimeoutMs, force-recycle so the reconnect loop
259
+ // re-establishes the connection. Without this, a connection broken by host
260
+ // sleep or a network blip never fires `close`, so the runner waits forever
261
+ // and the channel goes silent until a manual restart.
262
+ const startHeartbeat = () => {
263
+ if (this.heartbeatTimeoutMs <= 0 || this.heartbeatIntervalMs <= 0) {
264
+ return;
265
+ }
266
+ markActivity();
267
+ heartbeatTimer = setInterval(() => {
268
+ if (settled) {
269
+ return;
270
+ }
271
+ if (Date.now() - lastActivityAt >= this.heartbeatTimeoutMs) {
272
+ this.logger?.warn?.("Slack Socket Mode heartbeat timed out; recycling connection.", {
273
+ silentForMs: Date.now() - lastActivityAt,
274
+ });
275
+ reportLost("heartbeat_timeout");
276
+ drainHard();
277
+ // A silent socket may not emit close after terminate; guarantee progress.
278
+ armDrainDeadline();
279
+ return;
280
+ }
281
+ // Otherwise probe the peer so a healthy-but-idle socket stays marked
282
+ // active via the resulting pong/ping frames.
283
+ try {
284
+ socket.ping?.();
285
+ }
286
+ catch {
287
+ // A throwing ping means the socket is already gone; the close/error
288
+ // handler will settle and trigger reconnect.
289
+ }
290
+ }, this.heartbeatIntervalMs);
291
+ // Never let the watchdog keep the process alive on its own.
292
+ heartbeatTimer.unref?.();
293
+ };
294
+ const onAbort = () => {
295
+ // A clean stop: terminate-first so a fast stop→start (config reload, restart)
296
+ // cannot leave an orphaned socket counted against the per-app budget.
89
297
  try {
90
- socket.close();
298
+ drainHard();
91
299
  }
92
- catch {
93
- // Already rejected; close errors do not change the reconnect decision.
300
+ finally {
301
+ settle(resolve);
94
302
  }
95
303
  };
304
+ // Planned, graceful refresh: reconnect immediately — no backoff, no degraded.
305
+ const closeForReconnect = () => {
306
+ drainGraceful();
307
+ };
308
+ // Real failure: report degraded, settle as a reject (so start() backs off), THEN
309
+ // terminate. Settling before the terminate guarantees the reject wins the race
310
+ // against the terminate-induced `close` (which would otherwise resolve).
311
+ const failForBackoff = (error, reason) => {
312
+ reportLost(reason);
313
+ settle(() => reject(error));
314
+ drainHard();
315
+ };
96
316
  socket.on("open", () => {
97
317
  this.logger?.info?.("Slack Socket Mode connected.");
318
+ this.hasEverConnected = true;
319
+ startHeartbeat();
320
+ // Stability window: a socket that stays open this long is healthy — reset the
321
+ // backoff curve and, if we were degraded, announce recovery. Gating recovery
322
+ // on `connectionDegraded` keeps it from firing on the first healthy connect.
323
+ if (this.stabilityMs > 0) {
324
+ stabilityTimer = setTimeout(() => {
325
+ if (settled) {
326
+ return;
327
+ }
328
+ // Safe to write the class-scoped backoff here: this fires only while the
329
+ // socket is open and connectOnce's promise is unsettled, so start()'s
330
+ // post-settle read/grow always observes this reset (no cross-await race).
331
+ this.currentBackoffMs = this.initialBackoffMs;
332
+ if (this.connectionDegraded) {
333
+ this.connectionDegraded = false;
334
+ this.logger?.info?.("Slack Socket Mode connection recovered.");
335
+ this.onConnectionRestored?.();
336
+ }
337
+ }, this.stabilityMs);
338
+ stabilityTimer.unref?.();
339
+ }
98
340
  });
341
+ onPingPong(socket, markActivity);
99
342
  socket.on("message", (data) => {
343
+ markActivity();
100
344
  const envelope = parseSocketEnvelope(data);
101
345
  if (envelope === undefined) {
102
346
  this.logger?.warn?.("Slack Socket Mode envelope was malformed.");
103
347
  return;
104
348
  }
105
349
  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"}`));
350
+ const reason = envelope.reason ?? "unknown";
351
+ this.logger?.info?.("Slack Socket Mode disconnect requested.", { reason });
352
+ if (GRACEFUL_DISCONNECT_REASONS.has(reason)) {
353
+ closeForReconnect();
111
354
  return;
112
355
  }
113
- closeForReconnect();
356
+ failForBackoff(new Error(`Slack Socket Mode disconnect requested: ${reason}`), reason);
114
357
  return;
115
358
  }
116
359
  void this.handleEnvelope(socket, envelope).catch((error) => {
@@ -123,6 +366,7 @@ export class SlackSocketModeRunner {
123
366
  settle(resolve);
124
367
  });
125
368
  socket.on("error", (error) => {
369
+ reportLost("socket_error");
126
370
  settle(() => reject(error instanceof Error ? error : new Error(String(error))));
127
371
  });
128
372
  if (signal?.aborted === true) {
@@ -136,6 +380,20 @@ export class SlackSocketModeRunner {
136
380
  if (envelope.envelope_id !== undefined) {
137
381
  socket.send(JSON.stringify({ envelope_id: envelope.envelope_id }));
138
382
  }
383
+ // Interactivity: a clicked ⚡ shortcut, message action, or Block Kit button.
384
+ // The ack above already went out, so a slow handler never risks Slack's 3s
385
+ // ack deadline.
386
+ if (envelope.type === "interactive") {
387
+ if (this.onInteraction === undefined) {
388
+ return;
389
+ }
390
+ const payload = asInteractivityPayload(envelope.payload);
391
+ if (payload === undefined) {
392
+ return;
393
+ }
394
+ await this.onInteraction(payload);
395
+ return;
396
+ }
139
397
  if (envelope.type !== "events_api" || !isSlackEventCallback(envelope.payload)) {
140
398
  return;
141
399
  }
@@ -196,6 +454,13 @@ function isSlackEventCallback(value) {
196
454
  }
197
455
  return typeof value.event_id === "string" && isRecord(value.event);
198
456
  }
457
+ function asInteractivityPayload(value) {
458
+ if (!isRecord(value) ||
459
+ (value.type !== "shortcut" && value.type !== "message_action" && value.type !== "block_actions")) {
460
+ return undefined;
461
+ }
462
+ return value;
463
+ }
199
464
  function isSignalAborted(signal) {
200
465
  return signal?.aborted === true;
201
466
  }
@@ -1 +1 @@
1
- {"version":3,"file":"socket-mode-runner.js","sourceRoot":"","sources":["../src/socket-mode-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket-mode-runner.js","sourceRoot":"","sources":["../src/socket-mode-runner.ts"],"names":[],"mappings":"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"}
package/dist/start.d.ts CHANGED
@@ -1,5 +1,5 @@
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";
1
+ import { SlackAdapter, type AgentResponder, type SlackAdapterLogger, type SlackAdapterMessages, type SlackAdapterStreamOptions, type SlackAttachmentOptions, type SlackEventHandlingResult, type SlackHomeTabOptions, type SlackShortcutBinding } from "./adapter.js";
2
+ import { SlackSocketModeRunner, type SlackSocketModeRunnerBackoffOptions, type SlackSocketModeRunnerHeartbeatOptions, type SlackSocketModeRunnerLogger, type SlackWebSocketFactory } from "./socket-mode-runner.js";
3
3
  import type { SlackChannelId, SlackUserId, SlackWebApi } from "./types.js";
4
4
  export interface SlackAdapterStartLogger extends SlackAdapterLogger, SlackSocketModeRunnerLogger {
5
5
  }
@@ -22,11 +22,35 @@ export interface SlackAdapterStartOptions {
22
22
  readonly responder: AgentResponder;
23
23
  readonly stream?: SlackAdapterStreamOptions;
24
24
  readonly messages?: SlackAdapterMessages;
25
+ readonly attachments?: SlackAttachmentOptions;
26
+ /**
27
+ * Shortcut bindings (callback_id → prompt). When set, the Socket Mode runner
28
+ * routes shortcut payloads to the adapter, which runs the bound prompt as a
29
+ * proactive turn. Omitted/empty leaves interactivity ignored.
30
+ */
31
+ readonly shortcuts?: readonly SlackShortcutBinding[];
32
+ /**
33
+ * App Home tab configuration (persistent action buttons). When enabled, the
34
+ * adapter publishes the tab on open and routes button clicks to their prompts.
35
+ */
36
+ readonly homeTab?: SlackHomeTabOptions;
25
37
  readonly logger?: SlackAdapterStartLogger;
26
- /** Reconnect backoff bounds forwarded to the Socket Mode runner. */
38
+ /** Resolve an in-thread reply back to the conversation that produced the message it threads off. */
39
+ readonly resolvePostIndex?: (channelId: string, ts: string) => Promise<string | undefined>;
40
+ /** Record a posted message `(channel, ts) → conversationId` for later reply resolution. */
41
+ readonly recordPostedMessage?: (channelId: string, ts: string, conversationId: string) => void;
42
+ /** Reconnect backoff bounds (and jitter/stability/startup-grace/drain tuning) forwarded to the Socket Mode runner. */
27
43
  readonly reconnect?: SlackSocketModeRunnerBackoffOptions;
44
+ /** Heartbeat watchdog for detecting and recycling a silently dead socket. */
45
+ readonly heartbeat?: SlackSocketModeRunnerHeartbeatOptions;
28
46
  /** Observe every Socket Mode event handling result. */
29
47
  readonly onEventResult?: (result: SlackEventHandlingResult) => void | Promise<void>;
48
+ /** Called once when the connection drops into the reconnect/backoff loop (degraded). Wire to the app's onDegraded. */
49
+ readonly onConnectionLost?: (reason: string) => void;
50
+ /** Called once a reconnect has stayed up for the stability window after a prior loss (recovered). Wire to onRecovered. */
51
+ readonly onConnectionRestored?: () => void;
52
+ /** Injected RNG for backoff jitter; defaults to Math.random. Tests inject a deterministic value. */
53
+ readonly random?: () => number;
30
54
  /**
31
55
  * Injected Slack Web API factory. Defaults to constructing a real
32
56
  * {@link SlackWebApiClient}. Tests can supply a fake transport here.
@@ -1 +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"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
package/dist/start.js CHANGED
@@ -74,9 +74,24 @@ function buildAdapterOptions(api, options) {
74
74
  if (options.messages !== undefined) {
75
75
  adapterOptions.messages = options.messages;
76
76
  }
77
+ if (options.attachments !== undefined) {
78
+ adapterOptions.attachments = options.attachments;
79
+ }
80
+ if (options.shortcuts !== undefined) {
81
+ adapterOptions.shortcuts = options.shortcuts;
82
+ }
83
+ if (options.homeTab !== undefined) {
84
+ adapterOptions.homeTab = options.homeTab;
85
+ }
77
86
  if (options.logger !== undefined) {
78
87
  adapterOptions.logger = options.logger;
79
88
  }
89
+ if (options.resolvePostIndex !== undefined) {
90
+ adapterOptions.resolvePostIndex = options.resolvePostIndex;
91
+ }
92
+ if (options.recordPostedMessage !== undefined) {
93
+ adapterOptions.recordPostedMessage = options.recordPostedMessage;
94
+ }
80
95
  return adapterOptions;
81
96
  }
82
97
  function buildRunnerOptions(api, adapter, options) {
@@ -87,12 +102,46 @@ function buildRunnerOptions(api, adapter, options) {
87
102
  if (options.reconnect !== undefined) {
88
103
  runnerOptions.reconnect = options.reconnect;
89
104
  }
105
+ if (options.heartbeat !== undefined) {
106
+ runnerOptions.heartbeat = options.heartbeat;
107
+ }
90
108
  if (options.webSocketFactory !== undefined) {
91
109
  runnerOptions.webSocketFactory = options.webSocketFactory;
92
110
  }
93
111
  if (options.onEventResult !== undefined) {
94
112
  runnerOptions.onEventResult = options.onEventResult;
95
113
  }
114
+ if (options.onConnectionLost !== undefined) {
115
+ runnerOptions.onConnectionLost = options.onConnectionLost;
116
+ }
117
+ if (options.onConnectionRestored !== undefined) {
118
+ runnerOptions.onConnectionRestored = options.onConnectionRestored;
119
+ }
120
+ if (options.random !== undefined) {
121
+ runnerOptions.random = options.random;
122
+ }
123
+ // Only subscribe to interactivity when shortcuts or Home-tab buttons are bound,
124
+ // so the runner's behavior is unchanged for agents that wire none.
125
+ const hasShortcuts = options.shortcuts !== undefined && options.shortcuts.length > 0;
126
+ const hasHomeButtons = options.homeTab?.buttons !== undefined && options.homeTab.buttons.length > 0;
127
+ if (hasShortcuts || hasHomeButtons) {
128
+ runnerOptions.onInteraction = async (payload) => {
129
+ try {
130
+ const result = await adapter.handleInteraction(payload);
131
+ if (result.kind === "triggered") {
132
+ options.logger?.info?.("Slack interaction triggered.", { result });
133
+ }
134
+ else {
135
+ options.logger?.debug?.("Slack interaction ignored.", { result });
136
+ }
137
+ }
138
+ catch (error) {
139
+ options.logger?.error?.("Slack interaction handling failed.", {
140
+ error: error instanceof Error ? error.message : String(error),
141
+ });
142
+ }
143
+ };
144
+ }
96
145
  if (options.logger !== undefined) {
97
146
  runnerOptions.logger = options.logger;
98
147
  }
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}