@mono-agent/telegram-adapter 0.2.1 → 0.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.
Files changed (48) hide show
  1. package/README.md +2 -0
  2. package/dist/adapter.d.ts +35 -57
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/adapter.js +37 -179
  5. package/dist/adapter.js.map +1 -1
  6. package/dist/bot.d.ts +50 -0
  7. package/dist/bot.d.ts.map +1 -0
  8. package/dist/bot.js +214 -0
  9. package/dist/bot.js.map +1 -0
  10. package/dist/config.d.ts +2 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +18 -2
  13. package/dist/config.js.map +1 -1
  14. package/dist/grammy-client.d.ts +14 -0
  15. package/dist/grammy-client.d.ts.map +1 -0
  16. package/dist/grammy-client.js +103 -0
  17. package/dist/grammy-client.js.map +1 -0
  18. package/dist/index.d.ts +11 -10
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/message-stream.d.ts +80 -7
  23. package/dist/message-stream.d.ts.map +1 -1
  24. package/dist/message-stream.js +381 -34
  25. package/dist/message-stream.js.map +1 -1
  26. package/dist/start.d.ts +23 -34
  27. package/dist/start.d.ts.map +1 -1
  28. package/dist/start.js +25 -43
  29. package/dist/start.js.map +1 -1
  30. package/dist/telegram-error.d.ts +34 -0
  31. package/dist/telegram-error.d.ts.map +1 -0
  32. package/dist/telegram-error.js +39 -0
  33. package/dist/telegram-error.js.map +1 -0
  34. package/dist/telegram-markdown.d.ts +17 -0
  35. package/dist/telegram-markdown.d.ts.map +1 -0
  36. package/dist/telegram-markdown.js +20 -0
  37. package/dist/telegram-markdown.js.map +1 -0
  38. package/dist/types.d.ts +8 -1
  39. package/dist/types.d.ts.map +1 -1
  40. package/package.json +6 -3
  41. package/dist/long-poller.d.ts +0 -55
  42. package/dist/long-poller.d.ts.map +0 -1
  43. package/dist/long-poller.js +0 -156
  44. package/dist/long-poller.js.map +0 -1
  45. package/dist/telegram-client.d.ts +0 -38
  46. package/dist/telegram-client.d.ts.map +0 -1
  47. package/dist/telegram-client.js +0 -183
  48. package/dist/telegram-client.js.map +0 -1
@@ -1,38 +0,0 @@
1
- import type { TelegramBotApi, TelegramDeleteWebhookParams, TelegramEditMessageTextParams, TelegramGetUpdatesParams, TelegramRequestOptions, TelegramSendMessageParams, TelegramSentMessage, TelegramUpdate } from "./types.js";
2
- export type TelegramApiErrorKind = "http" | "telegram" | "malformed" | "network" | "aborted";
3
- export interface TelegramApiErrorDetails {
4
- kind: TelegramApiErrorKind;
5
- method: string;
6
- status?: number;
7
- errorCode?: number;
8
- telegramDescription?: string;
9
- cause?: unknown;
10
- }
11
- export declare class TelegramApiError extends Error {
12
- readonly kind: TelegramApiErrorKind;
13
- readonly method: string;
14
- readonly status?: number;
15
- readonly errorCode?: number;
16
- readonly telegramDescription?: string;
17
- readonly cause?: unknown;
18
- constructor(message: string, details: TelegramApiErrorDetails);
19
- }
20
- export interface TelegramBotApiClientOptions {
21
- token: string;
22
- apiBaseUrl?: string;
23
- fetchImpl?: typeof fetch;
24
- requestTimeoutMs?: number;
25
- }
26
- export declare class TelegramBotApiClient implements TelegramBotApi {
27
- private readonly token;
28
- private readonly apiBaseUrl;
29
- private readonly fetchImpl;
30
- private readonly requestTimeoutMs;
31
- constructor(options: TelegramBotApiClientOptions);
32
- sendMessage(params: TelegramSendMessageParams, options?: TelegramRequestOptions): Promise<TelegramSentMessage>;
33
- editMessageText(params: TelegramEditMessageTextParams, options?: TelegramRequestOptions): Promise<TelegramSentMessage | true>;
34
- getUpdates(params: TelegramGetUpdatesParams, options?: TelegramRequestOptions): Promise<TelegramUpdate[]>;
35
- deleteWebhook(params?: TelegramDeleteWebhookParams, options?: TelegramRequestOptions): Promise<true>;
36
- private request;
37
- }
38
- //# sourceMappingURL=telegram-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telegram-client.d.ts","sourceRoot":"","sources":["../src/telegram-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,2BAA2B,EAC3B,6BAA6B,EAC7B,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,UAAU,GACV,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,SAAkB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB;CAkB9D;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkBD,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,OAAO,EAAE,2BAA2B;IAsBhD,WAAW,CACT,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IAI/B,eAAe,CACb,MAAM,EAAE,6BAA6B,EACrC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQtC,UAAU,CACR,MAAM,EAAE,wBAAwB,EAChC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,EAAE,CAAC;IAI5B,aAAa,CACX,MAAM,GAAE,2BAAgC,EACxC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,IAAI,CAAC;YAIF,OAAO;CAiFtB"}
@@ -1,183 +0,0 @@
1
- export class TelegramApiError extends Error {
2
- kind;
3
- method;
4
- status;
5
- errorCode;
6
- telegramDescription;
7
- cause;
8
- constructor(message, details) {
9
- super(message);
10
- this.name = "TelegramApiError";
11
- this.kind = details.kind;
12
- this.method = details.method;
13
- if (details.status !== undefined) {
14
- this.status = details.status;
15
- }
16
- if (details.errorCode !== undefined) {
17
- this.errorCode = details.errorCode;
18
- }
19
- if (details.telegramDescription !== undefined) {
20
- this.telegramDescription = details.telegramDescription;
21
- }
22
- if (details.cause !== undefined) {
23
- this.cause = details.cause;
24
- }
25
- }
26
- }
27
- const DEFAULT_API_BASE_URL = "https://api.telegram.org";
28
- const DEFAULT_REQUEST_TIMEOUT_MS = 45_000;
29
- export class TelegramBotApiClient {
30
- token;
31
- apiBaseUrl;
32
- fetchImpl;
33
- requestTimeoutMs;
34
- constructor(options) {
35
- const token = options.token.trim();
36
- if (token.length === 0) {
37
- throw new TypeError("Telegram bot token is required.");
38
- }
39
- const fetchImpl = options.fetchImpl ?? globalThis.fetch;
40
- if (typeof fetchImpl !== "function") {
41
- throw new TypeError("A fetch implementation is required to call the Telegram Bot API.");
42
- }
43
- this.token = token;
44
- this.apiBaseUrl = stripTrailingSlashes(options.apiBaseUrl ?? DEFAULT_API_BASE_URL);
45
- this.fetchImpl = fetchImpl;
46
- this.requestTimeoutMs =
47
- options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
48
- }
49
- sendMessage(params, options) {
50
- return this.request("sendMessage", params, options);
51
- }
52
- editMessageText(params, options) {
53
- return this.request("editMessageText", params, options);
54
- }
55
- getUpdates(params, options) {
56
- return this.request("getUpdates", params, options);
57
- }
58
- deleteWebhook(params = {}, options) {
59
- return this.request("deleteWebhook", params, options);
60
- }
61
- async request(method, params, options) {
62
- const url = `${this.apiBaseUrl}/bot${this.token}/${method}`;
63
- const { signal, cleanup } = createRequestSignal(options?.signal, this.requestTimeoutMs);
64
- let response;
65
- try {
66
- const init = {
67
- method: "POST",
68
- headers: {
69
- "content-type": "application/json",
70
- },
71
- body: JSON.stringify(params),
72
- };
73
- if (signal !== undefined) {
74
- init.signal = signal;
75
- }
76
- response = await this.fetchImpl(url, init);
77
- }
78
- catch (error) {
79
- cleanup();
80
- if (isAbortError(error) || options?.signal?.aborted === true) {
81
- throw new TelegramApiError(`Telegram API ${method} request was aborted.`, { kind: "aborted", method });
82
- }
83
- throw new TelegramApiError(`Network failure while calling Telegram API ${method}.`, { kind: "network", method });
84
- }
85
- cleanup();
86
- if (!response.ok) {
87
- await safelyDrainResponse(response);
88
- throw new TelegramApiError(`Telegram API ${method} failed with HTTP ${response.status}.`, { kind: "http", method, status: response.status });
89
- }
90
- let payload;
91
- try {
92
- payload = await response.json();
93
- }
94
- catch {
95
- throw new TelegramApiError(`Telegram API ${method} returned malformed JSON.`, { kind: "malformed", method });
96
- }
97
- const envelope = parseTelegramEnvelope(method, payload);
98
- if (!envelope.ok) {
99
- const details = {
100
- kind: "telegram",
101
- method,
102
- };
103
- if (envelope.error_code !== undefined) {
104
- details.errorCode = envelope.error_code;
105
- }
106
- if (envelope.description !== undefined) {
107
- details.telegramDescription = envelope.description;
108
- }
109
- throw new TelegramApiError(`Telegram API ${method} rejected the request.`, details);
110
- }
111
- return envelope.result;
112
- }
113
- }
114
- function parseTelegramEnvelope(method, payload) {
115
- if (!isRecord(payload) || typeof payload.ok !== "boolean") {
116
- throw new TelegramApiError(`Telegram API ${method} returned an unexpected response shape.`, { kind: "malformed", method });
117
- }
118
- if (payload.ok === false) {
119
- const errorEnvelope = { ok: false };
120
- if (typeof payload.error_code === "number") {
121
- errorEnvelope.error_code = payload.error_code;
122
- }
123
- if (typeof payload.description === "string") {
124
- errorEnvelope.description = payload.description;
125
- }
126
- return errorEnvelope;
127
- }
128
- if (!("result" in payload)) {
129
- throw new TelegramApiError(`Telegram API ${method} returned success without a result.`, { kind: "malformed", method });
130
- }
131
- return { ok: true, result: payload.result };
132
- }
133
- function createRequestSignal(externalSignal, timeoutMs) {
134
- const shouldUseTimeout = Number.isFinite(timeoutMs) && timeoutMs > 0;
135
- if (!shouldUseTimeout) {
136
- if (externalSignal === undefined) {
137
- return { cleanup: () => undefined };
138
- }
139
- return { signal: externalSignal, cleanup: () => undefined };
140
- }
141
- const controller = new AbortController();
142
- const timeout = setTimeout(() => {
143
- controller.abort(new Error("Telegram API request timed out."));
144
- }, timeoutMs);
145
- const abortFromExternalSignal = () => {
146
- controller.abort(externalSignal?.reason);
147
- };
148
- if (externalSignal !== undefined) {
149
- if (externalSignal.aborted) {
150
- abortFromExternalSignal();
151
- }
152
- else {
153
- externalSignal.addEventListener("abort", abortFromExternalSignal, {
154
- once: true,
155
- });
156
- }
157
- }
158
- return {
159
- signal: controller.signal,
160
- cleanup: () => {
161
- clearTimeout(timeout);
162
- externalSignal?.removeEventListener("abort", abortFromExternalSignal);
163
- },
164
- };
165
- }
166
- function stripTrailingSlashes(value) {
167
- return value.replace(/\/+$/u, "");
168
- }
169
- function isRecord(value) {
170
- return typeof value === "object" && value !== null;
171
- }
172
- function isAbortError(value) {
173
- return (value instanceof DOMException && value.name === "AbortError") || (value instanceof Error && value.name === "AbortError");
174
- }
175
- async function safelyDrainResponse(response) {
176
- try {
177
- await response.text();
178
- }
179
- catch {
180
- // Best effort only. Error messages intentionally avoid raw response bodies.
181
- }
182
- }
183
- //# sourceMappingURL=telegram-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telegram-client.js","sourceRoot":"","sources":["../src/telegram-client.ts"],"names":[],"mappings":"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"}