windsor-bot 0.1.8 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -374,6 +374,7 @@ contributors working from the source tree:
374
374
  npm run dev # run Windsor and the diagnostics server
375
375
  npm run build # type-check and build the web panel
376
376
  npm test # run the Node test suite
377
+ npm run gen-image -- a friendly shopping list # generate test.png using the local config
377
378
  ```
378
379
 
379
380
  The control-panel source is `src/web/app.tsx`. The browser app is bundled into
package/dist/ai.js CHANGED
@@ -58,7 +58,7 @@ function parseOccurrenceDate(str) {
58
58
  }
59
59
  return null;
60
60
  }
61
- export async function parseRecurringSchedule(userMessage, now, onRemoteStart) {
61
+ export async function parseRecurringSchedule(userMessage, now) {
62
62
  const client = getClient();
63
63
  if (!client)
64
64
  return null;
@@ -68,7 +68,6 @@ export async function parseRecurringSchedule(userMessage, now, onRemoteStart) {
68
68
  const prompt = `The user has asked for a recurring printout. It is currently ${nowStr}. Tell me the next time that I should do this, and what the non-schedule part of the message was (verbatim). If the user didn't specify a time of day, use 8:00 AM. Here's the user's message: ${userMessage}`;
69
69
  const results = [];
70
70
  const ATTEMPTS = 5;
71
- await onRemoteStart?.();
72
71
  for (let i = 0; i < ATTEMPTS; i++) {
73
72
  try {
74
73
  const completion = await client.chat.completions.create({
@@ -131,11 +130,11 @@ function formatScheduleDate(date) {
131
130
  return `${year}-${month}-${day} ${hours}:${minutes} ${ampm}`;
132
131
  }
133
132
  export { formatScheduleDate };
134
- export async function getNextOccurrence(originalMessage, now, onRemoteStart) {
135
- const result = await parseRecurringSchedule(originalMessage, now, onRemoteStart);
133
+ export async function getNextOccurrence(originalMessage, now) {
134
+ const result = await parseRecurringSchedule(originalMessage, now);
136
135
  return result ? result.nextOccurrence : null;
137
136
  }
138
- export async function generateIcon(text, cacheDir, onRemoteStart) {
137
+ export async function generateIcon(text, cacheDir) {
139
138
  const prompt = `Black-on-transparent line drawing icon for the TODO item: "${text}". Do not produce any text. Use big, thick lines. No fine detailing.`;
140
139
  const hash = createHash('sha1').update(prompt).digest('hex').slice(0, 9);
141
140
  const filename = `${hash}.png`;
@@ -153,7 +152,6 @@ export async function generateIcon(text, cacheDir, onRemoteStart) {
153
152
  return null;
154
153
  if (await isOverTokenLimit())
155
154
  return null;
156
- await onRemoteStart?.();
157
155
  for (let attempt = 0; attempt < 3; attempt++) {
158
156
  try {
159
157
  const response = await client.images.generate({
package/dist/bot.js CHANGED
@@ -361,8 +361,9 @@ export function createWindsorBot() {
361
361
  ];
362
362
  }
363
363
  if (config.includeIcon) {
364
+ await replySafe(message, Reaction.thinking);
364
365
  const iconCacheDir = getCurrentConfig().iconCacheDir ?? './icon-cache';
365
- const iconPath = await generateIcon(strippedText, iconCacheDir, () => reactSafe(message, Reaction.thinking));
366
+ const iconPath = await generateIcon(strippedText, iconCacheDir);
366
367
  if (iconPath)
367
368
  job.iconPath = iconPath;
368
369
  }
@@ -383,6 +384,7 @@ export function createWindsorBot() {
383
384
  await replySafe(message, `⏸️ Print failed: ${err instanceof Error ? err.message : String(err)}`);
384
385
  logEvent('error', `Print failed: ${err}`);
385
386
  }
387
+ await removeReactionSafe(message, Reaction.thinking);
386
388
  }
387
389
  async function handleAccumulatingPrint(triggerMessage, config, allMessages) {
388
390
  const botId = client.user?.id;
@@ -447,7 +449,7 @@ export function createWindsorBot() {
447
449
  async function handleRecurringSetup(message, config) {
448
450
  const rawContent = message.content;
449
451
  try {
450
- const parsed = await parseRecurringSchedule(rawContent, new Date(), () => reactSafe(message, Reaction.thinking));
452
+ const parsed = await parseRecurringSchedule(rawContent, new Date());
451
453
  if (!parsed) {
452
454
  await reactSafe(message, Reaction.what);
453
455
  await replySafe(message, '⁉️ Could not parse a schedule from your message. Please try again with a clearer schedule.');
@@ -486,7 +488,7 @@ export function createWindsorBot() {
486
488
  }
487
489
  if (config.includeIcon) {
488
490
  const iconCacheDir = getCurrentConfig().iconCacheDir ?? './icon-cache';
489
- const iconPath = await generateIcon(strippedText, iconCacheDir, () => reactSafe(scheduleReply, Reaction.thinking));
491
+ const iconPath = await generateIcon(strippedText, iconCacheDir);
490
492
  if (iconPath)
491
493
  job.iconPath = iconPath;
492
494
  }
@@ -506,7 +508,7 @@ export function createWindsorBot() {
506
508
  }
507
509
  logEvent('print', `Printed recurring task: ${text}`);
508
510
  const originalUserMessage = scheduleReply.content.replace(/^Got it\. I will print ⟪.+?⟫ at /, '');
509
- const nextOccurrence = await getNextOccurrence(originalUserMessage, new Date(), () => reactSafe(scheduleReply, Reaction.thinking));
511
+ const nextOccurrence = await getNextOccurrence(originalUserMessage, new Date());
510
512
  let statusReply;
511
513
  if (!nextOccurrence) {
512
514
  statusReply = await replySafe(scheduleReply, 'This occurrence has expired and no more prints are scheduled');
@@ -527,7 +529,7 @@ export function createWindsorBot() {
527
529
  const match = /⟪(.+?)⟫/.exec(scheduleReply.content);
528
530
  if (!match?.[1])
529
531
  return;
530
- const nextOccurrence = await getNextOccurrence(match[1], new Date(), () => reactSafe(latestStatusReply, Reaction.thinking));
532
+ const nextOccurrence = await getNextOccurrence(match[1], new Date());
531
533
  if (!nextOccurrence) {
532
534
  await replySafe(latestStatusReply, 'This occurrence has expired and no more prints are scheduled');
533
535
  await removeReactionSafe(latestStatusReply, Reaction.thinking);
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "windsor-bot",
3
- "version": "0.1.8",
3
+ "version": "0.1.11",
4
4
  "description": "Self-hosted Discord bot automation for household list and todo printing",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
8
8
  "prepare": "npm run build",
9
9
  "build": "tsc && node scripts/build-web.mjs",
10
+ "clean": "node scripts/clean.mjs",
10
11
  "dev": "node src/index.ts",
11
12
  "test": "node --test src/tests/*.test.ts",
12
- "generate-wordsearches": "node scripts/generate-wordsearches.mjs"
13
+ "generate-wordsearches": "node scripts/generate-wordsearches.mjs",
14
+ "gen-image": "node scripts/generate-image.mjs"
13
15
  },
14
16
  "bin": {
15
17
  "windsor-bot": "dist/index.js"
package/dist/bot.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export declare class HouseholdBot {
2
- private readonly client;
3
- private readonly getConfiguredServerId;
4
- constructor(getConfiguredServerId: () => string | null);
5
- start(token: string): Promise<void>;
6
- private onReady;
7
- /**
8
- * On startup, fetch the last 100 messages in every channel that has at
9
- * least one applicable command and process any that the bot hasn't already
10
- * reacted to.
11
- */
12
- private scanForUnhandledMessages;
13
- private getTargetGuilds;
14
- private onMessage;
15
- /**
16
- * Parses and executes the command in `message` if applicable.
17
- * Returns true if an action was executed, false if skipped (not a command,
18
- * wrong channel, or already handled).
19
- */
20
- private processMessage;
21
- }
22
- //# sourceMappingURL=bot.d.ts.map
package/dist/bot.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAeA,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAE5D,YAAY,qBAAqB,EAAE,MAAM,MAAM,GAAG,IAAI,EAarD;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;YAEa,OAAO;IAgBrB;;;;OAIG;YACW,wBAAwB;IA+BtC,OAAO,CAAC,eAAe;YAiBT,SAAS;IAIvB;;;;OAIG;YACW,cAAc;CAgD/B"}
package/dist/bot.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- export declare const helloCommand: BotCommand;
3
- //# sourceMappingURL=hello.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hello.d.ts","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,UAQ1B,CAAC"}
@@ -1,8 +0,0 @@
1
- export const helloCommand = {
2
- name: 'hello',
3
- channels: [],
4
- description: 'Prints "Hello, world" to the local console. Usage: !hello',
5
- async execute() {
6
- console.log('Hello, world');
7
- },
8
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"hello.js","sourceRoot":"","sources":["../../src/commands/hello.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAe;IACpC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,2DAA2D;IAExE,KAAK,CAAC,OAAO;QACT,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;CACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- export declare const commands: BotCommand[];
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,UAAU,EAGhC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,CAAC,MAAM,QAAQ,GAAiB;IAClC,YAAY;IACZ,YAAY;CACf,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { BotCommand } from '../types.js';
2
- /**
3
- * Prints text to the configured CUPS printer.
4
- *
5
- * Environment variables:
6
- * PRINTER_NAME - CUPS printer name (optional; omit to use the system default)
7
- */
8
- export declare const printCommand: BotCommand;
9
- //# sourceMappingURL=print.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../src/commands/print.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,UAkB1B,CAAC"}
@@ -1,46 +0,0 @@
1
- import { exec } from 'child_process';
2
- import { writeFile, unlink } from 'fs/promises';
3
- import { tmpdir } from 'os';
4
- import { join } from 'path';
5
- /**
6
- * Prints text to the configured CUPS printer.
7
- *
8
- * Environment variables:
9
- * PRINTER_NAME - CUPS printer name (optional; omit to use the system default)
10
- */
11
- export const printCommand = {
12
- name: 'print',
13
- channels: ['todo'],
14
- description: 'Prints the given text on the local printer. Usage: !print <text>',
15
- async execute(ctx) {
16
- const text = ctx.args.trim();
17
- if (!text)
18
- throw new Error('Nothing to print — provide text after !print');
19
- const tmpFile = join(tmpdir(), `d2p-${Date.now()}.txt`);
20
- await writeFile(tmpFile, text + '\n', 'utf8');
21
- try {
22
- await printFile(tmpFile);
23
- }
24
- finally {
25
- await unlink(tmpFile).catch(() => undefined);
26
- }
27
- },
28
- };
29
- function printFile(filePath) {
30
- const printerName = process.env['PRINTER_NAME'];
31
- const destination = printerName ? `-d ${shellQuote(printerName)}` : '';
32
- const cmd = `lp ${destination} ${shellQuote(filePath)}`;
33
- return new Promise((resolve, reject) => {
34
- exec(cmd, (err, _stdout, stderr) => {
35
- if (err) {
36
- reject(new Error(`lp failed: ${stderr.trim() || err.message}`));
37
- }
38
- else {
39
- resolve();
40
- }
41
- });
42
- });
43
- }
44
- function shellQuote(s) {
45
- return `'${s.replace(/'/g, "'\\''")}'`;
46
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/commands/print.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe;IACpC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,WAAW,EAAE,kEAAkE;IAE/E,KAAK,CAAC,OAAO,CAAC,GAAG;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACP,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ,CAAC;AAEF,SAAS,SAAS,CAAC,QAAgB;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,WAAW,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;IAExD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACJ,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IACzB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,CAAC"}
package/dist/config.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import type { PublicRuntimeConfig, RuntimeConfig, RuntimeConfigPatch } from './types.js';
2
- export declare function toPublicConfig(config: RuntimeConfig, configPath: string): PublicRuntimeConfig;
3
- export declare function loadConfig(): Promise<{
4
- config: RuntimeConfig;
5
- configPath: string;
6
- }>;
7
- export declare function saveConfig(patch: RuntimeConfigPatch, current: RuntimeConfig, configPath: string): Promise<RuntimeConfig>;
8
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACrB,MAAM,YAAY,CAAC;AA4DpB,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAQ7F;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBzF;AAED,wBAAsB,UAAU,CAC5B,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAIxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;AACjE,IAAI,aAAa,GAAG,aAAa,CAAC;AAClC,IAAI,GAAG,GAAwB,IAAI,CAAC;AACpC,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,SAAS,kBAAkB;IACvB,MAAM,CAAC,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAEnD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;IAC5D,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;AACL,CAAC;AAED,SAAS,aAAa;IAClB,IAAI,oBAAoB,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;QAAE,OAAO;IAEvE,oBAAoB,GAAG,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE/D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAChD,GAAG,GAAG,OAAO,CAAC;QACd,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACZ,oBAAoB,GAAG,KAAK,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,kBAAkB,EAAE,CAAC;AACrB,sBAAsB,CAClB,aAAa,CAAC,eAAe,EAC7B,GAAG,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,EAC/C,KAAK,EAAE,KAAK,EAAE,EAAE;IACZ,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACnE,aAAa,GAAG,OAAO,CAAC;IACxB,kBAAkB,EAAE,CAAC;IACrB,aAAa,EAAE,CAAC;IAChB,OAAO,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACrD,CAAC,CACJ,CAAC;AAEF,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,6EAA6E,CAAC,CAAC;AACpG,CAAC;AACD,aAAa,EAAE,CAAC"}
package/dist/server.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import type { DiagnosticEvent, BotStatus, PublicRuntimeConfig, RuntimeConfigPatch } from './types.js';
2
- export declare const status: BotStatus;
3
- export declare function logEvent(type: DiagnosticEvent['type'], message: string): void;
4
- export declare function startDiagnosticsServer(port: number, getConfig: () => PublicRuntimeConfig, updateConfig: (patch: RuntimeConfigPatch) => Promise<PublicRuntimeConfig>): void;
5
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EACrB,MAAM,YAAY,CAAC;AAKpB,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK7E;AAqND,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,mBAAmB,EACpC,YAAY,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,GAC1E,IAAI,CAiGN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,55 +0,0 @@
1
- export interface CommandContext {
2
- /** The name of the channel the message was sent in */
3
- channelName: string;
4
- /** Everything after `!commandName ` */
5
- args: string;
6
- /** The full original message content */
7
- rawMessage: string;
8
- messageId: string;
9
- channelId: string;
10
- guildId: string;
11
- }
12
- export interface BotCommand {
13
- /** Command name (the word immediately after `!`) */
14
- name: string;
15
- /**
16
- * Channel names this command is active in.
17
- * Empty array means the command is active in all channels.
18
- */
19
- channels: string[];
20
- description: string;
21
- execute(context: CommandContext): Promise<void>;
22
- }
23
- export type DiagnosticEventType = 'startup' | 'command' | 'success' | 'error' | 'info';
24
- export interface DiagnosticEvent {
25
- timestamp: string;
26
- type: DiagnosticEventType;
27
- message: string;
28
- }
29
- export interface BotStatus {
30
- connected: boolean;
31
- tag: string | null;
32
- startedAt: string | null;
33
- guilds: string[];
34
- configuredServerId: string | null;
35
- }
36
- export interface RuntimeConfig {
37
- discordToken: string | null;
38
- serverId: string | null;
39
- diagnosticsPort: number;
40
- printerName: string | null;
41
- }
42
- export interface PublicRuntimeConfig {
43
- hasDiscordToken: boolean;
44
- serverId: string | null;
45
- diagnosticsPort: number;
46
- printerName: string | null;
47
- configPath: string;
48
- }
49
- export interface RuntimeConfigPatch {
50
- discordToken?: string | null;
51
- serverId?: string | null;
52
- diagnosticsPort?: number;
53
- printerName?: string | null;
54
- }
55
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACvB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B"}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}