@lucashca/tgcc 1.1.0 → 1.2.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.
@@ -3,6 +3,7 @@ import { Command } from "commander";
3
3
  import { runInit } from "../src/cli/init.js";
4
4
  import { runStart } from "../src/cli/start.js";
5
5
  import { runConfigShow, runConfigSet } from "../src/cli/config.js";
6
+ import { runReset } from "../src/cli/reset.js";
6
7
  import { setLogLevel } from "../src/utils/logger.js";
7
8
  const program = new Command();
8
9
  program
@@ -40,5 +41,11 @@ configCmd
40
41
  .action((key, value) => {
41
42
  runConfigSet(key, value);
42
43
  });
44
+ program
45
+ .command("reset")
46
+ .description("Delete all config and sessions, then re-run init")
47
+ .action(async () => {
48
+ await runReset();
49
+ });
43
50
  program.parse();
44
51
  //# sourceMappingURL=claude-telegram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-telegram.js","sourceRoot":"","sources":["../../bin/claude-telegram.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;IACrC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"claude-telegram.js","sourceRoot":"","sources":["../../bin/claude-telegram.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;IACrC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKrD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAerD;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/D"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAerD;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/D"}
@@ -2,6 +2,8 @@ import { Telegraf } from "telegraf";
2
2
  import { whitelist } from "./middleware.js";
3
3
  import { createHandlers } from "./handlers.js";
4
4
  import { initSessions } from "../claude/session.js";
5
+ import { ensureTelegramConnection } from "../utils/telegram-tls.js";
6
+ import { log } from "../utils/logger.js";
5
7
  export function createBot(config) {
6
8
  const bot = new Telegraf(config.telegram.token);
7
9
  bot.use(whitelist(config.telegram.whitelist));
@@ -14,9 +16,16 @@ export function createBot(config) {
14
16
  return bot;
15
17
  }
16
18
  export async function startBot(config) {
19
+ const patched = await ensureTelegramConnection(config.telegram.token);
20
+ if (patched) {
21
+ log("info", "Using SNI bypass for Telegram connection");
22
+ }
23
+ else {
24
+ log("info", "Connected to Telegram API");
25
+ }
17
26
  const bot = createBot(config);
18
27
  const shutdown = () => {
19
- console.log("Shutting down...");
28
+ console.log("\nShutting down...");
20
29
  bot.stop("SIGINT");
21
30
  process.exit(0);
22
31
  };
@@ -25,6 +34,6 @@ export async function startBot(config) {
25
34
  console.log("Bot started. Listening for messages...");
26
35
  console.log(`Working directory: ${config.claude.workingDirectory}`);
27
36
  console.log(`Whitelisted users: ${config.telegram.whitelist.join(", ")}`);
28
- await bot.launch();
37
+ await bot.launch({ dropPendingUpdates: true });
29
38
  }
30
39
  //# sourceMappingURL=bot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,SAAS,CAAC,MAAiB;IACzC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,YAAY,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAExC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAiB;IAC9C,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,UAAU,SAAS,CAAC,MAAiB;IACzC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,YAAY,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAExC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3C,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEvC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAiB;IAC9C,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0BrD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS;uBAGd,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAUzB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAOvB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;yBAmBnB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;EAiF1D"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0BrD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS;uBAGd,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAUzB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAOvB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;yBAmBnB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;EAoF1D"}
@@ -65,17 +65,20 @@ export function createHandlers(config) {
65
65
  }
66
66
  log("info", `[chat:${chatId}] Message received: "${text.slice(0, 100)}${text.length > 100 ? "..." : ""}"`);
67
67
  activeRequests.add(chatId);
68
- const typingInterval = setInterval(() => {
69
- ctx.sendChatAction("typing").catch(() => { });
70
- }, 4000);
71
68
  try {
72
- await ctx.sendChatAction("typing");
69
+ // Send a "Processing..." message that will be deleted when the response arrives
70
+ const processingMsg = await ctx.reply("⏳ Processing...");
71
+ const typingInterval = setInterval(() => {
72
+ ctx.sendChatAction("typing").catch(() => { });
73
+ }, 3000);
73
74
  log("info", `[chat:${chatId}] Sending to Claude Code...`);
74
75
  const startTime = Date.now();
75
76
  const response = await sendMessage(String(chatId), text, config.claude);
76
77
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
77
78
  log("info", `[chat:${chatId}] Response received (${elapsed}s, $${response.cost.toFixed(4)})`);
78
79
  clearInterval(typingInterval);
80
+ // Delete the "Processing..." message
81
+ await ctx.deleteMessage(processingMsg.message_id).catch(() => { });
79
82
  if (response.error) {
80
83
  log("error", `[chat:${chatId}] Error: ${response.error}`);
81
84
  }
@@ -110,7 +113,6 @@ export function createHandlers(config) {
110
113
  }
111
114
  }
112
115
  catch (err) {
113
- clearInterval(typingInterval);
114
116
  const msg = err instanceof Error ? err.message : String(err);
115
117
  await ctx.reply(`Error: ${msg}`);
116
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM;QACR,CAAC;QACD,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,kBAAkB,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,KAAK,UAAU,WAAW,CAAC,GAAY;QACrC,MAAM,GAAG,CAAC,KAAK,CACb,gCAAgC;YAC9B,aAAa;YACb,iCAAiC;YACjC,6CAA6C,MAAM,CAAC,MAAM,CAAC,gBAAgB,KAAK;YAChF,kDAAkD,CACrD,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,GAAY;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,mBAAmB,CAAC,CAAC;QAChD,YAAY,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,GAAG,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,UAAU,SAAS,CAAC,GAAY;QACnC,MAAM,IAAI,GAAI,GAAG,CAAC,OAA6B,EAAE,IAAI,IAAI,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,GAAG,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACrE,MAAM,GAAG,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,GAAY;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAI,GAAG,CAAC,OAA6B,EAAE,IAAI,CAAC;QAEtD,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,OAAO,EAAE,SAAS,MAAM,wCAAwC,CAAC,CAAC;YACtE,MAAM,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3G,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,gFAAgF;YAChF,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAEzD,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;gBACtC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC/C,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,6BAA6B,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,MAAM,CAAC,MAAM,CAAC,EACd,IAAI,EACJ,MAAM,CAAC,MAAM,CACd,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7D,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,wBAAwB,OAAO,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAE9F,aAAa,CAAC,cAAc,CAAC,CAAC;YAE9B,qCAAqC;YACrC,MAAM,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAElE,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,EAAE,SAAS,MAAM,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3C,GAAG,CAAC,OAAO,EAAE,SAAS,MAAM,aAAa,MAAM,CAAC,MAAM,yBAAyB,CAAC,CAAC;gBACjF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,aAAa,QAAQ,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;YAC3E,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACtC,IAAI,CAAC;oBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACnC,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;4BACjC,MAAM,GAAG,CAAC,iBAAiB,CAAC;gCAC1B,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gCACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;6BAClC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAC9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAiF7C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAgEA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA8E7C"}
@@ -1,8 +1,58 @@
1
- import inquirer from "inquirer";
1
+ import crypto from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
+ import readline from "node:readline";
5
+ import inquirer from "inquirer";
6
+ import { Telegraf } from "telegraf";
4
7
  import { saveConfig, getConfigPath, configExists } from "../config/config.js";
8
+ import { ensureTelegramConnection } from "../utils/telegram-tls.js";
5
9
  import { runStart } from "./start.js";
10
+ function promptWithPrefill(message, prefill) {
11
+ const rl = readline.createInterface({
12
+ input: process.stdin,
13
+ output: process.stdout,
14
+ });
15
+ return new Promise((resolve) => {
16
+ rl.question(`${message} `, (answer) => {
17
+ rl.close();
18
+ resolve(answer);
19
+ });
20
+ // Write the prefill text into the line buffer so it's editable
21
+ rl.write(prefill);
22
+ });
23
+ }
24
+ function generateCode() {
25
+ return crypto.randomInt(100000, 999999).toString();
26
+ }
27
+ async function waitForVerification(token) {
28
+ const code = generateCode();
29
+ const bot = new Telegraf(token);
30
+ console.log("\n──────────────────────────────────────────");
31
+ console.log(` Verification code: ${code}`);
32
+ console.log("──────────────────────────────────────────");
33
+ console.log(" Open your bot on Telegram and send this code.");
34
+ console.log(" Waiting...\n");
35
+ return new Promise((resolve, reject) => {
36
+ const timeout = setTimeout(() => {
37
+ bot.stop("timeout");
38
+ reject(new Error("Verification timed out after 5 minutes"));
39
+ }, 5 * 60 * 1000);
40
+ bot.on("text", async (ctx) => {
41
+ const text = ctx.message.text.trim();
42
+ if (text === code) {
43
+ const chatId = ctx.chat.id;
44
+ await ctx.reply("Verified! This chat is now linked to Claude Code.");
45
+ clearTimeout(timeout);
46
+ bot.stop("verified");
47
+ resolve(chatId);
48
+ }
49
+ else {
50
+ await ctx.reply("Invalid code. Try again.");
51
+ }
52
+ });
53
+ bot.launch({ dropPendingUpdates: true }).catch(reject);
54
+ });
55
+ }
6
56
  export async function runInit() {
7
57
  console.log("Claude Telegram — Setup\n");
8
58
  if (configExists()) {
@@ -19,64 +69,61 @@ export async function runInit() {
19
69
  return;
20
70
  }
21
71
  }
22
- const answers = await inquirer.prompt([
72
+ const { token } = await inquirer.prompt([
23
73
  {
24
74
  type: "input",
25
75
  name: "token",
26
76
  message: "Telegram bot token (from BotFather):",
27
77
  validate: (v) => (v.trim().length > 0 ? true : "Token is required"),
28
78
  },
29
- {
30
- type: "input",
31
- name: "chatId",
32
- message: "Your Telegram chat ID\n" +
33
- " (To find it: open Telegram, search for @userinfobot, send /start,\n" +
34
- " and it will reply with your chat ID)\n" +
35
- " Chat ID:",
36
- validate: (v) => {
37
- const n = Number(v);
38
- return !isNaN(n) && n > 0 ? true : "Must be a valid number";
39
- },
40
- },
41
- {
42
- type: "input",
43
- name: "workingDirectory",
44
- message: "Working directory for Claude Code:",
45
- default: process.cwd(),
46
- validate: (v) => {
47
- const resolved = path.resolve(v);
48
- return fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()
49
- ? true
50
- : "Directory does not exist";
51
- },
52
- },
53
79
  ]);
80
+ let workingDirectory = "";
81
+ while (!workingDirectory) {
82
+ const answer = await promptWithPrefill("Working directory for Claude Code:", process.cwd());
83
+ const resolved = path.resolve(answer);
84
+ if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) {
85
+ workingDirectory = answer;
86
+ }
87
+ else {
88
+ console.log(` Directory does not exist: ${resolved}`);
89
+ }
90
+ }
91
+ // Ensure Telegram connection works (applies SNI bypass if needed)
92
+ try {
93
+ const patched = await ensureTelegramConnection(token.trim());
94
+ if (patched) {
95
+ console.log(" (Using SNI bypass for Telegram connection)");
96
+ }
97
+ }
98
+ catch (err) {
99
+ const msg = err instanceof Error ? err.message : String(err);
100
+ console.error(`\nCannot connect to Telegram: ${msg}`);
101
+ return;
102
+ }
103
+ let chatId;
104
+ try {
105
+ chatId = await waitForVerification(token.trim());
106
+ }
107
+ catch (err) {
108
+ const msg = err instanceof Error ? err.message : String(err);
109
+ console.error(`\nVerification failed: ${msg}`);
110
+ console.error("You can set the chat ID manually: tgcc config set telegram.whitelist YOUR_CHAT_ID");
111
+ return;
112
+ }
113
+ console.log(`\nChat ID verified: ${chatId}`);
54
114
  const config = {
55
115
  telegram: {
56
- token: answers.token.trim(),
57
- whitelist: [Number(answers.chatId)],
116
+ token: token.trim(),
117
+ whitelist: [chatId],
58
118
  },
59
119
  claude: {
60
- workingDirectory: path.resolve(answers.workingDirectory),
120
+ workingDirectory: path.resolve(workingDirectory),
61
121
  permissionMode: "acceptEdits",
62
122
  allowedTools: ["Read", "Edit", "Write", "Bash", "Glob", "Grep"],
63
123
  },
64
124
  };
65
125
  saveConfig(config);
66
- console.log(`\nConfig saved to ${getConfigPath()}`);
67
- const { startNow } = await inquirer.prompt([
68
- {
69
- type: "confirm",
70
- name: "startNow",
71
- message: "Start the bot now?",
72
- default: true,
73
- },
74
- ]);
75
- if (startNow) {
76
- await runStart();
77
- }
78
- else {
79
- console.log('Run "tgcc start" to launch the bot.');
80
- }
126
+ console.log(`Config saved to ${getConfigPath()}\n`);
127
+ await runStart();
81
128
  }
82
129
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runReset(): Promise<void>;
2
+ //# sourceMappingURL=reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/cli/reset.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB9C"}
@@ -0,0 +1,25 @@
1
+ import fs from "node:fs";
2
+ import inquirer from "inquirer";
3
+ import { getConfigDir } from "../config/config.js";
4
+ import { runInit } from "./init.js";
5
+ export async function runReset() {
6
+ const configDir = getConfigDir();
7
+ const { confirm } = await inquirer.prompt([
8
+ {
9
+ type: "confirm",
10
+ name: "confirm",
11
+ message: `This will delete all config and sessions at ${configDir}. Continue?`,
12
+ default: false,
13
+ },
14
+ ]);
15
+ if (!confirm) {
16
+ console.log("Reset cancelled.");
17
+ return;
18
+ }
19
+ if (fs.existsSync(configDir)) {
20
+ fs.rmSync(configDir, { recursive: true });
21
+ console.log("Config and sessions deleted.\n");
22
+ }
23
+ await runInit();
24
+ }
25
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/cli/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACxC;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,+CAA+C,SAAS,aAAa;YAC9E,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tests direct connection to Telegram API.
3
+ * If SNI is blocked, patches TLS to connect via IP.
4
+ * Returns true if patch was applied.
5
+ */
6
+ export declare function ensureTelegramConnection(token: string): Promise<boolean>;
7
+ //# sourceMappingURL=telegram-tls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-tls.d.ts","sourceRoot":"","sources":["../../../src/utils/telegram-tls.ts"],"names":[],"mappings":"AAwCA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa9E"}
@@ -0,0 +1,55 @@
1
+ import dns from "node:dns";
2
+ import tls from "node:tls";
3
+ import { Telegraf } from "telegraf";
4
+ let patched = false;
5
+ async function resolveTelegramIp() {
6
+ return new Promise((resolve) => {
7
+ dns.resolve4("api.telegram.org", (err, addresses) => {
8
+ if (err || !addresses.length) {
9
+ resolve(undefined);
10
+ return;
11
+ }
12
+ resolve(addresses[0]);
13
+ });
14
+ });
15
+ }
16
+ function patchTls(ip) {
17
+ if (patched)
18
+ return;
19
+ patched = true;
20
+ const origConnect = tls.connect;
21
+ tls.connect = function (options, ...args) {
22
+ if (typeof options === "object" &&
23
+ typeof options.host === "string" &&
24
+ options.host.endsWith("telegram.org")) {
25
+ options = {
26
+ ...options,
27
+ host: ip,
28
+ servername: "",
29
+ rejectUnauthorized: false,
30
+ };
31
+ }
32
+ return origConnect.call(tls, options, ...args);
33
+ };
34
+ }
35
+ /**
36
+ * Tests direct connection to Telegram API.
37
+ * If SNI is blocked, patches TLS to connect via IP.
38
+ * Returns true if patch was applied.
39
+ */
40
+ export async function ensureTelegramConnection(token) {
41
+ try {
42
+ const test = new Telegraf(token);
43
+ await test.telegram.getMe();
44
+ return false;
45
+ }
46
+ catch {
47
+ const ip = await resolveTelegramIp();
48
+ if (ip) {
49
+ patchTls(ip);
50
+ return true;
51
+ }
52
+ throw new Error("Cannot connect to Telegram API and failed to resolve IP");
53
+ }
54
+ }
55
+ //# sourceMappingURL=telegram-tls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-tls.js","sourceRoot":"","sources":["../../../src/utils/telegram-tls.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,KAAK,UAAU,iBAAiB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;YAClD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IAEf,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;IAChC,GAAG,CAAC,OAAO,GAAG,UAAU,OAAY,EAAE,GAAG,IAAW;QAClD,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EACrC,CAAC;YACD,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,EAAE;gBACd,kBAAkB,EAAE,KAAK;aAC1B,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAuB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAa;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACrC,IAAI,EAAE,EAAE,CAAC;YACP,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucashca/tgcc",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Control Claude Code remotely via Telegram",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,6 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@anthropic-ai/claude-code": "^1.0.0",
42
+ "@inquirer/input": "^5.0.10",
42
43
  "commander": "^13.0.0",
43
44
  "inquirer": "^12.0.0",
44
45
  "telegraf": "^4.16.0"