@ebowwa/channel-telegram 1.14.7 → 1.14.8

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,25 +1,39 @@
1
1
  /**
2
- * Command index - Exports all command registrars
2
+ * Command index - Single source of truth for commands
3
+ *
4
+ * Each command exports a CommandDefinition with:
5
+ * - command: name (without /)
6
+ * - description: for Telegram menu
7
+ * - register: function to set up handler
3
8
  */
4
- export { registerStartCommand } from './start';
5
- export { registerStatusCommand } from './status';
6
- export { registerHelpCommand } from './help';
7
- export { registerGitCommand } from './git';
8
- export { registerDopplerCommand } from './doppler';
9
- export { registerLogsCommand } from './logs';
10
- export { registerClearCommand } from './clear';
11
- export { registerToolsCommand } from './tools';
12
- export { registerResourcesCommand } from './resources';
13
- export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
14
- export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
15
- export { registerResumeCommand } from './resume';
16
- export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
17
- export { registerVerboseCommand } from './verbose';
18
- export { register as registerRestartCommand } from './restart';
19
- export type { CommandRegistrar, CommandContext } from './types';
20
9
  import type TelegramBot from 'node-telegram-bot-api';
10
+ import { registerResourcesCommand } from './resources';
11
+ import { registerStartCommand } from './start';
12
+ import { registerStatusCommand } from './status';
13
+ import { registerHelpCommand } from './help';
14
+ import { registerGitCommand } from './git';
15
+ import { registerDopplerCommand } from './doppler';
16
+ import { registerLogsCommand } from './logs';
17
+ import { registerClearCommand } from './clear';
18
+ import { registerToolsCommand } from './tools';
19
+ import { registerCancelCommand, isCancelled, clearCancel } from './cancel';
20
+ import { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
21
+ import { registerResumeCommand } from './resume';
22
+ import { registerQuietCommand } from './quiet';
23
+ import { isQuiet, clearQuiet } from '@ebowwa/channel-core';
24
+ import { registerVerboseCommand } from './verbose';
25
+ import { register as registerRestartCommand } from './restart';
26
+ export type { CommandDefinition, CommandRegistrar, CommandContext } from './types';
27
+ export { registerStartCommand, registerStatusCommand, registerHelpCommand, registerGitCommand, registerDopplerCommand, registerLogsCommand, registerClearCommand, registerToolsCommand, registerResourcesCommand, registerCancelCommand, registerPauseCommand, registerResumeCommand, registerQuietCommand, registerVerboseCommand, registerRestartCommand, isCancelled, clearCancel, isPaused, waitWhilePaused, clearPause, isQuiet, clearQuiet, };
21
28
  /**
22
- * Register all commands with the bot
29
+ * Register all command handlers with the bot
23
30
  */
24
31
  export declare function registerAllCommands(bot: TelegramBot, memory: import('../conversation-memory').ConversationMemory, tools: import('../index').Tool[]): void;
32
+ /**
33
+ * Get menu entries for Telegram's command suggestions
34
+ */
35
+ export declare function getCommandMenu(): Array<{
36
+ command: string;
37
+ description: string;
38
+ }>;
25
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,QAAQ,IAAI,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAG/D,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAiBrD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,OAAO,wBAAwB,EAAE,kBAAkB,EAC3D,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,GAC/B,IAAI,CAgBN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAoB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,QAAQ,IAAI,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAG/D,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGnF,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,UAAU,EACV,OAAO,EACP,UAAU,GACX,CAAC;AAwBF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,OAAO,wBAAwB,EAAE,kBAAkB,EAC3D,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,GAC/B,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAEhF"}
@@ -1,22 +1,14 @@
1
1
  /**
2
- * Command index - Exports all command registrars
2
+ * Command index - Single source of truth for commands
3
+ *
4
+ * Each command exports a CommandDefinition with:
5
+ * - command: name (without /)
6
+ * - description: for Telegram menu
7
+ * - register: function to set up handler
3
8
  */
4
- export { registerStartCommand } from './start';
5
- export { registerStatusCommand } from './status';
6
- export { registerHelpCommand } from './help';
7
- export { registerGitCommand } from './git';
8
- export { registerDopplerCommand } from './doppler';
9
- export { registerLogsCommand } from './logs';
10
- export { registerClearCommand } from './clear';
11
- export { registerToolsCommand } from './tools';
12
- export { registerResourcesCommand } from './resources';
13
- export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
14
- export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
15
- export { registerResumeCommand } from './resume';
16
- export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
17
- export { registerVerboseCommand } from './verbose';
18
- export { register as registerRestartCommand } from './restart';
19
- import { register as importedRegisterRestart } from './restart';
9
+ // Import command definitions
10
+ import { resourcesCommand, registerResourcesCommand } from './resources';
11
+ // Legacy imports (to be migrated)
20
12
  import { registerStartCommand } from './start';
21
13
  import { registerStatusCommand } from './status';
22
14
  import { registerHelpCommand } from './help';
@@ -25,30 +17,47 @@ import { registerDopplerCommand } from './doppler';
25
17
  import { registerLogsCommand } from './logs';
26
18
  import { registerClearCommand } from './clear';
27
19
  import { registerToolsCommand } from './tools';
28
- import { registerResourcesCommand } from './resources';
29
- import { registerCancelCommand } from './cancel';
30
- import { registerPauseCommand } from './pause';
20
+ import { registerCancelCommand, isCancelled, clearCancel } from './cancel';
21
+ import { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
31
22
  import { registerResumeCommand } from './resume';
32
23
  import { registerQuietCommand } from './quiet';
24
+ import { isQuiet, clearQuiet } from '@ebowwa/channel-core';
33
25
  import { registerVerboseCommand } from './verbose';
26
+ import { register as registerRestartCommand } from './restart';
27
+ // Export legacy functions for backwards compatibility
28
+ export { registerStartCommand, registerStatusCommand, registerHelpCommand, registerGitCommand, registerDopplerCommand, registerLogsCommand, registerClearCommand, registerToolsCommand, registerResourcesCommand, registerCancelCommand, registerPauseCommand, registerResumeCommand, registerQuietCommand, registerVerboseCommand, registerRestartCommand, isCancelled, clearCancel, isPaused, waitWhilePaused, clearPause, isQuiet, clearQuiet, };
29
+ // Command definitions with descriptions (for menu)
30
+ const COMMAND_DEFS = [
31
+ // Migrated to CommandDefinition pattern
32
+ resourcesCommand,
33
+ // TODO: Migrate these to CommandDefinition pattern
34
+ { command: 'start', description: 'Start the bot', register: registerStartCommand },
35
+ { command: 'help', description: 'Show available commands', register: registerHelpCommand },
36
+ { command: 'status', description: 'Check bot status', register: registerStatusCommand },
37
+ { command: 'git', description: 'Check git status', register: registerGitCommand },
38
+ { command: 'doppler', description: 'Check Doppler secrets', register: registerDopplerCommand },
39
+ { command: 'logs', description: 'View recent logs', register: registerLogsCommand },
40
+ { command: 'clear', description: 'Clear conversation history', register: registerClearCommand },
41
+ { command: 'tools', description: 'List available tools', register: registerToolsCommand },
42
+ { command: 'cancel', description: 'Stop current task', register: registerCancelCommand },
43
+ { command: 'pause', description: 'Pause execution', register: registerPauseCommand },
44
+ { command: 'resume', description: 'Resume execution', register: registerResumeCommand },
45
+ { command: 'quiet', description: 'Hide tool logging', register: registerQuietCommand },
46
+ { command: 'verbose', description: 'Show tool logging', register: registerVerboseCommand },
47
+ { command: 'restart', description: 'Restart the bot service', register: registerRestartCommand },
48
+ ];
34
49
  /**
35
- * Register all commands with the bot
50
+ * Register all command handlers with the bot
36
51
  */
37
52
  export function registerAllCommands(bot, memory, tools) {
38
- registerStartCommand(bot, memory, tools);
39
- registerStatusCommand(bot, memory, tools);
40
- registerHelpCommand(bot, memory, tools);
41
- registerGitCommand(bot, memory, tools);
42
- registerDopplerCommand(bot, memory, tools);
43
- registerLogsCommand(bot, memory, tools);
44
- registerClearCommand(bot, memory, tools);
45
- registerToolsCommand(bot, memory, tools);
46
- registerResourcesCommand(bot, memory, tools);
47
- registerCancelCommand(bot, memory, tools);
48
- registerPauseCommand(bot, memory, tools);
49
- registerResumeCommand(bot, memory, tools);
50
- registerQuietCommand(bot, memory, tools);
51
- registerVerboseCommand(bot, memory, tools);
52
- importedRegisterRestart(bot, tools);
53
+ for (const def of COMMAND_DEFS) {
54
+ def.register(bot, memory, tools);
55
+ }
56
+ }
57
+ /**
58
+ * Get menu entries for Telegram's command suggestions
59
+ */
60
+ export function getCommandMenu() {
61
+ return COMMAND_DEFS.map(({ command, description }) => ({ command, description }));
53
62
  }
54
63
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,4 @@ import TelegramBot from 'node-telegram-bot-api';
5
5
  import { ConversationMemory } from '../conversation-memory';
6
6
  import type { Tool } from '../types';
7
7
  export declare function registerQuietCommand(bot: TelegramBot, _memory: ConversationMemory, _tools: Tool[]): void;
8
- /**
9
- * Check if quiet mode is enabled
10
- */
11
- export declare function isQuiet(): boolean;
12
- /**
13
- * Clear quiet flag
14
- */
15
- export declare function clearQuiet(): void;
16
8
  //# sourceMappingURL=quiet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quiet.d.ts","sourceRoot":"","sources":["../../src/commands/quiet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAMrC,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,IAAI,EAAE,GACb,IAAI,CAgCN;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAKjC"}
1
+ {"version":3,"file":"quiet.d.ts","sourceRoot":"","sources":["../../src/commands/quiet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,IAAI,EAAE,GACb,IAAI,CA0BN"}
@@ -1,19 +1,12 @@
1
1
  /**
2
2
  * /quiet command - Toggle tool logging off
3
3
  */
4
- import { writeFileSync, existsSync, mkdirSync } from 'fs';
5
- const STATE_DIR = '/root/seed/state';
6
- const QUIET_FLAG = `${STATE_DIR}/.quiet`;
4
+ import { setQuiet } from '@ebowwa/channel-core';
7
5
  export function registerQuietCommand(bot, _memory, _tools) {
8
6
  bot.onText(/\/quiet/, async (msg) => {
9
7
  const chatId = msg.chat.id;
10
8
  try {
11
- // Ensure state directory exists
12
- if (!existsSync(STATE_DIR)) {
13
- mkdirSync(STATE_DIR, { recursive: true });
14
- }
15
- // Set quiet flag
16
- writeFileSync(QUIET_FLAG, Date.now().toString());
9
+ setQuiet();
17
10
  await bot.sendMessage(chatId, `🔇 *QUIET MODE*\n\n` +
18
11
  `Tool logging disabled.\n` +
19
12
  `The AI will still use tools but won't show the calls.\n` +
@@ -25,19 +18,4 @@ export function registerQuietCommand(bot, _memory, _tools) {
25
18
  }
26
19
  });
27
20
  }
28
- /**
29
- * Check if quiet mode is enabled
30
- */
31
- export function isQuiet() {
32
- return existsSync(QUIET_FLAG);
33
- }
34
- /**
35
- * Clear quiet flag
36
- */
37
- export function clearQuiet() {
38
- if (existsSync(QUIET_FLAG)) {
39
- const { unlinkSync } = require('fs');
40
- unlinkSync(QUIET_FLAG);
41
- }
42
- }
43
21
  //# sourceMappingURL=quiet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quiet.js","sourceRoot":"","sources":["../../src/commands/quiet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE1D,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,UAAU,GAAG,GAAG,SAAS,SAAS,CAAC;AAEzC,MAAM,UAAU,oBAAoB,CAClC,GAAgB,EAChB,OAA2B,EAC3B,MAAc;IAEd,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,GAAwB,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YAED,iBAAiB;YACjB,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEjD,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,qBAAqB;gBACrB,0BAA0B;gBAC1B,yDAAyD;gBACzD,4BAA4B,EAC5B,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAE9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,YAAY,KAAK,EAAE,EACnB,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"quiet.js","sourceRoot":"","sources":["../../src/commands/quiet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAClC,GAAgB,EAChB,OAA2B,EAC3B,MAAc;IAEd,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,GAAwB,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,QAAQ,EAAE,CAAC;YAEX,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,qBAAqB;gBACrB,0BAA0B;gBAC1B,yDAAyD;gBACzD,4BAA4B,EAC5B,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAE9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,YAAY,KAAK,EAAE,EACnB,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * /resources command - Show system resources
3
3
  */
4
- import type { CommandRegistrar } from './types';
4
+ import type { CommandDefinition, CommandRegistrar } from './types';
5
+ export declare const resourcesCommand: CommandDefinition;
5
6
  export declare const registerResourcesCommand: CommandRegistrar;
6
7
  //# sourceMappingURL=resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,wBAAwB,EAAE,gBAoCtC,CAAC"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAwCnE,eAAO,MAAM,gBAAgB,EAAE,iBAI9B,CAAC;AAGF,eAAO,MAAM,wBAAwB,kBAAW,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * /resources command - Show system resources
3
3
  */
4
4
  import { execSync } from 'child_process';
5
- export const registerResourcesCommand = (bot) => {
5
+ const register = (bot) => {
6
6
  bot.onText(/\/resources/, async (msg) => {
7
7
  const chatId = msg.chat.id;
8
8
  try {
@@ -31,4 +31,11 @@ export const registerResourcesCommand = (bot) => {
31
31
  }
32
32
  });
33
33
  };
34
+ export const resourcesCommand = {
35
+ command: 'resources',
36
+ description: 'Show system resources',
37
+ register,
38
+ };
39
+ // Legacy export for backwards compatibility
40
+ export const registerResourcesCommand = register;
34
41
  //# sourceMappingURL=resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/commands/resources.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  import TelegramBot from "node-telegram-bot-api";
5
5
  import type { Tool } from "../index.js";
6
- export declare function register(bot: TelegramBot, tools: Tool[]): void;
6
+ import type { ConversationMemory } from "../conversation-memory.js";
7
+ export declare function register(bot: TelegramBot, _memory: ConversationMemory, _tools: Tool[]): void;
7
8
  //# sourceMappingURL=restart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAgC9D"}
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAgC5F"}
@@ -2,7 +2,7 @@
2
2
  * /restart command - Restart the Telegram bot systemd service
3
3
  */
4
4
  import { execSync } from "child_process";
5
- export function register(bot, tools) {
5
+ export function register(bot, _memory, _tools) {
6
6
  bot.onText(/\/restart(?:@[\w]+)?(?:\s+(.+))?/, async (msg, match) => {
7
7
  const chatId = msg.chat.id;
8
8
  const serviceName = match?.[1]?.trim() || "telegram-bot";
@@ -1 +1 @@
1
- {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,UAAU,QAAQ,CAAC,GAAgB,EAAE,KAAa;IACtD,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC;QAEzD,IAAI,CAAC;YACH,8BAA8B;YAC9B,QAAQ,CAAC,0BAA0B,WAAW,EAAE,EAAE;gBAChD,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,cAAc,WAAW,iBAAiB;gBAC1C,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;gBAC5D,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,4DAA4D;oBAC5D,mDAAmD,CACpD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,MAAM,UAAU,QAAQ,CAAC,GAAgB,EAAE,OAA2B,EAAE,MAAc;IACpF,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC;QAEzD,IAAI,CAAC;YACH,8BAA8B;YAC9B,QAAQ,CAAC,0BAA0B,WAAW,EAAE,EAAE;gBAChD,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,cAAc,WAAW,iBAAiB;gBAC1C,0EAA0E,CAC3E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;gBAC5D,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,4DAA4D;oBAC5D,mDAAmD,CACpD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,6 +3,24 @@
3
3
  */
4
4
  import TelegramBot from 'node-telegram-bot-api';
5
5
  import { ConversationMemory } from '../conversation-memory';
6
+ /**
7
+ * Menu entry for Telegram's command suggestions
8
+ */
9
+ export interface CommandMenuEntry {
10
+ command: string;
11
+ description: string;
12
+ }
13
+ /**
14
+ * Command definition - handler + menu entry together
15
+ */
16
+ export interface CommandDefinition {
17
+ /** Command name without / (e.g., "start", "help") */
18
+ command: string;
19
+ /** Description for Telegram's command menu */
20
+ description: string;
21
+ /** Registration function that sets up the handler */
22
+ register: CommandRegistrar;
23
+ }
6
24
  /**
7
25
  * Command registration function signature
8
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,KAC7B,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,CAAC;CAClC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,KAC7B,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,OAAO,UAAU,EAAE,IAAI,EAAE,CAAC;CAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../../src/commands/verbose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOrC,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,IAAI,EAAE,GACb,IAAI,CA+BN"}
1
+ {"version":3,"file":"verbose.d.ts","sourceRoot":"","sources":["../../src/commands/verbose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,IAAI,EAAE,GACb,IAAI,CA+BN"}
@@ -1,15 +1,12 @@
1
1
  /**
2
2
  * /verbose command - Toggle tool logging on
3
3
  */
4
- import { existsSync } from 'fs';
5
- import { clearQuiet } from './quiet';
6
- const STATE_DIR = '/root/seed/state';
7
- const QUIET_FLAG = `${STATE_DIR}/.quiet`;
4
+ import { isQuiet, clearQuiet } from '@ebowwa/channel-core';
8
5
  export function registerVerboseCommand(bot, _memory, _tools) {
9
6
  bot.onText(/\/verbose/, async (msg) => {
10
7
  const chatId = msg.chat.id;
11
8
  try {
12
- const wasQuiet = existsSync(QUIET_FLAG);
9
+ const wasQuiet = isQuiet();
13
10
  clearQuiet();
14
11
  let status = '';
15
12
  if (wasQuiet) {
@@ -1 +1 @@
1
- {"version":3,"file":"verbose.js","sourceRoot":"","sources":["../../src/commands/verbose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,UAAU,GAAG,GAAG,SAAS,SAAS,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CACpC,GAAgB,EAChB,OAA2B,EAC3B,MAAc;IAEd,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAwB,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACxC,UAAU,EAAE,CAAC;YAEb,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,wEAAwE,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,uDAAuD,CAAC;YACnE,CAAC;YAED,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,MAAM,EACN,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,0CAA0C,MAAM,EAAE,CAAC,CAAC;QAElE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,YAAY,KAAK,EAAE,EACnB,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"verbose.js","sourceRoot":"","sources":["../../src/commands/verbose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,UAAU,sBAAsB,CACpC,GAAgB,EAChB,OAA2B,EAC3B,MAAc;IAEd,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,GAAwB,EAAE,EAAE;QACzD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;YAC3B,UAAU,EAAE,CAAC;YAEb,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,wEAAwE,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,uDAAuD,CAAC;YACnE,CAAC;YAED,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,MAAM,EACN,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,0CAA0C,MAAM,EAAE,CAAC,CAAC;QAElE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,WAAW,CACnB,MAAM,EACN,YAAY,KAAK,EAAE,EACnB,EAAE,UAAU,EAAE,UAAU,EAAE,CAC3B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ebowwa/channel-telegram",
3
- "version": "1.14.7",
3
+ "version": "1.14.8",
4
4
  "description": "Pure Telegram protocol adapter implementing ChannelConnector",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,7 +40,8 @@
40
40
  "url": "https://github.com/ebowwa/codespaces/issues"
41
41
  },
42
42
  "dependencies": {
43
- "@ebowwa/channel-types": "^0.1.1",
43
+ "@ebowwa/channel-core": "^1.4.3",
44
+ "@ebowwa/channel-types": "^0.2.1",
44
45
  "node-telegram-bot-api": "^0.66.0"
45
46
  },
46
47
  "devDependencies": {
@@ -48,5 +49,12 @@
48
49
  "@types/node": "^22.19.11",
49
50
  "@types/node-telegram-bot-api": "^0.64.13",
50
51
  "typescript": "^5.9.3"
52
+ },
53
+ "ownership": {
54
+ "domain": "channels",
55
+ "responsibilities": [
56
+ "telegram-channel",
57
+ "bot-messaging"
58
+ ]
51
59
  }
52
60
  }
@@ -1,28 +1,19 @@
1
1
  /**
2
- * Command index - Exports all command registrars
2
+ * Command index - Single source of truth for commands
3
+ *
4
+ * Each command exports a CommandDefinition with:
5
+ * - command: name (without /)
6
+ * - description: for Telegram menu
7
+ * - register: function to set up handler
3
8
  */
4
9
 
5
- export { registerStartCommand } from './start';
6
- export { registerStatusCommand } from './status';
7
- export { registerHelpCommand } from './help';
8
- export { registerGitCommand } from './git';
9
- export { registerDopplerCommand } from './doppler';
10
- export { registerLogsCommand } from './logs';
11
- export { registerClearCommand } from './clear';
12
- export { registerToolsCommand } from './tools';
13
- export { registerResourcesCommand } from './resources';
14
- export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
15
- export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
16
- export { registerResumeCommand } from './resume';
17
- export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
18
- export { registerVerboseCommand } from './verbose';
19
- export { register as registerRestartCommand } from './restart';
20
- import { register as importedRegisterRestart } from './restart';
10
+ import type TelegramBot from 'node-telegram-bot-api';
11
+ import type { CommandDefinition, CommandRegistrar } from './types';
21
12
 
22
- export type { CommandRegistrar, CommandContext } from './types';
13
+ // Import command definitions
14
+ import { resourcesCommand, registerResourcesCommand } from './resources';
23
15
 
24
- import type TelegramBot from 'node-telegram-bot-api';
25
- import type { CommandRegistrar } from './types';
16
+ // Legacy imports (to be migrated)
26
17
  import { registerStartCommand } from './start';
27
18
  import { registerStatusCommand } from './status';
28
19
  import { registerHelpCommand } from './help';
@@ -31,34 +22,81 @@ import { registerDopplerCommand } from './doppler';
31
22
  import { registerLogsCommand } from './logs';
32
23
  import { registerClearCommand } from './clear';
33
24
  import { registerToolsCommand } from './tools';
34
- import { registerResourcesCommand } from './resources';
35
- import { registerCancelCommand } from './cancel';
36
- import { registerPauseCommand } from './pause';
25
+ import { registerCancelCommand, isCancelled, clearCancel } from './cancel';
26
+ import { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
37
27
  import { registerResumeCommand } from './resume';
38
28
  import { registerQuietCommand } from './quiet';
29
+ import { isQuiet, clearQuiet } from '@ebowwa/channel-core';
39
30
  import { registerVerboseCommand } from './verbose';
31
+ import { register as registerRestartCommand } from './restart';
32
+
33
+ // Export types
34
+ export type { CommandDefinition, CommandRegistrar, CommandContext } from './types';
35
+
36
+ // Export legacy functions for backwards compatibility
37
+ export {
38
+ registerStartCommand,
39
+ registerStatusCommand,
40
+ registerHelpCommand,
41
+ registerGitCommand,
42
+ registerDopplerCommand,
43
+ registerLogsCommand,
44
+ registerClearCommand,
45
+ registerToolsCommand,
46
+ registerResourcesCommand,
47
+ registerCancelCommand,
48
+ registerPauseCommand,
49
+ registerResumeCommand,
50
+ registerQuietCommand,
51
+ registerVerboseCommand,
52
+ registerRestartCommand,
53
+ isCancelled,
54
+ clearCancel,
55
+ isPaused,
56
+ waitWhilePaused,
57
+ clearPause,
58
+ isQuiet,
59
+ clearQuiet,
60
+ };
61
+
62
+ // Command definitions with descriptions (for menu)
63
+ const COMMAND_DEFS: CommandDefinition[] = [
64
+ // Migrated to CommandDefinition pattern
65
+ resourcesCommand,
66
+
67
+ // TODO: Migrate these to CommandDefinition pattern
68
+ { command: 'start', description: 'Start the bot', register: registerStartCommand },
69
+ { command: 'help', description: 'Show available commands', register: registerHelpCommand },
70
+ { command: 'status', description: 'Check bot status', register: registerStatusCommand },
71
+ { command: 'git', description: 'Check git status', register: registerGitCommand },
72
+ { command: 'doppler', description: 'Check Doppler secrets', register: registerDopplerCommand },
73
+ { command: 'logs', description: 'View recent logs', register: registerLogsCommand },
74
+ { command: 'clear', description: 'Clear conversation history', register: registerClearCommand },
75
+ { command: 'tools', description: 'List available tools', register: registerToolsCommand },
76
+ { command: 'cancel', description: 'Stop current task', register: registerCancelCommand },
77
+ { command: 'pause', description: 'Pause execution', register: registerPauseCommand },
78
+ { command: 'resume', description: 'Resume execution', register: registerResumeCommand },
79
+ { command: 'quiet', description: 'Hide tool logging', register: registerQuietCommand },
80
+ { command: 'verbose', description: 'Show tool logging', register: registerVerboseCommand },
81
+ { command: 'restart', description: 'Restart the bot service', register: registerRestartCommand },
82
+ ];
40
83
 
41
84
  /**
42
- * Register all commands with the bot
85
+ * Register all command handlers with the bot
43
86
  */
44
87
  export function registerAllCommands(
45
88
  bot: TelegramBot,
46
89
  memory: import('../conversation-memory').ConversationMemory,
47
90
  tools: import('../index').Tool[]
48
91
  ): void {
49
- registerStartCommand(bot, memory, tools);
50
- registerStatusCommand(bot, memory, tools);
51
- registerHelpCommand(bot, memory, tools);
52
- registerGitCommand(bot, memory, tools);
53
- registerDopplerCommand(bot, memory, tools);
54
- registerLogsCommand(bot, memory, tools);
55
- registerClearCommand(bot, memory, tools);
56
- registerToolsCommand(bot, memory, tools);
57
- registerResourcesCommand(bot, memory, tools);
58
- registerCancelCommand(bot, memory, tools);
59
- registerPauseCommand(bot, memory, tools);
60
- registerResumeCommand(bot, memory, tools);
61
- registerQuietCommand(bot, memory, tools);
62
- registerVerboseCommand(bot, memory, tools);
63
- importedRegisterRestart(bot, tools);
92
+ for (const def of COMMAND_DEFS) {
93
+ def.register(bot, memory, tools);
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Get menu entries for Telegram's command suggestions
99
+ */
100
+ export function getCommandMenu(): Array<{ command: string; description: string }> {
101
+ return COMMAND_DEFS.map(({ command, description }) => ({ command, description }));
64
102
  }
@@ -5,10 +5,7 @@
5
5
  import TelegramBot from 'node-telegram-bot-api';
6
6
  import { ConversationMemory } from '../conversation-memory';
7
7
  import type { Tool } from '../types';
8
- import { writeFileSync, existsSync, mkdirSync } from 'fs';
9
-
10
- const STATE_DIR = '/root/seed/state';
11
- const QUIET_FLAG = `${STATE_DIR}/.quiet`;
8
+ import { setQuiet } from '@ebowwa/channel-core';
12
9
 
13
10
  export function registerQuietCommand(
14
11
  bot: TelegramBot,
@@ -19,13 +16,7 @@ export function registerQuietCommand(
19
16
  const chatId = msg.chat.id;
20
17
 
21
18
  try {
22
- // Ensure state directory exists
23
- if (!existsSync(STATE_DIR)) {
24
- mkdirSync(STATE_DIR, { recursive: true });
25
- }
26
-
27
- // Set quiet flag
28
- writeFileSync(QUIET_FLAG, Date.now().toString());
19
+ setQuiet();
29
20
 
30
21
  await bot.sendMessage(
31
22
  chatId,
@@ -47,20 +38,3 @@ export function registerQuietCommand(
47
38
  }
48
39
  });
49
40
  }
50
-
51
- /**
52
- * Check if quiet mode is enabled
53
- */
54
- export function isQuiet(): boolean {
55
- return existsSync(QUIET_FLAG);
56
- }
57
-
58
- /**
59
- * Clear quiet flag
60
- */
61
- export function clearQuiet(): void {
62
- if (existsSync(QUIET_FLAG)) {
63
- const { unlinkSync } = require('fs');
64
- unlinkSync(QUIET_FLAG);
65
- }
66
- }
@@ -3,9 +3,9 @@
3
3
  */
4
4
 
5
5
  import { execSync } from 'child_process';
6
- import type { CommandRegistrar } from './types';
6
+ import type { CommandDefinition, CommandRegistrar } from './types';
7
7
 
8
- export const registerResourcesCommand: CommandRegistrar = (bot) => {
8
+ const register: CommandRegistrar = (bot) => {
9
9
  bot.onText(/\/resources/, async (msg) => {
10
10
  const chatId = msg.chat.id;
11
11
 
@@ -42,3 +42,12 @@ export const registerResourcesCommand: CommandRegistrar = (bot) => {
42
42
  }
43
43
  });
44
44
  };
45
+
46
+ export const resourcesCommand: CommandDefinition = {
47
+ command: 'resources',
48
+ description: 'Show system resources',
49
+ register,
50
+ };
51
+
52
+ // Legacy export for backwards compatibility
53
+ export const registerResourcesCommand = register;
@@ -5,8 +5,9 @@
5
5
  import TelegramBot from "node-telegram-bot-api";
6
6
  import { execSync } from "child_process";
7
7
  import type { Tool } from "../index.js";
8
+ import type { ConversationMemory } from "../conversation-memory.js";
8
9
 
9
- export function register(bot: TelegramBot, tools: Tool[]): void {
10
+ export function register(bot: TelegramBot, _memory: ConversationMemory, _tools: Tool[]): void {
10
11
  bot.onText(/\/restart(?:@[\w]+)?(?:\s+(.+))?/, async (msg, match) => {
11
12
  const chatId = msg.chat.id;
12
13
  const serviceName = match?.[1]?.trim() || "telegram-bot";
@@ -5,6 +5,26 @@
5
5
  import TelegramBot from 'node-telegram-bot-api';
6
6
  import { ConversationMemory } from '../conversation-memory';
7
7
 
8
+ /**
9
+ * Menu entry for Telegram's command suggestions
10
+ */
11
+ export interface CommandMenuEntry {
12
+ command: string;
13
+ description: string;
14
+ }
15
+
16
+ /**
17
+ * Command definition - handler + menu entry together
18
+ */
19
+ export interface CommandDefinition {
20
+ /** Command name without / (e.g., "start", "help") */
21
+ command: string;
22
+ /** Description for Telegram's command menu */
23
+ description: string;
24
+ /** Registration function that sets up the handler */
25
+ register: CommandRegistrar;
26
+ }
27
+
8
28
  /**
9
29
  * Command registration function signature
10
30
  */
@@ -5,11 +5,7 @@
5
5
  import TelegramBot from 'node-telegram-bot-api';
6
6
  import { ConversationMemory } from '../conversation-memory';
7
7
  import type { Tool } from '../types';
8
- import { existsSync } from 'fs';
9
- import { clearQuiet } from './quiet';
10
-
11
- const STATE_DIR = '/root/seed/state';
12
- const QUIET_FLAG = `${STATE_DIR}/.quiet`;
8
+ import { isQuiet, clearQuiet } from '@ebowwa/channel-core';
13
9
 
14
10
  export function registerVerboseCommand(
15
11
  bot: TelegramBot,
@@ -20,7 +16,7 @@ export function registerVerboseCommand(
20
16
  const chatId = msg.chat.id;
21
17
 
22
18
  try {
23
- const wasQuiet = existsSync(QUIET_FLAG);
19
+ const wasQuiet = isQuiet();
24
20
  clearQuiet();
25
21
 
26
22
  let status = '';