bn-telegram-mcp-server 0.0.1

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.
Files changed (99) hide show
  1. package/README.md +1031 -0
  2. package/dist/debug-middleware.d.ts +12 -0
  3. package/dist/debug-middleware.d.ts.map +1 -0
  4. package/dist/debug-middleware.js +36 -0
  5. package/dist/debug-middleware.js.map +1 -0
  6. package/dist/encryption.d.ts +11 -0
  7. package/dist/encryption.d.ts.map +1 -0
  8. package/dist/encryption.js +26 -0
  9. package/dist/encryption.js.map +1 -0
  10. package/dist/helpers.d.ts +27 -0
  11. package/dist/helpers.d.ts.map +1 -0
  12. package/dist/helpers.js +103 -0
  13. package/dist/helpers.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +176 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/logger.d.ts +29 -0
  19. package/dist/logger.d.ts.map +1 -0
  20. package/dist/logger.js +114 -0
  21. package/dist/logger.js.map +1 -0
  22. package/dist/request-context.d.ts +24 -0
  23. package/dist/request-context.d.ts.map +1 -0
  24. package/dist/request-context.js +32 -0
  25. package/dist/request-context.js.map +1 -0
  26. package/dist/resolvers.d.ts +36 -0
  27. package/dist/resolvers.d.ts.map +1 -0
  28. package/dist/resolvers.js +252 -0
  29. package/dist/resolvers.js.map +1 -0
  30. package/dist/schemas.d.ts +150 -0
  31. package/dist/schemas.d.ts.map +1 -0
  32. package/dist/schemas.js +216 -0
  33. package/dist/schemas.js.map +1 -0
  34. package/dist/telegram-client.d.ts +19 -0
  35. package/dist/telegram-client.d.ts.map +1 -0
  36. package/dist/telegram-client.js +112 -0
  37. package/dist/telegram-client.js.map +1 -0
  38. package/dist/tool-loader.d.ts +31 -0
  39. package/dist/tool-loader.d.ts.map +1 -0
  40. package/dist/tool-loader.js +121 -0
  41. package/dist/tool-loader.js.map +1 -0
  42. package/dist/tool-registry.d.ts +47 -0
  43. package/dist/tool-registry.d.ts.map +1 -0
  44. package/dist/tool-registry.js +58 -0
  45. package/dist/tool-registry.js.map +1 -0
  46. package/dist/tools/getChat.d.ts +28 -0
  47. package/dist/tools/getChat.d.ts.map +1 -0
  48. package/dist/tools/getChat.js +69 -0
  49. package/dist/tools/getChat.js.map +1 -0
  50. package/dist/tools/getChatMembers.d.ts +34 -0
  51. package/dist/tools/getChatMembers.d.ts.map +1 -0
  52. package/dist/tools/getChatMembers.js +150 -0
  53. package/dist/tools/getChatMembers.js.map +1 -0
  54. package/dist/tools/getContacts.d.ts +28 -0
  55. package/dist/tools/getContacts.d.ts.map +1 -0
  56. package/dist/tools/getContacts.js +73 -0
  57. package/dist/tools/getContacts.js.map +1 -0
  58. package/dist/tools/getFile.d.ts +21 -0
  59. package/dist/tools/getFile.d.ts.map +1 -0
  60. package/dist/tools/getFile.js +33 -0
  61. package/dist/tools/getFile.js.map +1 -0
  62. package/dist/tools/getGroup.d.ts +27 -0
  63. package/dist/tools/getGroup.d.ts.map +1 -0
  64. package/dist/tools/getGroup.js +100 -0
  65. package/dist/tools/getGroup.js.map +1 -0
  66. package/dist/tools/getMe.d.ts +17 -0
  67. package/dist/tools/getMe.d.ts.map +1 -0
  68. package/dist/tools/getMe.js +20 -0
  69. package/dist/tools/getMe.js.map +1 -0
  70. package/dist/tools/getMessageContext.d.ts +21 -0
  71. package/dist/tools/getMessageContext.d.ts.map +1 -0
  72. package/dist/tools/getMessageContext.js +164 -0
  73. package/dist/tools/getMessageContext.js.map +1 -0
  74. package/dist/tools/getMessages.d.ts +38 -0
  75. package/dist/tools/getMessages.d.ts.map +1 -0
  76. package/dist/tools/getMessages.js +123 -0
  77. package/dist/tools/getMessages.js.map +1 -0
  78. package/dist/tools/getUser.d.ts +22 -0
  79. package/dist/tools/getUser.d.ts.map +1 -0
  80. package/dist/tools/getUser.js +38 -0
  81. package/dist/tools/getUser.js.map +1 -0
  82. package/dist/tools/index.d.ts +11 -0
  83. package/dist/tools/index.d.ts.map +1 -0
  84. package/dist/tools/index.js +12 -0
  85. package/dist/tools/index.js.map +1 -0
  86. package/dist/tools/sendMessage.d.ts +39 -0
  87. package/dist/tools/sendMessage.d.ts.map +1 -0
  88. package/dist/tools/sendMessage.js +116 -0
  89. package/dist/tools/sendMessage.js.map +1 -0
  90. package/dist/transformers.d.ts +133 -0
  91. package/dist/transformers.d.ts.map +1 -0
  92. package/dist/transformers.js +335 -0
  93. package/dist/transformers.js.map +1 -0
  94. package/dist/types.d.ts +55 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +2 -0
  97. package/dist/types.js.map +1 -0
  98. package/package.json +45 -0
  99. package/tools.json +252 -0
@@ -0,0 +1,116 @@
1
+ import { withClient } from "../helpers.js";
2
+ import { resolveChat } from "../resolvers.js";
3
+ import { transformMessage } from "../transformers.js";
4
+ /**
5
+ * Send or forward messages to a chat
6
+ *
7
+ * Actions:
8
+ * - action="send" (default): Compose and send a new text message
9
+ * - action="forward": Forward existing messages from another chat
10
+ *
11
+ * Parameters:
12
+ * - chat: Target chat (ID or name like "Gong Zhe", "Family Group")
13
+ * - action: "send" | "forward" (default: "send")
14
+ *
15
+ * Send action parameters:
16
+ * - text: Message content
17
+ * - reply_to_message_id: Optional - reply to specific message
18
+ *
19
+ * Forward action parameters:
20
+ * - from_chat: Source chat to forward from
21
+ * - message_ids: Array of message IDs to forward
22
+ * - send_copy: Send as copy without "Forwarded from" header
23
+ * - remove_caption: Remove media captions when forwarding
24
+ *
25
+ * Returns (send):
26
+ * - The sent message with id, content, date, is_outgoing
27
+ *
28
+ * Returns (forward):
29
+ * - forwarded: Array of forwarded messages
30
+ * - count: Number of messages forwarded
31
+ */
32
+ export async function sendMessage(req, args) {
33
+ return withClient(req, async (client) => {
34
+ const action = args.action ?? "send";
35
+ // Load chats first
36
+ await client.invoke({
37
+ _: "loadChats",
38
+ chat_list: { _: "chatListMain" },
39
+ limit: 100,
40
+ });
41
+ // Resolve target chat
42
+ const toChatId = await resolveChat(client, args.chat);
43
+ if (action === "forward") {
44
+ // Forward messages from another chat
45
+ if (!args.from_chat) {
46
+ throw new Error('from_chat is required for action="forward". Specify the source chat.');
47
+ }
48
+ if (!args.message_ids || args.message_ids.length === 0) {
49
+ throw new Error('message_ids is required for action="forward". Specify messages to forward.');
50
+ }
51
+ const fromChatId = await resolveChat(client, args.from_chat);
52
+ const result = await client.invoke({
53
+ _: "forwardMessages",
54
+ chat_id: toChatId,
55
+ from_chat_id: fromChatId,
56
+ message_ids: args.message_ids,
57
+ send_copy: args.send_copy ?? false,
58
+ remove_caption: args.remove_caption ?? false,
59
+ });
60
+ const messages = result;
61
+ const forwarded = (messages.messages ?? []).map((m) => transformMessage(m));
62
+ return {
63
+ forwarded,
64
+ count: forwarded.length,
65
+ };
66
+ }
67
+ // Default: send a new message
68
+ if (!args.text) {
69
+ throw new Error('text is required for action="send". Provide message content.');
70
+ }
71
+ const result = (await client.invoke({
72
+ _: "sendMessage",
73
+ chat_id: toChatId,
74
+ reply_to: args.reply_to_message_id
75
+ ? {
76
+ _: "inputMessageReplyToMessage",
77
+ message_id: args.reply_to_message_id,
78
+ }
79
+ : undefined,
80
+ input_message_content: {
81
+ _: "inputMessageText",
82
+ text: {
83
+ _: "formattedText",
84
+ text: args.text,
85
+ },
86
+ },
87
+ }));
88
+ // Wait for the message to be sent (up to 10 seconds)
89
+ const sentMessage = await new Promise((resolve, reject) => {
90
+ const timeout = setTimeout(() => {
91
+ cleanup();
92
+ reject(new Error("Message send timeout - message may still be sending"));
93
+ }, 10000);
94
+ const onUpdate = (update) => {
95
+ const u = update;
96
+ if (u._ === "updateMessageSendSucceeded" &&
97
+ u.old_message_id === result.id) {
98
+ cleanup();
99
+ resolve(u.message);
100
+ }
101
+ else if (u._ === "updateMessageSendFailed" &&
102
+ u.old_message_id === result.id) {
103
+ cleanup();
104
+ reject(new Error("Failed to send message"));
105
+ }
106
+ };
107
+ const cleanup = () => {
108
+ clearTimeout(timeout);
109
+ client.off("update", onUpdate);
110
+ };
111
+ client.on("update", onUpdate);
112
+ });
113
+ return transformMessage(sentMessage);
114
+ });
115
+ }
116
+ //# sourceMappingURL=sendMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendMessage.js","sourceRoot":"","sources":["../../src/tools/sendMessage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Output transformers for converting raw TDLib responses to human-friendly formats
3
+ *
4
+ * These transform complex nested TDLib objects into simplified, readable structures
5
+ * that are easier for users and LLMs to understand and work with.
6
+ */
7
+ /**
8
+ * Format Unix timestamp to readable date string
9
+ */
10
+ export declare function formatTimestamp(unix: number): string;
11
+ /**
12
+ * Format Unix timestamp to relative time (e.g., "2 hours ago")
13
+ */
14
+ export declare function formatRelativeTime(unix: number): string;
15
+ export interface TransformedUser {
16
+ id: number;
17
+ name: string;
18
+ username?: string;
19
+ phone?: string;
20
+ status: string;
21
+ is_contact: boolean;
22
+ is_premium: boolean;
23
+ is_verified: boolean;
24
+ }
25
+ export declare function transformUser(user: unknown): TransformedUser;
26
+ export interface TransformedChat {
27
+ id: number;
28
+ title: string;
29
+ type: string;
30
+ unread_count: number;
31
+ last_message?: {
32
+ preview: string;
33
+ sender: string;
34
+ date: string;
35
+ date_relative: string;
36
+ };
37
+ member_count?: number;
38
+ is_pinned: boolean;
39
+ is_muted: boolean;
40
+ }
41
+ export declare function transformChat(chat: unknown): TransformedChat;
42
+ export interface TransformedChatList {
43
+ chats: TransformedChat[];
44
+ total_count: number;
45
+ summary: string;
46
+ }
47
+ export declare function transformChatList(chats: unknown[], totalCount: number): TransformedChatList;
48
+ export interface TransformedMessage {
49
+ id: number;
50
+ chat_id: number;
51
+ sender: string;
52
+ sender_id: number;
53
+ content: string;
54
+ content_type: string;
55
+ date: string;
56
+ date_relative: string;
57
+ is_outgoing: boolean;
58
+ is_pinned: boolean;
59
+ reply_to_message_id?: number;
60
+ file_id?: number;
61
+ }
62
+ export declare function transformMessage(message: unknown, userCache?: Map<number, string>): TransformedMessage;
63
+ export interface TransformedMessageHistory {
64
+ messages: TransformedMessage[];
65
+ total_count: number;
66
+ chat_title?: string;
67
+ }
68
+ export declare function transformMessageHistory(messages: unknown[], totalCount: number, chatTitle?: string, userCache?: Map<number, string>): TransformedMessageHistory;
69
+ export interface TransformedContact {
70
+ id: number;
71
+ name: string;
72
+ username?: string;
73
+ phone?: string;
74
+ status: string;
75
+ }
76
+ export declare function transformContacts(users: unknown[]): TransformedContact[];
77
+ export interface TransformedGroup {
78
+ id: number;
79
+ name: string;
80
+ type: "basic_group" | "supergroup" | "channel";
81
+ member_count: number;
82
+ description?: string;
83
+ is_verified?: boolean;
84
+ is_scam?: boolean;
85
+ join_date?: string;
86
+ }
87
+ export declare function transformBasicGroup(group: unknown, chatInfo?: unknown): TransformedGroup;
88
+ export declare function transformSupergroup(group: unknown, chatInfo?: unknown): TransformedGroup;
89
+ export interface TransformedMember {
90
+ user_id: number;
91
+ name: string;
92
+ username?: string;
93
+ status: string;
94
+ role: string;
95
+ joined_date?: string;
96
+ }
97
+ export declare function transformMembers(members: unknown[], userCache?: Map<number, {
98
+ name: string;
99
+ username?: string;
100
+ }>): TransformedMember[];
101
+ export interface TransformedFile {
102
+ id: number;
103
+ size: string;
104
+ size_bytes: number;
105
+ remote_id?: string;
106
+ }
107
+ export declare function transformFile(file: unknown): TransformedFile;
108
+ export interface TransformedSearchResult {
109
+ messages: TransformedMessage[];
110
+ total_count: number;
111
+ next_offset?: string;
112
+ search_query: string;
113
+ }
114
+ export declare function transformSearchResults(result: unknown, query: string, userCache?: Map<number, string>): TransformedSearchResult;
115
+ export interface TransformedMessageWithContext extends TransformedMessage {
116
+ is_target: boolean;
117
+ }
118
+ export interface TransformedMessageContext {
119
+ messages: TransformedMessageWithContext[];
120
+ target_message_id: number;
121
+ context_count: number;
122
+ chat_id: number;
123
+ chat_title?: string;
124
+ }
125
+ export interface TransformedMessageContextResult {
126
+ contexts: TransformedMessageContext[];
127
+ total_matches: number;
128
+ search_query?: string;
129
+ summary: string;
130
+ }
131
+ export declare function transformMessageContext(targetMessage: unknown, messagesBefore: unknown[], messagesAfter: unknown[], contextCount: number, chatId: number, chatTitle?: string, userCache?: Map<number, string>): TransformedMessageContext;
132
+ export declare function transformMessageContextResult(contexts: TransformedMessageContext[], totalMatches: number, searchQuery?: string): TransformedMessageContextResult;
133
+ //# sourceMappingURL=transformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Output transformers for converting raw TDLib responses to human-friendly formats
3
+ *
4
+ * These transform complex nested TDLib objects into simplified, readable structures
5
+ * that are easier for users and LLMs to understand and work with.
6
+ */
7
+ // ==================== Helper Functions ====================
8
+ /**
9
+ * Format Unix timestamp to readable date string
10
+ */
11
+ export function formatTimestamp(unix) {
12
+ if (!unix || unix === 0)
13
+ return "";
14
+ const date = new Date(unix * 1000);
15
+ return date.toISOString();
16
+ }
17
+ /**
18
+ * Format Unix timestamp to relative time (e.g., "2 hours ago")
19
+ */
20
+ export function formatRelativeTime(unix) {
21
+ if (!unix || unix === 0)
22
+ return "";
23
+ const now = Date.now();
24
+ const diff = now - unix * 1000;
25
+ const seconds = Math.floor(diff / 1000);
26
+ const minutes = Math.floor(seconds / 60);
27
+ const hours = Math.floor(minutes / 60);
28
+ const days = Math.floor(hours / 24);
29
+ if (days > 0)
30
+ return `${days} day${days > 1 ? "s" : ""} ago`;
31
+ if (hours > 0)
32
+ return `${hours} hour${hours > 1 ? "s" : ""} ago`;
33
+ if (minutes > 0)
34
+ return `${minutes} minute${minutes > 1 ? "s" : ""} ago`;
35
+ return "just now";
36
+ }
37
+ /**
38
+ * Extract text content from a message
39
+ */
40
+ function extractMessageText(content) {
41
+ const c = content;
42
+ if (!c)
43
+ return "";
44
+ switch (c._) {
45
+ case "messageText":
46
+ return c.text?.text ?? "";
47
+ case "messagePhoto":
48
+ return c.caption?.text ? `[Photo] ${c.caption.text}` : "[Photo]";
49
+ case "messageVideo":
50
+ return c.caption?.text ? `[Video] ${c.caption.text}` : "[Video]";
51
+ case "messageDocument":
52
+ return c.caption?.text ? `[Document] ${c.caption.text}` : "[Document]";
53
+ case "messageAudio":
54
+ return c.caption?.text ? `[Audio] ${c.caption.text}` : "[Audio]";
55
+ case "messageVoiceNote":
56
+ return "[Voice message]";
57
+ case "messageVideoNote":
58
+ return "[Video message]";
59
+ case "messageSticker":
60
+ return "[Sticker]";
61
+ case "messageAnimation":
62
+ return "[GIF]";
63
+ case "messageLocation":
64
+ return "[Location]";
65
+ case "messageContact":
66
+ return "[Contact]";
67
+ case "messagePoll":
68
+ return "[Poll]";
69
+ default:
70
+ return `[${c._?.replace("message", "") ?? "Unknown"}]`;
71
+ }
72
+ }
73
+ /**
74
+ * Get chat type as human-readable string
75
+ */
76
+ function getChatTypeString(type) {
77
+ const t = type;
78
+ if (!t?._)
79
+ return "unknown";
80
+ switch (t._) {
81
+ case "chatTypePrivate":
82
+ return "private";
83
+ case "chatTypeBasicGroup":
84
+ return "group";
85
+ case "chatTypeSupergroup":
86
+ return t.is_channel ? "channel" : "supergroup";
87
+ case "chatTypeSecret":
88
+ return "secret";
89
+ default:
90
+ return t._.replace("chatType", "").toLowerCase();
91
+ }
92
+ }
93
+ /**
94
+ * Get user status as human-readable string
95
+ */
96
+ function getUserStatusString(status) {
97
+ const s = status;
98
+ if (!s?._)
99
+ return "unknown";
100
+ switch (s._) {
101
+ case "userStatusOnline":
102
+ return "online";
103
+ case "userStatusOffline":
104
+ return s.was_online ? `last seen ${formatRelativeTime(s.was_online)}` : "offline";
105
+ case "userStatusRecently":
106
+ return "last seen recently";
107
+ case "userStatusLastWeek":
108
+ return "last seen within a week";
109
+ case "userStatusLastMonth":
110
+ return "last seen within a month";
111
+ case "userStatusEmpty":
112
+ return "unknown";
113
+ default:
114
+ return s._.replace("userStatus", "").toLowerCase();
115
+ }
116
+ }
117
+ export function transformUser(user) {
118
+ const u = user;
119
+ return {
120
+ id: u.id,
121
+ name: `${u.first_name ?? ""} ${u.last_name ?? ""}`.trim() || "Unknown",
122
+ username: u.usernames?.active_usernames?.[0],
123
+ phone: u.phone_number,
124
+ status: getUserStatusString(u.status),
125
+ is_contact: u.is_contact ?? false,
126
+ is_premium: u.is_premium ?? false,
127
+ is_verified: u.is_verified ?? false,
128
+ };
129
+ }
130
+ export function transformChat(chat) {
131
+ const c = chat;
132
+ const lastMsg = c.last_message;
133
+ let senderName = "Unknown";
134
+ if (lastMsg?.sender_id) {
135
+ if (lastMsg.sender_id._ === "messageSenderUser") {
136
+ senderName = `User ${lastMsg.sender_id.user_id}`;
137
+ }
138
+ else if (lastMsg.sender_id._ === "messageSenderChat") {
139
+ senderName = "Channel";
140
+ }
141
+ }
142
+ return {
143
+ id: c.id,
144
+ title: c.title,
145
+ type: getChatTypeString(c.type),
146
+ unread_count: c.unread_count ?? 0,
147
+ last_message: lastMsg
148
+ ? {
149
+ preview: extractMessageText(lastMsg.content).substring(0, 100),
150
+ sender: senderName,
151
+ date: formatTimestamp(lastMsg.date ?? 0),
152
+ date_relative: formatRelativeTime(lastMsg.date ?? 0),
153
+ }
154
+ : undefined,
155
+ is_pinned: c.positions?.[0]?.is_pinned ?? false,
156
+ is_muted: (c.notification_settings?.mute_for ?? 0) > 0,
157
+ };
158
+ }
159
+ export function transformChatList(chats, totalCount) {
160
+ const transformed = chats.map(transformChat);
161
+ const unreadCount = transformed.reduce((sum, c) => sum + c.unread_count, 0);
162
+ return {
163
+ chats: transformed,
164
+ total_count: totalCount,
165
+ summary: `${transformed.length} chats loaded, ${unreadCount} unread messages`,
166
+ };
167
+ }
168
+ export function transformMessage(message, userCache) {
169
+ const m = message;
170
+ let senderName = "Unknown";
171
+ let senderId = 0;
172
+ if (m.sender_id) {
173
+ if (m.sender_id._ === "messageSenderUser" && m.sender_id.user_id) {
174
+ senderId = m.sender_id.user_id;
175
+ senderName = userCache?.get(senderId) ?? `User ${senderId}`;
176
+ }
177
+ else if (m.sender_id._ === "messageSenderChat" && m.sender_id.chat_id) {
178
+ senderId = m.sender_id.chat_id;
179
+ senderName = "Channel";
180
+ }
181
+ }
182
+ // Extract file_id if present
183
+ const content = m.content;
184
+ let fileId;
185
+ if (content?.photo?.sizes) {
186
+ const lastSize = content.photo.sizes[content.photo.sizes.length - 1];
187
+ fileId = lastSize?.photo?.id;
188
+ }
189
+ else if (content?.document?.document?.id) {
190
+ fileId = content.document.document.id;
191
+ }
192
+ else if (content?.video?.video?.id) {
193
+ fileId = content.video.video.id;
194
+ }
195
+ else if (content?.audio?.audio?.id) {
196
+ fileId = content.audio.audio.id;
197
+ }
198
+ return {
199
+ id: m.id,
200
+ chat_id: m.chat_id,
201
+ sender: senderName,
202
+ sender_id: senderId,
203
+ content: extractMessageText(m.content),
204
+ content_type: m.content?._?.replace("message", "") ?? "unknown",
205
+ date: formatTimestamp(m.date ?? 0),
206
+ date_relative: formatRelativeTime(m.date ?? 0),
207
+ is_outgoing: m.is_outgoing ?? false,
208
+ is_pinned: m.is_pinned ?? false,
209
+ reply_to_message_id: m.reply_to?.message_id,
210
+ file_id: fileId,
211
+ };
212
+ }
213
+ export function transformMessageHistory(messages, totalCount, chatTitle, userCache) {
214
+ return {
215
+ messages: messages.map((m) => transformMessage(m, userCache)),
216
+ total_count: totalCount,
217
+ chat_title: chatTitle,
218
+ };
219
+ }
220
+ export function transformContacts(users) {
221
+ return users.map((user) => {
222
+ const u = transformUser(user);
223
+ return {
224
+ id: u.id,
225
+ name: u.name,
226
+ username: u.username,
227
+ phone: u.phone,
228
+ status: u.status,
229
+ };
230
+ });
231
+ }
232
+ export function transformBasicGroup(group, chatInfo) {
233
+ const g = group;
234
+ const c = chatInfo;
235
+ return {
236
+ id: g.id,
237
+ name: c?.title ?? `Group ${g.id}`,
238
+ type: "basic_group",
239
+ member_count: g.member_count ?? 0,
240
+ join_date: g.status?.joined_chat_date
241
+ ? formatTimestamp(g.status.joined_chat_date)
242
+ : undefined,
243
+ };
244
+ }
245
+ export function transformSupergroup(group, chatInfo) {
246
+ const g = group;
247
+ const c = chatInfo;
248
+ return {
249
+ id: g.id,
250
+ name: c?.title ?? `${g.is_channel ? "Channel" : "Supergroup"} ${g.id}`,
251
+ type: g.is_channel ? "channel" : "supergroup",
252
+ member_count: g.member_count ?? 0,
253
+ is_verified: g.is_verified,
254
+ is_scam: g.is_scam,
255
+ join_date: g.date ? formatTimestamp(g.date) : undefined,
256
+ };
257
+ }
258
+ export function transformMembers(members, userCache) {
259
+ return members.map((member) => {
260
+ const m = member;
261
+ const userId = m.member_id?.user_id ?? 0;
262
+ const userInfo = userCache?.get(userId);
263
+ const statusType = m.status?._?.replace("chatMemberStatus", "") ?? "Member";
264
+ return {
265
+ user_id: userId,
266
+ name: userInfo?.name ?? `User ${userId}`,
267
+ username: userInfo?.username,
268
+ status: "member",
269
+ role: statusType.toLowerCase(),
270
+ joined_date: m.status?.joined_chat_date
271
+ ? formatTimestamp(m.status.joined_chat_date)
272
+ : undefined,
273
+ };
274
+ });
275
+ }
276
+ export function transformFile(file) {
277
+ const f = file;
278
+ const sizeBytes = f.size ?? f.expected_size ?? 0;
279
+ let sizeStr;
280
+ if (sizeBytes >= 1024 * 1024 * 1024) {
281
+ sizeStr = `${(sizeBytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
282
+ }
283
+ else if (sizeBytes >= 1024 * 1024) {
284
+ sizeStr = `${(sizeBytes / (1024 * 1024)).toFixed(2)} MB`;
285
+ }
286
+ else if (sizeBytes >= 1024) {
287
+ sizeStr = `${(sizeBytes / 1024).toFixed(2)} KB`;
288
+ }
289
+ else {
290
+ sizeStr = `${sizeBytes} bytes`;
291
+ }
292
+ return {
293
+ id: f.id,
294
+ size: sizeStr,
295
+ size_bytes: sizeBytes,
296
+ remote_id: f.remote?.id,
297
+ };
298
+ }
299
+ export function transformSearchResults(result, query, userCache) {
300
+ const r = result;
301
+ return {
302
+ messages: (r.messages ?? []).map((m) => transformMessage(m, userCache)),
303
+ total_count: r.total_count ?? 0,
304
+ next_offset: r.next_offset,
305
+ search_query: query,
306
+ };
307
+ }
308
+ export function transformMessageContext(targetMessage, messagesBefore, messagesAfter, contextCount, chatId, chatTitle, userCache) {
309
+ const targetMsg = transformMessage(targetMessage, userCache);
310
+ // Build single chronological array: before -> target -> after
311
+ const messages = [
312
+ ...messagesBefore.map((m) => ({ ...transformMessage(m, userCache), is_target: false })),
313
+ { ...targetMsg, is_target: true },
314
+ ...messagesAfter.map((m) => ({ ...transformMessage(m, userCache), is_target: false })),
315
+ ];
316
+ return {
317
+ messages,
318
+ target_message_id: targetMsg.id,
319
+ context_count: contextCount,
320
+ chat_id: chatId,
321
+ chat_title: chatTitle,
322
+ };
323
+ }
324
+ export function transformMessageContextResult(contexts, totalMatches, searchQuery) {
325
+ const totalMessages = contexts.reduce((sum, ctx) => sum + ctx.messages.length, 0);
326
+ return {
327
+ contexts,
328
+ total_matches: totalMatches,
329
+ search_query: searchQuery,
330
+ summary: searchQuery
331
+ ? `Found ${totalMatches} match(es) for "${searchQuery}", showing context for ${contexts.length} result(s) (${totalMessages} total messages)`
332
+ : `Showing context for ${contexts.length} message(s) (${totalMessages} total messages)`,
333
+ };
334
+ }
335
+ //# sourceMappingURL=transformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ export interface DebugMetadata {
2
+ toolName: string;
3
+ toolInput: unknown;
4
+ toolCallTime: number;
5
+ timestamp: string;
6
+ }
7
+ export interface ToolResponse<T = unknown> {
8
+ data: T;
9
+ debug?: DebugMetadata;
10
+ }
11
+ /**
12
+ * TDLib response types
13
+ *
14
+ * Note: These are simplified types that don't try to match TDLib's exact types.
15
+ * TDLib responses are complex and version-dependent. We use these as documentation
16
+ * of expected structure, but cast through `unknown` when needed.
17
+ */
18
+ export interface TDLibObject {
19
+ _: string;
20
+ [key: string]: unknown;
21
+ }
22
+ export type TelegramUser = TDLibObject & {
23
+ _: "user";
24
+ id: number;
25
+ first_name: string;
26
+ last_name?: string;
27
+ };
28
+ export type TelegramFile = TDLibObject & {
29
+ _: "file";
30
+ id: number;
31
+ size?: number;
32
+ expected_size?: number;
33
+ };
34
+ export type TelegramChat = TDLibObject & {
35
+ _: "chat";
36
+ id: number;
37
+ title: string;
38
+ };
39
+ export type TelegramMessage = TDLibObject & {
40
+ _: "message";
41
+ id: number;
42
+ chat_id: number;
43
+ date: number;
44
+ };
45
+ export type TelegramChats = TDLibObject & {
46
+ _: "chats";
47
+ total_count: number;
48
+ chat_ids: number[];
49
+ };
50
+ export type TelegramUsers = TDLibObject & {
51
+ _: "users";
52
+ total_count: number;
53
+ user_ids: number[];
54
+ };
55
+ //# sourceMappingURL=types.d.ts.map