@prestyj/cli 4.6.4 → 4.10.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 (316) hide show
  1. package/dist/cli/auth.d.ts.map +1 -1
  2. package/dist/cli/auth.js +11 -10
  3. package/dist/cli/auth.js.map +1 -1
  4. package/dist/cli/mcp.js +1 -1
  5. package/dist/cli/shared.d.ts +12 -0
  6. package/dist/cli/shared.d.ts.map +1 -1
  7. package/dist/cli/shared.js +31 -6
  8. package/dist/cli/shared.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +63 -62
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config.d.ts +7 -14
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +13 -17
  15. package/dist/config.js.map +1 -1
  16. package/dist/core/agent-session-compaction.test.js +1 -1
  17. package/dist/core/agent-session-compaction.test.js.map +1 -1
  18. package/dist/core/agent-session.d.ts +1 -0
  19. package/dist/core/agent-session.d.ts.map +1 -1
  20. package/dist/core/agent-session.js +6 -2
  21. package/dist/core/agent-session.js.map +1 -1
  22. package/dist/core/auth-storage.d.ts +1 -58
  23. package/dist/core/auth-storage.d.ts.map +1 -1
  24. package/dist/core/auth-storage.js +3 -254
  25. package/dist/core/auth-storage.js.map +1 -1
  26. package/dist/core/auto-update.d.ts +4 -26
  27. package/dist/core/auto-update.d.ts.map +1 -1
  28. package/dist/core/auto-update.js +12 -237
  29. package/dist/core/auto-update.js.map +1 -1
  30. package/dist/core/claude-code-version.d.ts +1 -9
  31. package/dist/core/claude-code-version.d.ts.map +1 -1
  32. package/dist/core/claude-code-version.js +2 -105
  33. package/dist/core/claude-code-version.js.map +1 -1
  34. package/dist/core/compaction/compactor.test.js +2 -2
  35. package/dist/core/compaction/compactor.test.js.map +1 -1
  36. package/dist/core/file-lock.d.ts +1 -5
  37. package/dist/core/file-lock.d.ts.map +1 -1
  38. package/dist/core/file-lock.js +2 -75
  39. package/dist/core/file-lock.js.map +1 -1
  40. package/dist/core/logger.d.ts +4 -17
  41. package/dist/core/logger.d.ts.map +1 -1
  42. package/dist/core/logger.js +21 -110
  43. package/dist/core/logger.js.map +1 -1
  44. package/dist/core/lsp/client.d.ts +63 -0
  45. package/dist/core/lsp/client.d.ts.map +1 -0
  46. package/dist/core/lsp/client.js +215 -0
  47. package/dist/core/lsp/client.js.map +1 -0
  48. package/dist/core/lsp/format.d.ts +12 -0
  49. package/dist/core/lsp/format.d.ts.map +1 -0
  50. package/dist/core/lsp/format.js +30 -0
  51. package/dist/core/lsp/format.js.map +1 -0
  52. package/dist/core/lsp/format.test.d.ts +2 -0
  53. package/dist/core/lsp/format.test.d.ts.map +1 -0
  54. package/dist/core/lsp/format.test.js +56 -0
  55. package/dist/core/lsp/format.test.js.map +1 -0
  56. package/dist/core/lsp/integration.test.d.ts +2 -0
  57. package/dist/core/lsp/integration.test.d.ts.map +1 -0
  58. package/dist/core/lsp/integration.test.js +60 -0
  59. package/dist/core/lsp/integration.test.js.map +1 -0
  60. package/dist/core/lsp/jsonrpc.d.ts +32 -0
  61. package/dist/core/lsp/jsonrpc.d.ts.map +1 -0
  62. package/dist/core/lsp/jsonrpc.js +141 -0
  63. package/dist/core/lsp/jsonrpc.js.map +1 -0
  64. package/dist/core/lsp/jsonrpc.test.d.ts +2 -0
  65. package/dist/core/lsp/jsonrpc.test.d.ts.map +1 -0
  66. package/dist/core/lsp/jsonrpc.test.js +127 -0
  67. package/dist/core/lsp/jsonrpc.test.js.map +1 -0
  68. package/dist/core/lsp/manager.d.ts +40 -0
  69. package/dist/core/lsp/manager.d.ts.map +1 -0
  70. package/dist/core/lsp/manager.js +135 -0
  71. package/dist/core/lsp/manager.js.map +1 -0
  72. package/dist/core/lsp/manager.test.d.ts +2 -0
  73. package/dist/core/lsp/manager.test.d.ts.map +1 -0
  74. package/dist/core/lsp/manager.test.js +119 -0
  75. package/dist/core/lsp/manager.test.js.map +1 -0
  76. package/dist/core/lsp/servers.d.ts +45 -0
  77. package/dist/core/lsp/servers.d.ts.map +1 -0
  78. package/dist/core/lsp/servers.js +247 -0
  79. package/dist/core/lsp/servers.js.map +1 -0
  80. package/dist/core/mcp/defaults.d.ts +1 -1
  81. package/dist/core/mcp/defaults.js +1 -1
  82. package/dist/core/mcp/store.d.ts +1 -1
  83. package/dist/core/mcp/store.test.js +1 -1
  84. package/dist/core/mcp/store.test.js.map +1 -1
  85. package/dist/core/model-registry.d.ts +1 -75
  86. package/dist/core/model-registry.d.ts.map +1 -1
  87. package/dist/core/model-registry.js +4 -344
  88. package/dist/core/model-registry.js.map +1 -1
  89. package/dist/core/oauth/anthropic.d.ts +1 -3
  90. package/dist/core/oauth/anthropic.d.ts.map +1 -1
  91. package/dist/core/oauth/anthropic.js +2 -96
  92. package/dist/core/oauth/anthropic.js.map +1 -1
  93. package/dist/core/oauth/gemini.d.ts +1 -3
  94. package/dist/core/oauth/gemini.d.ts.map +1 -1
  95. package/dist/core/oauth/gemini.js +2 -385
  96. package/dist/core/oauth/gemini.js.map +1 -1
  97. package/dist/core/oauth/kimi.d.ts +1 -45
  98. package/dist/core/oauth/kimi.d.ts.map +1 -1
  99. package/dist/core/oauth/kimi.js +2 -277
  100. package/dist/core/oauth/kimi.js.map +1 -1
  101. package/dist/core/oauth/openai.d.ts +1 -3
  102. package/dist/core/oauth/openai.d.ts.map +1 -1
  103. package/dist/core/oauth/openai.js +2 -187
  104. package/dist/core/oauth/openai.js.map +1 -1
  105. package/dist/core/oauth/pkce.d.ts +1 -4
  106. package/dist/core/oauth/pkce.d.ts.map +1 -1
  107. package/dist/core/oauth/pkce.js +2 -16
  108. package/dist/core/oauth/pkce.js.map +1 -1
  109. package/dist/core/oauth/types.d.ts +1 -13
  110. package/dist/core/oauth/types.d.ts.map +1 -1
  111. package/dist/core/process-manager.d.ts +10 -0
  112. package/dist/core/process-manager.d.ts.map +1 -1
  113. package/dist/core/process-manager.js +45 -1
  114. package/dist/core/process-manager.js.map +1 -1
  115. package/dist/core/prompt-commands.d.ts.map +1 -1
  116. package/dist/core/prompt-commands.js +20 -7
  117. package/dist/core/prompt-commands.js.map +1 -1
  118. package/dist/core/session-manager.d.ts +26 -0
  119. package/dist/core/session-manager.d.ts.map +1 -1
  120. package/dist/core/session-manager.js +99 -2
  121. package/dist/core/session-manager.js.map +1 -1
  122. package/dist/core/session-manager.test.d.ts +2 -0
  123. package/dist/core/session-manager.test.d.ts.map +1 -0
  124. package/dist/core/session-manager.test.js +113 -0
  125. package/dist/core/session-manager.test.js.map +1 -0
  126. package/dist/core/settings-manager.d.ts +2 -0
  127. package/dist/core/settings-manager.d.ts.map +1 -1
  128. package/dist/core/settings-manager.js +6 -0
  129. package/dist/core/settings-manager.js.map +1 -1
  130. package/dist/core/telegram.d.ts +1 -112
  131. package/dist/core/telegram.d.ts.map +1 -1
  132. package/dist/core/telegram.js +2 -251
  133. package/dist/core/telegram.js.map +1 -1
  134. package/dist/core/thinking-level.d.ts +1 -4
  135. package/dist/core/thinking-level.d.ts.map +1 -1
  136. package/dist/core/thinking-level.js +3 -58
  137. package/dist/core/thinking-level.js.map +1 -1
  138. package/dist/core/voice-transcriber.d.ts +1 -32
  139. package/dist/core/voice-transcriber.d.ts.map +1 -1
  140. package/dist/core/voice-transcriber.js +3 -112
  141. package/dist/core/voice-transcriber.js.map +1 -1
  142. package/dist/interactive.d.ts.map +1 -1
  143. package/dist/interactive.js +5 -2
  144. package/dist/interactive.js.map +1 -1
  145. package/dist/modes/agent-home-mode.d.ts.map +1 -1
  146. package/dist/modes/agent-home-mode.js +10 -38
  147. package/dist/modes/agent-home-mode.js.map +1 -1
  148. package/dist/modes/serve-mode.d.ts.map +1 -1
  149. package/dist/modes/serve-mode.js +11 -39
  150. package/dist/modes/serve-mode.js.map +1 -1
  151. package/dist/session.d.ts.map +1 -1
  152. package/dist/session.js +13 -6
  153. package/dist/session.js.map +1 -1
  154. package/dist/tools/bash.d.ts.map +1 -1
  155. package/dist/tools/bash.js +6 -3
  156. package/dist/tools/bash.js.map +1 -1
  157. package/dist/tools/edit.d.ts +3 -1
  158. package/dist/tools/edit.d.ts.map +1 -1
  159. package/dist/tools/edit.js +15 -3
  160. package/dist/tools/edit.js.map +1 -1
  161. package/dist/tools/edit.test.js +70 -0
  162. package/dist/tools/edit.test.js.map +1 -1
  163. package/dist/tools/goals.d.ts +1 -1
  164. package/dist/tools/index.d.ts +15 -0
  165. package/dist/tools/index.d.ts.map +1 -1
  166. package/dist/tools/index.js +16 -3
  167. package/dist/tools/index.js.map +1 -1
  168. package/dist/tools/task-send.d.ts +12 -0
  169. package/dist/tools/task-send.d.ts.map +1 -0
  170. package/dist/tools/task-send.js +34 -0
  171. package/dist/tools/task-send.js.map +1 -0
  172. package/dist/tools/task-send.test.d.ts +2 -0
  173. package/dist/tools/task-send.test.d.ts.map +1 -0
  174. package/dist/tools/task-send.test.js +95 -0
  175. package/dist/tools/task-send.test.js.map +1 -0
  176. package/dist/tools/write.d.ts +3 -1
  177. package/dist/tools/write.d.ts.map +1 -1
  178. package/dist/tools/write.js +13 -2
  179. package/dist/tools/write.js.map +1 -1
  180. package/dist/tools/write.test.js +33 -0
  181. package/dist/tools/write.test.js.map +1 -1
  182. package/dist/types.d.ts +2 -0
  183. package/dist/types.d.ts.map +1 -1
  184. package/dist/ui/App.d.ts +16 -0
  185. package/dist/ui/App.d.ts.map +1 -1
  186. package/dist/ui/App.js +126 -12
  187. package/dist/ui/App.js.map +1 -1
  188. package/dist/ui/anchor-pad-reclaim.test.d.ts +2 -0
  189. package/dist/ui/anchor-pad-reclaim.test.d.ts.map +1 -0
  190. package/dist/ui/anchor-pad-reclaim.test.js +146 -0
  191. package/dist/ui/anchor-pad-reclaim.test.js.map +1 -0
  192. package/dist/ui/app-items.d.ts +14 -0
  193. package/dist/ui/app-items.d.ts.map +1 -1
  194. package/dist/ui/app-items.js +13 -0
  195. package/dist/ui/app-items.js.map +1 -1
  196. package/dist/ui/app-items.test.js +17 -1
  197. package/dist/ui/app-items.test.js.map +1 -1
  198. package/dist/ui/atomic-flush-regression.test.d.ts +2 -0
  199. package/dist/ui/atomic-flush-regression.test.d.ts.map +1 -0
  200. package/dist/ui/atomic-flush-regression.test.js +218 -0
  201. package/dist/ui/atomic-flush-regression.test.js.map +1 -0
  202. package/dist/ui/components/AssistantMessage.test.js +32 -1
  203. package/dist/ui/components/AssistantMessage.test.js.map +1 -1
  204. package/dist/ui/components/Footer.d.ts.map +1 -1
  205. package/dist/ui/components/Footer.js +1 -0
  206. package/dist/ui/components/Footer.js.map +1 -1
  207. package/dist/ui/components/InputArea.test.js +11 -5
  208. package/dist/ui/components/InputArea.test.js.map +1 -1
  209. package/dist/ui/components/Markdown.d.ts.map +1 -1
  210. package/dist/ui/components/Markdown.js +9 -1
  211. package/dist/ui/components/Markdown.js.map +1 -1
  212. package/dist/ui/footer-jump-regression.test.js +56 -9
  213. package/dist/ui/footer-jump-regression.test.js.map +1 -1
  214. package/dist/ui/frame-clip-regression.test.d.ts +2 -0
  215. package/dist/ui/frame-clip-regression.test.d.ts.map +1 -0
  216. package/dist/ui/frame-clip-regression.test.js +215 -0
  217. package/dist/ui/frame-clip-regression.test.js.map +1 -0
  218. package/dist/ui/hooks/useTranscriptHistory.d.ts +9 -1
  219. package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
  220. package/dist/ui/hooks/useTranscriptHistory.js +51 -19
  221. package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
  222. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts +2 -0
  223. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts.map +1 -0
  224. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js +81 -0
  225. package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js.map +1 -0
  226. package/dist/ui/live-area-clamp.test.js +37 -0
  227. package/dist/ui/live-area-clamp.test.js.map +1 -1
  228. package/dist/ui/live-area-height.d.ts.map +1 -1
  229. package/dist/ui/live-area-height.js +13 -6
  230. package/dist/ui/live-area-height.js.map +1 -1
  231. package/dist/ui/live-area-height.test.js +9 -0
  232. package/dist/ui/live-area-height.test.js.map +1 -1
  233. package/dist/ui/live-item-flush.d.ts +28 -0
  234. package/dist/ui/live-item-flush.d.ts.map +1 -1
  235. package/dist/ui/live-item-flush.js +44 -0
  236. package/dist/ui/live-item-flush.js.map +1 -1
  237. package/dist/ui/live-item-flush.test.js +83 -1
  238. package/dist/ui/live-item-flush.test.js.map +1 -1
  239. package/dist/ui/login.d.ts.map +1 -1
  240. package/dist/ui/login.js +12 -30
  241. package/dist/ui/login.js.map +1 -1
  242. package/dist/ui/mcp.d.ts +1 -2
  243. package/dist/ui/mcp.d.ts.map +1 -1
  244. package/dist/ui/mcp.js +8 -43
  245. package/dist/ui/mcp.js.map +1 -1
  246. package/dist/ui/pixel.d.ts.map +1 -1
  247. package/dist/ui/pixel.js +10 -38
  248. package/dist/ui/pixel.js.map +1 -1
  249. package/dist/ui/queued-message.test.js +7 -1
  250. package/dist/ui/queued-message.test.js.map +1 -1
  251. package/dist/ui/render.d.ts.map +1 -1
  252. package/dist/ui/render.js +154 -5
  253. package/dist/ui/render.js.map +1 -1
  254. package/dist/ui/sessions.d.ts.map +1 -1
  255. package/dist/ui/sessions.js +10 -42
  256. package/dist/ui/sessions.js.map +1 -1
  257. package/dist/ui/startup-banner-order.test.d.ts +2 -0
  258. package/dist/ui/startup-banner-order.test.d.ts.map +1 -0
  259. package/dist/ui/startup-banner-order.test.js +105 -0
  260. package/dist/ui/startup-banner-order.test.js.map +1 -0
  261. package/dist/ui/streaming-flush-bounce.test.js +41 -20
  262. package/dist/ui/streaming-flush-bounce.test.js.map +1 -1
  263. package/dist/ui/submit-boundary-gap.test.d.ts +2 -0
  264. package/dist/ui/submit-boundary-gap.test.d.ts.map +1 -0
  265. package/dist/ui/submit-boundary-gap.test.js +180 -0
  266. package/dist/ui/submit-boundary-gap.test.js.map +1 -0
  267. package/dist/ui/terminal-history.d.ts.map +1 -1
  268. package/dist/ui/terminal-history.js +28 -9
  269. package/dist/ui/terminal-history.js.map +1 -1
  270. package/dist/ui/terminal-history.test.js +10 -3
  271. package/dist/ui/terminal-history.test.js.map +1 -1
  272. package/dist/ui/testing/screen-recorder.d.ts.map +1 -1
  273. package/dist/ui/testing/screen-recorder.js +11 -1
  274. package/dist/ui/testing/screen-recorder.js.map +1 -1
  275. package/dist/ui/tui-history-parity.test.js +4 -1
  276. package/dist/ui/tui-history-parity.test.js.map +1 -1
  277. package/dist/ui/tui-simulation.test.js +7 -1
  278. package/dist/ui/tui-simulation.test.js.map +1 -1
  279. package/dist/ui/utils/assistant-stream-split.d.ts +7 -0
  280. package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -1
  281. package/dist/ui/utils/assistant-stream-split.js +22 -1
  282. package/dist/ui/utils/assistant-stream-split.js.map +1 -1
  283. package/dist/ui/utils/assistant-stream-split.test.js +14 -0
  284. package/dist/ui/utils/assistant-stream-split.test.js.map +1 -1
  285. package/dist/ui/utils/markdown-renderer.d.ts.map +1 -1
  286. package/dist/ui/utils/markdown-renderer.js +46 -3
  287. package/dist/ui/utils/markdown-renderer.js.map +1 -1
  288. package/dist/ui/utils/markdown-renderer.test.d.ts +2 -0
  289. package/dist/ui/utils/markdown-renderer.test.d.ts.map +1 -0
  290. package/dist/ui/utils/markdown-renderer.test.js +63 -0
  291. package/dist/ui/utils/markdown-renderer.test.js.map +1 -0
  292. package/dist/ui/utils/terminal-graphics.d.ts +28 -1
  293. package/dist/ui/utils/terminal-graphics.d.ts.map +1 -1
  294. package/dist/ui/utils/terminal-graphics.js +44 -3
  295. package/dist/ui/utils/terminal-graphics.js.map +1 -1
  296. package/dist/ui/utils/terminal-graphics.test.js +40 -1
  297. package/dist/ui/utils/terminal-graphics.test.js.map +1 -1
  298. package/dist/utils/session-title.js +1 -1
  299. package/dist/utils/session-title.js.map +1 -1
  300. package/package.json +7 -6
  301. package/dist/core/model-registry.test.d.ts +0 -2
  302. package/dist/core/model-registry.test.d.ts.map +0 -1
  303. package/dist/core/model-registry.test.js +0 -95
  304. package/dist/core/model-registry.test.js.map +0 -1
  305. package/dist/core/oauth/gemini.test.d.ts +0 -2
  306. package/dist/core/oauth/gemini.test.d.ts.map +0 -1
  307. package/dist/core/oauth/gemini.test.js +0 -154
  308. package/dist/core/oauth/gemini.test.js.map +0 -1
  309. package/dist/core/thinking-level.test.d.ts +0 -2
  310. package/dist/core/thinking-level.test.d.ts.map +0 -1
  311. package/dist/core/thinking-level.test.js +0 -51
  312. package/dist/core/thinking-level.test.js.map +0 -1
  313. package/dist/core/voice-transcriber.test.d.ts +0 -2
  314. package/dist/core/voice-transcriber.test.d.ts.map +0 -1
  315. package/dist/core/voice-transcriber.test.js +0 -88
  316. package/dist/core/voice-transcriber.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"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"}
@@ -1,113 +1,2 @@
1
- /**
2
- * Minimal Telegram Bot API client using raw fetch().
3
- * Supports long polling, markdown messages, inline keyboards, and message splitting.
4
- */
5
- export interface TelegramConfig {
6
- botToken: string;
7
- /** Only accept messages from this Telegram user ID. */
8
- allowedUserId: number;
9
- }
10
- export interface TelegramUpdate {
11
- update_id: number;
12
- message?: {
13
- message_id: number;
14
- from: {
15
- id: number;
16
- first_name: string;
17
- };
18
- chat: {
19
- id: number;
20
- type: string;
21
- title?: string;
22
- };
23
- text?: string;
24
- voice?: {
25
- file_id: string;
26
- duration: number;
27
- mime_type?: string;
28
- file_size?: number;
29
- };
30
- };
31
- callback_query?: {
32
- id: string;
33
- from: {
34
- id: number;
35
- };
36
- message: {
37
- chat: {
38
- id: number;
39
- };
40
- };
41
- data: string;
42
- };
43
- my_chat_member?: {
44
- chat: {
45
- id: number;
46
- type: string;
47
- title?: string;
48
- };
49
- from: {
50
- id: number;
51
- };
52
- new_chat_member: {
53
- status: string;
54
- };
55
- };
56
- }
57
- export interface InlineButton {
58
- text: string;
59
- callback_data: string;
60
- }
61
- /** Incoming message with chat context. */
62
- export interface TelegramMessage {
63
- text: string;
64
- chatId: number;
65
- chatType: "private" | "group" | "supergroup" | "channel";
66
- chatTitle?: string;
67
- }
68
- /** Incoming voice note with chat context. */
69
- export interface TelegramVoiceMessage {
70
- fileId: string;
71
- duration: number;
72
- chatId: number;
73
- chatType: "private" | "group" | "supergroup" | "channel";
74
- chatTitle?: string;
75
- }
76
- export declare class TelegramBot {
77
- private token;
78
- private allowedUserId;
79
- private offset;
80
- private running;
81
- private onMessage;
82
- private onVoiceMessage;
83
- private onCallback;
84
- private onBotAdded;
85
- private onBotRemoved;
86
- constructor(config: TelegramConfig);
87
- /** Register handler for incoming text messages. */
88
- onText(handler: (msg: TelegramMessage) => void): void;
89
- /** Register handler for incoming voice notes. */
90
- onVoice(handler: (msg: TelegramVoiceMessage) => void): void;
91
- /** Register handler for inline keyboard button presses. */
92
- onCallbackQuery(handler: (data: string, chatId: number) => void): void;
93
- /** Register handler for when the bot is added to a group. */
94
- onAddedToGroup(handler: (chatId: number, chatTitle?: string) => void): void;
95
- /** Register handler for when the bot is removed from a group. */
96
- onRemovedFromGroup(handler: (chatId: number) => void): void;
97
- /** Start long polling. Blocks until stop() is called. */
98
- start(): Promise<void>;
99
- /** Stop long polling. */
100
- stop(): void;
101
- /** Send a text message to a specific chat. Converts markdown and splits long messages. */
102
- send(chatId: number, text: string, buttons?: InlineButton[][]): Promise<void>;
103
- /** Send a plain text message (no markdown parsing) to a specific chat. */
104
- sendPlain(chatId: number, text: string): Promise<void>;
105
- /** Send a typing indicator to a specific chat. */
106
- sendTyping(chatId: number): Promise<void>;
107
- /** Get a direct download URL for a Telegram file. */
108
- getFileUrl(fileId: string): Promise<string>;
109
- private getUpdates;
110
- private handleUpdate;
111
- private apiCall;
112
- }
1
+ export { TelegramBot, type TelegramConfig, type TelegramUpdate, type InlineButton, type TelegramMessage, type TelegramVoiceMessage, } from "@prestyj/core";
113
2
  //# sourceMappingURL=telegram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/core/telegram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/core/telegram.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC"}
@@ -1,252 +1,3 @@
1
- /**
2
- * Minimal Telegram Bot API client using raw fetch().
3
- * Supports long polling, markdown messages, inline keyboards, and message splitting.
4
- */
5
- const TELEGRAM_API = "https://api.telegram.org";
6
- const MAX_MESSAGE_LENGTH = 4096;
7
- export class TelegramBot {
8
- token;
9
- allowedUserId;
10
- offset = 0;
11
- running = false;
12
- onMessage = null;
13
- onVoiceMessage = null;
14
- onCallback = null;
15
- onBotAdded = null;
16
- onBotRemoved = null;
17
- constructor(config) {
18
- this.token = config.botToken;
19
- this.allowedUserId = config.allowedUserId;
20
- }
21
- /** Register handler for incoming text messages. */
22
- onText(handler) {
23
- this.onMessage = handler;
24
- }
25
- /** Register handler for incoming voice notes. */
26
- onVoice(handler) {
27
- this.onVoiceMessage = handler;
28
- }
29
- /** Register handler for inline keyboard button presses. */
30
- onCallbackQuery(handler) {
31
- this.onCallback = handler;
32
- }
33
- /** Register handler for when the bot is added to a group. */
34
- onAddedToGroup(handler) {
35
- this.onBotAdded = handler;
36
- }
37
- /** Register handler for when the bot is removed from a group. */
38
- onRemovedFromGroup(handler) {
39
- this.onBotRemoved = handler;
40
- }
41
- /** Start long polling. Blocks until stop() is called. */
42
- async start() {
43
- this.running = true;
44
- // Verify bot token works
45
- const me = await this.apiCall("getMe");
46
- if (!me.ok) {
47
- throw new Error(`Invalid bot token: ${JSON.stringify(me)}`);
48
- }
49
- while (this.running) {
50
- try {
51
- const updates = await this.getUpdates();
52
- for (const update of updates) {
53
- await this.handleUpdate(update);
54
- }
55
- }
56
- catch (err) {
57
- if (!this.running)
58
- break;
59
- console.error(`[telegram] Poll error: ${err instanceof Error ? err.message : err}`);
60
- await sleep(3000);
61
- }
62
- }
63
- }
64
- /** Stop long polling. */
65
- stop() {
66
- this.running = false;
67
- }
68
- /** Send a text message to a specific chat. Converts markdown and splits long messages. */
69
- async send(chatId, text, buttons) {
70
- const converted = toTelegramMarkdown(text);
71
- const chunks = splitMessage(converted);
72
- for (let i = 0; i < chunks.length; i++) {
73
- const isLast = i === chunks.length - 1;
74
- const replyMarkup = isLast && buttons
75
- ? {
76
- inline_keyboard: buttons.map((row) => row.map((b) => ({ text: b.text, callback_data: b.callback_data }))),
77
- }
78
- : undefined;
79
- await this.apiCall("sendMessage", {
80
- chat_id: chatId,
81
- text: chunks[i],
82
- parse_mode: "Markdown",
83
- ...(replyMarkup ? { reply_markup: replyMarkup } : {}),
84
- });
85
- }
86
- }
87
- /** Send a plain text message (no markdown parsing) to a specific chat. */
88
- async sendPlain(chatId, text) {
89
- const chunks = splitMessage(text);
90
- for (const chunk of chunks) {
91
- await this.apiCall("sendMessage", {
92
- chat_id: chatId,
93
- text: chunk,
94
- });
95
- }
96
- }
97
- /** Send a typing indicator to a specific chat. */
98
- async sendTyping(chatId) {
99
- await this.apiCall("sendChatAction", {
100
- chat_id: chatId,
101
- action: "typing",
102
- });
103
- }
104
- /** Get a direct download URL for a Telegram file. */
105
- async getFileUrl(fileId) {
106
- const result = await this.apiCall("getFile", { file_id: fileId });
107
- if (!result.ok)
108
- throw new Error(`Failed to get file: ${JSON.stringify(result)}`);
109
- const filePath = result.result.file_path;
110
- return `${TELEGRAM_API}/file/bot${this.token}/${filePath}`;
111
- }
112
- // ── Private ───────────────────────────────────────────
113
- async getUpdates() {
114
- const result = await this.apiCall("getUpdates", {
115
- offset: this.offset,
116
- timeout: 30,
117
- allowed_updates: ["message", "callback_query", "my_chat_member"],
118
- });
119
- if (!result.ok || !Array.isArray(result.result))
120
- return [];
121
- const updates = result.result;
122
- if (updates.length > 0) {
123
- this.offset = updates[updates.length - 1].update_id + 1;
124
- }
125
- return updates;
126
- }
127
- async handleUpdate(update) {
128
- if (update.message) {
129
- const msg = update.message;
130
- // Auth check
131
- if (msg.from.id !== this.allowedUserId) {
132
- return;
133
- }
134
- if (msg.text && this.onMessage) {
135
- this.onMessage({
136
- text: msg.text,
137
- chatId: msg.chat.id,
138
- chatType: msg.chat.type,
139
- chatTitle: msg.chat.title,
140
- });
141
- }
142
- else if (msg.voice && this.onVoiceMessage) {
143
- this.onVoiceMessage({
144
- fileId: msg.voice.file_id,
145
- duration: msg.voice.duration,
146
- chatId: msg.chat.id,
147
- chatType: msg.chat.type,
148
- chatTitle: msg.chat.title,
149
- });
150
- }
151
- }
152
- // Bot membership changed in a group
153
- if (update.my_chat_member) {
154
- const member = update.my_chat_member;
155
- const status = member.new_chat_member.status;
156
- if ((status === "member" || status === "administrator") && this.onBotAdded) {
157
- this.onBotAdded(member.chat.id, member.chat.title);
158
- }
159
- else if ((status === "left" || status === "kicked") && this.onBotRemoved) {
160
- this.onBotRemoved(member.chat.id);
161
- }
162
- }
163
- if (update.callback_query) {
164
- const cb = update.callback_query;
165
- if (cb.from.id !== this.allowedUserId)
166
- return;
167
- await this.apiCall("answerCallbackQuery", { callback_query_id: cb.id });
168
- if (cb.data && this.onCallback) {
169
- this.onCallback(cb.data, cb.message.chat.id);
170
- }
171
- }
172
- }
173
- async apiCall(method, body) {
174
- const url = `${TELEGRAM_API}/bot${this.token}/${method}`;
175
- const response = await fetch(url, {
176
- method: "POST",
177
- headers: { "Content-Type": "application/json" },
178
- body: body ? JSON.stringify(body) : undefined,
179
- });
180
- if (!response.ok) {
181
- return { ok: false };
182
- }
183
- return response.json();
184
- }
185
- }
186
- // ── Markdown Conversion ──────────────────────────────────
187
- /**
188
- * Convert GitHub-flavored markdown to Telegram-compatible Markdown.
189
- *
190
- * Telegram supports: *bold*, _italic_, `code`, ```pre```, [link](url)
191
- * Does NOT support: headings, horizontal rules, tables, HTML tags, images
192
- */
193
- function toTelegramMarkdown(text) {
194
- const lines = text.split("\n");
195
- const result = [];
196
- let inCodeBlock = false;
197
- for (const line of lines) {
198
- if (line.trimStart().startsWith("```")) {
199
- inCodeBlock = !inCodeBlock;
200
- result.push(line);
201
- continue;
202
- }
203
- if (inCodeBlock) {
204
- result.push(line);
205
- continue;
206
- }
207
- let transformed = line;
208
- // Headings → bold text
209
- const headingMatch = transformed.match(/^(#{1,6})\s+(.+)$/);
210
- if (headingMatch) {
211
- transformed = `*${headingMatch[2]}*`;
212
- result.push(transformed);
213
- continue;
214
- }
215
- // Horizontal rules → empty line
216
- if (/^(-{3,}|_{3,}|\*{3,})$/.test(transformed.trim())) {
217
- result.push("");
218
- continue;
219
- }
220
- // **bold** → *bold*
221
- transformed = transformed.replace(/\*\*(.+?)\*\*/g, "*$1*");
222
- result.push(transformed);
223
- }
224
- return result.join("\n");
225
- }
226
- // ── Helpers ───────────────────────────────────────────────
227
- function splitMessage(text) {
228
- if (text.length <= MAX_MESSAGE_LENGTH)
229
- return [text];
230
- const chunks = [];
231
- let remaining = text;
232
- while (remaining.length > 0) {
233
- if (remaining.length <= MAX_MESSAGE_LENGTH) {
234
- chunks.push(remaining);
235
- break;
236
- }
237
- let splitAt = remaining.lastIndexOf("\n", MAX_MESSAGE_LENGTH);
238
- if (splitAt === -1 || splitAt < MAX_MESSAGE_LENGTH * 0.5) {
239
- splitAt = remaining.lastIndexOf(" ", MAX_MESSAGE_LENGTH);
240
- }
241
- if (splitAt === -1 || splitAt < MAX_MESSAGE_LENGTH * 0.5) {
242
- splitAt = MAX_MESSAGE_LENGTH;
243
- }
244
- chunks.push(remaining.slice(0, splitAt));
245
- remaining = remaining.slice(splitAt).trimStart();
246
- }
247
- return chunks;
248
- }
249
- function sleep(ms) {
250
- return new Promise((r) => setTimeout(r, ms));
251
- }
1
+ // Moved to @prestyj/core. Shim keeps `../core/telegram.js` imports working.
2
+ export { TelegramBot, } from "@prestyj/core";
252
3
  //# sourceMappingURL=telegram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/core/telegram.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAChD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAoDhC,MAAM,OAAO,WAAW;IACd,KAAK,CAAS;IACd,aAAa,CAAS;IACtB,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,KAAK,CAAC;IAEhB,SAAS,GAA4C,IAAI,CAAC;IAC1D,cAAc,GAAiD,IAAI,CAAC;IACpE,UAAU,GAAoD,IAAI,CAAC;IACnE,UAAU,GAA0D,IAAI,CAAC;IACzE,YAAY,GAAsC,IAAI,CAAC;IAE/D,YAAY,MAAsB;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC5C,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,OAAuC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,iDAAiD;IACjD,OAAO,CAAC,OAA4C;QAClD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,2DAA2D;IAC3D,eAAe,CAAC,OAA+C;QAC7D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,6DAA6D;IAC7D,cAAc,CAAC,OAAqD;QAClE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,iEAAiE;IACjE,kBAAkB,CAAC,OAAiC;QAClD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,yBAAyB;QACzB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,MAAM;gBACzB,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpF,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,OAA0B;QACjE,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACvC,MAAM,WAAW,GACf,MAAM,IAAI,OAAO;gBACf,CAAC,CAAC;oBACE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACnC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CACnE;iBACF;gBACH,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBACf,UAAU,EAAE,UAAU;gBACtB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAY;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YACnC,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAI,MAAM,CAAC,MAAgC,CAAC,SAAS,CAAC;QACpE,OAAO,GAAG,YAAY,YAAY,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,yDAAyD;IAEjD,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;SACjE,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,MAA0B,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAsB;QAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;YAE3B,aAAa;YACb,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBACnB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAmC;oBACtD,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;iBAC1B,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5C,IAAI,CAAC,cAAc,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;oBACzB,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;oBAC5B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBACnB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,IAAmC;oBACtD,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,eAAe,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;iBAAM,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3E,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;YAEjC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa;gBAAE,OAAO;YAE9C,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAExE,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAA8B;QAE9B,MAAM,GAAG,GAAG,GAAG,YAAY,OAAO,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;QAEzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgD,CAAC;IACvE,CAAC;CACF;AAED,4DAA4D;AAE5D;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,WAAW,GAAG,CAAC,WAAW,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,uBAAuB;QACvB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,gCAAgC;QAChC,IAAI,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,6DAA6D;AAE7D,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,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;QAED,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,kBAAkB,GAAG,GAAG,EAAE,CAAC;YACzD,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,kBAAkB,GAAG,GAAG,EAAE,CAAC;YACzD,OAAO,GAAG,kBAAkB,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/core/telegram.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EACL,WAAW,GAMZ,MAAM,eAAe,CAAC"}
@@ -1,5 +1,2 @@
1
- import type { Provider, ThinkingLevel } from "@prestyj/ai";
2
- export declare function getSupportedThinkingLevels(provider: Provider, model: string): readonly ThinkingLevel[];
3
- export declare function isThinkingLevelSupported(provider: Provider, model: string, level: ThinkingLevel): boolean;
4
- export declare function getNextThinkingLevel(provider: Provider, model: string, current: ThinkingLevel | undefined): ThinkingLevel | undefined;
1
+ export { getSupportedThinkingLevels, isThinkingLevelSupported, getNextThinkingLevel, } from "@prestyj/core";
5
2
  //# sourceMappingURL=thinking-level.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-level.d.ts","sourceRoot":"","sources":["../../src/core/thinking-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA8B3D,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,GACZ,SAAS,aAAa,EAAE,CAgB1B;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,GACnB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,aAAa,GAAG,SAAS,CAY3B"}
1
+ {"version":3,"file":"thinking-level.d.ts","sourceRoot":"","sources":["../../src/core/thinking-level.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -1,59 +1,4 @@
1
- import { getMaxThinkingLevel } from "./model-registry.js";
2
- const OPENAI_GPT_THINKING_LEVELS = ["medium", "high", "xhigh"];
3
- const ANTHROPIC_XHIGH_THINKING_LEVELS = [
4
- "low",
5
- "medium",
6
- "high",
7
- "xhigh",
8
- "max",
9
- ];
10
- const ANTHROPIC_ADAPTIVE_THINKING_LEVELS = [
11
- "low",
12
- "medium",
13
- "high",
14
- "max",
15
- ];
16
- function isOpenAIGptModel(provider, model) {
17
- return provider === "openai" && model.startsWith("gpt-");
18
- }
19
- function isAnthropicXhighModel(provider, model) {
20
- return provider === "anthropic" && /fable-5|opus-4-8|opus-4-7/.test(model);
21
- }
22
- function isAnthropicAdaptiveModel(provider, model) {
23
- return provider === "anthropic" && /fable-5|opus-4-8|opus-4-7|opus-4-6|sonnet-4-6/.test(model);
24
- }
25
- export function getSupportedThinkingLevels(provider, model) {
26
- const maxLevel = getMaxThinkingLevel(model);
27
- if (isAnthropicAdaptiveModel(provider, model)) {
28
- const levels = isAnthropicXhighModel(provider, model)
29
- ? ANTHROPIC_XHIGH_THINKING_LEVELS
30
- : ANTHROPIC_ADAPTIVE_THINKING_LEVELS;
31
- const maxIndex = levels.indexOf(maxLevel);
32
- if (maxIndex === -1)
33
- return ["low", "medium", "high"];
34
- return levels.slice(0, maxIndex + 1);
35
- }
36
- if (!isOpenAIGptModel(provider, model))
37
- return [maxLevel];
38
- const maxIndex = OPENAI_GPT_THINKING_LEVELS.indexOf(maxLevel);
39
- if (maxIndex === -1)
40
- return ["medium"];
41
- return OPENAI_GPT_THINKING_LEVELS.slice(0, maxIndex + 1);
42
- }
43
- export function isThinkingLevelSupported(provider, model, level) {
44
- return getSupportedThinkingLevels(provider, model).includes(level);
45
- }
46
- export function getNextThinkingLevel(provider, model, current) {
47
- const supportedLevels = getSupportedThinkingLevels(provider, model);
48
- const shouldCycleLevels = isOpenAIGptModel(provider, model) || isAnthropicAdaptiveModel(provider, model);
49
- if (!shouldCycleLevels) {
50
- return current ? undefined : supportedLevels[0];
51
- }
52
- if (!current)
53
- return supportedLevels[0];
54
- const index = supportedLevels.indexOf(current);
55
- if (index === -1)
56
- return supportedLevels[0];
57
- return supportedLevels[index + 1];
58
- }
1
+ // Moved to @prestyj/core. This shim re-exports it so existing relative
2
+ // imports (`./thinking-level.js`) keep resolving unchanged.
3
+ export { getSupportedThinkingLevels, isThinkingLevelSupported, getNextThinkingLevel, } from "@prestyj/core";
59
4
  //# sourceMappingURL=thinking-level.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-level.js","sourceRoot":"","sources":["../../src/core/thinking-level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thinking-level.js","sourceRoot":"","sources":["../../src/core/thinking-level.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4DAA4D;AAC5D,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -1,33 +1,2 @@
1
- /**
2
- * Voice note transcription using local Whisper model.
3
- * Uses @huggingface/transformers (pure JS/WASM) — no native deps, no API keys.
4
- * Model (~75MB) is downloaded on first use and cached locally.
5
- */
6
- /** Optional callback for model download progress. */
7
- export type ProgressCallback = (info: {
8
- status: string;
9
- progress?: number;
10
- file?: string;
11
- }) => void;
12
- /** Set a callback to receive model download progress updates. */
13
- export declare function setProgressCallback(cb: ProgressCallback | null): void;
14
- /**
15
- * Resample audio from one sample rate to another using linear interpolation.
16
- */
17
- export declare function resample(audio: Float32Array, fromRate: number, toRate: number): Float32Array;
18
- /**
19
- * Downmix multi-channel audio to mono by averaging all channels.
20
- */
21
- export declare function downmixToMono(channelData: Float32Array[]): Float32Array;
22
- /**
23
- * Decode OGG Opus audio buffer to 16kHz mono PCM Float32Array.
24
- */
25
- export declare function decodeOggOpus(buffer: Uint8Array): Promise<Float32Array>;
26
- /** Whether the model has been loaded already. */
27
- export declare function isModelLoaded(): boolean;
28
- /**
29
- * Transcribe a voice message from its Telegram file URL.
30
- * Downloads the OGG Opus file, decodes to PCM, and runs Whisper locally.
31
- */
32
- export declare function transcribeVoice(fileUrl: string): Promise<string>;
1
+ export { setProgressCallback, resample, downmixToMono, decodeOggOpus, isModelLoaded, transcribeVoice, type ProgressCallback, } from "@prestyj/core";
33
2
  //# sourceMappingURL=voice-transcriber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voice-transcriber.d.ts","sourceRoot":"","sources":["../../src/core/voice-transcriber.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,CAAC;AAIpG,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAa5F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,YAAY,CAavE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAgB7E;AAwBD,iDAAiD;AACjD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAetE"}
1
+ {"version":3,"file":"voice-transcriber.d.ts","sourceRoot":"","sources":["../../src/core/voice-transcriber.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
@@ -1,113 +1,4 @@
1
- /**
2
- * Voice note transcription using local Whisper model.
3
- * Uses @huggingface/transformers (pure JS/WASM) no native deps, no API keys.
4
- * Model (~75MB) is downloaded on first use and cached locally.
5
- */
6
- const TARGET_SAMPLE_RATE = 16000;
7
- const MODEL_ID = "Xenova/whisper-tiny.en";
8
- let transcriber = null;
9
- let loadPromise = null;
10
- let onProgress = null;
11
- /** Set a callback to receive model download progress updates. */
12
- export function setProgressCallback(cb) {
13
- onProgress = cb;
14
- }
15
- /**
16
- * Resample audio from one sample rate to another using linear interpolation.
17
- */
18
- export function resample(audio, fromRate, toRate) {
19
- if (fromRate === toRate)
20
- return audio;
21
- const ratio = fromRate / toRate;
22
- const newLength = Math.round(audio.length / ratio);
23
- const result = new Float32Array(newLength);
24
- for (let i = 0; i < newLength; i++) {
25
- const srcIndex = i * ratio;
26
- const low = Math.floor(srcIndex);
27
- const high = Math.min(low + 1, audio.length - 1);
28
- const frac = srcIndex - low;
29
- result[i] = audio[low] * (1 - frac) + audio[high] * frac;
30
- }
31
- return result;
32
- }
33
- /**
34
- * Downmix multi-channel audio to mono by averaging all channels.
35
- */
36
- export function downmixToMono(channelData) {
37
- if (channelData.length === 0)
38
- return new Float32Array();
39
- if (channelData.length === 1)
40
- return channelData[0];
41
- const samples = channelData[0].length;
42
- const out = new Float32Array(samples);
43
- const scale = 1 / channelData.length;
44
- for (let i = 0; i < samples; i++) {
45
- let mixed = 0;
46
- for (const channel of channelData)
47
- mixed += channel[i] ?? 0;
48
- out[i] = mixed * scale;
49
- }
50
- return out;
51
- }
52
- /**
53
- * Decode OGG Opus audio buffer to 16kHz mono PCM Float32Array.
54
- */
55
- export async function decodeOggOpus(buffer) {
56
- const { OggOpusDecoder } = await import("ogg-opus-decoder");
57
- const decoder = new OggOpusDecoder();
58
- await decoder.ready;
59
- try {
60
- const decoded = await decoder.decodeFile(buffer);
61
- if (!decoded.channelData?.length || !decoded.channelData[0]?.length) {
62
- throw new Error("Decoded audio is empty");
63
- }
64
- const mono = downmixToMono(decoded.channelData);
65
- return resample(mono, decoded.sampleRate, TARGET_SAMPLE_RATE);
66
- }
67
- finally {
68
- decoder.free();
69
- }
70
- }
71
- /**
72
- * Get or initialize the Whisper transcription pipeline.
73
- * Model is downloaded on first use and cached by transformers.js.
74
- */
75
- async function getTranscriber() {
76
- if (transcriber)
77
- return transcriber;
78
- if (!loadPromise) {
79
- loadPromise = (async () => {
80
- const { pipeline } = await import("@huggingface/transformers");
81
- const instance = await pipeline("automatic-speech-recognition", MODEL_ID, {
82
- dtype: "fp32",
83
- progress_callback: onProgress ?? undefined,
84
- });
85
- transcriber = instance;
86
- return instance;
87
- })();
88
- }
89
- return loadPromise;
90
- }
91
- /** Whether the model has been loaded already. */
92
- export function isModelLoaded() {
93
- return transcriber !== null;
94
- }
95
- /**
96
- * Transcribe a voice message from its Telegram file URL.
97
- * Downloads the OGG Opus file, decodes to PCM, and runs Whisper locally.
98
- */
99
- export async function transcribeVoice(fileUrl) {
100
- // Download the audio file
101
- const response = await fetch(fileUrl);
102
- if (!response.ok)
103
- throw new Error(`Failed to download voice file: ${response.status}`);
104
- const buffer = new Uint8Array(await response.arrayBuffer());
105
- // Decode OGG Opus → 16kHz mono PCM
106
- const pcm = await decodeOggOpus(buffer);
107
- // Transcribe with Whisper
108
- const asr = await getTranscriber();
109
- const result = await asr(pcm);
110
- const text = Array.isArray(result) ? result[0]?.text : result.text;
111
- return (text ?? "").trim();
112
- }
1
+ // Moved to @prestyj/core. Shim keeps `../core/voice-transcriber.js`
2
+ // imports working.
3
+ export { setProgressCallback, resample, downmixToMono, decodeOggOpus, isModelLoaded, transcribeVoice, } from "@prestyj/core";
113
4
  //# sourceMappingURL=voice-transcriber.js.map