remote-copilot-mcp 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +109 -54
- package/dist/dispatcher.js.map +1 -1
- package/dist/index.js +97 -138
- package/dist/index.js.map +1 -1
- package/dist/openai.d.ts +22 -0
- package/dist/openai.d.ts.map +1 -0
- package/dist/openai.js +59 -0
- package/dist/openai.js.map +1 -0
- package/dist/telegram.d.ts +12 -56
- package/dist/telegram.d.ts.map +1 -1
- package/dist/telegram.js +71 -187
- package/dist/telegram.js.map +1 -1
- package/dist/utils.d.ts +31 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +37 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -28,15 +28,17 @@
|
|
|
28
28
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
29
29
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
30
30
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
31
|
-
import { readFileSync, writeFileSync } from "fs";
|
|
31
|
+
import { readFileSync, renameSync, writeFileSync } from "fs";
|
|
32
32
|
import { createRequire } from "module";
|
|
33
33
|
import { homedir } from "os";
|
|
34
|
-
import { join } from "path";
|
|
34
|
+
import { basename, join } from "path";
|
|
35
35
|
import { peekThreadMessages, readThreadMessages, startDispatcher } from "./dispatcher.js";
|
|
36
|
+
import { textToSpeech, transcribeAudio, TTS_VOICES } from "./openai.js";
|
|
36
37
|
import { TelegramClient } from "./telegram.js";
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
const
|
|
38
|
+
import { errorMessage, errorResult, IMAGE_EXTENSIONS, OPENAI_TTS_MAX_CHARS } from "./utils.js";
|
|
39
|
+
const esmRequire = createRequire(import.meta.url);
|
|
40
|
+
const { version: PKG_VERSION } = esmRequire("../package.json");
|
|
41
|
+
const telegramifyMarkdown = esmRequire("telegramify-markdown");
|
|
40
42
|
/**
|
|
41
43
|
* Convert standard Markdown to Telegram MarkdownV2.
|
|
42
44
|
*
|
|
@@ -87,7 +89,7 @@ const TELEGRAM_TOKEN = process.env.TELEGRAM_TOKEN ?? "";
|
|
|
87
89
|
const TELEGRAM_CHAT_ID = process.env.TELEGRAM_CHAT_ID ?? "";
|
|
88
90
|
const OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? "";
|
|
89
91
|
const rawWaitTimeoutMinutes = parseInt(process.env.WAIT_TIMEOUT_MINUTES ?? "", 10);
|
|
90
|
-
const WAIT_TIMEOUT_MINUTES = Math.max(1, Number.isFinite(rawWaitTimeoutMinutes) ? rawWaitTimeoutMinutes :
|
|
92
|
+
const WAIT_TIMEOUT_MINUTES = Math.max(1, Number.isFinite(rawWaitTimeoutMinutes) ? rawWaitTimeoutMinutes : 120);
|
|
91
93
|
if (!TELEGRAM_TOKEN || !TELEGRAM_CHAT_ID) {
|
|
92
94
|
process.stderr.write("Error: TELEGRAM_TOKEN and TELEGRAM_CHAT_ID environment variables are required.\n");
|
|
93
95
|
process.exit(1);
|
|
@@ -108,6 +110,7 @@ await startDispatcher(telegram, TELEGRAM_CHAT_ID);
|
|
|
108
110
|
// Monotonically increasing counter so every timeout response is unique,
|
|
109
111
|
// preventing VS Code Copilot's loop-detection heuristic from killing the agent.
|
|
110
112
|
let waitCallCount = 0;
|
|
113
|
+
let sessionStartedAt = Date.now();
|
|
111
114
|
// ---------------------------------------------------------------------------
|
|
112
115
|
// Session store — persists topic name → thread ID mappings to disk so the
|
|
113
116
|
// agent can resume a named session even after a VS Code restart.
|
|
@@ -125,10 +128,12 @@ function loadSessionMap() {
|
|
|
125
128
|
}
|
|
126
129
|
function saveSessionMap(map) {
|
|
127
130
|
try {
|
|
128
|
-
|
|
131
|
+
const tmp = SESSION_STORE_PATH + `.tmp.${process.pid}`;
|
|
132
|
+
writeFileSync(tmp, JSON.stringify(map, null, 2), "utf8");
|
|
133
|
+
renameSync(tmp, SESSION_STORE_PATH); // atomic replace
|
|
129
134
|
}
|
|
130
135
|
catch (err) {
|
|
131
|
-
process.stderr.write(`Warning: Could not save session map to ${SESSION_STORE_PATH}: ${
|
|
136
|
+
process.stderr.write(`Warning: Could not save session map to ${SESSION_STORE_PATH}: ${errorMessage(err)}\n`);
|
|
132
137
|
}
|
|
133
138
|
}
|
|
134
139
|
function lookupSession(chatId, name) {
|
|
@@ -157,7 +162,7 @@ let currentThreadId;
|
|
|
157
162
|
// Used to send periodic "session still alive" messages so the operator knows
|
|
158
163
|
// the agent hasn't silently died.
|
|
159
164
|
let lastKeepAliveSentAt = Date.now();
|
|
160
|
-
const KEEP_ALIVE_INTERVAL_MS =
|
|
165
|
+
const KEEP_ALIVE_INTERVAL_MS = 30 * 60 * 1000; // 30 minutes
|
|
161
166
|
// ---------------------------------------------------------------------------
|
|
162
167
|
// MCP Server
|
|
163
168
|
// ---------------------------------------------------------------------------
|
|
@@ -262,7 +267,15 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
262
267
|
properties: {
|
|
263
268
|
text: {
|
|
264
269
|
type: "string",
|
|
265
|
-
description:
|
|
270
|
+
description: `The text to speak. Maximum ${OPENAI_TTS_MAX_CHARS} characters (OpenAI TTS limit).`,
|
|
271
|
+
},
|
|
272
|
+
voice: {
|
|
273
|
+
type: "string",
|
|
274
|
+
description: "The TTS voice to use. Each has a different personality: " +
|
|
275
|
+
"alloy (neutral), echo (warm male), fable (storytelling), " +
|
|
276
|
+
"onyx (deep authoritative), nova (friendly female), shimmer (gentle). " +
|
|
277
|
+
"Choose based on the tone you want to convey.",
|
|
278
|
+
enum: ["alloy", "echo", "fable", "onyx", "nova", "shimmer"],
|
|
266
279
|
},
|
|
267
280
|
},
|
|
268
281
|
required: ["text"],
|
|
@@ -291,6 +304,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
291
304
|
const { name, arguments: args } = request.params;
|
|
292
305
|
// ── start_session ─────────────────────────────────────────────────────────
|
|
293
306
|
if (name === "start_session") {
|
|
307
|
+
sessionStartedAt = Date.now();
|
|
294
308
|
const typedArgs = (args ?? {});
|
|
295
309
|
const explicitThreadId = typeof typedArgs.threadId === "number"
|
|
296
310
|
? typedArgs.threadId
|
|
@@ -327,7 +341,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
327
341
|
await telegram.sendMessage(TELEGRAM_CHAT_ID, msg, "MarkdownV2", currentThreadId);
|
|
328
342
|
}
|
|
329
343
|
catch (err) {
|
|
330
|
-
const errMsg =
|
|
344
|
+
const errMsg = errorMessage(err);
|
|
331
345
|
// Telegram returns "Bad Request: message thread not found" or
|
|
332
346
|
// "Bad Request: the topic was closed" for deleted/closed topics.
|
|
333
347
|
const isThreadGone = /thread not found|topic.*(closed|deleted|not found)/i.test(errMsg);
|
|
@@ -357,7 +371,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
357
371
|
}
|
|
358
372
|
catch (err) {
|
|
359
373
|
// Forum topics not available (e.g. plain group or DM) — fall back to no thread.
|
|
360
|
-
process.stderr.write(`Warning: Could not create forum topic: ${
|
|
374
|
+
process.stderr.write(`Warning: Could not create forum topic: ${errorMessage(err)}\n` +
|
|
361
375
|
"Falling back to main chat (no thread isolation).\n");
|
|
362
376
|
currentThreadId = undefined;
|
|
363
377
|
}
|
|
@@ -399,30 +413,30 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
399
413
|
const stored = readThreadMessages(currentThreadId);
|
|
400
414
|
if (stored.length > 0) {
|
|
401
415
|
const contentBlocks = [];
|
|
402
|
-
for (const
|
|
416
|
+
for (const msg of stored) {
|
|
403
417
|
// Photos: download the largest size and embed as base64.
|
|
404
|
-
if (
|
|
405
|
-
const largest =
|
|
418
|
+
if (msg.message.photo && msg.message.photo.length > 0) {
|
|
419
|
+
const largest = msg.message.photo[msg.message.photo.length - 1];
|
|
406
420
|
try {
|
|
407
421
|
const { base64, mimeType } = await telegram.downloadFileAsBase64(largest.file_id);
|
|
408
422
|
contentBlocks.push({ type: "image", data: base64, mimeType });
|
|
409
|
-
if (
|
|
423
|
+
if (msg.message.caption) {
|
|
410
424
|
contentBlocks.push({
|
|
411
425
|
type: "text",
|
|
412
|
-
text: `[Image caption]: ${
|
|
426
|
+
text: `[Image caption]: ${msg.message.caption}`,
|
|
413
427
|
});
|
|
414
428
|
}
|
|
415
429
|
}
|
|
416
430
|
catch (err) {
|
|
417
431
|
contentBlocks.push({
|
|
418
432
|
type: "text",
|
|
419
|
-
text: `[Photo received but could not be downloaded: ${
|
|
433
|
+
text: `[Photo received but could not be downloaded: ${errorMessage(err)}]`,
|
|
420
434
|
});
|
|
421
435
|
}
|
|
422
436
|
}
|
|
423
437
|
// Documents: download and embed as base64.
|
|
424
|
-
if (
|
|
425
|
-
const doc =
|
|
438
|
+
if (msg.message.document) {
|
|
439
|
+
const doc = msg.message.document;
|
|
426
440
|
try {
|
|
427
441
|
const { base64, mimeType } = await telegram.downloadFileAsBase64(doc.file_id);
|
|
428
442
|
const isImage = mimeType.startsWith("image/");
|
|
@@ -436,47 +450,48 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
436
450
|
text: `[Document: ${doc.file_name ?? "file"} (${doc.mime_type ?? mimeType})]\nBase64 content: ${base64}`,
|
|
437
451
|
});
|
|
438
452
|
}
|
|
439
|
-
if (
|
|
453
|
+
if (msg.message.caption) {
|
|
440
454
|
contentBlocks.push({
|
|
441
455
|
type: "text",
|
|
442
|
-
text: `[Document caption]: ${
|
|
456
|
+
text: `[Document caption]: ${msg.message.caption}`,
|
|
443
457
|
});
|
|
444
458
|
}
|
|
445
459
|
}
|
|
446
460
|
catch (err) {
|
|
447
461
|
contentBlocks.push({
|
|
448
462
|
type: "text",
|
|
449
|
-
text: `[Document "${doc.file_name ?? "file"}" received but could not be downloaded: ${
|
|
463
|
+
text: `[Document "${doc.file_name ?? "file"}" received but could not be downloaded: ${errorMessage(err)}]`,
|
|
450
464
|
});
|
|
451
465
|
}
|
|
452
466
|
}
|
|
453
467
|
// Text messages.
|
|
454
|
-
if (
|
|
455
|
-
contentBlocks.push({ type: "text", text:
|
|
468
|
+
if (msg.message.text) {
|
|
469
|
+
contentBlocks.push({ type: "text", text: msg.message.text });
|
|
456
470
|
}
|
|
457
471
|
// Voice messages: transcribe using OpenAI Whisper.
|
|
458
|
-
if (
|
|
472
|
+
if (msg.message.voice) {
|
|
459
473
|
if (OPENAI_API_KEY) {
|
|
460
474
|
try {
|
|
461
|
-
const
|
|
475
|
+
const { buffer } = await telegram.downloadFileAsBuffer(msg.message.voice.file_id);
|
|
476
|
+
const transcript = await transcribeAudio(buffer, OPENAI_API_KEY);
|
|
462
477
|
contentBlocks.push({
|
|
463
478
|
type: "text",
|
|
464
479
|
text: transcript
|
|
465
|
-
? `[Voice message — ${
|
|
466
|
-
: `[Voice message — ${
|
|
480
|
+
? `[Voice message — ${msg.message.voice.duration}s, transcribed]: ${transcript}`
|
|
481
|
+
: `[Voice message — ${msg.message.voice.duration}s, transcribed]: (empty — no speech detected)`,
|
|
467
482
|
});
|
|
468
483
|
}
|
|
469
484
|
catch (err) {
|
|
470
485
|
contentBlocks.push({
|
|
471
486
|
type: "text",
|
|
472
|
-
text: `[Voice message — ${
|
|
487
|
+
text: `[Voice message — ${msg.message.voice.duration}s — transcription failed: ${errorMessage(err)}]`,
|
|
473
488
|
});
|
|
474
489
|
}
|
|
475
490
|
}
|
|
476
491
|
else {
|
|
477
492
|
contentBlocks.push({
|
|
478
493
|
type: "text",
|
|
479
|
-
text: `[Voice message received — ${
|
|
494
|
+
text: `[Voice message received — ${msg.message.voice.duration}s — cannot transcribe: OPENAI_API_KEY not set]`,
|
|
480
495
|
});
|
|
481
496
|
}
|
|
482
497
|
}
|
|
@@ -524,11 +539,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
524
539
|
content: [
|
|
525
540
|
{
|
|
526
541
|
type: "text",
|
|
527
|
-
text: `[Poll #${callNumber}
|
|
528
|
-
(keepAliveSent ? ` Keep-alive ping sent
|
|
529
|
-
` No new instructions received
|
|
530
|
-
`YOU MUST call remote_copilot_wait_for_instructions again RIGHT NOW. ` +
|
|
531
|
-
`Do NOT summarize
|
|
542
|
+
text: `[Poll #${callNumber} — timeout at ${now} — elapsed ${WAIT_TIMEOUT_MINUTES}m — session uptime ${Math.round((Date.now() - sessionStartedAt) / 60000)}m]` +
|
|
543
|
+
(keepAliveSent ? ` Keep-alive ping sent.` : "") +
|
|
544
|
+
` No new instructions received. ` +
|
|
545
|
+
`YOU MUST call remote_copilot_wait_for_instructions again RIGHT NOW to continue listening. ` +
|
|
546
|
+
`Do NOT summarize, stop, or say the session is idle. ` +
|
|
532
547
|
`Just call the tool again immediately.` +
|
|
533
548
|
getReminders(currentThreadId),
|
|
534
549
|
},
|
|
@@ -541,61 +556,41 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
541
556
|
? args.message
|
|
542
557
|
: "";
|
|
543
558
|
if (!rawMessage) {
|
|
544
|
-
return
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
559
|
+
return errorResult("Error: 'message' argument is required for report_progress.");
|
|
560
|
+
}
|
|
561
|
+
// Convert standard Markdown to Telegram MarkdownV2.
|
|
562
|
+
let message;
|
|
563
|
+
try {
|
|
564
|
+
message = convertMarkdown(rawMessage);
|
|
565
|
+
}
|
|
566
|
+
catch {
|
|
567
|
+
// Fall back to raw text if Markdown conversion throws.
|
|
568
|
+
message = rawMessage;
|
|
553
569
|
}
|
|
554
|
-
// Convert standard Markdown to Telegram MarkdownV2 (handles headings,
|
|
555
|
-
// lists, bold/italic, code blocks, and special-character escaping).
|
|
556
|
-
const message = convertMarkdown(rawMessage);
|
|
557
570
|
let sentAsPlainText = false;
|
|
558
571
|
try {
|
|
559
572
|
await telegram.sendMessage(TELEGRAM_CHAT_ID, message, "MarkdownV2", currentThreadId);
|
|
560
573
|
}
|
|
561
574
|
catch (error) {
|
|
562
|
-
const
|
|
575
|
+
const errMsg = errorMessage(error);
|
|
563
576
|
// If Telegram rejected the message due to a MarkdownV2 parse error,
|
|
564
577
|
// retry as plain text using the original un-converted message.
|
|
565
|
-
const isParseError =
|
|
578
|
+
const isParseError = errMsg.includes("can't parse entities");
|
|
566
579
|
if (isParseError) {
|
|
567
580
|
try {
|
|
568
581
|
await telegram.sendMessage(TELEGRAM_CHAT_ID, rawMessage, undefined, currentThreadId);
|
|
569
582
|
sentAsPlainText = true;
|
|
570
583
|
}
|
|
571
584
|
catch (retryError) {
|
|
572
|
-
process.stderr.write(`Failed to send progress message via Telegram (plain fallback): ${retryError
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return {
|
|
576
|
-
content: [
|
|
577
|
-
{
|
|
578
|
-
type: "text",
|
|
579
|
-
text: "Error: Failed to send progress update to Telegram even without formatting. " +
|
|
580
|
-
"Please check the Telegram configuration and try again.",
|
|
581
|
-
},
|
|
582
|
-
],
|
|
583
|
-
isError: true,
|
|
584
|
-
};
|
|
585
|
+
process.stderr.write(`Failed to send progress message via Telegram (plain fallback): ${errorMessage(retryError)}\n`);
|
|
586
|
+
return errorResult("Error: Failed to send progress update to Telegram even without formatting. " +
|
|
587
|
+
"Please check the Telegram configuration and try again.");
|
|
585
588
|
}
|
|
586
589
|
}
|
|
587
590
|
else {
|
|
588
|
-
process.stderr.write(`Failed to send progress message via Telegram: ${
|
|
589
|
-
return
|
|
590
|
-
|
|
591
|
-
{
|
|
592
|
-
type: "text",
|
|
593
|
-
text: "Error: Failed to send progress update to Telegram. " +
|
|
594
|
-
"Check the Telegram configuration and try again.",
|
|
595
|
-
},
|
|
596
|
-
],
|
|
597
|
-
isError: true,
|
|
598
|
-
};
|
|
591
|
+
process.stderr.write(`Failed to send progress message via Telegram: ${errMsg}\n`);
|
|
592
|
+
return errorResult("Error: Failed to send progress update to Telegram. " +
|
|
593
|
+
"Check the Telegram configuration and try again.");
|
|
599
594
|
}
|
|
600
595
|
}
|
|
601
596
|
// Peek at any messages the operator sent while the agent was working.
|
|
@@ -605,22 +600,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
605
600
|
try {
|
|
606
601
|
const pendingStored = peekThreadMessages(currentThreadId);
|
|
607
602
|
if (pendingStored.length > 0) {
|
|
608
|
-
for (const
|
|
609
|
-
if (
|
|
610
|
-
pendingMessages.push(
|
|
611
|
-
? `[Photo received] ${
|
|
603
|
+
for (const msg of pendingStored) {
|
|
604
|
+
if (msg.message.photo && msg.message.photo.length > 0) {
|
|
605
|
+
pendingMessages.push(msg.message.caption
|
|
606
|
+
? `[Photo received] ${msg.message.caption}`
|
|
612
607
|
: "[Photo received from operator]");
|
|
613
608
|
}
|
|
614
|
-
else if (
|
|
615
|
-
pendingMessages.push(
|
|
616
|
-
? `[Document: ${
|
|
617
|
-
: `[Document received: ${
|
|
609
|
+
else if (msg.message.document) {
|
|
610
|
+
pendingMessages.push(msg.message.caption
|
|
611
|
+
? `[Document: ${msg.message.document.file_name ?? "file"}] ${msg.message.caption}`
|
|
612
|
+
: `[Document received: ${msg.message.document.file_name ?? "file"}]`);
|
|
618
613
|
}
|
|
619
|
-
else if (
|
|
620
|
-
pendingMessages.push(`[Voice message — ${
|
|
614
|
+
else if (msg.message.voice) {
|
|
615
|
+
pendingMessages.push(`[Voice message — ${msg.message.voice.duration}s — will be transcribed on next wait]`);
|
|
621
616
|
}
|
|
622
|
-
else if (
|
|
623
|
-
pendingMessages.push(
|
|
617
|
+
else if (msg.message.text) {
|
|
618
|
+
pendingMessages.push(msg.message.text);
|
|
624
619
|
}
|
|
625
620
|
}
|
|
626
621
|
}
|
|
@@ -657,17 +652,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
657
652
|
const base64Data = typeof typedArgs.base64 === "string" ? typedArgs.base64 : "";
|
|
658
653
|
const caption = typeof typedArgs.caption === "string" ? typedArgs.caption : undefined;
|
|
659
654
|
if (!filePath && !base64Data) {
|
|
660
|
-
return
|
|
661
|
-
content: [{ type: "text", text: "Error: either 'filePath' or 'base64' argument is required for send_file." }],
|
|
662
|
-
isError: true,
|
|
663
|
-
};
|
|
655
|
+
return errorResult("Error: either 'filePath' or 'base64' argument is required for send_file.");
|
|
664
656
|
}
|
|
665
657
|
try {
|
|
666
658
|
let buffer;
|
|
667
659
|
let filename;
|
|
668
660
|
if (filePath) {
|
|
669
661
|
// Read directly from disk — fast, no LLM context overhead.
|
|
670
|
-
const { basename } = await import("path");
|
|
671
662
|
buffer = readFileSync(filePath);
|
|
672
663
|
filename = typeof typedArgs.filename === "string" && typedArgs.filename.trim()
|
|
673
664
|
? typedArgs.filename.trim()
|
|
@@ -680,8 +671,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
680
671
|
: "file";
|
|
681
672
|
}
|
|
682
673
|
const ext = filename.split(".").pop()?.toLowerCase() ?? "";
|
|
683
|
-
|
|
684
|
-
if (imageExts.has(ext)) {
|
|
674
|
+
if (IMAGE_EXTENSIONS.has(ext)) {
|
|
685
675
|
await telegram.sendPhoto(TELEGRAM_CHAT_ID, buffer, filename, caption, currentThreadId);
|
|
686
676
|
}
|
|
687
677
|
else {
|
|
@@ -697,43 +687,29 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
697
687
|
};
|
|
698
688
|
}
|
|
699
689
|
catch (err) {
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
return {
|
|
703
|
-
content: [
|
|
704
|
-
{
|
|
705
|
-
type: "text",
|
|
706
|
-
text: `Error: Failed to send file to Telegram: ${errorMsg}`,
|
|
707
|
-
},
|
|
708
|
-
],
|
|
709
|
-
isError: true,
|
|
710
|
-
};
|
|
690
|
+
process.stderr.write(`Failed to send file via Telegram: ${errorMessage(err)}\n`);
|
|
691
|
+
return errorResult(`Error: Failed to send file to Telegram: ${errorMessage(err)}`);
|
|
711
692
|
}
|
|
712
693
|
}
|
|
713
694
|
// ── send_voice ──────────────────────────────────────────────────────────
|
|
714
695
|
if (name === "send_voice") {
|
|
715
696
|
const typedArgs = (args ?? {});
|
|
716
697
|
const text = typeof typedArgs.text === "string" ? typedArgs.text.trim() : "";
|
|
698
|
+
const validVoices = TTS_VOICES;
|
|
699
|
+
const voice = typeof typedArgs.voice === "string" && validVoices.includes(typedArgs.voice)
|
|
700
|
+
? typedArgs.voice
|
|
701
|
+
: "nova";
|
|
717
702
|
if (!text) {
|
|
718
|
-
return
|
|
719
|
-
content: [{ type: "text", text: "Error: 'text' argument is required for send_voice." }],
|
|
720
|
-
isError: true,
|
|
721
|
-
};
|
|
703
|
+
return errorResult("Error: 'text' argument is required for send_voice.");
|
|
722
704
|
}
|
|
723
705
|
if (!OPENAI_API_KEY) {
|
|
724
|
-
return
|
|
725
|
-
content: [{ type: "text", text: "Error: OPENAI_API_KEY is not set. Cannot generate voice." }],
|
|
726
|
-
isError: true,
|
|
727
|
-
};
|
|
706
|
+
return errorResult("Error: OPENAI_API_KEY is not set. Cannot generate voice.");
|
|
728
707
|
}
|
|
729
|
-
if (text.length >
|
|
730
|
-
return {
|
|
731
|
-
content: [{ type: "text", text: `Error: text is ${text.length} characters — exceeds OpenAI TTS limit of 4096.` }],
|
|
732
|
-
isError: true,
|
|
733
|
-
};
|
|
708
|
+
if (text.length > OPENAI_TTS_MAX_CHARS) {
|
|
709
|
+
return errorResult(`Error: text is ${text.length} characters — exceeds OpenAI TTS limit of ${OPENAI_TTS_MAX_CHARS}.`);
|
|
734
710
|
}
|
|
735
711
|
try {
|
|
736
|
-
const audioBuffer = await
|
|
712
|
+
const audioBuffer = await textToSpeech(text, OPENAI_API_KEY, voice);
|
|
737
713
|
await telegram.sendVoice(TELEGRAM_CHAT_ID, audioBuffer, currentThreadId);
|
|
738
714
|
return {
|
|
739
715
|
content: [
|
|
@@ -745,29 +721,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
745
721
|
};
|
|
746
722
|
}
|
|
747
723
|
catch (err) {
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
return {
|
|
751
|
-
content: [
|
|
752
|
-
{
|
|
753
|
-
type: "text",
|
|
754
|
-
text: `Error: Failed to send voice message: ${errorMsg}`,
|
|
755
|
-
},
|
|
756
|
-
],
|
|
757
|
-
isError: true,
|
|
758
|
-
};
|
|
724
|
+
process.stderr.write(`Failed to send voice via Telegram: ${errorMessage(err)}\n`);
|
|
725
|
+
return errorResult(`Error: Failed to send voice message: ${errorMessage(err)}`);
|
|
759
726
|
}
|
|
760
727
|
}
|
|
761
728
|
// Unknown tool
|
|
762
|
-
return {
|
|
763
|
-
content: [
|
|
764
|
-
{
|
|
765
|
-
type: "text",
|
|
766
|
-
text: `Unknown tool: ${name}`,
|
|
767
|
-
},
|
|
768
|
-
],
|
|
769
|
-
isError: true,
|
|
770
|
-
};
|
|
729
|
+
return errorResult(`Unknown tool: ${name}`);
|
|
771
730
|
});
|
|
772
731
|
// ---------------------------------------------------------------------------
|
|
773
732
|
// Start the server
|
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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"}
|
package/dist/openai.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI API client for voice services (TTS + Whisper transcription).
|
|
3
|
+
*
|
|
4
|
+
* Separated from telegram.ts to maintain single responsibility:
|
|
5
|
+
* TelegramClient handles Telegram API, this module handles OpenAI API.
|
|
6
|
+
*/
|
|
7
|
+
/** Valid TTS voice names. */
|
|
8
|
+
export declare const TTS_VOICES: readonly ["alloy", "echo", "fable", "onyx", "nova", "shimmer"];
|
|
9
|
+
export type TTSVoice = typeof TTS_VOICES[number];
|
|
10
|
+
/**
|
|
11
|
+
* Convert text to speech using OpenAI TTS API.
|
|
12
|
+
* Returns OGG Opus audio suitable for Telegram's sendVoice.
|
|
13
|
+
*/
|
|
14
|
+
export declare function textToSpeech(text: string, apiKey: string, voice?: TTSVoice): Promise<Buffer>;
|
|
15
|
+
/**
|
|
16
|
+
* Transcribe an audio buffer using OpenAI Whisper API.
|
|
17
|
+
* @param audioBuffer Raw audio content (OGG Opus from Telegram voice messages).
|
|
18
|
+
* @param apiKey OpenAI API key.
|
|
19
|
+
* @returns The transcribed text (empty string if no speech detected).
|
|
20
|
+
*/
|
|
21
|
+
export declare function transcribeAudio(audioBuffer: Buffer, apiKey: string): Promise<string>;
|
|
22
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6BAA6B;AAC7B,eAAO,MAAM,UAAU,gEAEb,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,YAAY,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,QAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
package/dist/openai.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI API client for voice services (TTS + Whisper transcription).
|
|
3
|
+
*
|
|
4
|
+
* Separated from telegram.ts to maintain single responsibility:
|
|
5
|
+
* TelegramClient handles Telegram API, this module handles OpenAI API.
|
|
6
|
+
*/
|
|
7
|
+
/** Valid TTS voice names. */
|
|
8
|
+
export const TTS_VOICES = [
|
|
9
|
+
"alloy", "echo", "fable", "onyx", "nova", "shimmer",
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* Convert text to speech using OpenAI TTS API.
|
|
13
|
+
* Returns OGG Opus audio suitable for Telegram's sendVoice.
|
|
14
|
+
*/
|
|
15
|
+
export async function textToSpeech(text, apiKey, voice = "nova") {
|
|
16
|
+
const response = await fetch("https://api.openai.com/v1/audio/speech", {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
Authorization: `Bearer ${apiKey}`,
|
|
21
|
+
},
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
model: "tts-1",
|
|
24
|
+
input: text,
|
|
25
|
+
voice,
|
|
26
|
+
response_format: "opus",
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const errText = await response.text().catch(() => response.statusText);
|
|
31
|
+
throw new Error(`OpenAI TTS failed: ${response.status} ${errText}`);
|
|
32
|
+
}
|
|
33
|
+
return Buffer.from(await response.arrayBuffer());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Transcribe an audio buffer using OpenAI Whisper API.
|
|
37
|
+
* @param audioBuffer Raw audio content (OGG Opus from Telegram voice messages).
|
|
38
|
+
* @param apiKey OpenAI API key.
|
|
39
|
+
* @returns The transcribed text (empty string if no speech detected).
|
|
40
|
+
*/
|
|
41
|
+
export async function transcribeAudio(audioBuffer, apiKey) {
|
|
42
|
+
// Telegram stores voice as .oga (OGG Opus). Whisper accepts .ogg but
|
|
43
|
+
// not .oga, so we hardcode the extension.
|
|
44
|
+
const formData = new FormData();
|
|
45
|
+
formData.append("file", new Blob([new Uint8Array(audioBuffer)]), "voice.ogg");
|
|
46
|
+
formData.append("model", "whisper-1");
|
|
47
|
+
const response = await fetch("https://api.openai.com/v1/audio/transcriptions", {
|
|
48
|
+
method: "POST",
|
|
49
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
50
|
+
body: formData,
|
|
51
|
+
});
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
const errText = await response.text().catch(() => response.statusText);
|
|
54
|
+
throw new Error(`OpenAI Whisper transcription failed: ${response.status} ${errText}`);
|
|
55
|
+
}
|
|
56
|
+
const result = (await response.json());
|
|
57
|
+
return result.text ?? "";
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=openai.js.map
|