@ebowwa/channel-telegram 1.10.0 → 1.11.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.
@@ -13,6 +13,8 @@ export { registerResourcesCommand } from './resources';
13
13
  export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
14
14
  export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
15
15
  export { registerResumeCommand } from './resume';
16
+ export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
17
+ export { registerVerboseCommand } from './verbose';
16
18
  export type { CommandRegistrar, CommandContext } from './types';
17
19
  import type TelegramBot from 'node-telegram-bot-api';
18
20
  /**
@@ -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;AAEjD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAerD;;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,CAaN"}
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;AAEnD,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,CAeN"}
@@ -13,6 +13,8 @@ export { registerResourcesCommand } from './resources';
13
13
  export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
14
14
  export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
15
15
  export { registerResumeCommand } from './resume';
16
+ export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
17
+ export { registerVerboseCommand } from './verbose';
16
18
  import { registerStartCommand } from './start';
17
19
  import { registerStatusCommand } from './status';
18
20
  import { registerHelpCommand } from './help';
@@ -25,6 +27,8 @@ import { registerResourcesCommand } from './resources';
25
27
  import { registerCancelCommand } from './cancel';
26
28
  import { registerPauseCommand } from './pause';
27
29
  import { registerResumeCommand } from './resume';
30
+ import { registerQuietCommand } from './quiet';
31
+ import { registerVerboseCommand } from './verbose';
28
32
  /**
29
33
  * Register all commands with the bot
30
34
  */
@@ -41,5 +45,7 @@ export function registerAllCommands(bot, memory, tools) {
41
45
  registerCancelCommand(bot, memory, tools);
42
46
  registerPauseCommand(bot, memory, tools);
43
47
  registerResumeCommand(bot, memory, tools);
48
+ registerQuietCommand(bot, memory, tools);
49
+ registerVerboseCommand(bot, memory, tools);
44
50
  }
45
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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;AAMjD,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,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAgB,EAChB,MAA2D,EAC3D,KAAgC;IAEhC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * /quiet command - Toggle tool logging off
3
+ */
4
+ import TelegramBot from 'node-telegram-bot-api';
5
+ import { ConversationMemory } from '../conversation-memory';
6
+ import type { Tool } from '../types';
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
+ //# sourceMappingURL=quiet.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * /quiet command - Toggle tool logging off
3
+ */
4
+ import { writeFileSync, existsSync, mkdirSync } from 'fs';
5
+ const STATE_DIR = '/root/seed/state';
6
+ const QUIET_FLAG = `${STATE_DIR}/.quiet`;
7
+ export function registerQuietCommand(bot, _memory, _tools) {
8
+ bot.onText(/\/quiet/, async (msg) => {
9
+ const chatId = msg.chat.id;
10
+ 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());
17
+ await bot.sendMessage(chatId, `🔇 *QUIET MODE*\n\n` +
18
+ `Tool logging disabled.\n` +
19
+ `The AI will still use tools but won't show the calls.\n` +
20
+ `Use /verbose to re-enable.`, { parse_mode: 'Markdown' });
21
+ console.log(`[QUIET] Quiet mode enabled by chat ${chatId}`);
22
+ }
23
+ catch (error) {
24
+ await bot.sendMessage(chatId, `❌ Error: ${error}`, { parse_mode: 'Markdown' });
25
+ }
26
+ });
27
+ }
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
+ //# sourceMappingURL=quiet.js.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * /verbose command - Toggle tool logging on
3
+ */
4
+ import TelegramBot from 'node-telegram-bot-api';
5
+ import { ConversationMemory } from '../conversation-memory';
6
+ import type { Tool } from '../types';
7
+ export declare function registerVerboseCommand(bot: TelegramBot, _memory: ConversationMemory, _tools: Tool[]): void;
8
+ //# sourceMappingURL=verbose.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * /verbose command - Toggle tool logging on
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`;
8
+ export function registerVerboseCommand(bot, _memory, _tools) {
9
+ bot.onText(/\/verbose/, async (msg) => {
10
+ const chatId = msg.chat.id;
11
+ try {
12
+ const wasQuiet = existsSync(QUIET_FLAG);
13
+ clearQuiet();
14
+ let status = '';
15
+ if (wasQuiet) {
16
+ status = '🔊 *VERBOSE MODE*\n\nTool logging re-enabled. You will see tool calls.';
17
+ }
18
+ else {
19
+ status = '🔊 *VERBOSE MODE*\n\nTool logging is already enabled.';
20
+ }
21
+ await bot.sendMessage(chatId, status, { parse_mode: 'Markdown' });
22
+ console.log(`[VERBOSE] Verbose mode enabled by chat ${chatId}`);
23
+ }
24
+ catch (error) {
25
+ await bot.sendMessage(chatId, `❌ Error: ${error}`, { parse_mode: 'Markdown' });
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=verbose.js.map
@@ -0,0 +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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAmBH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D;AAmOD,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,KAAK,EAAE,MAAM;IAKzB;;OAEG;YACW,eAAe;IAsCvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CtB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2ItF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;;OAGG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyDzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAmBH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7D;AAmOD,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,KAAK,EAAE,MAAM;IAKzB;;OAEG;YACW,eAAe;IAsCvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DtB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkJtF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B;;;OAGG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyDzD"}
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ import { readFileSync, writeFileSync, existsSync, appendFileSync } from 'fs';
17
17
  import { ConversationMemory } from './conversation-memory';
18
18
  import { getZAIKey } from './api/keys';
19
19
  import { fetchWithRetry } from './api/fetch-retry';
20
- import { registerAllCommands } from './commands';
20
+ import { registerAllCommands, isQuiet } from './commands';
21
21
  const TELEGRAM_BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN || '';
22
22
  const TELEGRAM_TEST_CHAT_ID = process.env.TELEGRAM_TEST_CHAT_ID || '';
23
23
  const TOOLS = [
@@ -297,6 +297,22 @@ export class TelegramGLMBot {
297
297
  console.log('🤖 GLM Daemon Telegram Bot starting with GLM-4.7...');
298
298
  // Register all commands from commands/ directory
299
299
  registerAllCommands(this.bot, this.memory, TOOLS);
300
+ // Register commands with Telegram for autocomplete
301
+ await this.bot.setMyCommands([
302
+ { command: 'start', description: 'Start the bot' },
303
+ { command: 'help', description: 'Show available commands' },
304
+ { command: 'status', description: 'Check bot and API status' },
305
+ { command: 'git', description: 'Check git status and GitHub auth' },
306
+ { command: 'doppler', description: 'Check Doppler secrets status' },
307
+ { command: 'logs', description: 'View recent bot logs' },
308
+ { command: 'clear', description: 'Clear conversation history' },
309
+ { command: 'tools', description: 'List available tools' },
310
+ { command: 'cancel', description: 'Stop current task immediately' },
311
+ { command: 'pause', description: 'Pause execution' },
312
+ { command: 'resume', description: 'Resume after pause/cancel' },
313
+ { command: 'quiet', description: 'Hide tool logging' },
314
+ { command: 'verbose', description: 'Show tool logging' },
315
+ ]);
300
316
  // Handle all text messages with GLM-4.7
301
317
  this.bot.on('message', async (msg) => {
302
318
  if (!msg.text)
@@ -381,32 +397,38 @@ export class TelegramGLMBot {
381
397
  role: 'assistant',
382
398
  tool_calls: message.tool_calls
383
399
  });
400
+ // Check quiet mode for Telegram messages
401
+ const quiet = isQuiet();
384
402
  // Execute each tool and add results
385
403
  for (const toolCall of message.tool_calls) {
386
404
  const toolName = toolCall.function.name;
387
405
  const args = JSON.parse(toolCall.function.arguments);
388
406
  console.log(` → ${toolName}(${JSON.stringify(args)})`);
389
- // Send tool call notification to Telegram
390
- // Sanitize to prevent entity parsing errors - strip Markdown special chars
391
- const sanitizeForTelegram = (str) => {
392
- return str
393
- .replace(/[_*[\]()~`>#+=|{}.!-]/g, '') // Remove Markdown special chars
394
- .replace(/\\/g, '') // Remove backslashes
395
- .slice(0, 100); // Truncate to prevent long messages
396
- };
397
- const argsPreview = Object.keys(args).length > 0
398
- ? sanitizeForTelegram(JSON.stringify(args))
399
- : '';
400
- await this.bot.sendMessage(chatId, `🔧 ${toolName}${argsPreview ? ' ' + argsPreview : ''}`);
407
+ // Send tool call notification to Telegram (skip if quiet)
408
+ if (!quiet) {
409
+ // Sanitize to prevent entity parsing errors - strip Markdown special chars
410
+ const sanitizeForTelegram = (str) => {
411
+ return str
412
+ .replace(/[_*[\]()~`>#+=|{}.!-]/g, '') // Remove Markdown special chars
413
+ .replace(/\\/g, '') // Remove backslashes
414
+ .slice(0, 100); // Truncate to prevent long messages
415
+ };
416
+ const argsPreview = Object.keys(args).length > 0
417
+ ? sanitizeForTelegram(JSON.stringify(args))
418
+ : '';
419
+ await this.bot.sendMessage(chatId, `🔧 ${toolName}${argsPreview ? ' ' + argsPreview : ''}`);
420
+ }
401
421
  // Execute tool locally
402
422
  const result = await executeTool(toolName, args);
403
423
  console.log(` ← ${result.slice(0, 100)}...`);
404
- // Send result to Telegram (sanitized to avoid entity parsing errors)
405
- const sanitizedResult = result
406
- .replace(/[_*[\]()~`>#+=|{}.!-]/g, '')
407
- .replace(/\\/g, '');
408
- const resultPreview = sanitizedResult.length > 500 ? sanitizedResult.slice(0, 500) + ' [truncated]' : sanitizedResult;
409
- await this.bot.sendMessage(chatId, `📥 ${resultPreview}`);
424
+ // Send result to Telegram (skip if quiet)
425
+ if (!quiet) {
426
+ const sanitizedResult = result
427
+ .replace(/[_*[\]()~`>#+=|{}.!-]/g, '')
428
+ .replace(/\\/g, '');
429
+ const resultPreview = sanitizedResult.length > 500 ? sanitizedResult.slice(0, 500) + ' [truncated]' : sanitizedResult;
430
+ await this.bot.sendMessage(chatId, `📥 ${resultPreview}`);
431
+ }
410
432
  // Add tool result to messages
411
433
  messages.push({
412
434
  role: 'tool',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MCP Client - Connect to MCP servers and expose their tools
3
+ *
4
+ * Uses stdio transport to communicate with local MCP servers
5
+ */
6
+ export interface MCPTool {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: Record<string, unknown>;
10
+ serverName: string;
11
+ }
12
+ export interface MCPServerConfig {
13
+ name: string;
14
+ command: string;
15
+ args?: string[];
16
+ env?: Record<string, string>;
17
+ }
18
+ export declare class MCPClient {
19
+ private servers;
20
+ private clients;
21
+ private transports;
22
+ private tools;
23
+ /**
24
+ * Default MCP servers to connect to
25
+ */
26
+ static DEFAULT_SERVERS: MCPServerConfig[];
27
+ constructor(servers?: MCPServerConfig[]);
28
+ /**
29
+ * Connect to all configured MCP servers
30
+ */
31
+ connect(): Promise<void>;
32
+ /**
33
+ * Connect to a single MCP server
34
+ */
35
+ private connectToServer;
36
+ /**
37
+ * Get all discovered MCP tools
38
+ */
39
+ getTools(): MCPTool[];
40
+ /**
41
+ * Call an MCP tool
42
+ */
43
+ callTool(name: string, args: Record<string, unknown>): Promise<string>;
44
+ /**
45
+ * Disconnect from all MCP servers
46
+ */
47
+ disconnect(): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,qBAAa,SAAS;IA0BR,OAAO,CAAC,OAAO;IAzB3B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,KAAK,CAAiB;IAE9B;;OAEG;IACH,MAAM,CAAC,eAAe,EAAE,eAAe,EAAE,CAgBvC;gBAEkB,OAAO,GAAE,eAAe,EAA8B;IAE1E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;OAEG;YACW,eAAe;IAwD7B;;OAEG;IACH,QAAQ,IAAI,OAAO,EAAE;IAIrB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC5E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBlC"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * MCP Client - Connect to MCP servers and expose their tools
3
+ *
4
+ * Uses stdio transport to communicate with local MCP servers
5
+ */
6
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
7
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
8
+ export class MCPClient {
9
+ servers;
10
+ clients = new Map();
11
+ transports = new Map();
12
+ tools = [];
13
+ /**
14
+ * Default MCP servers to connect to
15
+ */
16
+ static DEFAULT_SERVERS = [
17
+ {
18
+ name: 'hetzner',
19
+ command: 'bun',
20
+ args: ['run', '/root/seed/mcp/hetzner/index.ts'],
21
+ },
22
+ {
23
+ name: 'git',
24
+ command: 'bun',
25
+ args: ['run', '/root/seed/mcp/git/index.ts'],
26
+ },
27
+ {
28
+ name: 'tailscale',
29
+ command: 'bun',
30
+ args: ['run', '/root/seed/mcp/tailscale/index.ts'],
31
+ },
32
+ ];
33
+ constructor(servers = MCPClient.DEFAULT_SERVERS) {
34
+ this.servers = servers;
35
+ }
36
+ /**
37
+ * Connect to all configured MCP servers
38
+ */
39
+ async connect() {
40
+ console.log(`[MCP] Connecting to ${this.servers.length} servers...`);
41
+ for (const server of this.servers) {
42
+ try {
43
+ await this.connectToServer(server);
44
+ }
45
+ catch (error) {
46
+ console.error(`[MCP] Failed to connect to ${server.name}:`, error);
47
+ }
48
+ }
49
+ console.log(`[MCP] Connected. Found ${this.tools.length} tools.`);
50
+ }
51
+ /**
52
+ * Connect to a single MCP server
53
+ */
54
+ async connectToServer(server) {
55
+ console.log(`[MCP] Connecting to ${server.name}...`);
56
+ // Build env - filter out undefined values
57
+ const env = {};
58
+ for (const [key, value] of Object.entries(process.env)) {
59
+ if (value !== undefined) {
60
+ env[key] = value;
61
+ }
62
+ }
63
+ if (server.env) {
64
+ Object.assign(env, server.env);
65
+ }
66
+ // Create stdio transport - it handles spawning the process
67
+ const transport = new StdioClientTransport({
68
+ command: server.command,
69
+ args: server.args,
70
+ env,
71
+ stderr: 'pipe',
72
+ });
73
+ this.transports.set(server.name, transport);
74
+ // Handle stderr for debugging
75
+ const stderr = transport.stderr;
76
+ if (stderr) {
77
+ stderr.on('data', (data) => {
78
+ console.error(`[MCP:${server.name}] ${data.toString().trim()}`);
79
+ });
80
+ }
81
+ // Create MCP client
82
+ const client = new Client({ name: `telegram-bot-mcp-${server.name}`, version: '1.0.0' }, { capabilities: {} });
83
+ await client.connect(transport);
84
+ this.clients.set(server.name, client);
85
+ // Discover tools
86
+ const toolsResult = await client.listTools();
87
+ for (const tool of toolsResult.tools) {
88
+ this.tools.push({
89
+ name: tool.name,
90
+ description: tool.description || '',
91
+ inputSchema: tool.inputSchema,
92
+ serverName: server.name,
93
+ });
94
+ }
95
+ console.log(`[MCP] ${server.name}: Found ${toolsResult.tools.length} tools`);
96
+ }
97
+ /**
98
+ * Get all discovered MCP tools
99
+ */
100
+ getTools() {
101
+ return this.tools;
102
+ }
103
+ /**
104
+ * Call an MCP tool
105
+ */
106
+ async callTool(name, args) {
107
+ const tool = this.tools.find(t => t.name === name);
108
+ if (!tool) {
109
+ throw new Error(`Tool not found: ${name}`);
110
+ }
111
+ const client = this.clients.get(tool.serverName);
112
+ if (!client) {
113
+ throw new Error(`MCP server not connected: ${tool.serverName}`);
114
+ }
115
+ try {
116
+ const result = await client.callTool({
117
+ name,
118
+ arguments: args,
119
+ });
120
+ // Extract text content from result
121
+ if (result.content && Array.isArray(result.content)) {
122
+ return result.content
123
+ .map((c) => c.text || '')
124
+ .join('\n');
125
+ }
126
+ return JSON.stringify(result);
127
+ }
128
+ catch (error) {
129
+ throw new Error(`MCP tool error: ${error.message}`);
130
+ }
131
+ }
132
+ /**
133
+ * Disconnect from all MCP servers
134
+ */
135
+ async disconnect() {
136
+ console.log('[MCP] Disconnecting...');
137
+ for (const [name, client] of this.clients) {
138
+ try {
139
+ await client.close();
140
+ console.log(`[MCP] Disconnected from ${name}`);
141
+ }
142
+ catch (error) {
143
+ console.error(`[MCP] Error disconnecting from ${name}:`, error);
144
+ }
145
+ }
146
+ for (const [name, transport] of this.transports) {
147
+ try {
148
+ await transport.close();
149
+ }
150
+ catch (error) {
151
+ console.error(`[MCP] Error closing transport ${name}:`, error);
152
+ }
153
+ }
154
+ this.clients.clear();
155
+ this.transports.clear();
156
+ this.tools = [];
157
+ }
158
+ }
159
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Module Exports
3
+ */
4
+ export { MCPClient, type MCPTool, type MCPServerConfig } from './client';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Module Exports
3
+ */
4
+ export { MCPClient } from './client';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAsC,MAAM,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ebowwa/channel-telegram",
3
- "version": "1.10.0",
3
+ "version": "1.11.0",
4
4
  "description": "Telegram channel adapter for GLM Daemon",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,6 +14,8 @@ export { registerResourcesCommand } from './resources';
14
14
  export { registerCancelCommand, isCancelled, clearCancel } from './cancel';
15
15
  export { registerPauseCommand, isPaused, waitWhilePaused, clearPause } from './pause';
16
16
  export { registerResumeCommand } from './resume';
17
+ export { registerQuietCommand, isQuiet, clearQuiet } from './quiet';
18
+ export { registerVerboseCommand } from './verbose';
17
19
 
18
20
  export type { CommandRegistrar, CommandContext } from './types';
19
21
 
@@ -31,6 +33,8 @@ import { registerResourcesCommand } from './resources';
31
33
  import { registerCancelCommand } from './cancel';
32
34
  import { registerPauseCommand } from './pause';
33
35
  import { registerResumeCommand } from './resume';
36
+ import { registerQuietCommand } from './quiet';
37
+ import { registerVerboseCommand } from './verbose';
34
38
 
35
39
  /**
36
40
  * Register all commands with the bot
@@ -52,4 +56,6 @@ export function registerAllCommands(
52
56
  registerCancelCommand(bot, memory, tools);
53
57
  registerPauseCommand(bot, memory, tools);
54
58
  registerResumeCommand(bot, memory, tools);
59
+ registerQuietCommand(bot, memory, tools);
60
+ registerVerboseCommand(bot, memory, tools);
55
61
  }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * /quiet command - Toggle tool logging off
3
+ */
4
+
5
+ import TelegramBot from 'node-telegram-bot-api';
6
+ import { ConversationMemory } from '../conversation-memory';
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`;
12
+
13
+ export function registerQuietCommand(
14
+ bot: TelegramBot,
15
+ _memory: ConversationMemory,
16
+ _tools: Tool[]
17
+ ): void {
18
+ bot.onText(/\/quiet/, async (msg: TelegramBot.Message) => {
19
+ const chatId = msg.chat.id;
20
+
21
+ 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());
29
+
30
+ await bot.sendMessage(
31
+ chatId,
32
+ `🔇 *QUIET MODE*\n\n` +
33
+ `Tool logging disabled.\n` +
34
+ `The AI will still use tools but won't show the calls.\n` +
35
+ `Use /verbose to re-enable.`,
36
+ { parse_mode: 'Markdown' }
37
+ );
38
+
39
+ console.log(`[QUIET] Quiet mode enabled by chat ${chatId}`);
40
+
41
+ } catch (error) {
42
+ await bot.sendMessage(
43
+ chatId,
44
+ `❌ Error: ${error}`,
45
+ { parse_mode: 'Markdown' }
46
+ );
47
+ }
48
+ });
49
+ }
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
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * /verbose command - Toggle tool logging on
3
+ */
4
+
5
+ import TelegramBot from 'node-telegram-bot-api';
6
+ import { ConversationMemory } from '../conversation-memory';
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`;
13
+
14
+ export function registerVerboseCommand(
15
+ bot: TelegramBot,
16
+ _memory: ConversationMemory,
17
+ _tools: Tool[]
18
+ ): void {
19
+ bot.onText(/\/verbose/, async (msg: TelegramBot.Message) => {
20
+ const chatId = msg.chat.id;
21
+
22
+ try {
23
+ const wasQuiet = existsSync(QUIET_FLAG);
24
+ clearQuiet();
25
+
26
+ let status = '';
27
+ if (wasQuiet) {
28
+ status = '🔊 *VERBOSE MODE*\n\nTool logging re-enabled. You will see tool calls.';
29
+ } else {
30
+ status = '🔊 *VERBOSE MODE*\n\nTool logging is already enabled.';
31
+ }
32
+
33
+ await bot.sendMessage(
34
+ chatId,
35
+ status,
36
+ { parse_mode: 'Markdown' }
37
+ );
38
+
39
+ console.log(`[VERBOSE] Verbose mode enabled by chat ${chatId}`);
40
+
41
+ } catch (error) {
42
+ await bot.sendMessage(
43
+ chatId,
44
+ `❌ Error: ${error}`,
45
+ { parse_mode: 'Markdown' }
46
+ );
47
+ }
48
+ });
49
+ }
package/src/index.ts CHANGED
@@ -19,7 +19,7 @@ import { readFileSync, writeFileSync, existsSync, appendFileSync } from 'fs';
19
19
  import { ConversationMemory } from './conversation-memory';
20
20
  import { getZAIKey } from './api/keys';
21
21
  import { fetchWithRetry } from './api/fetch-retry';
22
- import { registerAllCommands } from './commands';
22
+ import { registerAllCommands, isQuiet } from './commands';
23
23
 
24
24
  const TELEGRAM_BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN || '';
25
25
  const TELEGRAM_TEST_CHAT_ID = process.env.TELEGRAM_TEST_CHAT_ID || '';
@@ -316,6 +316,23 @@ export class TelegramGLMBot {
316
316
  // Register all commands from commands/ directory
317
317
  registerAllCommands(this.bot, this.memory, TOOLS);
318
318
 
319
+ // Register commands with Telegram for autocomplete
320
+ await this.bot.setMyCommands([
321
+ { command: 'start', description: 'Start the bot' },
322
+ { command: 'help', description: 'Show available commands' },
323
+ { command: 'status', description: 'Check bot and API status' },
324
+ { command: 'git', description: 'Check git status and GitHub auth' },
325
+ { command: 'doppler', description: 'Check Doppler secrets status' },
326
+ { command: 'logs', description: 'View recent bot logs' },
327
+ { command: 'clear', description: 'Clear conversation history' },
328
+ { command: 'tools', description: 'List available tools' },
329
+ { command: 'cancel', description: 'Stop current task immediately' },
330
+ { command: 'pause', description: 'Pause execution' },
331
+ { command: 'resume', description: 'Resume after pause/cancel' },
332
+ { command: 'quiet', description: 'Hide tool logging' },
333
+ { command: 'verbose', description: 'Show tool logging' },
334
+ ]);
335
+
319
336
  // Handle all text messages with GLM-4.7
320
337
  this.bot.on('message', async (msg: TelegramBot.Message) => {
321
338
  if (!msg.text) return;
@@ -427,6 +444,9 @@ export class TelegramGLMBot {
427
444
  tool_calls: message.tool_calls
428
445
  });
429
446
 
447
+ // Check quiet mode for Telegram messages
448
+ const quiet = isQuiet();
449
+
430
450
  // Execute each tool and add results
431
451
  for (const toolCall of message.tool_calls) {
432
452
  const toolName = toolCall.function.name;
@@ -434,30 +454,34 @@ export class TelegramGLMBot {
434
454
 
435
455
  console.log(` → ${toolName}(${JSON.stringify(args)})`);
436
456
 
437
- // Send tool call notification to Telegram
438
- // Sanitize to prevent entity parsing errors - strip Markdown special chars
439
- const sanitizeForTelegram = (str: string): string => {
440
- return str
441
- .replace(/[_*[\]()~`>#+=|{}.!-]/g, '') // Remove Markdown special chars
442
- .replace(/\\/g, '') // Remove backslashes
443
- .slice(0, 100); // Truncate to prevent long messages
444
- };
445
- const argsPreview = Object.keys(args).length > 0
446
- ? sanitizeForTelegram(JSON.stringify(args))
447
- : '';
448
- await this.bot.sendMessage(chatId, `🔧 ${toolName}${argsPreview ? ' ' + argsPreview : ''}`);
457
+ // Send tool call notification to Telegram (skip if quiet)
458
+ if (!quiet) {
459
+ // Sanitize to prevent entity parsing errors - strip Markdown special chars
460
+ const sanitizeForTelegram = (str: string): string => {
461
+ return str
462
+ .replace(/[_*[\]()~`>#+=|{}.!-]/g, '') // Remove Markdown special chars
463
+ .replace(/\\/g, '') // Remove backslashes
464
+ .slice(0, 100); // Truncate to prevent long messages
465
+ };
466
+ const argsPreview = Object.keys(args).length > 0
467
+ ? sanitizeForTelegram(JSON.stringify(args))
468
+ : '';
469
+ await this.bot.sendMessage(chatId, `🔧 ${toolName}${argsPreview ? ' ' + argsPreview : ''}`);
470
+ }
449
471
 
450
472
  // Execute tool locally
451
473
  const result = await executeTool(toolName, args);
452
474
 
453
475
  console.log(` ← ${result.slice(0, 100)}...`);
454
476
 
455
- // Send result to Telegram (sanitized to avoid entity parsing errors)
456
- const sanitizedResult = result
457
- .replace(/[_*[\]()~`>#+=|{}.!-]/g, '')
458
- .replace(/\\/g, '');
459
- const resultPreview = sanitizedResult.length > 500 ? sanitizedResult.slice(0, 500) + ' [truncated]' : sanitizedResult;
460
- await this.bot.sendMessage(chatId, `📥 ${resultPreview}`);
477
+ // Send result to Telegram (skip if quiet)
478
+ if (!quiet) {
479
+ const sanitizedResult = result
480
+ .replace(/[_*[\]()~`>#+=|{}.!-]/g, '')
481
+ .replace(/\\/g, '');
482
+ const resultPreview = sanitizedResult.length > 500 ? sanitizedResult.slice(0, 500) + ' [truncated]' : sanitizedResult;
483
+ await this.bot.sendMessage(chatId, `📥 ${resultPreview}`);
484
+ }
461
485
 
462
486
  // Add tool result to messages
463
487
  messages.push({
@@ -0,0 +1,197 @@
1
+ /**
2
+ * MCP Client - Connect to MCP servers and expose their tools
3
+ *
4
+ * Uses stdio transport to communicate with local MCP servers
5
+ */
6
+
7
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
8
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
9
+
10
+ export interface MCPTool {
11
+ name: string;
12
+ description: string;
13
+ inputSchema: Record<string, unknown>;
14
+ serverName: string;
15
+ }
16
+
17
+ export interface MCPServerConfig {
18
+ name: string;
19
+ command: string;
20
+ args?: string[];
21
+ env?: Record<string, string>;
22
+ }
23
+
24
+ export class MCPClient {
25
+ private clients: Map<string, Client> = new Map();
26
+ private transports: Map<string, StdioClientTransport> = new Map();
27
+ private tools: MCPTool[] = [];
28
+
29
+ /**
30
+ * Default MCP servers to connect to
31
+ */
32
+ static DEFAULT_SERVERS: MCPServerConfig[] = [
33
+ {
34
+ name: 'hetzner',
35
+ command: 'bun',
36
+ args: ['run', '/root/seed/mcp/hetzner/index.ts'],
37
+ },
38
+ {
39
+ name: 'git',
40
+ command: 'bun',
41
+ args: ['run', '/root/seed/mcp/git/index.ts'],
42
+ },
43
+ {
44
+ name: 'tailscale',
45
+ command: 'bun',
46
+ args: ['run', '/root/seed/mcp/tailscale/index.ts'],
47
+ },
48
+ ];
49
+
50
+ constructor(private servers: MCPServerConfig[] = MCPClient.DEFAULT_SERVERS) {}
51
+
52
+ /**
53
+ * Connect to all configured MCP servers
54
+ */
55
+ async connect(): Promise<void> {
56
+ console.log(`[MCP] Connecting to ${this.servers.length} servers...`);
57
+
58
+ for (const server of this.servers) {
59
+ try {
60
+ await this.connectToServer(server);
61
+ } catch (error) {
62
+ console.error(`[MCP] Failed to connect to ${server.name}:`, error);
63
+ }
64
+ }
65
+
66
+ console.log(`[MCP] Connected. Found ${this.tools.length} tools.`);
67
+ }
68
+
69
+ /**
70
+ * Connect to a single MCP server
71
+ */
72
+ private async connectToServer(server: MCPServerConfig): Promise<void> {
73
+ console.log(`[MCP] Connecting to ${server.name}...`);
74
+
75
+ // Build env - filter out undefined values
76
+ const env: Record<string, string> = {};
77
+ for (const [key, value] of Object.entries(process.env)) {
78
+ if (value !== undefined) {
79
+ env[key] = value;
80
+ }
81
+ }
82
+ if (server.env) {
83
+ Object.assign(env, server.env);
84
+ }
85
+
86
+ // Create stdio transport - it handles spawning the process
87
+ const transport = new StdioClientTransport({
88
+ command: server.command,
89
+ args: server.args,
90
+ env,
91
+ stderr: 'pipe',
92
+ });
93
+
94
+ this.transports.set(server.name, transport);
95
+
96
+ // Handle stderr for debugging
97
+ const stderr = transport.stderr;
98
+ if (stderr) {
99
+ stderr.on('data', (data: Buffer) => {
100
+ console.error(`[MCP:${server.name}] ${data.toString().trim()}`);
101
+ });
102
+ }
103
+
104
+ // Create MCP client
105
+ const client = new Client(
106
+ { name: `telegram-bot-mcp-${server.name}`, version: '1.0.0' },
107
+ { capabilities: {} }
108
+ );
109
+
110
+ await client.connect(transport);
111
+ this.clients.set(server.name, client);
112
+
113
+ // Discover tools
114
+ const toolsResult = await client.listTools();
115
+
116
+ for (const tool of toolsResult.tools) {
117
+ this.tools.push({
118
+ name: tool.name,
119
+ description: tool.description || '',
120
+ inputSchema: tool.inputSchema as Record<string, unknown>,
121
+ serverName: server.name,
122
+ });
123
+ }
124
+
125
+ console.log(`[MCP] ${server.name}: Found ${toolsResult.tools.length} tools`);
126
+ }
127
+
128
+ /**
129
+ * Get all discovered MCP tools
130
+ */
131
+ getTools(): MCPTool[] {
132
+ return this.tools;
133
+ }
134
+
135
+ /**
136
+ * Call an MCP tool
137
+ */
138
+ async callTool(name: string, args: Record<string, unknown>): Promise<string> {
139
+ const tool = this.tools.find(t => t.name === name);
140
+
141
+ if (!tool) {
142
+ throw new Error(`Tool not found: ${name}`);
143
+ }
144
+
145
+ const client = this.clients.get(tool.serverName);
146
+
147
+ if (!client) {
148
+ throw new Error(`MCP server not connected: ${tool.serverName}`);
149
+ }
150
+
151
+ try {
152
+ const result = await client.callTool({
153
+ name,
154
+ arguments: args,
155
+ });
156
+
157
+ // Extract text content from result
158
+ if (result.content && Array.isArray(result.content)) {
159
+ return result.content
160
+ .map((c: { type: string; text?: string }) => c.text || '')
161
+ .join('\n');
162
+ }
163
+
164
+ return JSON.stringify(result);
165
+ } catch (error) {
166
+ throw new Error(`MCP tool error: ${(error as Error).message}`);
167
+ }
168
+ }
169
+
170
+ /**
171
+ * Disconnect from all MCP servers
172
+ */
173
+ async disconnect(): Promise<void> {
174
+ console.log('[MCP] Disconnecting...');
175
+
176
+ for (const [name, client] of this.clients) {
177
+ try {
178
+ await client.close();
179
+ console.log(`[MCP] Disconnected from ${name}`);
180
+ } catch (error) {
181
+ console.error(`[MCP] Error disconnecting from ${name}:`, error);
182
+ }
183
+ }
184
+
185
+ for (const [name, transport] of this.transports) {
186
+ try {
187
+ await transport.close();
188
+ } catch (error) {
189
+ console.error(`[MCP] Error closing transport ${name}:`, error);
190
+ }
191
+ }
192
+
193
+ this.clients.clear();
194
+ this.transports.clear();
195
+ this.tools = [];
196
+ }
197
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Module Exports
3
+ */
4
+
5
+ export { MCPClient, type MCPTool, type MCPServerConfig } from './client';