@starlight-ai/discord-waifus 1.5.136 → 1.5.138

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.
@@ -48,6 +48,8 @@ export async function startBackend(options) {
48
48
  let runtimeOrchestrator;
49
49
  let discordRetryTimer;
50
50
  let discordRetryAttempt = 0;
51
+ let discordRecoveryInProgress = false;
52
+ let pendingLiveDiscordErrorMessage;
51
53
  let closing = false;
52
54
  const cleanupOcr = async (currentConfig = config) => {
53
55
  const ocr = new ImageOcrService({
@@ -85,9 +87,40 @@ export async function startBackend(options) {
85
87
  };
86
88
  const nextDiscordRetryDelayMs = (attempt) => discordRetryDelaysMs[Math.min(attempt - 1, discordRetryDelaysMs.length - 1)] ??
87
89
  DEFAULT_DISCORD_RETRY_DELAYS_MS[0];
88
- const scheduleDiscordRetry = async (message) => {
90
+ const scheduleDiscordRetry = async (message, retryOptions = {}) => {
89
91
  if (closing)
90
92
  return;
93
+ const failureLabel = retryOptions.failureLabel ?? "Discord auto-connect failed";
94
+ if (retryOptions.preserveExistingTimer && discordRetryTimer) {
95
+ const lastErrorAt = new Date().toISOString();
96
+ const attempt = Math.max(discordRetryAttempt, 1);
97
+ const nextRetryAt = runtime.discord.nextRetryAt ??
98
+ new Date(Date.now() + nextDiscordRetryDelayMs(attempt)).toISOString();
99
+ runtime.discord = {
100
+ ...runtime.discord,
101
+ connected: false,
102
+ orchestratorConnected: false,
103
+ waifuBotCount: 0,
104
+ retrying: true,
105
+ retryAttempt: attempt,
106
+ nextRetryAt,
107
+ lastError: message,
108
+ lastErrorAt,
109
+ warnings: [
110
+ `${failureLabel}: ${message}`,
111
+ `Discord auto-connect will retry automatically at ${nextRetryAt}.`
112
+ ]
113
+ };
114
+ runtime.updatedAt = new Date().toISOString();
115
+ await writeRuntimeFiles(options.dataRoot, runtime);
116
+ logger.warn("Discord auto-connect retry already pending; updated latest error", {
117
+ attempt: runtime.discord.retryAttempt,
118
+ nextRetryAt,
119
+ message,
120
+ reason: retryOptions.logReason
121
+ });
122
+ return;
123
+ }
91
124
  clearDiscordRetry();
92
125
  discordRetryAttempt += 1;
93
126
  const lastErrorAt = new Date().toISOString();
@@ -104,7 +137,7 @@ export async function startBackend(options) {
104
137
  lastError: message,
105
138
  lastErrorAt,
106
139
  warnings: [
107
- `Discord auto-connect failed: ${message}`,
140
+ `${failureLabel}: ${message}`,
108
141
  `Discord auto-connect will retry automatically at ${nextRetryAt}.`
109
142
  ]
110
143
  };
@@ -114,7 +147,8 @@ export async function startBackend(options) {
114
147
  attempt: discordRetryAttempt,
115
148
  nextRetryAt,
116
149
  delayMs,
117
- message
150
+ message,
151
+ reason: retryOptions.logReason
118
152
  });
119
153
  discordRetryTimer = setTimeout(() => {
120
154
  discordRetryTimer = undefined;
@@ -124,6 +158,45 @@ export async function startBackend(options) {
124
158
  });
125
159
  }, delayMs);
126
160
  };
161
+ const handleDiscordRuntimeIssue = async (issue) => {
162
+ if (closing)
163
+ return;
164
+ const message = issue.message || "Discord runtime issue.";
165
+ if (!isRetryableDiscordRuntimeIssue(issue)) {
166
+ logger.warn("Discord runtime issue did not trigger reconnect", discordRuntimeIssueLogContext(issue));
167
+ return;
168
+ }
169
+ pendingLiveDiscordErrorMessage = message;
170
+ if (discordRetryTimer) {
171
+ await scheduleDiscordRetry(message, {
172
+ preserveExistingTimer: true,
173
+ failureLabel: "Discord connection lost",
174
+ logReason: issue.source
175
+ });
176
+ return;
177
+ }
178
+ if (discordRecoveryInProgress) {
179
+ return;
180
+ }
181
+ discordRecoveryInProgress = true;
182
+ try {
183
+ logger.warn("Discord runtime issue triggered reconnect", discordRuntimeIssueLogContext(issue));
184
+ await runtimeOrchestrator?.stop();
185
+ await gateway?.disconnect();
186
+ runtimeOrchestrator = undefined;
187
+ gateway = undefined;
188
+ runtime.queues.active = 0;
189
+ await scheduleDiscordRetry(pendingLiveDiscordErrorMessage ?? message, {
190
+ preserveExistingTimer: true,
191
+ failureLabel: "Discord connection lost",
192
+ logReason: issue.source
193
+ });
194
+ }
195
+ finally {
196
+ discordRecoveryInProgress = false;
197
+ pendingLiveDiscordErrorMessage = undefined;
198
+ }
199
+ };
127
200
  const reloadRuntime = async (reason, retryOptions = {}) => {
128
201
  if (!retryOptions.scheduledRetry) {
129
202
  clearDiscordRetry();
@@ -138,7 +211,7 @@ export async function startBackend(options) {
138
211
  const currentConfig = await loadAppConfig(options.dataRoot);
139
212
  await cleanupOcr(currentConfig);
140
213
  runtime.paused = currentConfig.runtime.paused;
141
- const connected = await maybeConnectDiscord(storage, currentConfig.runtime.autoConnectDiscord, logger, createDiscordGateway);
214
+ const connected = await maybeConnectDiscord(storage, currentConfig.runtime.autoConnectDiscord, logger, createDiscordGateway, handleDiscordRuntimeIssue);
142
215
  runtime.discord = connected.status;
143
216
  gateway = connected.gateway;
144
217
  if (gateway) {
@@ -214,7 +287,7 @@ function offlineDiscordStatus(warnings = []) {
214
287
  warnings
215
288
  };
216
289
  }
217
- async function maybeConnectDiscord(storage, autoConnect, logger, createDiscordGateway) {
290
+ async function maybeConnectDiscord(storage, autoConnect, logger, createDiscordGateway, onRuntimeIssue) {
218
291
  const offline = offlineDiscordStatus(autoConnect ? ["Discord auto-connect is enabled but no orchestrator token is configured."] : []);
219
292
  if (!autoConnect) {
220
293
  return { status: offline };
@@ -250,7 +323,8 @@ async function maybeConnectDiscord(storage, autoConnect, logger, createDiscordGa
250
323
  return {
251
324
  roles: roles.roles
252
325
  };
253
- }
326
+ },
327
+ onRuntimeIssue
254
328
  });
255
329
  try {
256
330
  const status = await gateway.connect();
@@ -280,7 +354,10 @@ const RETRYABLE_DISCORD_ERROR_CODES = new Set([
280
354
  "ECONNREFUSED",
281
355
  "ENETUNREACH",
282
356
  "EHOSTUNREACH",
283
- "EPIPE"
357
+ "EPIPE",
358
+ "UND_ERR_CONNECT_TIMEOUT",
359
+ "UND_ERR_HEADERS_TIMEOUT",
360
+ "UND_ERR_SOCKET"
284
361
  ]);
285
362
  const RETRYABLE_DISCORD_MESSAGE_PATTERNS = [
286
363
  /\bgetaddrinfo\b/i,
@@ -289,10 +366,12 @@ const RETRYABLE_DISCORD_MESSAGE_PATTERNS = [
289
366
  /\btimeout\b/i,
290
367
  /\btimed out\b/i,
291
368
  /\bsocket\b/i,
369
+ /\bfetch failed\b/i,
292
370
  /\bconnection reset\b/i,
293
371
  /\bconnection refused\b/i,
294
372
  /\bunreachable\b/i
295
373
  ];
374
+ const RETRYABLE_DISCORD_CLOSE_CODES = new Set([1001, 1006, 1011, 1012, 1013, 4000]);
296
375
  function isRetryableDiscordAutoConnectError(error) {
297
376
  const code = errorCode(error);
298
377
  if (code && RETRYABLE_DISCORD_ERROR_CODES.has(code)) {
@@ -301,12 +380,37 @@ function isRetryableDiscordAutoConnectError(error) {
301
380
  const message = error instanceof Error ? error.message : String(error);
302
381
  return RETRYABLE_DISCORD_MESSAGE_PATTERNS.some((pattern) => pattern.test(message));
303
382
  }
383
+ function isRetryableDiscordRuntimeIssue(issue) {
384
+ if (isRetryableDiscordAutoConnectError(issue.error ?? issue) || isRetryableDiscordAutoConnectError(issue)) {
385
+ return true;
386
+ }
387
+ if (issue.source === "invalidated") {
388
+ return true;
389
+ }
390
+ if (issue.source === "shard-disconnect" && issue.wasClean === false && typeof issue.code === "number") {
391
+ return RETRYABLE_DISCORD_CLOSE_CODES.has(issue.code);
392
+ }
393
+ return false;
394
+ }
395
+ function discordRuntimeIssueLogContext(issue) {
396
+ return {
397
+ source: issue.source,
398
+ botId: issue.botId,
399
+ shardId: issue.shardId,
400
+ code: issue.code,
401
+ wasClean: issue.wasClean,
402
+ message: issue.message
403
+ };
404
+ }
304
405
  function errorCode(error) {
305
406
  if (!error || typeof error !== "object")
306
407
  return undefined;
307
408
  const code = error.code;
308
409
  if (typeof code === "string")
309
410
  return code;
411
+ const nestedError = errorCode(error.error);
412
+ if (nestedError)
413
+ return nestedError;
310
414
  return errorCode(error.cause);
311
415
  }
312
416
  async function refreshDiscordMembersForRuntime(storage, guildId) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,15 @@ export type DiscordRuntimeStatus = {
13
13
  lastError?: string;
14
14
  lastErrorAt?: string;
15
15
  };
16
+ export type DiscordRuntimeIssue = {
17
+ source: "client-error" | "shard-error" | "shard-disconnect" | "invalidated" | "warn";
18
+ message: string;
19
+ botId?: string;
20
+ shardId?: number;
21
+ code?: string | number;
22
+ wasClean?: boolean;
23
+ error?: unknown;
24
+ };
16
25
  export interface DiscordGatewayFacade {
17
26
  connect(): Promise<DiscordRuntimeStatus>;
18
27
  disconnect(): Promise<void>;
@@ -156,6 +165,7 @@ export type DiscordJsGatewayOptions = {
156
165
  cacheForGuild?: (guildId: string) => Promise<DiscordCache>;
157
166
  refreshMembersForGuild?: (guildId: string) => Promise<DiscordCache>;
158
167
  refreshRolesForGuild?: (guildId: string) => Promise<DiscordCache>;
168
+ onRuntimeIssue?: (issue: DiscordRuntimeIssue) => void | Promise<void>;
159
169
  logger?: Logger;
160
170
  };
161
171
  export declare class DiscordJsGateway implements DiscordGatewayFacade {
@@ -234,6 +244,11 @@ export declare class DiscordJsGateway implements DiscordGatewayFacade {
234
244
  private clientForAuthor;
235
245
  private botIdForClient;
236
246
  private shouldRefreshMentions;
247
+ private attachClientRuntimeHandlers;
248
+ private reportRuntimeIssue;
249
+ private callListener;
250
+ private dispatchListener;
251
+ private runBackground;
237
252
  private handleReviewInteraction;
238
253
  private handleClearInteraction;
239
254
  private handleRunInteraction;
@@ -29,6 +29,7 @@ export class DiscordJsGateway {
29
29
  ],
30
30
  partials: [Partials.Channel, Partials.Message, Partials.Reaction]
31
31
  });
32
+ this.attachClientRuntimeHandlers(client, bot.id);
32
33
  if (bot.id === this.options.orchestrator.id) {
33
34
  client.on("messageCreate", (message) => {
34
35
  if (!message.guildId)
@@ -48,35 +49,43 @@ export class DiscordJsGateway {
48
49
  authorBot: event.authorBot
49
50
  });
50
51
  for (const listener of this.listeners) {
51
- void listener(event);
52
+ this.dispatchListener("Discord message listener failed", listener, event, {
53
+ guildId: event.guildId,
54
+ channelId: event.channelId,
55
+ messageId: event.messageId
56
+ });
52
57
  }
53
58
  });
54
59
  client.on(Events.InteractionCreate, (interaction) => {
55
60
  if (interaction.isAutocomplete()) {
56
61
  if (interaction.commandName === RUN_COMMAND_NAME) {
57
- void this.handleRunAutocompleteInteraction(interaction);
62
+ this.runBackground("Discord run autocomplete interaction failed", {
63
+ commandName: interaction.commandName,
64
+ guildId: interaction.guildId,
65
+ channelId: interaction.channelId
66
+ }, () => this.handleRunAutocompleteInteraction(interaction));
58
67
  }
59
68
  return;
60
69
  }
61
70
  if (!interaction.isChatInputCommand())
62
71
  return;
63
72
  if (interaction.commandName === REVIEW_COMMAND_NAME) {
64
- void this.handleReviewInteraction(interaction);
73
+ this.runBackground("Discord review interaction failed", interactionLogContext(interaction), () => this.handleReviewInteraction(interaction));
65
74
  }
66
75
  else if (interaction.commandName === CLEAR_COMMAND_NAME) {
67
- void this.handleClearInteraction(interaction);
76
+ this.runBackground("Discord clear interaction failed", interactionLogContext(interaction), () => this.handleClearInteraction(interaction));
68
77
  }
69
78
  else if (interaction.commandName === RUN_COMMAND_NAME) {
70
- void this.handleRunInteraction(interaction);
79
+ this.runBackground("Discord run interaction failed", interactionLogContext(interaction), () => this.handleRunInteraction(interaction));
71
80
  }
72
81
  else if (interaction.commandName === STOP_COMMAND_NAME) {
73
- void this.handleStopInteraction(interaction);
82
+ this.runBackground("Discord stop interaction failed", interactionLogContext(interaction), () => this.handleStopInteraction(interaction));
74
83
  }
75
84
  else if (interaction.commandName === MEMORIES_COMMAND_NAME) {
76
- void this.handleMemoriesInteraction(interaction);
85
+ this.runBackground("Discord memories interaction failed", interactionLogContext(interaction), () => this.handleMemoriesInteraction(interaction));
77
86
  }
78
87
  else if (interaction.commandName === DEBUG_COMMAND_NAME) {
79
- void this.handleDebugInteraction(interaction);
88
+ this.runBackground("Discord debug interaction failed", interactionLogContext(interaction), () => this.handleDebugInteraction(interaction));
80
89
  }
81
90
  });
82
91
  }
@@ -489,6 +498,87 @@ export class DiscordJsGateway {
489
498
  this.recentMentionRefreshes.set(guildId, now);
490
499
  return true;
491
500
  }
501
+ attachClientRuntimeHandlers(client, botId) {
502
+ client.on(Events.Error, (error) => {
503
+ this.reportRuntimeIssue({
504
+ source: "client-error",
505
+ botId,
506
+ message: errorMessage(error),
507
+ error
508
+ });
509
+ });
510
+ client.on(Events.ShardError, (error, shardId) => {
511
+ this.reportRuntimeIssue({
512
+ source: "shard-error",
513
+ botId,
514
+ shardId,
515
+ message: errorMessage(error),
516
+ error
517
+ });
518
+ });
519
+ client.on(Events.ShardDisconnect, (event, shardId) => {
520
+ const code = closeEventCode(event);
521
+ const reason = closeEventReason(event);
522
+ this.reportRuntimeIssue({
523
+ source: "shard-disconnect",
524
+ botId,
525
+ shardId,
526
+ code,
527
+ wasClean: closeEventWasClean(event),
528
+ message: `Discord shard disconnected${code === undefined ? "" : ` with code ${code}`}${reason ? `: ${reason}` : "."}`
529
+ });
530
+ });
531
+ client.on(Events.Invalidated, () => {
532
+ this.reportRuntimeIssue({
533
+ source: "invalidated",
534
+ botId,
535
+ message: "Discord gateway session was invalidated."
536
+ });
537
+ });
538
+ client.on(Events.Warn, (message) => {
539
+ this.reportRuntimeIssue({
540
+ source: "warn",
541
+ botId,
542
+ message
543
+ });
544
+ });
545
+ }
546
+ reportRuntimeIssue(issue) {
547
+ const context = runtimeIssueLogContext(issue);
548
+ if (issue.source === "warn") {
549
+ this.options.logger?.warn("Discord gateway warning", context);
550
+ }
551
+ else {
552
+ this.options.logger?.error("Discord gateway runtime issue", context);
553
+ }
554
+ if (!this.options.onRuntimeIssue)
555
+ return;
556
+ this.runBackground("Discord runtime issue callback failed", context, () => this.options.onRuntimeIssue?.(issue));
557
+ }
558
+ async callListener(label, listener, event, context) {
559
+ try {
560
+ await listener(event);
561
+ }
562
+ catch (error) {
563
+ this.options.logger?.error(label, {
564
+ ...context,
565
+ message: error instanceof Error ? error.message : String(error)
566
+ });
567
+ }
568
+ }
569
+ dispatchListener(label, listener, event, context) {
570
+ void this.callListener(label, listener, event, context);
571
+ }
572
+ runBackground(label, context, task) {
573
+ void Promise.resolve()
574
+ .then(task)
575
+ .catch((error) => {
576
+ this.options.logger?.error(label, {
577
+ ...context,
578
+ message: error instanceof Error ? error.message : String(error)
579
+ });
580
+ });
581
+ }
492
582
  async handleReviewInteraction(interaction) {
493
583
  await interaction.deferReply({ flags: MessageFlags.Ephemeral });
494
584
  if (!interaction.guildId || !interaction.channelId) {
@@ -504,7 +594,7 @@ export class DiscordJsGateway {
504
594
  }
505
595
  };
506
596
  for (const listener of this.reviewListeners) {
507
- void listener(event);
597
+ this.dispatchListener("Discord review command listener failed", listener, event, slashCommandLogContext(event));
508
598
  }
509
599
  }
510
600
  async handleClearInteraction(interaction) {
@@ -524,7 +614,7 @@ export class DiscordJsGateway {
524
614
  }
525
615
  };
526
616
  for (const listener of this.clearListeners) {
527
- void listener(event);
617
+ this.dispatchListener("Discord clear command listener failed", listener, event, slashCommandLogContext(event));
528
618
  }
529
619
  }
530
620
  async handleRunInteraction(interaction) {
@@ -544,7 +634,7 @@ export class DiscordJsGateway {
544
634
  }
545
635
  };
546
636
  for (const listener of this.runListeners) {
547
- void listener(event);
637
+ this.dispatchListener("Discord run command listener failed", listener, event, slashCommandLogContext(event));
548
638
  }
549
639
  }
550
640
  async handleRunAutocompleteInteraction(interaction) {
@@ -565,7 +655,11 @@ export class DiscordJsGateway {
565
655
  await interaction.respond([]);
566
656
  return;
567
657
  }
568
- await Promise.all([...this.runWaifuAutocompleteListeners].map((listener) => listener(event)));
658
+ await Promise.all([...this.runWaifuAutocompleteListeners].map((listener) => this.callListener("Discord run autocomplete listener failed", listener, event, {
659
+ guildId: event.guildId,
660
+ channelId: event.channelId,
661
+ focusedValue: event.focusedValue
662
+ })));
569
663
  }
570
664
  async handleStopInteraction(interaction) {
571
665
  await interaction.deferReply({ flags: MessageFlags.Ephemeral });
@@ -582,7 +676,7 @@ export class DiscordJsGateway {
582
676
  }
583
677
  };
584
678
  for (const listener of this.stopListeners) {
585
- void listener(event);
679
+ this.dispatchListener("Discord stop command listener failed", listener, event, slashCommandLogContext(event));
586
680
  }
587
681
  }
588
682
  async handleMemoriesInteraction(interaction) {
@@ -600,7 +694,7 @@ export class DiscordJsGateway {
600
694
  }
601
695
  };
602
696
  for (const listener of this.memoriesListeners) {
603
- void listener(event);
697
+ this.dispatchListener("Discord memories command listener failed", listener, event, slashCommandLogContext(event));
604
698
  }
605
699
  }
606
700
  async handleDebugInteraction(interaction) {
@@ -620,7 +714,11 @@ export class DiscordJsGateway {
620
714
  }
621
715
  };
622
716
  for (const listener of this.debugListeners) {
623
- void listener(event);
717
+ this.dispatchListener("Discord debug command listener failed", listener, event, {
718
+ ...slashCommandLogContext(event),
719
+ type: event.type,
720
+ sourceChannelId: event.sourceChannelId
721
+ });
624
722
  }
625
723
  }
626
724
  }
@@ -785,6 +883,44 @@ function sanitizeRunString(value) {
785
883
  function parseDebugCommandType(value) {
786
884
  return value === "set" || value === "unset" || value === "print" ? value : undefined;
787
885
  }
886
+ function errorMessage(error) {
887
+ return error instanceof Error ? error.message : String(error);
888
+ }
889
+ function closeEventCode(event) {
890
+ return typeof event.code === "string" || typeof event.code === "number" ? event.code : undefined;
891
+ }
892
+ function closeEventReason(event) {
893
+ return typeof event.reason === "string" && event.reason.trim() ? event.reason.trim() : undefined;
894
+ }
895
+ function closeEventWasClean(event) {
896
+ return typeof event.wasClean === "boolean" ? event.wasClean : undefined;
897
+ }
898
+ function runtimeIssueLogContext(issue) {
899
+ return {
900
+ source: issue.source,
901
+ botId: issue.botId,
902
+ shardId: issue.shardId,
903
+ code: issue.code,
904
+ wasClean: issue.wasClean,
905
+ message: issue.message
906
+ };
907
+ }
908
+ function interactionLogContext(interaction) {
909
+ return {
910
+ commandName: interaction.commandName,
911
+ guildId: interaction.guildId,
912
+ channelId: interaction.channelId,
913
+ userId: interaction.user.id
914
+ };
915
+ }
916
+ function slashCommandLogContext(event) {
917
+ return {
918
+ guildId: event.guildId,
919
+ channelId: event.channelId,
920
+ userId: event.userId,
921
+ commandMessageId: event.commandMessageId
922
+ };
923
+ }
788
924
  function isBulkDeletableMessage(message) {
789
925
  return message.createdTimestamp === undefined || Date.now() - message.createdTimestamp < DISCORD_BULK_DELETE_MAX_AGE_MS;
790
926
  }