@moxxy/plugin-channel-discord 0.28.1 → 0.30.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.
@@ -1 +1 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,SAAS,CAA0E;IAC3F,OAAO,CAAC,MAAM,CAAK;IAEnB,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIvE,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBlE,8EAA8E;IAC9E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD,oDAAoD;IACpD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQrD,2DAA2D;IAC3D,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ3E,QAAQ,CAAC,MAAM,SAAmB,GAAG,IAAI;CAS1C"}
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,SAAS,CAA0E;IAC3F,OAAO,CAAC,MAAM,CAAK;IAEnB,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIvE,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBlE,8EAA8E;IAC9E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAInD,oDAAoD;IACpD,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQrD,2DAA2D;IAC3D,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ3E,QAAQ,CAAC,MAAM,SAAmB,GAAG,IAAI;CAS1C"}
package/dist/approval.js CHANGED
@@ -18,10 +18,11 @@ export class DiscordApprovalResolver {
18
18
  // No bot wired up — best fallback is the request's defaultOptionId.
19
19
  return { optionId: request.defaultOptionId ?? request.options[0]?.id ?? 'approve' };
20
20
  }
21
+ const decider = this.deciderFn;
21
22
  const id = `appr_${this.nextId++}`;
22
23
  return new Promise((resolve) => {
23
24
  this.pending.set(id, { id, request, resolve });
24
- this.deciderFn(id, request).catch((err) => {
25
+ decider(id, request).catch((err) => {
25
26
  this.pending.delete(id);
26
27
  resolve({
27
28
  optionId: request.defaultOptionId ?? request.options[0]?.id ?? 'cancel',
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ChannelHandle, ClientSession as Session } from '@moxxy/sdk';
1
+ import { type ChannelHandle, type ClientSession as Session } from '@moxxy/sdk';
2
2
  import type { InboundMessage } from '../schema.js';
3
3
  import type { DiscordApprovalResolver } from '../approval.js';
4
4
  import type { DiscordPermissionResolver } from '../permission.js';
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/channel/message-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../src/channel/message-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,eAAe,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACtC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/E,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E;qDACiD;IACjD,QAAQ,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,kBAAkB,EACxB,EAAE,EAAE,uBAAuB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyFf;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,gBAAgB,GAAG,QAAQ,CAAC,EACzE,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,oBAAoB,CAAC,EACzE,EAAE,EAAE,IAAI,CAAC,uBAAuB,EAAE,yBAAyB,GAAG,SAAS,CAAC,GACvE,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
@@ -1,3 +1,4 @@
1
+ import { assertDefined } from '@moxxy/sdk';
1
2
  import { gateInbound } from '../allow-list.js';
2
3
  import { runSlash } from './slash-handler.js';
3
4
  /**
@@ -73,6 +74,7 @@ export async function handleInboundMessage(ctx, state, deps, cb) {
73
74
  if (!state.session)
74
75
  return;
75
76
  const [head, ...rest] = text.split(/\s+/);
77
+ assertDefined(head, 'splitting a non-empty command string yields at least one token');
76
78
  const reply = await runSlash(head.slice(1), rest.join(' '), state.session, {
77
79
  toggleYolo: cb.toggleYolo,
78
80
  voice: cb.voice,
@@ -1 +1 @@
1
- {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/channel/message-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../src/channel/message-handler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { newTurnId } from '@moxxy/core';
2
- import type { ClientSession as Session } from '@moxxy/sdk';
2
+ import { type ClientSession as Session } from '@moxxy/sdk';
3
3
  import type { ChannelLogger, SendableChannelLike } from './discord-like.js';
4
4
  import type { TypingIndicator } from './typing-indicator.js';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAG3D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGtE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
1
+ {"version":3,"file":"turn-runner.d.ts","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAiB,KAAK,aAAa,IAAI,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGtE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkFf"}
@@ -1,3 +1,4 @@
1
+ import { assertDefined } from '@moxxy/sdk';
1
2
  import { FramePump, driveTurn, subscribeTurn } from '@moxxy/channel-kit';
2
3
  import { DiscordTurnRenderer, splitForDiscord } from '../render.js';
3
4
  /**
@@ -51,7 +52,9 @@ export async function runDiscordTurn(deps, opts) {
51
52
  sink: {
52
53
  send: async (t, final) => {
53
54
  const parts = splitForDiscord(t);
54
- const sent = await sendPart(parts[0]);
55
+ const head = parts[0];
56
+ assertDefined(head, 'discord: FramePump never sinks empty text (emptyFinalText guarantees a part)');
57
+ const sent = await sendPart(head);
55
58
  if (final)
56
59
  for (const tail of parts.slice(1))
57
60
  await sendPart(tail);
@@ -59,8 +62,10 @@ export async function runDiscordTurn(deps, opts) {
59
62
  },
60
63
  edit: async (message, t, final) => {
61
64
  const parts = splitForDiscord(t);
65
+ const head = parts[0];
66
+ assertDefined(head, 'discord: FramePump never sinks empty text (emptyFinalText guarantees a part)');
62
67
  try {
63
- await message.edit(parts[0]);
68
+ await message.edit(head);
64
69
  }
65
70
  catch (err) {
66
71
  logger?.warn('discord edit failed', { err: String(err) });
@@ -1 +1 @@
1
- {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-runner.js","sourceRoot":"","sources":["../../src/channel/turn-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../../src/channel/typing-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA+C;IAE5D,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAWzC,IAAI,IAAI,IAAI;CAMb"}
1
+ {"version":3,"file":"typing-indicator.d.ts","sourceRoot":"","sources":["../../src/channel/typing-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK7D;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA+C;IAE5D,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAYzC,IAAI,IAAI,IAAI;CAMb"}
@@ -11,8 +11,9 @@ export class TypingIndicator {
11
11
  this.stop();
12
12
  if (!channel.sendTyping)
13
13
  return;
14
+ const sendTyping = channel.sendTyping;
14
15
  const ping = () => {
15
- void channel.sendTyping?.()?.catch?.(() => undefined);
16
+ void sendTyping().catch(() => undefined);
16
17
  };
17
18
  ping();
18
19
  this.timer = setInterval(ping, REFRESH_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"typing-indicator.js","sourceRoot":"","sources":["../../src/channel/typing-indicator.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAClB,KAAK,GAA0C,IAAI,CAAC;IAE5D,KAAK,CAAC,OAA4B;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO;QAChC,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"typing-indicator.js","sourceRoot":"","sources":["../../src/channel/typing-indicator.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAClB,KAAK,GAA0C,IAAI,CAAC;IAE5D,KAAK,CAAC,OAA4B;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,KAAK,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,SAAS,CACV;IAEP,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhF,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBvF,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO;IAQrE,oFAAoF;IACpF,QAAQ,CAAC,MAAM,SAAmB,GAAG,IAAI;CAM1C"}
1
+ {"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,QAAQ,CAAC,IAAI,aAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,SAAS,CACV;IAEP,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIhF,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmBvF,6EAA6E;IAC7E,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO;IAQrE,oFAAoF;IACpF,QAAQ,CAAC,MAAM,SAAmB,GAAG,IAAI;CAM1C"}
@@ -23,9 +23,10 @@ export class DiscordPermissionResolver {
23
23
  if (!this.deciderFn) {
24
24
  return { mode: 'deny', reason: 'no decider attached (bot not running)' };
25
25
  }
26
+ const decider = this.deciderFn;
26
27
  const decision = await new Promise((resolve) => {
27
28
  this.pending.set(call.callId, { callId: call.callId, call, ctx, resolve });
28
- this.deciderFn(call, ctx).catch((err) => {
29
+ decider(call, ctx).catch((err) => {
29
30
  this.pending.delete(call.callId);
30
31
  resolve({ mode: 'deny', reason: err instanceof Error ? err.message : String(err) });
31
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,SAAS,CAAC;IACT,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC/C,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,SAAS,GACf,IAAI,CAAC;IAEP,UAAU,CAAC,EAAoE;QAC7E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAqB,EAAE,GAAsB;QACvD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;QAC3E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,cAAc,CAAC,MAAc,EAAE,QAA4B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oFAAoF;IACpF,QAAQ,CAAC,MAAM,GAAG,gBAAgB;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,SAAS,CAAC;IACT,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC/C,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,SAAS,GACf,IAAI,CAAC;IAEP,UAAU,CAAC,EAAoE;QAC7E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAqB,EAAE,GAAsB;QACvD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;QAC3E,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;YACjE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,6EAA6E;IAC7E,cAAc,CAAC,MAAc,EAAE,QAA4B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oFAAoF;IACpF,QAAQ,CAAC,MAAM,GAAG,gBAAgB;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
package/dist/render.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { MoxxyEvent } from '@moxxy/sdk';
1
+ import { type MoxxyEvent } from '@moxxy/sdk';
2
2
  /**
3
3
  * Discord messages cap at 2000 chars; leave margin for the fence-reopen text a
4
4
  * split may prepend to a tail part.
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AA8B3C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAM;IAEvB,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAkDlC,QAAQ,IAAI,MAAM;IAUlB;oDACgD;IAChD,SAAS,IAAI,MAAM;IAInB,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,cAAc;CAcvB;AA2CD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAA8B,GAAG,MAAM,EAAE,CAwB7F"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AA8B3C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAM;IAEvB,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAkDlC,QAAQ,IAAI,MAAM;IAUlB;oDACgD;IAChD,SAAS,IAAI,MAAM;IAInB,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,cAAc;CAcvB;AA2CD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAA8B,GAAG,MAAM,EAAE,CAwB7F"}
package/dist/render.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { assertDefined } from '@moxxy/sdk';
1
2
  /**
2
3
  * Discord messages cap at 2000 chars; leave margin for the fence-reopen text a
3
4
  * split may prepend to a tail part.
@@ -197,7 +198,9 @@ function openFenceAt(text, idx, seed) {
197
198
  const fenceRe = /(?:^|\n)(```[^\n]*)/g;
198
199
  let m;
199
200
  while ((m = fenceRe.exec(scan)) !== null) {
200
- open = open === null ? m[1] : null;
201
+ const fence = m[1];
202
+ assertDefined(fence, 'fenceRe has a mandatory capture group when it matches');
203
+ open = open === null ? fence : null;
201
204
  }
202
205
  return open;
203
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAG/B;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAEvC,gFAAgF;AAChF,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAMpB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;IAE/B,oEAAoE;;;IAGpE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKpB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEjE,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,gBAAgB,CAAC;YAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;YACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;YACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;SACzB,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,GAAG,IAAI,CA0BhF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAG/B;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAEvC,gFAAgF;AAChF,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAMpB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;IAE/B,oEAAoE;;;IAGpE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKpB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEjE,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,gBAAgB,CAAC;YAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;YACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;YACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;SACzB,CAAC,CAAC;KACJ,GAAG,IAAI,CAAC;CACV;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,GAAG,IAAI,CA2BhF"}
package/dist/schema.js CHANGED
@@ -42,7 +42,8 @@ export const inboundMessageSchema = z.object({
42
42
  export function extractInboundMessage(msg) {
43
43
  const attachments = [];
44
44
  try {
45
- for (const a of msg.attachments?.values?.() ?? []) {
45
+ const rawAttachments = msg.attachments;
46
+ for (const a of rawAttachments?.values ? rawAttachments.values() : []) {
46
47
  attachments.push({
47
48
  id: a?.id,
48
49
  url: a?.url,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,eAAe;IACnB,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1C,SAAS,EAAE,eAAe;IAC1B,oBAAoB;IACpB,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAuBH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAmB;IACvD,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,CAAC,EAAE,EAAE;gBACT,GAAG,EAAE,CAAC,EAAE,GAAG;gBACX,WAAW,EAAE,CAAC,EAAE,WAAW,IAAI,IAAI;gBACnC,IAAI,EAAE,CAAC,EAAE,IAAI;gBACb,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE;QACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI;QACrC,WAAW;KACZ,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,eAAe;IACnB,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1C,SAAS,EAAE,eAAe;IAC1B,oBAAoB;IACpB,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/C,CAAC,CAAC;AAuBH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAmB;IACvD,MAAM,WAAW,GAAc,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACtE,WAAW,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,CAAC,EAAE,EAAE;gBACT,GAAG,EAAE,CAAC,EAAE,GAAG;gBACX,WAAW,EAAE,CAAC,EAAE,WAAW,IAAI,IAAI;gBACnC,IAAI,EAAE,CAAC,EAAE,IAAI;gBACb,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,IAAI;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG;QAChB,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE;QACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI;QACrC,WAAW;KACZ,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moxxy/plugin-channel-discord",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "description": "Discord channel for moxxy via discord.js. Treats Discord DMs and allow-listed guild channels as a bidirectional channel: prompts in, streamed assistant replies out (edit-throttled), button-based permission prompts, DM code pairing.",
5
5
  "keywords": [
6
6
  "moxxy",
@@ -68,10 +68,10 @@
68
68
  "dependencies": {
69
69
  "@clack/prompts": "^1.4.0",
70
70
  "discord.js": "^14.16.0",
71
- "@moxxy/channel-kit": "0.28.1",
72
- "@moxxy/core": "0.28.1",
73
- "@moxxy/sdk": "0.28.1",
74
- "@moxxy/plugin-vault": "0.28.1"
71
+ "@moxxy/core": "0.30.0",
72
+ "@moxxy/plugin-vault": "0.30.0",
73
+ "@moxxy/sdk": "0.30.0",
74
+ "@moxxy/channel-kit": "0.30.0"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/node": "^22.10.0",
package/src/approval.ts CHANGED
@@ -28,10 +28,11 @@ export class DiscordApprovalResolver implements ApprovalResolver {
28
28
  // No bot wired up — best fallback is the request's defaultOptionId.
29
29
  return { optionId: request.defaultOptionId ?? request.options[0]?.id ?? 'approve' };
30
30
  }
31
+ const decider = this.deciderFn;
31
32
  const id = `appr_${this.nextId++}`;
32
33
  return new Promise<ApprovalDecision>((resolve) => {
33
34
  this.pending.set(id, { id, request, resolve });
34
- this.deciderFn!(id, request).catch((err) => {
35
+ decider(id, request).catch((err) => {
35
36
  this.pending.delete(id);
36
37
  resolve({
37
38
  optionId: request.defaultOptionId ?? request.options[0]?.id ?? 'cancel',
@@ -1,4 +1,4 @@
1
- import type { ChannelHandle, ClientSession as Session } from '@moxxy/sdk';
1
+ import { assertDefined, type ChannelHandle, type ClientSession as Session } from '@moxxy/sdk';
2
2
  import { gateInbound } from '../allow-list.js';
3
3
  import type { InboundMessage } from '../schema.js';
4
4
  import type { DiscordApprovalResolver } from '../approval.js';
@@ -130,7 +130,8 @@ export async function handleInboundMessage(
130
130
  if (text.startsWith('/')) {
131
131
  if (!state.session) return;
132
132
  const [head, ...rest] = text.split(/\s+/);
133
- const reply = await runSlash(head!.slice(1), rest.join(' '), state.session, {
133
+ assertDefined(head, 'splitting a non-empty command string yields at least one token');
134
+ const reply = await runSlash(head.slice(1), rest.join(' '), state.session, {
134
135
  toggleYolo: cb.toggleYolo,
135
136
  voice: cb.voice,
136
137
  performSessionAction: (action, notice) =>
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { asTurnId, type MoxxyEvent } from '@moxxy/sdk';
2
+ import { assertDefined, asTurnId, type MoxxyEvent } from '@moxxy/sdk';
3
3
  import type { ClientSession as Session } from '@moxxy/sdk';
4
4
  import type { SendableChannelLike, SentMessageLike } from './discord-like.js';
5
5
  import { TypingIndicator } from './typing-indicator.js';
@@ -91,7 +91,9 @@ describe('runDiscordTurn — send-once-then-edit streaming', () => {
91
91
  );
92
92
  // Exactly one streamed message; later frames are edits of it.
93
93
  expect(sends).toHaveLength(1);
94
- expect(sends[0]!.startsWith('Hello')).toBe(true);
94
+ const firstSend = sends[0];
95
+ assertDefined(firstSend, 'a streamed frame was sent');
96
+ expect(firstSend.startsWith('Hello')).toBe(true);
95
97
  expect(edits.length).toBeGreaterThanOrEqual(1);
96
98
  expect(edits[edits.length - 1]).toBe('Hello, world. Done.');
97
99
  });
@@ -111,7 +113,8 @@ describe('runDiscordTurn — send-once-then-edit streaming', () => {
111
113
  );
112
114
  // First send is the streamed head; final tails arrive as extra sends.
113
115
  expect(sends.length).toBeGreaterThanOrEqual(3); // head + >=2 tails
114
- const finalHead = edits[edits.length - 1]!;
116
+ const finalHead = edits[edits.length - 1];
117
+ assertDefined(finalHead, 'the final frame was edited in place');
115
118
  expect(finalHead.length).toBeLessThanOrEqual(1_900);
116
119
  // Reassembling head + tails recovers the whole final text.
117
120
  const reassembled = [finalHead, ...sends.slice(1)].join('\n');
@@ -1,5 +1,5 @@
1
1
  import type { newTurnId } from '@moxxy/core';
2
- import type { ClientSession as Session } from '@moxxy/sdk';
2
+ import { assertDefined, type ClientSession as Session } from '@moxxy/sdk';
3
3
  import { FramePump, driveTurn, subscribeTurn } from '@moxxy/channel-kit';
4
4
  import { DiscordTurnRenderer, splitForDiscord } from '../render.js';
5
5
  import type { ChannelLogger, SendableChannelLike, SentMessageLike } from './discord-like.js';
@@ -82,14 +82,18 @@ export async function runDiscordTurn(
82
82
  sink: {
83
83
  send: async (t, final) => {
84
84
  const parts = splitForDiscord(t);
85
- const sent = await sendPart(parts[0]!);
85
+ const head = parts[0];
86
+ assertDefined(head, 'discord: FramePump never sinks empty text (emptyFinalText guarantees a part)');
87
+ const sent = await sendPart(head);
86
88
  if (final) for (const tail of parts.slice(1)) await sendPart(tail);
87
89
  return sent;
88
90
  },
89
91
  edit: async (message, t, final) => {
90
92
  const parts = splitForDiscord(t);
93
+ const head = parts[0];
94
+ assertDefined(head, 'discord: FramePump never sinks empty text (emptyFinalText guarantees a part)');
91
95
  try {
92
- await message.edit(parts[0]!);
96
+ await message.edit(head);
93
97
  } catch (err) {
94
98
  logger?.warn('discord edit failed', { err: String(err) });
95
99
  }
@@ -14,8 +14,9 @@ export class TypingIndicator {
14
14
  start(channel: SendableChannelLike): void {
15
15
  this.stop();
16
16
  if (!channel.sendTyping) return;
17
+ const sendTyping = channel.sendTyping;
17
18
  const ping = (): void => {
18
- void channel.sendTyping?.()?.catch?.(() => undefined);
19
+ void sendTyping().catch(() => undefined);
19
20
  };
20
21
  ping();
21
22
  this.timer = setInterval(ping, REFRESH_MS);
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi } from 'vitest';
2
- import type { ClientSession as Session } from '@moxxy/sdk';
2
+ import { assertDefined, type ClientSession as Session } from '@moxxy/sdk';
3
3
  import type { InboundMessage } from '../schema.js';
4
4
  import { MAX_AUDIO_BYTES } from '../schema.js';
5
5
  import type { InboundContext } from './message-handler.js';
@@ -58,9 +58,11 @@ const okFetch = (bytes = 16) =>
58
58
  describe('pickAudioAttachment', () => {
59
59
  it('picks the first audio/* attachment and ignores others', () => {
60
60
  const msg = audioMsg();
61
+ const first = msg.attachments[0];
62
+ assertDefined(first, 'audioMsg seeds at least one attachment');
61
63
  expect(pickAudioAttachment(msg.attachments)?.contentType).toBe('audio/ogg');
62
- expect(pickAudioAttachment([{ ...msg.attachments[0]!, contentType: 'image/png' }])).toBeNull();
63
- expect(pickAudioAttachment([{ ...msg.attachments[0]!, contentType: null }])).toBeNull();
64
+ expect(pickAudioAttachment([{ ...first, contentType: 'image/png' }])).toBeNull();
65
+ expect(pickAudioAttachment([{ ...first, contentType: null }])).toBeNull();
64
66
  });
65
67
  });
66
68
 
package/src/permission.ts CHANGED
@@ -40,9 +40,10 @@ export class DiscordPermissionResolver implements PermissionResolver {
40
40
  if (!this.deciderFn) {
41
41
  return { mode: 'deny', reason: 'no decider attached (bot not running)' };
42
42
  }
43
+ const decider = this.deciderFn;
43
44
  const decision = await new Promise<PermissionDecision>((resolve) => {
44
45
  this.pending.set(call.callId, { callId: call.callId, call, ctx, resolve });
45
- this.deciderFn!(call, ctx).catch((err) => {
46
+ decider(call, ctx).catch((err) => {
46
47
  this.pending.delete(call.callId);
47
48
  resolve({ mode: 'deny', reason: err instanceof Error ? err.message : String(err) });
48
49
  });
package/src/render.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { MoxxyEvent } from '@moxxy/sdk';
1
+ import { assertDefined, type MoxxyEvent } from '@moxxy/sdk';
2
2
 
3
3
  /**
4
4
  * Discord messages cap at 2000 chars; leave margin for the fence-reopen text a
@@ -222,7 +222,9 @@ function openFenceAt(text: string, idx: number, seed: string | null): string | n
222
222
  const fenceRe = /(?:^|\n)(```[^\n]*)/g;
223
223
  let m: RegExpExecArray | null;
224
224
  while ((m = fenceRe.exec(scan)) !== null) {
225
- open = open === null ? m[1]! : null;
225
+ const fence = m[1];
226
+ assertDefined(fence, 'fenceRe has a mandatory capture group when it matches');
227
+ open = open === null ? fence : null;
226
228
  }
227
229
  return open;
228
230
  }
package/src/schema.ts CHANGED
@@ -68,7 +68,8 @@ export interface RawMessageLike {
68
68
  export function extractInboundMessage(msg: RawMessageLike): InboundMessage | null {
69
69
  const attachments: unknown[] = [];
70
70
  try {
71
- for (const a of msg.attachments?.values?.() ?? []) {
71
+ const rawAttachments = msg.attachments;
72
+ for (const a of rawAttachments?.values ? rawAttachments.values() : []) {
72
73
  attachments.push({
73
74
  id: a?.id,
74
75
  url: a?.url,
@@ -27,7 +27,7 @@ beforeEach(async () => {
27
27
  keySource: createStaticKeySource(deriveKey('test', generateSalt())),
28
28
  });
29
29
  const plugin = buildDiscordPlugin({ vault });
30
- discordDef = plugin.channels![0]!;
30
+ discordDef = (plugin.channels ?? [])[0] as ChannelDef;
31
31
  writeOut = [];
32
32
  writeErr = [];
33
33
  origStdoutWrite = process.stdout.write.bind(process.stdout);
@@ -72,24 +72,24 @@ describe('discord ChannelDef', () => {
72
72
  });
73
73
 
74
74
  it('is unavailable without a token, available with one in the vault', async () => {
75
- const unavailable = await discordDef.isAvailable!({ cwd: tmp, vault });
76
- expect(unavailable.ok).toBe(false);
77
- expect(unavailable.reason).toMatch(/MOXXY_DISCORD_TOKEN/);
75
+ const unavailable = await discordDef.isAvailable?.({ cwd: tmp, vault });
76
+ expect(unavailable?.ok).toBe(false);
77
+ expect(unavailable?.reason).toMatch(/MOXXY_DISCORD_TOKEN/);
78
78
  await vault.set(DISCORD_TOKEN_KEY, 'x'.repeat(24) + '.abcdef.' + 'y'.repeat(28));
79
- const available = await discordDef.isAvailable!({ cwd: tmp, vault });
80
- expect(available.ok).toBe(true);
79
+ const available = await discordDef.isAvailable?.({ cwd: tmp, vault });
80
+ expect(available?.ok).toBe(true);
81
81
  });
82
82
  });
83
83
 
84
84
  describe('discord channel subcommands (registered on ChannelDef)', () => {
85
85
  it('exposes setup, pair, unpair, status', () => {
86
- expect(Object.keys(discordDef.subcommands!)).toEqual(
86
+ expect(Object.keys(discordDef.subcommands ?? {})).toEqual(
87
87
  expect.arrayContaining(['setup', 'pair', 'unpair', 'status']),
88
88
  );
89
89
  });
90
90
 
91
91
  it('`status` reports unconfigured vault state as JSON', async () => {
92
- const code = await discordDef.subcommands!.status!.run(ctx());
92
+ const code = await discordDef.subcommands?.status?.run(ctx());
93
93
  expect(code).toBe(0);
94
94
  const parsed = JSON.parse(writeOut.join(''));
95
95
  expect(parsed).toEqual({
@@ -103,7 +103,7 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
103
103
  await vault.set(DISCORD_TOKEN_KEY, 'x'.repeat(24) + '.abcdef.' + 'y'.repeat(28));
104
104
  await vault.set(DISCORD_AUTHORIZED_USER_KEY, '987654321');
105
105
  await vault.set(DISCORD_ALLOWED_CHANNELS_KEY, serializeAllowedChannels(['123456789']));
106
- const code = await discordDef.subcommands!.status!.run(ctx());
106
+ const code = await discordDef.subcommands?.status?.run(ctx());
107
107
  expect(code).toBe(0);
108
108
  const parsed = JSON.parse(writeOut.join(''));
109
109
  expect(parsed).toEqual({
@@ -115,7 +115,7 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
115
115
 
116
116
  it('`status` reports null (not junk) for a corrupt stored user id', async () => {
117
117
  await vault.set(DISCORD_AUTHORIZED_USER_KEY, 'not-a-snowflake');
118
- const code = await discordDef.subcommands!.status!.run(ctx());
118
+ const code = await discordDef.subcommands?.status?.run(ctx());
119
119
  expect(code).toBe(0);
120
120
  const parsed = JSON.parse(writeOut.join(''));
121
121
  expect(parsed.authorizedUserId).toBeNull();
@@ -123,14 +123,14 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
123
123
 
124
124
  it('`unpair` clears the authorized user and reports', async () => {
125
125
  await vault.set(DISCORD_AUTHORIZED_USER_KEY, '111');
126
- const code = await discordDef.subcommands!.unpair!.run(ctx());
126
+ const code = await discordDef.subcommands?.unpair?.run(ctx());
127
127
  expect(code).toBe(0);
128
128
  expect(writeOut.join('')).toContain('unpaired');
129
129
  expect(await vault.get(DISCORD_AUTHORIZED_USER_KEY)).toBeNull();
130
130
  });
131
131
 
132
132
  it('`unpair` is a no-op when nothing is paired', async () => {
133
- const code = await discordDef.subcommands!.unpair!.run(ctx());
133
+ const code = await discordDef.subcommands?.unpair?.run(ctx());
134
134
  expect(code).toBe(0);
135
135
  expect(writeOut.join('')).toContain('no pairing was active');
136
136
  });
@@ -146,7 +146,7 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
146
146
  // assert that `pair` drives the in-process pairing flow (wires the
147
147
  // session's permission resolver) instead of delegating to startChannel.
148
148
  await expect(
149
- discordDef.subcommands!.pair!.run(ctx({ startChannel, session: { setPermissionResolver } })),
149
+ discordDef.subcommands?.pair?.run(ctx({ startChannel, session: { setPermissionResolver } })),
150
150
  ).rejects.toThrow(/token/i);
151
151
  expect(setPermissionResolver).toHaveBeenCalledTimes(1);
152
152
  expect(startChannel).not.toHaveBeenCalled();
@@ -160,7 +160,7 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
160
160
  Object.defineProperty(process.stdin, 'isTTY', { value: false, configurable: true });
161
161
  try {
162
162
  const startChannel = vi.fn(async () => 0);
163
- const code = await discordDef.subcommands!.pair!.run(ctx({ startChannel }));
163
+ const code = await discordDef.subcommands?.pair?.run(ctx({ startChannel }));
164
164
  expect(code).toBe(1);
165
165
  expect(startChannel).not.toHaveBeenCalled();
166
166
  expect(writeErr.join('')).toMatch(/TTY/);
@@ -175,7 +175,7 @@ describe('discord channel subcommands (registered on ChannelDef)', () => {
175
175
  args: { positional: [], flags: {} },
176
176
  startChannel: async () => 0,
177
177
  };
178
- const code = await discordDef.subcommands!.status!.run(badCtx as never);
178
+ const code = await discordDef.subcommands?.status?.run(badCtx as never);
179
179
  expect(code).toBe(1);
180
180
  expect(writeErr.join('')).toContain('vault unavailable');
181
181
  });