@5ss/ai-tools 2.11.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 (342) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +21 -0
  3. package/README.md +221 -0
  4. package/dist/ai-sdk/index.d.ts +15 -0
  5. package/dist/ai-sdk/index.d.ts.map +1 -0
  6. package/dist/ai-sdk/index.js +24 -0
  7. package/dist/ai-sdk/index.js.map +1 -0
  8. package/dist/artifact-D064mHfK.js +44 -0
  9. package/dist/artifact-D064mHfK.js.map +1 -0
  10. package/dist/artifacts-O8g-40Pw.js +404 -0
  11. package/dist/artifacts-O8g-40Pw.js.map +1 -0
  12. package/dist/aws-json-CecFqzqX.js +23 -0
  13. package/dist/aws-json-CecFqzqX.js.map +1 -0
  14. package/dist/aws-service-msttbPrz.js +58 -0
  15. package/dist/aws-service-msttbPrz.js.map +1 -0
  16. package/dist/batch-BMM5dXqL.d.ts +22 -0
  17. package/dist/batch-BMM5dXqL.d.ts.map +1 -0
  18. package/dist/batch-Co1ujeAW.js +67 -0
  19. package/dist/batch-Co1ujeAW.js.map +1 -0
  20. package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
  21. package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
  22. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
  23. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
  24. package/dist/bytes-BxpimpQx.js +45 -0
  25. package/dist/bytes-BxpimpQx.js.map +1 -0
  26. package/dist/client-CCKGsTeI.js +743 -0
  27. package/dist/client-CCKGsTeI.js.map +1 -0
  28. package/dist/cloudflare/index.d.ts +37 -0
  29. package/dist/cloudflare/index.d.ts.map +1 -0
  30. package/dist/cloudflare/index.js +41 -0
  31. package/dist/cloudflare/index.js.map +1 -0
  32. package/dist/cloudflare-browser-B6Yolpin.js +428 -0
  33. package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
  34. package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
  35. package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
  36. package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
  37. package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
  38. package/dist/content-type-CORxaxcv.js +49 -0
  39. package/dist/content-type-CORxaxcv.js.map +1 -0
  40. package/dist/core/index.d.ts +4 -0
  41. package/dist/core/index.js +204 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/define-CvpJ_pNP.js +115 -0
  44. package/dist/define-CvpJ_pNP.js.map +1 -0
  45. package/dist/errors-DoSpNHvs.js +20 -0
  46. package/dist/errors-DoSpNHvs.js.map +1 -0
  47. package/dist/errors-aKhko9T1.d.ts +18 -0
  48. package/dist/errors-aKhko9T1.d.ts.map +1 -0
  49. package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
  50. package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
  51. package/dist/framework-context-DVIIY8ZO.js +24 -0
  52. package/dist/framework-context-DVIIY8ZO.js.map +1 -0
  53. package/dist/gotenberg-NuJjxyln.js +291 -0
  54. package/dist/gotenberg-NuJjxyln.js.map +1 -0
  55. package/dist/http/index.d.ts +47 -0
  56. package/dist/http/index.d.ts.map +1 -0
  57. package/dist/http/index.js +3 -0
  58. package/dist/http-service-DDNCO1s4.js +254 -0
  59. package/dist/http-service-DDNCO1s4.js.map +1 -0
  60. package/dist/http-service-T7E5UjP8.d.ts +80 -0
  61. package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
  62. package/dist/imessage-BSAFOI8Z.js +154 -0
  63. package/dist/imessage-BSAFOI8Z.js.map +1 -0
  64. package/dist/index-BU4gmYO8.d.ts +254 -0
  65. package/dist/index-BU4gmYO8.d.ts.map +1 -0
  66. package/dist/index-CCivzmxO.d.ts +188 -0
  67. package/dist/index-CCivzmxO.d.ts.map +1 -0
  68. package/dist/index-CLmTrcu5.d.ts +22 -0
  69. package/dist/index-CLmTrcu5.d.ts.map +1 -0
  70. package/dist/index-CZX5OeOF.d.ts +235 -0
  71. package/dist/index-CZX5OeOF.d.ts.map +1 -0
  72. package/dist/index-CdFmEfZO.d.ts +359 -0
  73. package/dist/index-CdFmEfZO.d.ts.map +1 -0
  74. package/dist/index-Cuh6eMWc.d.ts +285 -0
  75. package/dist/index-Cuh6eMWc.d.ts.map +1 -0
  76. package/dist/index-DuOGj7vc.d.ts +107 -0
  77. package/dist/index-DuOGj7vc.d.ts.map +1 -0
  78. package/dist/index-ccZ1XOHw.d.ts +69 -0
  79. package/dist/index-ccZ1XOHw.d.ts.map +1 -0
  80. package/dist/index-n8JTpNf1.d.ts +247 -0
  81. package/dist/index-n8JTpNf1.d.ts.map +1 -0
  82. package/dist/index-pwW1OsOx.d.ts +134 -0
  83. package/dist/index-pwW1OsOx.d.ts.map +1 -0
  84. package/dist/index-zK1ZwS4m.d.ts +347 -0
  85. package/dist/index-zK1ZwS4m.d.ts.map +1 -0
  86. package/dist/limits-hjrO8zUG.js +80 -0
  87. package/dist/limits-hjrO8zUG.js.map +1 -0
  88. package/dist/mastra/index.d.ts +14 -0
  89. package/dist/mastra/index.d.ts.map +1 -0
  90. package/dist/mastra/index.js +26 -0
  91. package/dist/mastra/index.js.map +1 -0
  92. package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
  93. package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
  94. package/dist/mcp/index.d.ts +80 -0
  95. package/dist/mcp/index.d.ts.map +1 -0
  96. package/dist/mcp/index.js +97 -0
  97. package/dist/mcp/index.js.map +1 -0
  98. package/dist/modules/artifacts/index.d.ts +337 -0
  99. package/dist/modules/artifacts/index.d.ts.map +1 -0
  100. package/dist/modules/artifacts/index.js +348 -0
  101. package/dist/modules/artifacts/index.js.map +1 -0
  102. package/dist/modules/browser/index.d.ts +516 -0
  103. package/dist/modules/browser/index.d.ts.map +1 -0
  104. package/dist/modules/browser/index.js +475 -0
  105. package/dist/modules/browser/index.js.map +1 -0
  106. package/dist/modules/calendar/index.d.ts +93 -0
  107. package/dist/modules/calendar/index.d.ts.map +1 -0
  108. package/dist/modules/calendar/index.js +131 -0
  109. package/dist/modules/calendar/index.js.map +1 -0
  110. package/dist/modules/code-sandbox/index.d.ts +317 -0
  111. package/dist/modules/code-sandbox/index.d.ts.map +1 -0
  112. package/dist/modules/code-sandbox/index.js +537 -0
  113. package/dist/modules/code-sandbox/index.js.map +1 -0
  114. package/dist/modules/content-type/index.d.ts +22 -0
  115. package/dist/modules/content-type/index.d.ts.map +1 -0
  116. package/dist/modules/content-type/index.js +66 -0
  117. package/dist/modules/content-type/index.js.map +1 -0
  118. package/dist/modules/crypto/index.d.ts +115 -0
  119. package/dist/modules/crypto/index.d.ts.map +1 -0
  120. package/dist/modules/crypto/index.js +139 -0
  121. package/dist/modules/crypto/index.js.map +1 -0
  122. package/dist/modules/document/index.d.ts +575 -0
  123. package/dist/modules/document/index.d.ts.map +1 -0
  124. package/dist/modules/document/index.js +444 -0
  125. package/dist/modules/document/index.js.map +1 -0
  126. package/dist/modules/document-extract/index.d.ts +438 -0
  127. package/dist/modules/document-extract/index.d.ts.map +1 -0
  128. package/dist/modules/document-extract/index.js +127 -0
  129. package/dist/modules/document-extract/index.js.map +1 -0
  130. package/dist/modules/document-render/index.d.ts +336 -0
  131. package/dist/modules/document-render/index.d.ts.map +1 -0
  132. package/dist/modules/document-render/index.js +155 -0
  133. package/dist/modules/document-render/index.js.map +1 -0
  134. package/dist/modules/email/index.d.ts +311 -0
  135. package/dist/modules/email/index.d.ts.map +1 -0
  136. package/dist/modules/email/index.js +167 -0
  137. package/dist/modules/email/index.js.map +1 -0
  138. package/dist/modules/email-message/index.d.ts +95 -0
  139. package/dist/modules/email-message/index.d.ts.map +1 -0
  140. package/dist/modules/email-message/index.js +264 -0
  141. package/dist/modules/email-message/index.js.map +1 -0
  142. package/dist/modules/file-convert/index.d.ts +273 -0
  143. package/dist/modules/file-convert/index.d.ts.map +1 -0
  144. package/dist/modules/file-convert/index.js +103 -0
  145. package/dist/modules/file-convert/index.js.map +1 -0
  146. package/dist/modules/files/index.d.ts +452 -0
  147. package/dist/modules/files/index.d.ts.map +1 -0
  148. package/dist/modules/files/index.js +733 -0
  149. package/dist/modules/files/index.js.map +1 -0
  150. package/dist/modules/image/index.d.ts +342 -0
  151. package/dist/modules/image/index.d.ts.map +1 -0
  152. package/dist/modules/image/index.js +281 -0
  153. package/dist/modules/image/index.js.map +1 -0
  154. package/dist/modules/messaging/index.d.ts +608 -0
  155. package/dist/modules/messaging/index.d.ts.map +1 -0
  156. package/dist/modules/messaging/index.js +1067 -0
  157. package/dist/modules/messaging/index.js.map +1 -0
  158. package/dist/modules/pdf/index.d.ts +287 -0
  159. package/dist/modules/pdf/index.d.ts.map +1 -0
  160. package/dist/modules/pdf/index.js +259 -0
  161. package/dist/modules/pdf/index.js.map +1 -0
  162. package/dist/modules/presentation/index.d.ts +247 -0
  163. package/dist/modules/presentation/index.d.ts.map +1 -0
  164. package/dist/modules/presentation/index.js +12657 -0
  165. package/dist/modules/presentation/index.js.map +1 -0
  166. package/dist/modules/queue/index.d.ts +129 -0
  167. package/dist/modules/queue/index.d.ts.map +1 -0
  168. package/dist/modules/queue/index.js +131 -0
  169. package/dist/modules/queue/index.js.map +1 -0
  170. package/dist/modules/rag/index.d.ts +250 -0
  171. package/dist/modules/rag/index.d.ts.map +1 -0
  172. package/dist/modules/rag/index.js +366 -0
  173. package/dist/modules/rag/index.js.map +1 -0
  174. package/dist/modules/scheduler/index.d.ts +216 -0
  175. package/dist/modules/scheduler/index.d.ts.map +1 -0
  176. package/dist/modules/scheduler/index.js +153 -0
  177. package/dist/modules/scheduler/index.js.map +1 -0
  178. package/dist/modules/skills/index.d.ts +205 -0
  179. package/dist/modules/skills/index.d.ts.map +1 -0
  180. package/dist/modules/skills/index.js +203 -0
  181. package/dist/modules/skills/index.js.map +1 -0
  182. package/dist/modules/tasks/index.d.ts +287 -0
  183. package/dist/modules/tasks/index.d.ts.map +1 -0
  184. package/dist/modules/tasks/index.js +207 -0
  185. package/dist/modules/tasks/index.js.map +1 -0
  186. package/dist/modules/vector-store/index.d.ts +3 -0
  187. package/dist/modules/vector-store/index.js +3 -0
  188. package/dist/modules/web-fetch/index.d.ts +99 -0
  189. package/dist/modules/web-fetch/index.d.ts.map +1 -0
  190. package/dist/modules/web-fetch/index.js +242 -0
  191. package/dist/modules/web-fetch/index.js.map +1 -0
  192. package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
  193. package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
  194. package/dist/object-artifact-store-wZ2j9cto.js +28 -0
  195. package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
  196. package/dist/pinecone-umY4t6OF.js +190 -0
  197. package/dist/pinecone-umY4t6OF.js.map +1 -0
  198. package/dist/provider-CgDAlg6K.js +34 -0
  199. package/dist/provider-CgDAlg6K.js.map +1 -0
  200. package/dist/qdrant-DMp4NhKR.js +253 -0
  201. package/dist/qdrant-DMp4NhKR.js.map +1 -0
  202. package/dist/resend-BAC38_dA.js +155 -0
  203. package/dist/resend-BAC38_dA.js.map +1 -0
  204. package/dist/s3-CsOaPWMP.js +955 -0
  205. package/dist/s3-CsOaPWMP.js.map +1 -0
  206. package/dist/schemas-ChOAhdo9.js +192 -0
  207. package/dist/schemas-ChOAhdo9.js.map +1 -0
  208. package/dist/slack-Di5BBNpt.js +1455 -0
  209. package/dist/slack-Di5BBNpt.js.map +1 -0
  210. package/dist/sqs-DCwS1i2N.js +225 -0
  211. package/dist/sqs-DCwS1i2N.js.map +1 -0
  212. package/dist/supabase-vector-Dpp9mmJR.js +218 -0
  213. package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
  214. package/dist/tanstack/index.d.ts +15 -0
  215. package/dist/tanstack/index.d.ts.map +1 -0
  216. package/dist/tanstack/index.js +28 -0
  217. package/dist/tanstack/index.js.map +1 -0
  218. package/dist/teams-DYAHNb39.js +835 -0
  219. package/dist/teams-DYAHNb39.js.map +1 -0
  220. package/dist/telegram-DDXWzkfL.js +734 -0
  221. package/dist/telegram-DDXWzkfL.js.map +1 -0
  222. package/dist/textract-CPLiB22H.js +554 -0
  223. package/dist/textract-CPLiB22H.js.map +1 -0
  224. package/dist/transport-B4vn-XiQ.js +157 -0
  225. package/dist/transport-B4vn-XiQ.js.map +1 -0
  226. package/dist/transport-i96ACAI_.d.ts +46 -0
  227. package/dist/transport-i96ACAI_.d.ts.map +1 -0
  228. package/dist/types-Ccb0DXY9.d.ts +150 -0
  229. package/dist/types-Ccb0DXY9.d.ts.map +1 -0
  230. package/dist/unique-EwBH1JPB.js +19 -0
  231. package/dist/unique-EwBH1JPB.js.map +1 -0
  232. package/dist/vector-store-C3nEO80e.js +193 -0
  233. package/dist/vector-store-C3nEO80e.js.map +1 -0
  234. package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
  235. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
  236. package/dist/vendors/amazon-sp-api/index.js +975 -0
  237. package/dist/vendors/amazon-sp-api/index.js.map +1 -0
  238. package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
  239. package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
  240. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
  241. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
  242. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
  243. package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
  244. package/dist/vendors/cloudflare-browser/index.js +2 -0
  245. package/dist/vendors/cloudflare-email/index.d.ts +260 -0
  246. package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
  247. package/dist/vendors/cloudflare-email/index.js +3 -0
  248. package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
  249. package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
  250. package/dist/vendors/cloudflare-sandbox/index.js +2 -0
  251. package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
  252. package/dist/vendors/eventbridge-scheduler/index.js +2 -0
  253. package/dist/vendors/gotenberg/index.d.ts +306 -0
  254. package/dist/vendors/gotenberg/index.d.ts.map +1 -0
  255. package/dist/vendors/gotenberg/index.js +2 -0
  256. package/dist/vendors/imessage/index.d.ts +420 -0
  257. package/dist/vendors/imessage/index.d.ts.map +1 -0
  258. package/dist/vendors/imessage/index.js +4 -0
  259. package/dist/vendors/katana/index.d.ts +1570 -0
  260. package/dist/vendors/katana/index.d.ts.map +1 -0
  261. package/dist/vendors/katana/index.js +1639 -0
  262. package/dist/vendors/katana/index.js.map +1 -0
  263. package/dist/vendors/mastra-vector/index.d.ts +120 -0
  264. package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
  265. package/dist/vendors/mastra-vector/index.js +3 -0
  266. package/dist/vendors/pinecone/index.d.ts +75 -0
  267. package/dist/vendors/pinecone/index.d.ts.map +1 -0
  268. package/dist/vendors/pinecone/index.js +3 -0
  269. package/dist/vendors/qdrant/index.d.ts +75 -0
  270. package/dist/vendors/qdrant/index.d.ts.map +1 -0
  271. package/dist/vendors/qdrant/index.js +3 -0
  272. package/dist/vendors/resend/index.d.ts +3 -0
  273. package/dist/vendors/resend/index.js +3 -0
  274. package/dist/vendors/s3/index.d.ts +2 -0
  275. package/dist/vendors/s3/index.js +2 -0
  276. package/dist/vendors/slack/index.d.ts +576 -0
  277. package/dist/vendors/slack/index.d.ts.map +1 -0
  278. package/dist/vendors/slack/index.js +3 -0
  279. package/dist/vendors/sqs/index.d.ts +2 -0
  280. package/dist/vendors/sqs/index.js +2 -0
  281. package/dist/vendors/supabase-vector/index.d.ts +89 -0
  282. package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
  283. package/dist/vendors/supabase-vector/index.js +3 -0
  284. package/dist/vendors/teams/index.d.ts +303 -0
  285. package/dist/vendors/teams/index.d.ts.map +1 -0
  286. package/dist/vendors/teams/index.js +3 -0
  287. package/dist/vendors/telegram/index.d.ts +319 -0
  288. package/dist/vendors/telegram/index.d.ts.map +1 -0
  289. package/dist/vendors/telegram/index.js +3 -0
  290. package/dist/vendors/textract/index.d.ts +2 -0
  291. package/dist/vendors/textract/index.js +2 -0
  292. package/dist/vendors/woocommerce/index.d.ts +1700 -0
  293. package/dist/vendors/woocommerce/index.d.ts.map +1 -0
  294. package/dist/vendors/woocommerce/index.js +1427 -0
  295. package/dist/vendors/woocommerce/index.js.map +1 -0
  296. package/dist/with-auth-CpKqTrGK.js +240 -0
  297. package/dist/with-auth-CpKqTrGK.js.map +1 -0
  298. package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
  299. package/logos/README.md +89 -0
  300. package/logos/amazon.svg +6 -0
  301. package/logos/artifacts.svg +9 -0
  302. package/logos/browser.svg +9 -0
  303. package/logos/calendar.svg +15 -0
  304. package/logos/cloudflare-browser.svg +5 -0
  305. package/logos/cloudflare-email.svg +5 -0
  306. package/logos/cloudflare.svg +4 -0
  307. package/logos/code-sandbox.svg +8 -0
  308. package/logos/content-type.svg +10 -0
  309. package/logos/crypto.svg +7 -0
  310. package/logos/document-extract.svg +12 -0
  311. package/logos/document-render.svg +8 -0
  312. package/logos/document.svg +10 -0
  313. package/logos/email-message.svg +8 -0
  314. package/logos/email.svg +7 -0
  315. package/logos/file-convert.svg +9 -0
  316. package/logos/files.svg +6 -0
  317. package/logos/gotenberg.svg +340 -0
  318. package/logos/image.svg +8 -0
  319. package/logos/imessage.svg +7 -0
  320. package/logos/katana.svg +13 -0
  321. package/logos/mastra.svg +7 -0
  322. package/logos/messaging.svg +7 -0
  323. package/logos/pack-logos.json +48 -0
  324. package/logos/pdf.svg +10 -0
  325. package/logos/pinecone.svg +25 -0
  326. package/logos/presentation.svg +8 -0
  327. package/logos/qdrant.svg +4 -0
  328. package/logos/queue.svg +11 -0
  329. package/logos/rag.svg +18 -0
  330. package/logos/resend.svg +5 -0
  331. package/logos/scheduler.svg +7 -0
  332. package/logos/skills.svg +10 -0
  333. package/logos/slack.svg +14 -0
  334. package/logos/supabase.svg +4 -0
  335. package/logos/tasks.svg +10 -0
  336. package/logos/teams.svg +6 -0
  337. package/logos/telegram.svg +10 -0
  338. package/logos/textract.svg +5 -0
  339. package/logos/vector-store.svg +8 -0
  340. package/logos/web-fetch.svg +8 -0
  341. package/logos/woocommerce.svg +4 -0
  342. package/package.json +373 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-DDXWzkfL.js","names":["#token","#http","#post"],"sources":["../src/vendors/telegram/contracts.ts","../src/vendors/telegram/domain.ts","../src/vendors/telegram/client.ts","../src/vendors/telegram/module.ts","../src/vendors/telegram/webhook.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const MAX_MEDIA_BYTES = 20 * 1024 * 1024\n\nexport const telegramChatActionSchema = z.enum([\n\t'typing',\n\t'upload_photo',\n\t'record_video',\n\t'upload_video',\n\t'record_voice',\n\t'upload_voice',\n\t'upload_document',\n\t'choose_sticker',\n\t'find_location',\n\t'record_video_note',\n\t'upload_video_note'\n])\n\nexport const telegramAuthSchema = z.object({\n\tbot_token: z.string().min(1).describe('Telegram bot token from BotFather')\n})\n\nexport type TelegramAuth = z.infer<typeof telegramAuthSchema>\n\nexport const telegramSendTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id (string form of the numeric id)'),\n\ttext: z.string().min(1).max(4096).describe('Message text (max 4096 characters)'),\n\treply_to_message_id: z.string().min(1).optional().describe('Optional message id to reply to'),\n\treply_markup: z.unknown().optional().describe('Optional Telegram reply markup object')\n})\n\nexport const telegramMessageOutputSchema = z.object({\n\tmessage_id: z.string().describe('Telegram message id as string'),\n\tfile_id: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe('Telegram file_id when the message carries a document/photo/audio/video attachment')\n})\n\nexport const telegramEditTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to edit'),\n\ttext: z.string().min(1).max(4096).describe('Replacement text (max 4096 characters)'),\n\treply_markup: z.unknown().optional().describe('Optional Telegram reply markup object')\n})\n\nexport const telegramSendChatActionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\taction: telegramChatActionSchema.describe('Chat action shown to the user (typing, upload_photo, …)')\n})\n\nexport const telegramSetReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to react to'),\n\temoji: z.string().min(1).max(32).describe('Any emoji reaction Telegram accepts for this bot/chat')\n})\n\nexport const telegramClearReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to clear reactions on')\n})\n\nexport const telegramSendMediaInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\tkind: z.enum(['photo', 'document']).describe('Media kind'),\n\tbody_base64: z.string().min(1).describe('File body as base64'),\n\tfile_name: z.string().min(1).describe('File name including extension'),\n\tcaption: z.string().max(1024).optional().describe('Optional caption (max 1024 characters)'),\n\treply_to_message_id: z.string().min(1).optional().describe('Optional message id to reply to'),\n\tcontent_type: z.string().optional().describe('Optional content type for the upload')\n})\n\nexport const telegramDownloadFileInputSchema = z.object({\n\tfile_id: z.string().min(1).describe('Telegram file_id from an inbound attachment'),\n\tfile_name: z.string().min(1).optional().describe('Preferred file name for the download result')\n})\n\nexport const telegramDownloadFileOutputSchema = z.object({\n\tfile_name: z.string(),\n\tfile_size: z.number().optional(),\n\tbody_base64: z.string().describe('Downloaded file body as base64')\n})\n\nexport const telegramAnswerCallbackInputSchema = z.object({\n\tcallback_query_id: z.string().min(1).describe('callback_query.id from an inbound update'),\n\ttext: z.string().max(200).optional().describe('Optional notification text shown to the user'),\n\tshow_alert: z.boolean().optional().describe('When true, show an alert instead of a toast')\n})\n\nexport const telegramSendMediaGroupItemSchema = z.object({\n\tkind: z.enum(['photo', 'document']).describe('Media kind; all items must be photo or all document'),\n\tbody_base64: z.string().min(1).describe('File body as base64'),\n\tfile_name: z.string().min(1).describe('File name including extension'),\n\tcaption: z.string().max(1024).optional().describe('Optional caption on this item'),\n\tcontent_type: z.string().optional().describe('Optional content type')\n})\n\nexport const telegramSendMediaGroupInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Telegram chat id'),\n\titems: z\n\t\t.array(telegramSendMediaGroupItemSchema)\n\t\t.min(2)\n\t\t.max(10)\n\t\t.describe('2-10 media items; cannot mix photo and document'),\n\treply_to_message_id: z.string().min(1).optional().describe('Optional message id to reply to')\n})\n\nexport const telegramSendMediaGroupOutputSchema = z.object({\n\tmessage_ids: z.array(z.string()).describe('Message ids for each media item')\n})\n\nexport const telegramGetBotOutputSchema = z.object({\n\tbot_id: z.string(),\n\tusername: z.string(),\n\tdisplay_name: z.string()\n})\n\nexport const telegramOkOutputSchema = z.object({\n\tok: z.boolean()\n})\n\nexport type TelegramSendTextInput = z.infer<typeof telegramSendTextInputSchema>\nexport type TelegramMessageOutput = z.infer<typeof telegramMessageOutputSchema>\nexport type TelegramEditTextInput = z.infer<typeof telegramEditTextInputSchema>\nexport type TelegramSendChatActionInput = z.infer<typeof telegramSendChatActionInputSchema>\nexport type TelegramSetReactionInput = z.infer<typeof telegramSetReactionInputSchema>\nexport type TelegramClearReactionInput = z.infer<typeof telegramClearReactionInputSchema>\nexport type TelegramSendMediaInput = z.infer<typeof telegramSendMediaInputSchema>\nexport type TelegramDownloadFileInput = z.infer<typeof telegramDownloadFileInputSchema>\nexport type TelegramDownloadFileOutput = z.infer<typeof telegramDownloadFileOutputSchema>\nexport type TelegramAnswerCallbackInput = z.infer<typeof telegramAnswerCallbackInputSchema>\nexport type TelegramSendMediaGroupInput = z.infer<typeof telegramSendMediaGroupInputSchema>\nexport type TelegramSendMediaGroupOutput = z.infer<typeof telegramSendMediaGroupOutputSchema>\nexport type TelegramGetBotOutput = z.infer<typeof telegramGetBotOutputSchema>\n","/**\n * Telegram payload shaping + envelope/result parse.\n * No HTTP — client owns transport.\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { base64ToBytes, bytesToBase64, toArrayBuffer } from '../../shared/bytes'\nimport type {\n\tTelegramDownloadFileInput,\n\tTelegramDownloadFileOutput,\n\tTelegramGetBotOutput,\n\tTelegramMessageOutput,\n\tTelegramSendMediaGroupInput,\n\tTelegramSendMediaGroupOutput,\n\tTelegramSendMediaInput\n} from './contracts'\nimport { MAX_MEDIA_BYTES } from './contracts'\n\nexport type TelegramFailureKind = 'definite_rejection' | 'outcome_unknown'\n\nexport class TelegramClientError extends ToolError {\n\treadonly failureKind: TelegramFailureKind\n\n\tconstructor(input: {\n\t\tmessage: string\n\t\tfailureKind: TelegramFailureKind\n\t\tmethod: string\n\t\tstatus?: number\n\t\tretryAfterSeconds?: number\n\t\tcause?: unknown\n\t}) {\n\t\tsuper(input.message, {\n\t\t\tcode: 'upstream',\n\t\t\tretryable: input.failureKind === 'outcome_unknown',\n\t\t\tcause: input.cause,\n\t\t\tdetails: {\n\t\t\t\tmethod: input.method,\n\t\t\t\tfailure_kind: input.failureKind,\n\t\t\t\tstatus: input.status,\n\t\t\t\tretry_after_seconds: input.retryAfterSeconds\n\t\t\t}\n\t\t})\n\t\tthis.name = 'TelegramClientError'\n\t\tthis.failureKind = input.failureKind\n\t}\n}\n\nexport function isTelegramDefiniteRejection(error: unknown): boolean {\n\treturn error instanceof TelegramClientError && error.failureKind === 'definite_rejection'\n}\n\nexport function isTelegramOutcomeUnknown(error: unknown): boolean {\n\treturn error instanceof TelegramClientError && error.failureKind === 'outcome_unknown'\n}\n\n/** Network / abort / transport failures before a parseable Telegram envelope. */\nexport function throwTelegramTransportError(method: string, error: unknown): never {\n\tif (error instanceof TelegramClientError) throw error\n\tconst message = error instanceof Error ? error.message : `${method} request failed`\n\tthrow new TelegramClientError({\n\t\tmessage,\n\t\tfailureKind: 'outcome_unknown',\n\t\tmethod,\n\t\tcause: error\n\t})\n}\n\nfunction isDefiniteStatus(status: number): boolean {\n\treturn status === 400 || status === 401 || status === 403 || status === 404\n}\n\n/** Map Telegram `{ ok, result | description }` (HTTP may be non-2xx). */\nexport function parseResult(label: string, status: number, data: unknown): unknown {\n\tif (!isPlainObject(data) || typeof data['ok'] !== 'boolean') {\n\t\tthrow new TelegramClientError({\n\t\t\tmessage: `${label} returned an invalid envelope`,\n\t\t\tfailureKind: 'outcome_unknown',\n\t\t\tmethod: label\n\t\t})\n\t}\n\tif (status >= 200 && status < 300 && data['ok'] === true && data['result'] !== undefined) {\n\t\treturn data['result']\n\t}\n\tconst parameters = data['parameters']\n\tconst retryAfter =\n\t\tisPlainObject(parameters) && typeof parameters['retry_after'] === 'number' ? parameters['retry_after'] : undefined\n\tthrow new TelegramClientError({\n\t\tmessage: isString(data['description']) ? data['description'] : `${label} failed`,\n\t\tfailureKind: isDefiniteStatus(status) ? 'definite_rejection' : 'outcome_unknown',\n\t\tmethod: label,\n\t\tstatus,\n\t\t...(retryAfter !== undefined && { retryAfterSeconds: retryAfter })\n\t})\n}\n\n/** Prefer largest photo size; else first of document/audio/video/voice/… with a file_id. */\nexport function extractTelegramFileId(message: Record<string, unknown>): string | undefined {\n\tconst photo = message['photo']\n\tif (Array.isArray(photo) && photo.length > 0) {\n\t\tlet best: string | undefined\n\t\tlet bestSize = -1\n\t\tfor (const row of photo) {\n\t\t\tif (!isPlainObject(row) || !isString(row['file_id'])) continue\n\t\t\tconst size = typeof row['file_size'] === 'number' ? row['file_size'] : 0\n\t\t\tif (size >= bestSize) {\n\t\t\t\tbestSize = size\n\t\t\t\tbest = row['file_id']\n\t\t\t}\n\t\t}\n\t\tif (best) return best\n\t}\n\tfor (const key of ['document', 'audio', 'video', 'voice', 'video_note', 'animation', 'sticker'] as const) {\n\t\tconst item = message[key]\n\t\tif (isPlainObject(item) && isString(item['file_id']) && item['file_id'].length > 0) {\n\t\t\treturn item['file_id']\n\t\t}\n\t}\n\treturn undefined\n}\n\nexport function parseMessage(value: unknown): TelegramMessageOutput {\n\tif (!isPlainObject(value) || typeof value['message_id'] !== 'number') {\n\t\tthrow new ToolError('Telegram returned an invalid message', { code: 'upstream' })\n\t}\n\tconst fileId = extractTelegramFileId(value)\n\treturn {\n\t\tmessage_id: String(value['message_id']),\n\t\t...(fileId && { file_id: fileId })\n\t}\n}\n\nexport function parseMessages(value: unknown): TelegramSendMediaGroupOutput {\n\tif (!Array.isArray(value)) {\n\t\tthrow new ToolError('Telegram returned an invalid message list', { code: 'upstream' })\n\t}\n\treturn { message_ids: value.map((row) => parseMessage(row).message_id) }\n}\n\nexport function parseOk(value: unknown): void {\n\tif (value !== true) {\n\t\tthrow new ToolError('Telegram returned unexpected result', { code: 'upstream' })\n\t}\n}\n\nexport function parseBot(value: unknown): TelegramGetBotOutput {\n\tif (\n\t\t!isPlainObject(value) ||\n\t\ttypeof value['id'] !== 'number' ||\n\t\t!isString(value['username']) ||\n\t\t!isString(value['first_name'])\n\t) {\n\t\tthrow new ToolError('Telegram getMe returned invalid bot identity', { code: 'upstream' })\n\t}\n\treturn {\n\t\tbot_id: String(value['id']),\n\t\tusername: value['username'],\n\t\tdisplay_name: value['first_name']\n\t}\n}\n\nexport function parseFile(value: unknown): { file_path: string; file_size?: number } {\n\tif (!isPlainObject(value) || !isString(value['file_path'])) {\n\t\tthrow new ToolError('Telegram getFile returned invalid payload', { code: 'upstream' })\n\t}\n\treturn {\n\t\tfile_path: value['file_path'],\n\t\t...(typeof value['file_size'] === 'number' && { file_size: value['file_size'] })\n\t}\n}\n\nexport function parseDownload(\n\tinput: TelegramDownloadFileInput,\n\tfile: { file_path: string; file_size?: number },\n\tbytes: Uint8Array\n): TelegramDownloadFileOutput {\n\treturn {\n\t\tfile_name: input.file_name ?? file.file_path.split('/').pop() ?? input.file_id,\n\t\t...(file.file_size !== undefined && { file_size: file.file_size }),\n\t\tbody_base64: bytesToBase64(bytes)\n\t}\n}\n\nfunction decodeMedia(bodyBase64: string): Uint8Array {\n\tlet bytes: Uint8Array\n\ttry {\n\t\tbytes = base64ToBytes(bodyBase64)\n\t} catch (error) {\n\t\tthrow new ToolError('Invalid base64 body', { code: 'bad_input', cause: error })\n\t}\n\tif (bytes.byteLength === 0) {\n\t\tthrow new ToolError('Media body must not be empty', { code: 'bad_input' })\n\t}\n\tif (bytes.byteLength > MAX_MEDIA_BYTES) {\n\t\tthrow new ToolError('Media exceeds 20 MiB limit', {\n\t\t\tcode: 'too_large',\n\t\t\tdetails: { max_bytes: MAX_MEDIA_BYTES, content_length: bytes.byteLength }\n\t\t})\n\t}\n\treturn bytes\n}\n\nfunction blob(bytes: Uint8Array, contentType: string | undefined): Blob {\n\treturn contentType ? new Blob([toArrayBuffer(bytes)], { type: contentType }) : new Blob([toArrayBuffer(bytes)])\n}\n\n/** Multipart body for sendPhoto / sendDocument. */\nexport function buildMediaForm(input: TelegramSendMediaInput): FormData {\n\tconst bytes = decodeMedia(input.body_base64)\n\tconst form = new FormData()\n\tform.set('chat_id', input.chat_id)\n\tform.set(input.kind === 'photo' ? 'photo' : 'document', blob(bytes, input.content_type), input.file_name)\n\tif (input.caption) form.set('caption', input.caption)\n\tif (input.reply_to_message_id) {\n\t\tform.set('reply_parameters', JSON.stringify({ message_id: Number.parseInt(input.reply_to_message_id, 10) }))\n\t}\n\treturn form\n}\n\n/** Multipart body for sendMediaGroup. */\nexport function buildMediaGroupForm(input: TelegramSendMediaGroupInput): FormData {\n\tif (input.items.length < 2 || input.items.length > 10) {\n\t\tthrow new ToolError('Media groups require between 2 and 10 items', { code: 'bad_input' })\n\t}\n\tconst hasDoc = input.items.some((item) => item.kind === 'document')\n\tconst hasPhoto = input.items.some((item) => item.kind === 'photo')\n\tif (hasDoc && hasPhoto) {\n\t\tthrow new ToolError('Media groups cannot mix photo and document items', { code: 'bad_input' })\n\t}\n\n\tconst form = new FormData()\n\tform.set('chat_id', input.chat_id)\n\tif (input.reply_to_message_id) {\n\t\tform.set('reply_parameters', JSON.stringify({ message_id: Number.parseInt(input.reply_to_message_id, 10) }))\n\t}\n\tconst media = input.items.map((item, index) => {\n\t\tconst bytes = decodeMedia(item.body_base64)\n\t\tform.set(`file${index}`, blob(bytes, item.content_type), item.file_name)\n\t\treturn {\n\t\t\ttype: item.kind,\n\t\t\tmedia: `attach://file${index}`,\n\t\t\t...(item.caption && { caption: item.caption })\n\t\t}\n\t})\n\tform.set('media', JSON.stringify(media))\n\treturn form\n}\n","/**\n * Telegram Bot API vendor client.\n * Host: `new TelegramClient(auth)`. Agent tools: `fromContext(ctx)`.\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tTelegramAnswerCallbackInput,\n\tTelegramAuth,\n\tTelegramClearReactionInput,\n\tTelegramDownloadFileInput,\n\tTelegramDownloadFileOutput,\n\tTelegramEditTextInput,\n\tTelegramGetBotOutput,\n\tTelegramMessageOutput,\n\tTelegramSendChatActionInput,\n\tTelegramSendMediaGroupInput,\n\tTelegramSendMediaGroupOutput,\n\tTelegramSendMediaInput,\n\tTelegramSendTextInput,\n\tTelegramSetReactionInput\n} from './contracts'\nimport { telegramAuthSchema } from './contracts'\nimport {\n\tbuildMediaForm,\n\tbuildMediaGroupForm,\n\tisTelegramDefiniteRejection,\n\tisTelegramOutcomeUnknown,\n\tparseBot,\n\tparseDownload,\n\tparseFile,\n\tparseMessage,\n\tparseMessages,\n\tparseOk,\n\tparseResult,\n\tTelegramClientError,\n\tthrowTelegramTransportError\n} from './domain'\n\nexport type TelegramClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class TelegramClient {\n\treadonly #token: string\n\treadonly #http: HttpService\n\n\tconstructor(auth: TelegramAuth, options: TelegramClientOptions = {}) {\n\t\tconst parsed = telegramAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Telegram auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#token = parsed.data.bot_token\n\t\tthis.#http = new HttpService({\n\t\t\t...options,\n\t\t\tbaseURL: 'https://api.telegram.org',\n\t\t\tlabel: 'Telegram'\n\t\t})\n\t}\n\n\tstatic fromContext(ctx: ToolContext): TelegramClient {\n\t\tconst auth = requireAuth(ctx, telegramAuthSchema)\n\t\treturn new TelegramClient(auth, {\n\t\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t\t...(ctx.signal && { signal: ctx.signal })\n\t\t})\n\t}\n\n\tasync #post(path: string, body: FormData | Record<string, unknown>, label: string): Promise<unknown> {\n\t\ttry {\n\t\t\tconst res = await this.#http.post(path, body, { label, noThrow: true })\n\t\t\treturn parseResult(label, res.status, res.data)\n\t\t} catch (error) {\n\t\t\tthrowTelegramTransportError(label, error)\n\t\t}\n\t}\n\n\t/** POST /bot{token}/sendMessage */\n\tasync sendText(input: TelegramSendTextInput): Promise<TelegramMessageOutput> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tchat_id: input.chat_id,\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup }),\n\t\t\t...(input.reply_to_message_id && {\n\t\t\t\treply_parameters: { message_id: Number.parseInt(input.reply_to_message_id, 10) }\n\t\t\t})\n\t\t}\n\t\treturn parseMessage(await this.#post(`/bot${this.#token}/sendMessage`, body, 'Telegram sendMessage'))\n\t}\n\n\t/** POST /bot{token}/editMessageText */\n\tasync editText(input: TelegramEditTextInput): Promise<TelegramMessageOutput> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: Number.parseInt(input.message_id, 10),\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t}\n\t\treturn parseMessage(await this.#post(`/bot${this.#token}/editMessageText`, body, 'Telegram editMessageText'))\n\t}\n\n\t/** POST /bot{token}/sendChatAction */\n\tasync sendChatAction(input: TelegramSendChatActionInput): Promise<void> {\n\t\tparseOk(\n\t\t\tawait this.#post(\n\t\t\t\t`/bot${this.#token}/sendChatAction`,\n\t\t\t\t{ chat_id: input.chat_id, action: input.action },\n\t\t\t\t'Telegram sendChatAction'\n\t\t\t)\n\t\t)\n\t}\n\n\t/** POST /bot{token}/setMessageReaction */\n\tasync setReaction(input: TelegramSetReactionInput): Promise<void> {\n\t\tparseOk(\n\t\t\tawait this.#post(\n\t\t\t\t`/bot${this.#token}/setMessageReaction`,\n\t\t\t\t{\n\t\t\t\t\tchat_id: input.chat_id,\n\t\t\t\t\tmessage_id: Number.parseInt(input.message_id, 10),\n\t\t\t\t\treaction: [{ type: 'emoji', emoji: input.emoji }]\n\t\t\t\t},\n\t\t\t\t'Telegram setMessageReaction'\n\t\t\t)\n\t\t)\n\t}\n\n\t/** POST /bot{token}/setMessageReaction (empty reaction) */\n\tasync clearReaction(input: TelegramClearReactionInput): Promise<void> {\n\t\tparseOk(\n\t\t\tawait this.#post(\n\t\t\t\t`/bot${this.#token}/setMessageReaction`,\n\t\t\t\t{\n\t\t\t\t\tchat_id: input.chat_id,\n\t\t\t\t\tmessage_id: Number.parseInt(input.message_id, 10),\n\t\t\t\t\treaction: []\n\t\t\t\t},\n\t\t\t\t'Telegram setMessageReaction'\n\t\t\t)\n\t\t)\n\t}\n\n\t/** POST /bot{token}/sendPhoto | sendDocument */\n\tasync sendMedia(input: TelegramSendMediaInput): Promise<TelegramMessageOutput> {\n\t\tconst path = input.kind === 'photo' ? `/bot${this.#token}/sendPhoto` : `/bot${this.#token}/sendDocument`\n\t\tconst label = input.kind === 'photo' ? 'Telegram sendPhoto' : 'Telegram sendDocument'\n\t\treturn parseMessage(await this.#post(path, buildMediaForm(input), label))\n\t}\n\n\t/** POST /bot{token}/sendMediaGroup */\n\tasync sendMediaGroup(input: TelegramSendMediaGroupInput): Promise<TelegramSendMediaGroupOutput> {\n\t\treturn parseMessages(\n\t\t\tawait this.#post(`/bot${this.#token}/sendMediaGroup`, buildMediaGroupForm(input), 'Telegram sendMediaGroup')\n\t\t)\n\t}\n\n\t/** POST getFile + GET /file/bot{token}/{file_path} */\n\tasync downloadFile(input: TelegramDownloadFileInput): Promise<TelegramDownloadFileOutput> {\n\t\tconst file = parseFile(\n\t\t\tawait this.#post(`/bot${this.#token}/getFile`, { file_id: input.file_id }, 'Telegram getFile')\n\t\t)\n\t\tconst filePath = file.file_path.replace(/^\\/+/, '')\n\t\tlet res: Awaited<ReturnType<HttpService['bytes']>>\n\t\ttry {\n\t\t\tres = await this.#http.bytes('GET', `/file/bot${this.#token}/${filePath}`, {\n\t\t\t\tlabel: 'Telegram downloadFile',\n\t\t\t\tnoThrow: true\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tthrowTelegramTransportError('Telegram downloadFile', error)\n\t\t}\n\t\tif (!res.ok) {\n\t\t\tthrow new TelegramClientError({\n\t\t\t\tmessage: `Telegram downloadFile failed with HTTP ${res.status}`,\n\t\t\t\tfailureKind:\n\t\t\t\t\tres.status === 400 || res.status === 401 || res.status === 403 || res.status === 404\n\t\t\t\t\t\t? 'definite_rejection'\n\t\t\t\t\t\t: 'outcome_unknown',\n\t\t\t\tmethod: 'Telegram downloadFile',\n\t\t\t\tstatus: res.status\n\t\t\t})\n\t\t}\n\t\treturn parseDownload(input, file, res.bytes)\n\t}\n\n\t/** POST /bot{token}/answerCallbackQuery */\n\tasync answerCallback(input: TelegramAnswerCallbackInput): Promise<void> {\n\t\tconst body: Record<string, unknown> = {\n\t\t\tcallback_query_id: input.callback_query_id,\n\t\t\t...(input.text && { text: input.text }),\n\t\t\t...(input.show_alert !== undefined && { show_alert: input.show_alert })\n\t\t}\n\t\tparseOk(await this.#post(`/bot${this.#token}/answerCallbackQuery`, body, 'Telegram answerCallbackQuery'))\n\t}\n\n\t/** POST /bot{token}/getMe */\n\tasync getBot(): Promise<TelegramGetBotOutput> {\n\t\treturn parseBot(await this.#post(`/bot${this.#token}/getMe`, {}, 'Telegram getMe'))\n\t}\n\n\t/** POST /bot{token}/getWebhookInfo */\n\tasync getWebhookInfo(): Promise<{\n\t\turl: string\n\t\tpending_update_count: number\n\t\tlast_error_at_unix?: number\n\t\tlast_error_message?: string\n\t}> {\n\t\tconst value = await this.#post(`/bot${this.#token}/getWebhookInfo`, {}, 'Telegram getWebhookInfo')\n\t\tif (!isPlainObject(value) || !isString(value['url']) || typeof value['pending_update_count'] !== 'number') {\n\t\t\tthrow new ToolError('Telegram getWebhookInfo returned invalid payload', { code: 'upstream' })\n\t\t}\n\t\treturn {\n\t\t\turl: value['url'],\n\t\t\tpending_update_count: value['pending_update_count'],\n\t\t\t...(typeof value['last_error_date'] === 'number' && { last_error_at_unix: value['last_error_date'] }),\n\t\t\t...(isString(value['last_error_message']) && { last_error_message: value['last_error_message'] })\n\t\t}\n\t}\n\n\t/** POST /bot{token}/setWebhook */\n\tasync setWebhook(input: { url: string; secret_token: string; allowed_updates?: string[] }): Promise<void> {\n\t\tparseOk(\n\t\t\tawait this.#post(\n\t\t\t\t`/bot${this.#token}/setWebhook`,\n\t\t\t\t{\n\t\t\t\t\turl: input.url,\n\t\t\t\t\tsecret_token: input.secret_token,\n\t\t\t\t\tallowed_updates: input.allowed_updates ?? ['message', 'callback_query']\n\t\t\t\t},\n\t\t\t\t'Telegram setWebhook'\n\t\t\t)\n\t\t)\n\t}\n\n\t/** POST /bot{token}/deleteWebhook */\n\tasync deleteWebhook(input?: { drop_pending_updates?: boolean }): Promise<void> {\n\t\tparseOk(\n\t\t\tawait this.#post(\n\t\t\t\t`/bot${this.#token}/deleteWebhook`,\n\t\t\t\t{ drop_pending_updates: input?.drop_pending_updates ?? false },\n\t\t\t\t'Telegram deleteWebhook'\n\t\t\t)\n\t\t)\n\t}\n}\n\nexport { isTelegramDefiniteRejection, isTelegramOutcomeUnknown, TelegramClientError }\n","import { z } from 'zod'\n\nimport { defineModule, defineTool } from '../../core/define'\nimport { TelegramClient } from './client'\nimport {\n\ttelegramAnswerCallbackInputSchema,\n\ttelegramAuthSchema,\n\ttelegramClearReactionInputSchema,\n\ttelegramDownloadFileInputSchema,\n\ttelegramDownloadFileOutputSchema,\n\ttelegramEditTextInputSchema,\n\ttelegramGetBotOutputSchema,\n\ttelegramMessageOutputSchema,\n\ttelegramOkOutputSchema,\n\ttelegramSendChatActionInputSchema,\n\ttelegramSendMediaGroupInputSchema,\n\ttelegramSendMediaGroupOutputSchema,\n\ttelegramSendMediaInputSchema,\n\ttelegramSendTextInputSchema,\n\ttelegramSetReactionInputSchema\n} from './contracts'\n\nconst emptyInputSchema = z.object({}).describe('No input fields')\n\nexport const telegramSendTextTool = defineTool({\n\tid: 'telegram-send-text',\n\tname: 'telegramSendText',\n\tdescription:\n\t\t'Send a text message to a Telegram chat. Optional reply_to_message_id anchors a native reply. Returns the new message_id.',\n\tinputSchema: telegramSendTextInputSchema,\n\toutputSchema: telegramMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => TelegramClient.fromContext(ctx).sendText(input)\n})\n\nexport const telegramEditTextTool = defineTool({\n\tid: 'telegram-edit-text',\n\tname: 'telegramEditText',\n\tdescription: 'Edit the text of an existing Telegram message. Used for progressive live updates and corrections.',\n\tinputSchema: telegramEditTextInputSchema,\n\toutputSchema: telegramMessageOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => TelegramClient.fromContext(ctx).editText(input)\n})\n\nexport const telegramSendChatActionTool = defineTool({\n\tid: 'telegram-send-chat-action',\n\tname: 'telegramSendChatAction',\n\tdescription:\n\t\t'Show a chat action to the user (typing, upload_photo, upload_document, and other Telegram actions). Renew while work is in progress.',\n\tinputSchema: telegramSendChatActionInputSchema,\n\toutputSchema: telegramOkOutputSchema,\n\tsideEffect: 'none',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait TelegramClient.fromContext(ctx).sendChatAction(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const telegramSetReactionTool = defineTool({\n\tid: 'telegram-set-reaction',\n\tname: 'telegramSetReaction',\n\tdescription:\n\t\t'Set an emoji reaction on a Telegram message. Any emoji Telegram accepts for the bot and chat is allowed.',\n\tinputSchema: telegramSetReactionInputSchema,\n\toutputSchema: telegramOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait TelegramClient.fromContext(ctx).setReaction(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const telegramClearReactionTool = defineTool({\n\tid: 'telegram-clear-reaction',\n\tname: 'telegramClearReaction',\n\tdescription: 'Clear all bot reactions on a Telegram message.',\n\tinputSchema: telegramClearReactionInputSchema,\n\toutputSchema: telegramOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait TelegramClient.fromContext(ctx).clearReaction(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const telegramSendMediaTool = defineTool({\n\tid: 'telegram-send-media',\n\tname: 'telegramSendMedia',\n\tdescription:\n\t\t'Send one photo or document to a Telegram chat from a base64 body. For multiple related files use telegram-send-media-group.',\n\tinputSchema: telegramSendMediaInputSchema,\n\toutputSchema: telegramMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => TelegramClient.fromContext(ctx).sendMedia(input)\n})\n\nexport const telegramSendMediaGroupTool = defineTool({\n\tid: 'telegram-send-media-group',\n\tname: 'telegramSendMediaGroup',\n\tdescription: 'Send 2-10 photos or 2-10 documents as one Telegram media group. Cannot mix photo and document items.',\n\tinputSchema: telegramSendMediaGroupInputSchema,\n\toutputSchema: telegramSendMediaGroupOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => TelegramClient.fromContext(ctx).sendMediaGroup(input)\n})\n\nexport const telegramDownloadFileTool = defineTool({\n\tid: 'telegram-download-file',\n\tname: 'telegramDownloadFile',\n\tdescription: 'Download a Telegram file by file_id and return the body as base64 with optional size and name.',\n\tinputSchema: telegramDownloadFileInputSchema,\n\toutputSchema: telegramDownloadFileOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => TelegramClient.fromContext(ctx).downloadFile(input)\n})\n\nexport const telegramAnswerCallbackTool = defineTool({\n\tid: 'telegram-answer-callback',\n\tname: 'telegramAnswerCallback',\n\tdescription: 'Acknowledge a Telegram callback query. Optional text shows a toast or alert to the user.',\n\tinputSchema: telegramAnswerCallbackInputSchema,\n\toutputSchema: telegramOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait TelegramClient.fromContext(ctx).answerCallback(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const telegramGetBotTool = defineTool({\n\tid: 'telegram-get-bot',\n\tname: 'telegramGetBot',\n\tdescription: 'Return the active Telegram bot identity, including bot_id, username, and display_name.',\n\tinputSchema: emptyInputSchema,\n\toutputSchema: telegramGetBotOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (_input, ctx) => TelegramClient.fromContext(ctx).getBot()\n})\n\nexport const telegramModule = defineModule({\n\tid: 'telegram',\n\ttitle: 'Telegram',\n\tdescription:\n\t\t'Telegram Bot API tools for text, media, media groups, chat actions, reactions, file download, callbacks, and bot identity.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: telegramAuthSchema },\n\tcategories: ['messaging', 'chat'],\n\tclassification: 'pii',\n\ttags: ['telegram'],\n\ttools: [\n\t\ttelegramSendTextTool,\n\t\ttelegramEditTextTool,\n\t\ttelegramSendChatActionTool,\n\t\ttelegramSetReactionTool,\n\t\ttelegramClearReactionTool,\n\t\ttelegramSendMediaTool,\n\t\ttelegramSendMediaGroupTool,\n\t\ttelegramDownloadFileTool,\n\t\ttelegramAnswerCallbackTool,\n\t\ttelegramGetBotTool\n\t]\n})\n","import { isPlainObject, isString } from 'es-toolkit'\n\n/**\n * Verify Telegram webhook secret header (x-telegram-bot-api-secret-token).\n * Exact string match; constant-time comparison when lengths match.\n */\nexport function verifyTelegramWebhookSecret(headerValue: string | null | undefined, expectedSecret: string): boolean {\n\tif (!headerValue) return false\n\tif (expectedSecret.length === 0) return false\n\tif (headerValue.length !== expectedSecret.length) return false\n\n\tlet mismatch = 0\n\tfor (let i = 0; i < headerValue.length; i += 1) {\n\t\tmismatch |= headerValue.charCodeAt(i) ^ expectedSecret.charCodeAt(i)\n\t}\n\treturn mismatch === 0\n}\n\nexport type TelegramInboundMedia = {\n\tkind: string\n\tref?: string\n\tmedia_type?: string\n\tfile_name?: string\n\tfile_size?: number\n\tunique_ref?: string\n}\n\n/** Package-owned normalized inbound event for host routing. */\nexport type TelegramInboundEvent = {\n\tchannel: 'telegram'\n\tevent_id: string\n\tchat_id: string\n\tuser_id?: string\n\tmessage_id?: string\n\ttext?: string\n\tmedia?: TelegramInboundMedia[]\n\treply_to?: string\n\traw_type: string\n\treceived_at: string\n\t/** Present when Telegram groups media into an album. */\n\tmedia_group_id?: string\n\t/** Callback query id when raw_type is callback_query. */\n\tcallback_query_id?: string\n\t/** Opaque callback data when present. */\n\tcallback_data?: string\n\tusername?: string\n\tchat_type?: string\n}\n\nexport type ParseTelegramUpdateResult = { ok: true; event: TelegramInboundEvent } | { ok: false; reason: string }\n\n/**\n * Parse one raw Bot API Update into a normalized inbound event.\n * Returns ok:false for updates the pack does not surface (unsupported chat types, empty noise).\n */\nexport function parseTelegramUpdate(\n\tupdate: unknown,\n\toptions?: { received_at?: string; allow_group_chats?: boolean }\n): ParseTelegramUpdateResult {\n\tif (!isPlainObject(update)) {\n\t\treturn { ok: false, reason: 'update_not_object' }\n\t}\n\tconst updateId = update['update_id']\n\tif (typeof updateId !== 'number') {\n\t\treturn { ok: false, reason: 'missing_update_id' }\n\t}\n\n\tconst receivedAt = options?.received_at ?? new Date().toISOString()\n\tconst allowGroups = options?.allow_group_chats ?? false\n\n\tconst message = asMessage(update['message']) ?? asMessage(update['edited_message'])\n\tif (message) {\n\t\treturn parseMessageUpdate(updateId, message, receivedAt, allowGroups, Boolean(update['edited_message']))\n\t}\n\n\tconst callback = update['callback_query']\n\tif (isPlainObject(callback)) {\n\t\treturn parseCallbackUpdate(updateId, callback, receivedAt, allowGroups)\n\t}\n\n\treturn { ok: false, reason: 'unsupported_update_type' }\n}\n\nfunction parseMessageUpdate(\n\tupdateId: number,\n\tmessage: Record<string, unknown>,\n\treceivedAt: string,\n\tallowGroups: boolean,\n\tedited: boolean\n): ParseTelegramUpdateResult {\n\tconst chat = message['chat']\n\tif (!isPlainObject(chat) || typeof chat['id'] !== 'number') {\n\t\treturn { ok: false, reason: 'missing_chat' }\n\t}\n\tconst chatType = isString(chat['type']) ? chat['type'] : undefined\n\tif (!allowGroups && chatType && chatType !== 'private') {\n\t\treturn { ok: false, reason: 'non_private_chat' }\n\t}\n\n\tconst from = message['from']\n\tconst userId = isPlainObject(from) && typeof from['id'] === 'number' ? String(from['id']) : undefined\n\tconst username = isPlainObject(from) && isString(from['username']) ? from['username'] : undefined\n\tconst messageId = typeof message['message_id'] === 'number' ? String(message['message_id']) : undefined\n\tconst text = firstString(message['text'], message['caption'])\n\tconst media = collectMedia(message)\n\tconst replyTo =\n\t\tisPlainObject(message['reply_to_message']) && typeof message['reply_to_message']['message_id'] === 'number'\n\t\t\t? String(message['reply_to_message']['message_id'])\n\t\t\t: undefined\n\tconst mediaGroupId = isString(message['media_group_id']) ? message['media_group_id'] : undefined\n\n\tif (!text && media.length === 0) {\n\t\treturn { ok: false, reason: 'empty_message' }\n\t}\n\n\tconst event: TelegramInboundEvent = {\n\t\tchannel: 'telegram',\n\t\tevent_id: String(updateId),\n\t\tchat_id: String(chat['id']),\n\t\traw_type: edited ? 'edited_message' : 'message',\n\t\treceived_at: receivedAt,\n\t\t...(userId && { user_id: userId }),\n\t\t...(username && { username }),\n\t\t...(messageId && { message_id: messageId }),\n\t\t...(text && { text }),\n\t\t...(media.length > 0 && { media }),\n\t\t...(replyTo && { reply_to: replyTo }),\n\t\t...(mediaGroupId && { media_group_id: mediaGroupId }),\n\t\t...(chatType && { chat_type: chatType })\n\t}\n\treturn { ok: true, event }\n}\n\nfunction parseCallbackUpdate(\n\tupdateId: number,\n\tcallback: Record<string, unknown>,\n\treceivedAt: string,\n\tallowGroups: boolean\n): ParseTelegramUpdateResult {\n\tconst message = asMessage(callback['message'])\n\tconst chat = message ? message['chat'] : undefined\n\tif (!isPlainObject(chat) || typeof chat['id'] !== 'number') {\n\t\treturn { ok: false, reason: 'callback_missing_chat' }\n\t}\n\tconst chatType = isString(chat['type']) ? chat['type'] : undefined\n\tif (!allowGroups && chatType && chatType !== 'private') {\n\t\treturn { ok: false, reason: 'non_private_chat' }\n\t}\n\n\tconst from = callback['from']\n\tconst userId = isPlainObject(from) && typeof from['id'] === 'number' ? String(from['id']) : undefined\n\tconst username = isPlainObject(from) && isString(from['username']) ? from['username'] : undefined\n\tconst callbackQueryId = isString(callback['id']) ? callback['id'] : undefined\n\tif (!callbackQueryId) {\n\t\treturn { ok: false, reason: 'callback_missing_id' }\n\t}\n\tconst callbackData = isString(callback['data']) ? callback['data'] : undefined\n\tconst messageId = message && typeof message['message_id'] === 'number' ? String(message['message_id']) : undefined\n\n\tconst event: TelegramInboundEvent = {\n\t\tchannel: 'telegram',\n\t\tevent_id: String(updateId),\n\t\tchat_id: String(chat['id']),\n\t\traw_type: 'callback_query',\n\t\treceived_at: receivedAt,\n\t\tcallback_query_id: callbackQueryId,\n\t\t...(userId && { user_id: userId }),\n\t\t...(username && { username }),\n\t\t...(messageId && { message_id: messageId }),\n\t\t...(callbackData && { callback_data: callbackData }),\n\t\t...(chatType && { chat_type: chatType })\n\t}\n\treturn { ok: true, event }\n}\n\nfunction asMessage(value: unknown): Record<string, unknown> | undefined {\n\treturn isPlainObject(value) ? value : undefined\n}\n\nfunction firstString(...values: unknown[]): string | undefined {\n\tfor (const value of values) {\n\t\tif (isString(value) && value.length > 0) return value\n\t}\n\treturn undefined\n}\n\nfunction collectMedia(message: Record<string, unknown>): TelegramInboundMedia[] {\n\tconst out: TelegramInboundMedia[] = []\n\n\tconst photo = message['photo']\n\tif (Array.isArray(photo) && photo.length > 0) {\n\t\tconst largest = photo[photo.length - 1]\n\t\tif (isPlainObject(largest) && isString(largest['file_id'])) {\n\t\t\tout.push({\n\t\t\t\tkind: 'photo',\n\t\t\t\tref: largest['file_id'],\n\t\t\t\t...(isString(largest['file_unique_id']) ? { unique_ref: largest['file_unique_id'] } : {}),\n\t\t\t\t...(typeof largest['file_size'] === 'number' ? { file_size: largest['file_size'] } : {}),\n\t\t\t\tmedia_type: 'image/jpeg'\n\t\t\t})\n\t\t}\n\t}\n\n\tfor (const key of ['document', 'audio', 'video', 'voice', 'video_note', 'animation', 'sticker'] as const) {\n\t\tconst item = message[key]\n\t\tif (!isPlainObject(item) || !isString(item['file_id'])) continue\n\t\tout.push({\n\t\t\tkind: key,\n\t\t\tref: item['file_id'],\n\t\t\t...(isString(item['file_unique_id']) ? { unique_ref: item['file_unique_id'] } : {}),\n\t\t\t...(typeof item['file_size'] === 'number' ? { file_size: item['file_size'] } : {}),\n\t\t\t...(isString(item['file_name']) ? { file_name: item['file_name'] } : {}),\n\t\t\t...(isString(item['mime_type']) ? { media_type: item['mime_type'] } : {})\n\t\t})\n\t}\n\n\treturn out\n}\n"],"mappings":"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"}