@rubytech/create-maxy-code 0.1.572 → 0.1.573

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 (306) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/config/brand.json +2 -2
  3. package/payload/platform/lib/routine-templates/dist/index.d.ts +2 -2
  4. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
  5. package/payload/platform/lib/routine-templates/dist/index.js +9 -1
  6. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
  7. package/payload/platform/lib/routine-templates/src/index.ts +14 -2
  8. package/payload/platform/plugins/admin/mcp/dist/index.js +4 -1
  9. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  10. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +39 -48
  11. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +10 -0
  12. package/payload/platform/plugins/docs/references/channel-wake-and-prompt.md +15 -47
  13. package/payload/platform/plugins/docs/references/telegram-guide.md +23 -0
  14. package/payload/platform/plugins/email/PLUGIN.md +1 -1
  15. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js +36 -5
  16. package/payload/platform/plugins/email/mcp/dist/__tests__/email-draft-send.test.js.map +1 -1
  17. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js +10 -5
  18. package/payload/platform/plugins/email/mcp/dist/__tests__/imap-drafts.test.js.map +1 -1
  19. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts +12 -6
  20. package/payload/platform/plugins/email/mcp/dist/lib/imap.d.ts.map +1 -1
  21. package/payload/platform/plugins/email/mcp/dist/lib/imap.js +18 -8
  22. package/payload/platform/plugins/email/mcp/dist/lib/imap.js.map +1 -1
  23. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts.map +1 -1
  24. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js +41 -10
  25. package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js.map +1 -1
  26. package/payload/platform/plugins/email/references/email-reference.md +12 -0
  27. package/payload/platform/plugins/scheduling/PLUGIN.md +4 -0
  28. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +78 -5
  29. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
  30. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +133 -2
  31. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
  32. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +11 -0
  33. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +30 -1
  35. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  36. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  37. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +8 -0
  38. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  39. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
  40. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +37 -6
  41. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
  42. package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +1 -1
  43. package/payload/platform/plugins/telegram/PLUGIN.md +14 -2
  44. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.d.ts +2 -0
  45. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.d.ts.map +1 -0
  46. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js +77 -0
  47. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js.map +1 -0
  48. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.d.ts +2 -0
  49. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.d.ts.map +1 -0
  50. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.js +49 -0
  51. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.js.map +1 -0
  52. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.d.ts +2 -0
  53. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.d.ts.map +1 -0
  54. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.js +25 -0
  55. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.js.map +1 -0
  56. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-tool.test.d.ts +2 -0
  57. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-tool.test.d.ts.map +1 -0
  58. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-tool.test.js +115 -0
  59. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-tool.test.js.map +1 -0
  60. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-api.test.d.ts +2 -0
  61. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-api.test.d.ts.map +1 -0
  62. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-api.test.js +83 -0
  63. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-api.test.js.map +1 -0
  64. package/payload/platform/plugins/telegram/mcp/dist/index.js +42 -0
  65. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
  66. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts +32 -0
  67. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts.map +1 -0
  68. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js +59 -0
  69. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js.map +1 -0
  70. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.d.ts +18 -0
  71. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.d.ts.map +1 -0
  72. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.js +35 -0
  73. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.js.map +1 -0
  74. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.d.ts +38 -0
  75. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.d.ts.map +1 -0
  76. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.js +21 -0
  77. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.js.map +1 -0
  78. package/payload/platform/plugins/telegram/mcp/dist/lib/bot-api.d.ts +24 -0
  79. package/payload/platform/plugins/telegram/mcp/dist/lib/bot-api.d.ts.map +1 -0
  80. package/payload/platform/plugins/telegram/mcp/dist/lib/bot-api.js +57 -0
  81. package/payload/platform/plugins/telegram/mcp/dist/lib/bot-api.js.map +1 -0
  82. package/payload/platform/plugins/telegram/mcp/dist/tools/api-census.d.ts +16 -0
  83. package/payload/platform/plugins/telegram/mcp/dist/tools/api-census.d.ts.map +1 -0
  84. package/payload/platform/plugins/telegram/mcp/dist/tools/api-census.js +34 -0
  85. package/payload/platform/plugins/telegram/mcp/dist/tools/api-census.js.map +1 -0
  86. package/payload/platform/plugins/telegram/mcp/dist/tools/api.d.ts +26 -0
  87. package/payload/platform/plugins/telegram/mcp/dist/tools/api.d.ts.map +1 -0
  88. package/payload/platform/plugins/telegram/mcp/dist/tools/api.js +80 -0
  89. package/payload/platform/plugins/telegram/mcp/dist/tools/api.js.map +1 -0
  90. package/payload/platform/plugins/telegram/skills/build/SKILL.md +110 -0
  91. package/payload/platform/plugins/telegram/skills/build/references/methods.md +219 -0
  92. package/payload/platform/scripts/check-no-esm-require.mjs +4 -0
  93. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  94. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +2 -0
  95. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  96. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  97. package/payload/platform/services/claude-session-manager/dist/http-server.js +32 -5
  98. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  99. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +12 -1
  100. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  101. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +13 -1
  102. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  103. package/payload/platform/services/telegram-channel/dist/jsonl.d.ts +8 -0
  104. package/payload/platform/services/telegram-channel/dist/jsonl.d.ts.map +1 -0
  105. package/payload/platform/services/telegram-channel/dist/jsonl.js +42 -0
  106. package/payload/platform/services/telegram-channel/dist/jsonl.js.map +1 -0
  107. package/payload/platform/services/telegram-channel/dist/notification.d.ts +0 -31
  108. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  109. package/payload/platform/services/telegram-channel/dist/notification.js +4 -33
  110. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  111. package/payload/platform/services/telegram-channel/dist/server.d.ts +0 -5
  112. package/payload/platform/services/telegram-channel/dist/server.d.ts.map +1 -1
  113. package/payload/platform/services/telegram-channel/dist/server.js +7 -101
  114. package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
  115. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +0 -66
  116. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  117. package/payload/platform/services/whatsapp-channel/dist/notification.js +2 -64
  118. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  119. package/payload/platform/services/whatsapp-channel/dist/server.d.ts +0 -12
  120. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
  121. package/payload/platform/services/whatsapp-channel/dist/server.js +15 -268
  122. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
  123. package/payload/server/public/activity.html +6 -6
  124. package/payload/server/public/agents.html +5 -5
  125. package/payload/server/public/assets/{AdminLoginScreens-CMdj1W5p.js → AdminLoginScreens-Dp6k1XgD.js} +1 -1
  126. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.br +0 -0
  127. package/payload/server/public/assets/AdminLoginScreens-Dp6k1XgD.js.gz +0 -0
  128. package/payload/server/public/assets/{AdminShell-CZcaW3BQ.js → AdminShell-D-wB90c3.js} +1 -1
  129. package/payload/server/public/assets/AdminShell-D-wB90c3.js.br +0 -0
  130. package/payload/server/public/assets/AdminShell-D-wB90c3.js.gz +0 -0
  131. package/payload/server/public/assets/{activity-CAhibgb-.js → activity-BJxhblz-.js} +1 -1
  132. package/payload/server/public/assets/activity-BJxhblz-.js.br +0 -0
  133. package/payload/server/public/assets/activity-BJxhblz-.js.gz +0 -0
  134. package/payload/server/public/assets/{admin-xEXv3w9e.js → admin-DzEi8shs.js} +1 -1
  135. package/payload/server/public/assets/admin-DzEi8shs.js.br +0 -0
  136. package/payload/server/public/assets/admin-DzEi8shs.js.gz +0 -0
  137. package/payload/server/public/assets/{agents-CiAmzTaT.js → agents-DTL8kjfD.js} +1 -1
  138. package/payload/server/public/assets/agents-DTL8kjfD.js.br +0 -0
  139. package/payload/server/public/assets/agents-DTL8kjfD.js.gz +0 -0
  140. package/payload/server/public/assets/{browser-D36BiYhS.js → browser-UZp75zhx.js} +1 -1
  141. package/payload/server/public/assets/browser-UZp75zhx.js.br +0 -0
  142. package/payload/server/public/assets/browser-UZp75zhx.js.gz +0 -0
  143. package/payload/server/public/assets/{calendar-CJAM-iXn.js → calendar-Dfo0O2K_.js} +1 -1
  144. package/payload/server/public/assets/calendar-Dfo0O2K_.js.br +0 -0
  145. package/payload/server/public/assets/calendar-Dfo0O2K_.js.gz +0 -0
  146. package/payload/server/public/assets/chat-ByJAvEWZ.js +1 -0
  147. package/payload/server/public/assets/chat-ByJAvEWZ.js.br +0 -0
  148. package/payload/server/public/assets/chat-ByJAvEWZ.js.gz +0 -0
  149. package/payload/server/public/assets/chevron-left-iG7sYNm7.js +1 -0
  150. package/payload/server/public/assets/chevron-left-iG7sYNm7.js.br +0 -0
  151. package/payload/server/public/assets/clock-xSs0UF10.js +1 -0
  152. package/payload/server/public/assets/clock-xSs0UF10.js.br +0 -0
  153. package/payload/server/public/assets/clock-xSs0UF10.js.gz +0 -0
  154. package/payload/server/public/assets/{copy-axBe92iY.js → copy-CGI2jioK.js} +1 -1
  155. package/payload/server/public/assets/copy-CGI2jioK.js.br +0 -0
  156. package/payload/server/public/assets/copy-CGI2jioK.js.gz +0 -0
  157. package/payload/server/public/assets/data-dvwK4BcP.js +1 -0
  158. package/payload/server/public/assets/data-dvwK4BcP.js.br +0 -0
  159. package/payload/server/public/assets/data-dvwK4BcP.js.gz +0 -0
  160. package/payload/server/public/assets/{dispatch-D_i2ko7K.js → dispatch-Dx9-ty1K.js} +1 -1
  161. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.br +0 -0
  162. package/payload/server/public/assets/dispatch-Dx9-ty1K.js.gz +0 -0
  163. package/payload/server/public/assets/{field-DFgkqq1P.js → field-D-P6CsWA.js} +1 -1
  164. package/payload/server/public/assets/field-D-P6CsWA.js.br +0 -0
  165. package/payload/server/public/assets/field-D-P6CsWA.js.gz +0 -0
  166. package/payload/server/public/assets/{file-text-CEFoq0Je.js → file-text-RWintp9q.js} +1 -1
  167. package/payload/server/public/assets/file-text-RWintp9q.js.br +0 -0
  168. package/payload/server/public/assets/file-text-RWintp9q.js.gz +0 -0
  169. package/payload/server/public/assets/{graph-BrpbilNr.js → graph-CpBlfYrJ.js} +1 -1
  170. package/payload/server/public/assets/graph-CpBlfYrJ.js.br +0 -0
  171. package/payload/server/public/assets/graph-CpBlfYrJ.js.gz +0 -0
  172. package/payload/server/public/assets/{graph-labels-BtmcWzo7.js → graph-labels-BOMyPppX.js} +1 -1
  173. package/payload/server/public/assets/graph-labels-BOMyPppX.js.br +0 -0
  174. package/payload/server/public/assets/graph-labels-BOMyPppX.js.gz +0 -0
  175. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css +1 -0
  176. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.br +0 -0
  177. package/payload/server/public/assets/jsx-runtime-DxsQ5Y-z.css.gz +0 -0
  178. package/payload/server/public/assets/{operator-Dl7dJt1G.js → operator-DFgW6GiH.js} +1 -1
  179. package/payload/server/public/assets/operator-DFgW6GiH.js.br +0 -0
  180. package/payload/server/public/assets/operator-DFgW6GiH.js.gz +0 -0
  181. package/payload/server/public/assets/{page-nx31Ij0T.js → page-BRShHSH0.js} +1 -1
  182. package/payload/server/public/assets/page-BRShHSH0.js.br +0 -0
  183. package/payload/server/public/assets/page-BRShHSH0.js.gz +0 -0
  184. package/payload/server/public/assets/{page-zC66xzNT.js → page-BbBCu9iP.js} +5 -5
  185. package/payload/server/public/assets/page-BbBCu9iP.js.br +0 -0
  186. package/payload/server/public/assets/page-BbBCu9iP.js.gz +0 -0
  187. package/payload/server/public/assets/play-BJxUaf6-.js +1 -0
  188. package/payload/server/public/assets/play-BJxUaf6-.js.br +0 -0
  189. package/payload/server/public/assets/play-BJxUaf6-.js.gz +0 -0
  190. package/payload/server/public/assets/{public-DEKnH5Q0.js → public-DkObqkzL.js} +1 -1
  191. package/payload/server/public/assets/public-DkObqkzL.js.br +0 -0
  192. package/payload/server/public/assets/public-DkObqkzL.js.gz +0 -0
  193. package/payload/server/public/assets/{rotate-ccw-CBex8gon.js → rotate-ccw-DgMO69nh.js} +1 -1
  194. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.br +0 -0
  195. package/payload/server/public/assets/rotate-ccw-DgMO69nh.js.gz +0 -0
  196. package/payload/server/public/assets/routines-D9kvg_Xu.js +2 -0
  197. package/payload/server/public/assets/routines-D9kvg_Xu.js.br +0 -0
  198. package/payload/server/public/assets/routines-D9kvg_Xu.js.gz +0 -0
  199. package/payload/server/public/assets/{skills-BmxjPOmq.js → skills-l5I9HZ3D.js} +1 -1
  200. package/payload/server/public/assets/skills-l5I9HZ3D.js.br +0 -0
  201. package/payload/server/public/assets/skills-l5I9HZ3D.js.gz +0 -0
  202. package/payload/server/public/assets/{tasks-BTFYO9vT.js → tasks-C2qJMv6i.js} +1 -1
  203. package/payload/server/public/assets/tasks-C2qJMv6i.js.br +0 -0
  204. package/payload/server/public/assets/tasks-C2qJMv6i.js.gz +0 -0
  205. package/payload/server/public/assets/{triangle-alert-px1YRJJ7.js → triangle-alert-BnC67uSs.js} +1 -1
  206. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.br +0 -0
  207. package/payload/server/public/assets/triangle-alert-BnC67uSs.js.gz +0 -0
  208. package/payload/server/public/assets/{useCopyFeedback-nMXwRcDX.js → useCopyFeedback-1RmgkTFh.js} +1 -1
  209. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.br +0 -0
  210. package/payload/server/public/assets/useCopyFeedback-1RmgkTFh.js.gz +0 -0
  211. package/payload/server/public/assets/{useMediaQuery-DjbOTk2X.js → useMediaQuery-BQslddHQ.js} +1 -1
  212. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.br +0 -0
  213. package/payload/server/public/assets/useMediaQuery-BQslddHQ.js.gz +0 -0
  214. package/payload/server/public/assets/{useVoiceRecorder-Cx7AOmib.js → useVoiceRecorder-BeZNQEC4.js} +1 -1
  215. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.br +0 -0
  216. package/payload/server/public/assets/useVoiceRecorder-BeZNQEC4.js.gz +0 -0
  217. package/payload/server/public/assets/{wrench-Cexvlx6J.js → wrench-D4ufQG6C.js} +1 -1
  218. package/payload/server/public/assets/wrench-D4ufQG6C.js.br +0 -0
  219. package/payload/server/public/assets/wrench-D4ufQG6C.js.gz +0 -0
  220. package/payload/server/public/browser.html +5 -5
  221. package/payload/server/public/calendar.html +8 -8
  222. package/payload/server/public/chat.html +14 -14
  223. package/payload/server/public/data.html +12 -12
  224. package/payload/server/public/dispatch.html +5 -5
  225. package/payload/server/public/field.html +3 -3
  226. package/payload/server/public/graph.html +10 -10
  227. package/payload/server/public/index.html +14 -14
  228. package/payload/server/public/operator.html +16 -16
  229. package/payload/server/public/public.html +14 -14
  230. package/payload/server/public/routines.html +8 -8
  231. package/payload/server/public/skills.html +6 -6
  232. package/payload/server/public/tasks.html +7 -7
  233. package/payload/server/server.js +739 -449
  234. package/payload/server/public/assets/AdminLoginScreens-CMdj1W5p.js.br +0 -0
  235. package/payload/server/public/assets/AdminLoginScreens-CMdj1W5p.js.gz +0 -0
  236. package/payload/server/public/assets/AdminShell-CZcaW3BQ.js.br +0 -0
  237. package/payload/server/public/assets/AdminShell-CZcaW3BQ.js.gz +0 -0
  238. package/payload/server/public/assets/activity-CAhibgb-.js.br +0 -0
  239. package/payload/server/public/assets/activity-CAhibgb-.js.gz +0 -0
  240. package/payload/server/public/assets/admin-xEXv3w9e.js.br +0 -0
  241. package/payload/server/public/assets/admin-xEXv3w9e.js.gz +0 -0
  242. package/payload/server/public/assets/agents-CiAmzTaT.js.br +0 -0
  243. package/payload/server/public/assets/agents-CiAmzTaT.js.gz +0 -0
  244. package/payload/server/public/assets/browser-D36BiYhS.js.br +0 -0
  245. package/payload/server/public/assets/browser-D36BiYhS.js.gz +0 -0
  246. package/payload/server/public/assets/calendar-CJAM-iXn.js.br +0 -0
  247. package/payload/server/public/assets/calendar-CJAM-iXn.js.gz +0 -0
  248. package/payload/server/public/assets/chat-DhZSvtZK.js +0 -1
  249. package/payload/server/public/assets/chat-DhZSvtZK.js.br +0 -0
  250. package/payload/server/public/assets/chat-DhZSvtZK.js.gz +0 -0
  251. package/payload/server/public/assets/chevron-left-CXEcNlc3.js +0 -1
  252. package/payload/server/public/assets/chevron-left-CXEcNlc3.js.br +0 -0
  253. package/payload/server/public/assets/clock-DdxIJwTr.js +0 -1
  254. package/payload/server/public/assets/clock-DdxIJwTr.js.br +0 -0
  255. package/payload/server/public/assets/clock-DdxIJwTr.js.gz +0 -0
  256. package/payload/server/public/assets/copy-axBe92iY.js.br +0 -0
  257. package/payload/server/public/assets/copy-axBe92iY.js.gz +0 -0
  258. package/payload/server/public/assets/data-DUvkI-zq.js +0 -1
  259. package/payload/server/public/assets/data-DUvkI-zq.js.br +0 -0
  260. package/payload/server/public/assets/data-DUvkI-zq.js.gz +0 -0
  261. package/payload/server/public/assets/dispatch-D_i2ko7K.js.br +0 -0
  262. package/payload/server/public/assets/dispatch-D_i2ko7K.js.gz +0 -0
  263. package/payload/server/public/assets/field-DFgkqq1P.js.br +0 -0
  264. package/payload/server/public/assets/field-DFgkqq1P.js.gz +0 -0
  265. package/payload/server/public/assets/file-text-CEFoq0Je.js.br +0 -0
  266. package/payload/server/public/assets/file-text-CEFoq0Je.js.gz +0 -0
  267. package/payload/server/public/assets/graph-BrpbilNr.js.br +0 -0
  268. package/payload/server/public/assets/graph-BrpbilNr.js.gz +0 -0
  269. package/payload/server/public/assets/graph-labels-BtmcWzo7.js.br +0 -0
  270. package/payload/server/public/assets/graph-labels-BtmcWzo7.js.gz +0 -0
  271. package/payload/server/public/assets/jsx-runtime-XuYKjgVb.css +0 -1
  272. package/payload/server/public/assets/jsx-runtime-XuYKjgVb.css.br +0 -0
  273. package/payload/server/public/assets/jsx-runtime-XuYKjgVb.css.gz +0 -0
  274. package/payload/server/public/assets/operator-Dl7dJt1G.js.br +0 -3
  275. package/payload/server/public/assets/operator-Dl7dJt1G.js.gz +0 -0
  276. package/payload/server/public/assets/page-nx31Ij0T.js.br +0 -0
  277. package/payload/server/public/assets/page-nx31Ij0T.js.gz +0 -0
  278. package/payload/server/public/assets/page-zC66xzNT.js.br +0 -0
  279. package/payload/server/public/assets/page-zC66xzNT.js.gz +0 -0
  280. package/payload/server/public/assets/play-MbU8O2iC.js +0 -1
  281. package/payload/server/public/assets/play-MbU8O2iC.js.br +0 -0
  282. package/payload/server/public/assets/play-MbU8O2iC.js.gz +0 -0
  283. package/payload/server/public/assets/public-DEKnH5Q0.js.br +0 -0
  284. package/payload/server/public/assets/public-DEKnH5Q0.js.gz +0 -0
  285. package/payload/server/public/assets/rotate-ccw-CBex8gon.js.br +0 -0
  286. package/payload/server/public/assets/rotate-ccw-CBex8gon.js.gz +0 -0
  287. package/payload/server/public/assets/routines-BqCmbvFJ.js +0 -2
  288. package/payload/server/public/assets/routines-BqCmbvFJ.js.br +0 -0
  289. package/payload/server/public/assets/routines-BqCmbvFJ.js.gz +0 -0
  290. package/payload/server/public/assets/skills-BmxjPOmq.js.br +0 -0
  291. package/payload/server/public/assets/skills-BmxjPOmq.js.gz +0 -0
  292. package/payload/server/public/assets/tasks-BTFYO9vT.js.br +0 -0
  293. package/payload/server/public/assets/tasks-BTFYO9vT.js.gz +0 -0
  294. package/payload/server/public/assets/triangle-alert-px1YRJJ7.js.br +0 -0
  295. package/payload/server/public/assets/triangle-alert-px1YRJJ7.js.gz +0 -0
  296. package/payload/server/public/assets/useCopyFeedback-nMXwRcDX.js.br +0 -0
  297. package/payload/server/public/assets/useCopyFeedback-nMXwRcDX.js.gz +0 -0
  298. package/payload/server/public/assets/useMediaQuery-DjbOTk2X.js.br +0 -0
  299. package/payload/server/public/assets/useMediaQuery-DjbOTk2X.js.gz +0 -0
  300. package/payload/server/public/assets/useVoiceRecorder-Cx7AOmib.js.br +0 -0
  301. package/payload/server/public/assets/useVoiceRecorder-Cx7AOmib.js.gz +0 -0
  302. package/payload/server/public/assets/wrench-Cexvlx6J.js.br +0 -0
  303. package/payload/server/public/assets/wrench-Cexvlx6J.js.gz +0 -0
  304. /package/payload/server/public/assets/{jsx-runtime-C5Hcfj84.js → jsx-runtime-5lmxFBIw.js} +0 -0
  305. /package/payload/server/public/assets/{jsx-runtime-C5Hcfj84.js.br → jsx-runtime-5lmxFBIw.js.br} +0 -0
  306. /package/payload/server/public/assets/{jsx-runtime-C5Hcfj84.js.gz → jsx-runtime-5lmxFBIw.js.gz} +0 -0
@@ -0,0 +1,24 @@
1
+ /** Telegram's own response envelope, relayed to the caller unaltered. `ok:false`
2
+ * carries `description` and `error_code`; wrapping or rewording either would
3
+ * hide what Telegram actually said. */
4
+ export interface TelegramEnvelope {
5
+ ok: boolean;
6
+ result?: unknown;
7
+ description?: string;
8
+ error_code?: number;
9
+ }
10
+ export interface CallOptions {
11
+ /** Bot API field name to absolute local path. Presence switches the request
12
+ * to multipart. Named explicitly by the caller rather than sniffed out of
13
+ * `params`, because a legitimate caption can begin with a slash. */
14
+ files?: Record<string, string>;
15
+ timeoutMs?: number;
16
+ fetchImpl?: typeof fetch;
17
+ }
18
+ /** Every Bot API method is this one URL shape, which is what makes a single
19
+ * passthrough tool able to reach all 185 of them.
20
+ *
21
+ * NEVER log the return value: it carries the bot token. Callers log `method=`. */
22
+ export declare function buildMethodUrl(token: string, method: string): string;
23
+ export declare function callBotApi(token: string, method: string, params: Record<string, unknown>, opts?: CallOptions): Promise<TelegramEnvelope>;
24
+ //# sourceMappingURL=bot-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-api.d.ts","sourceRoot":"","sources":["../../src/lib/bot-api.ts"],"names":[],"mappings":"AAKA;;wCAEwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;yEAEqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;mFAGmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAwB3B"}
@@ -0,0 +1,57 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { basename } from "node:path";
3
+ const TELEGRAM_API = "https://api.telegram.org";
4
+ /** Every Bot API method is this one URL shape, which is what makes a single
5
+ * passthrough tool able to reach all 185 of them.
6
+ *
7
+ * NEVER log the return value: it carries the bot token. Callers log `method=`. */
8
+ export function buildMethodUrl(token, method) {
9
+ return `${TELEGRAM_API}/bot${token}/${method}`;
10
+ }
11
+ export async function callBotApi(token, method, params, opts = {}) {
12
+ const doFetch = opts.fetchImpl ?? fetch;
13
+ const controller = new AbortController();
14
+ const timer = setTimeout(() => controller.abort(), opts.timeoutMs ?? 30_000);
15
+ try {
16
+ const init = opts.files
17
+ ? {
18
+ method: "POST",
19
+ // No Content-Type header: setting it by hand strips the multipart
20
+ // boundary the runtime generates, and Telegram rejects the body.
21
+ body: toFormData(params, opts.files),
22
+ signal: controller.signal,
23
+ }
24
+ : {
25
+ method: "POST",
26
+ headers: { "Content-Type": "application/json" },
27
+ body: JSON.stringify(params),
28
+ signal: controller.signal,
29
+ };
30
+ const res = await doFetch(buildMethodUrl(token, method), init);
31
+ return (await res.json());
32
+ }
33
+ finally {
34
+ clearTimeout(timer);
35
+ }
36
+ }
37
+ /** Scalars go on as fields, objects as their JSON text (which is how the Bot
38
+ * API takes reply_markup and friends in a multipart request), and each named
39
+ * file is read from disk as one part.
40
+ *
41
+ * A null or undefined value is OMITTED, not stringified. JSON.stringify drops
42
+ * it in the JSON branch, so sending the literal text "null" here would make
43
+ * the two branches disagree about what an absent parameter means, and Telegram
44
+ * would read a four-character caption. */
45
+ function toFormData(params, files) {
46
+ const form = new FormData();
47
+ for (const [key, value] of Object.entries(params)) {
48
+ if (value === null || value === undefined)
49
+ continue;
50
+ form.set(key, typeof value === "string" ? value : JSON.stringify(value));
51
+ }
52
+ for (const [field, path] of Object.entries(files)) {
53
+ form.set(field, new Blob([readFileSync(path)]), basename(path));
54
+ }
55
+ return form;
56
+ }
57
+ //# sourceMappingURL=bot-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-api.js","sourceRoot":"","sources":["../../src/lib/bot-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAqBhD;;;mFAGmF;AACnF,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,MAAc;IAC1D,OAAO,GAAG,YAAY,OAAO,KAAK,IAAI,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,MAAc,EACd,MAA+B,EAC/B,OAAoB,EAAE;IAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,IAAI,GAAgB,IAAI,CAAC,KAAK;YAClC,CAAC,CAAC;gBACE,MAAM,EAAE,MAAM;gBACd,kEAAkE;gBAClE,iEAAiE;gBACjE,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;gBACpC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC5B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;QACN,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;;2CAO2C;AAC3C,SAAS,UAAU,CAAC,MAA+B,EAAE,KAA6B;IAChF,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface CensusDeps {
2
+ log: (line: string) => void;
3
+ fetchImpl?: typeof fetch;
4
+ }
5
+ export interface CensusResult {
6
+ text: string;
7
+ isError: boolean;
8
+ }
9
+ /** The network half, for a scheduled routine rather than for boot.
10
+ *
11
+ * This is the standing check for a failure that emits no event: a method
12
+ * Telegram renames or removes stays in the shipped list and 404s per call,
13
+ * and nothing anywhere says so until somebody calls it. Reconciling the
14
+ * shipped list against the live page needs no call and no reproduction. */
15
+ export declare function telegramApiCensus(deps: CensusDeps): Promise<CensusResult>;
16
+ //# sourceMappingURL=api-census.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-census.d.ts","sourceRoot":"","sources":["../../src/tools/api-census.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;4EAK4E;AAC5E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CA2B/E"}
@@ -0,0 +1,34 @@
1
+ import { CENSUS_TAG, diffMethods, extractMethodNames } from "../lib/api-census.js";
2
+ import { API_VERSION, BOT_API_METHODS } from "../lib/api-methods.js";
3
+ const BOT_API_DOC = "https://core.telegram.org/bots/api";
4
+ /** The network half, for a scheduled routine rather than for boot.
5
+ *
6
+ * This is the standing check for a failure that emits no event: a method
7
+ * Telegram renames or removes stays in the shipped list and 404s per call,
8
+ * and nothing anywhere says so until somebody calls it. Reconciling the
9
+ * shipped list against the live page needs no call and no reproduction. */
10
+ export async function telegramApiCensus(deps) {
11
+ const doFetch = deps.fetchImpl ?? fetch;
12
+ let html;
13
+ try {
14
+ const res = await doFetch(BOT_API_DOC);
15
+ html = await res.text();
16
+ }
17
+ catch (err) {
18
+ const reason = err instanceof Error ? err.message : String(err);
19
+ deps.log(`${CENSUS_TAG} op=error reason="${reason}"`);
20
+ return { text: `Could not read ${BOT_API_DOC}: ${reason}`, isError: true };
21
+ }
22
+ const live = extractMethodNames(html);
23
+ const { missing, added } = diffMethods(live);
24
+ const line = `${CENSUS_TAG} apiVersion=${API_VERSION} methods=${live.length} shipped=${BOT_API_METHODS.length} ` +
25
+ `missing=${missing.join(",")} added=${added.join(",")}`;
26
+ deps.log(line);
27
+ const verdict = missing.length === 0 && added.length === 0
28
+ ? "No drift: the shipped method list matches the live Bot API page."
29
+ : `Drift found. Missing (shipped here, gone from the page): ${missing.join(", ") || "none"}. ` +
30
+ `Added (on the page, absent here): ${added.join(", ") || "none"}. ` +
31
+ `Regenerate lib/api-methods.ts and skills/build/references/methods.md together; the parity test holds them level.`;
32
+ return { text: `${line}\n\n${verdict}`, isError: false };
33
+ }
34
+ //# sourceMappingURL=api-census.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-census.js","sourceRoot":"","sources":["../../src/tools/api-census.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAYzD;;;;;4EAK4E;AAC5E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAgB;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACxC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,qBAAqB,MAAM,GAAG,CAAC,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,kBAAkB,WAAW,KAAK,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GACR,GAAG,UAAU,eAAe,WAAW,YAAY,IAAI,CAAC,MAAM,YAAY,eAAe,CAAC,MAAM,GAAG;QACnG,WAAW,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEf,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACxC,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,4DAA4D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI;YAC5F,qCAAqC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI;YACnE,kHAAkH,CAAC;IAEzH,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,OAAO,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,26 @@
1
+ export interface ApiParams {
2
+ botId: string;
3
+ method: string;
4
+ params?: Record<string, unknown>;
5
+ files?: Record<string, string>;
6
+ timeoutMs?: number;
7
+ }
8
+ export interface ApiDeps {
9
+ platformRoot: string;
10
+ accountId: string | undefined;
11
+ /** Per-invocation id threading one call's lines together. */
12
+ callId: string;
13
+ log: (line: string) => void;
14
+ fetchImpl?: typeof fetch;
15
+ }
16
+ export interface ApiResult {
17
+ ok: boolean;
18
+ text: string;
19
+ isError: boolean;
20
+ }
21
+ /** One tool for all 185 Bot API methods. Resolution order is: no account, then
22
+ * the refusal list, then the bot's token, then the call itself. Each stop
23
+ * emits its own `op=` line, so a failure is diagnosable from logs without
24
+ * reproducing it. */
25
+ export declare function telegramApi(p: ApiParams, deps: ApiDeps): Promise<ApiResult>;
26
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/tools/api.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;sBAGsB;AACtB,wBAAsB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CA0EjF"}
@@ -0,0 +1,80 @@
1
+ import { checkMethod } from "../lib/api-guard.js";
2
+ import { callBotApi } from "../lib/bot-api.js";
3
+ import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
4
+ const TAG = "[telegram-api]";
5
+ /** One tool for all 185 Bot API methods. Resolution order is: no account, then
6
+ * the refusal list, then the bot's token, then the call itself. Each stop
7
+ * emits its own `op=` line, so a failure is diagnosable from logs without
8
+ * reproducing it. */
9
+ export async function telegramApi(p, deps) {
10
+ const { callId, log } = deps;
11
+ if (!deps.accountId) {
12
+ log(`${TAG} op=no-account callId=${callId} method=${p.method}`);
13
+ return {
14
+ ok: false,
15
+ isError: true,
16
+ text: "telegram-api cannot execute: this MCP instance was launched without ACCOUNT_ID " +
17
+ "(plugin-system metadata-only mode). Per-account bot tokens require ACCOUNT_ID at spawn.",
18
+ };
19
+ }
20
+ const verdict = checkMethod(p.method);
21
+ if (!verdict.allowed) {
22
+ log(`${TAG} op=refused callId=${callId} method=${p.method} reason=${verdict.reason}`);
23
+ return {
24
+ ok: false,
25
+ isError: true,
26
+ text: `telegram-api will not call ${p.method}: ${refusalProse(verdict.reason)} ` +
27
+ `That capability belongs to ${verdict.owner}.`,
28
+ };
29
+ }
30
+ const token = resolveBotToken(deps.platformRoot, deps.accountId, p.botId);
31
+ if (!token) {
32
+ const known = listRegisteredBots(deps.platformRoot, deps.accountId);
33
+ log(`${TAG} op=no-bot callId=${callId} account=${deps.accountId} botId=${p.botId} registered=${known.length}`);
34
+ return {
35
+ ok: false,
36
+ isError: true,
37
+ text: known.length
38
+ ? `No bot "${p.botId}" is registered on this account. Registered: ${known
39
+ .map((b) => `${b.id} (${b.role})`)
40
+ .join(", ")}.`
41
+ : "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
42
+ };
43
+ }
44
+ const fileCount = p.files ? Object.keys(p.files).length : 0;
45
+ log(`${TAG} op=call callId=${callId} method=${p.method} listed=${verdict.listed} files=${fileCount}`);
46
+ let envelope;
47
+ try {
48
+ envelope = await callBotApi(token, p.method, p.params ?? {}, {
49
+ ...(p.files ? { files: p.files } : {}),
50
+ ...(p.timeoutMs ? { timeoutMs: p.timeoutMs } : {}),
51
+ ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),
52
+ });
53
+ }
54
+ catch (err) {
55
+ const reason = err instanceof Error ? err.message : String(err);
56
+ log(`${TAG} op=error callId=${callId} method=${p.method} reason="${reason}"`);
57
+ return { ok: false, isError: true, text: `telegram-api could not reach Telegram: ${reason}` };
58
+ }
59
+ if (!envelope.ok) {
60
+ log(`${TAG} op=result callId=${callId} method=${p.method} ok=false errorCode=${envelope.error_code ?? "-"} description="${envelope.description ?? ""}"`);
61
+ return {
62
+ ok: false,
63
+ isError: true,
64
+ text: `Telegram refused ${p.method} (${envelope.error_code ?? "no code"}): ${envelope.description ?? "no description"}`,
65
+ };
66
+ }
67
+ log(`${TAG} op=result callId=${callId} method=${p.method} ok=true`);
68
+ return { ok: true, isError: false, text: JSON.stringify(envelope.result ?? true, null, 2) };
69
+ }
70
+ function refusalProse(reason) {
71
+ switch (reason) {
72
+ case "owned-by-webhook-register":
73
+ return "webhook state is registered on the maxy edge-admitted path and stamped with the bot id, so a raw call here would silently repoint or stop every inbound message.";
74
+ case "mutually-exclusive-with-webhook":
75
+ return "getUpdates and webhooks are Telegram's two mutually exclusive ways of receiving updates, and it will not work while a webhook is set.";
76
+ default:
77
+ return "it moves the bot off the cloud Bot API server.";
78
+ }
79
+ }
80
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/tools/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE9E,MAAM,GAAG,GAAG,gBAAgB,CAAC;AAyB7B;;;sBAGsB;AACtB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAY,EAAE,IAAa;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,GAAG,yBAAyB,MAAM,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EACF,iFAAiF;gBACjF,yFAAyF;SAC5F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,GAAG,GAAG,sBAAsB,MAAM,WAAW,CAAC,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EACF,8BAA8B,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;gBAC1E,8BAA8B,OAAO,CAAC,KAAK,GAAG;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,GAAG,CACD,GAAG,GAAG,qBAAqB,MAAM,YAAY,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,KAAK,eAAe,KAAK,CAAC,MAAM,EAAE,CAC1G,CAAC;QACF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK,CAAC,MAAM;gBAChB,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,gDAAgD,KAAK;qBACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;qBACjC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAClB,CAAC,CAAC,wFAAwF;SAC7F,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,GAAG,CACD,GAAG,GAAG,mBAAmB,MAAM,WAAW,CAAC,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,UAAU,SAAS,EAAE,CACjG,CAAC;IAEF,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;YAC3D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,GAAG,CAAC,GAAG,GAAG,oBAAoB,MAAM,WAAW,CAAC,CAAC,MAAM,YAAY,MAAM,GAAG,CAAC,CAAC;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,0CAA0C,MAAM,EAAE,EAAE,CAAC;IAChG,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,GAAG,CACD,GAAG,GAAG,qBAAqB,MAAM,WAAW,CAAC,CAAC,MAAM,uBAAuB,QAAQ,CAAC,UAAU,IAAI,GAAG,iBAAiB,QAAQ,CAAC,WAAW,IAAI,EAAE,GAAG,CACpJ,CAAC;QACF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,oBAAoB,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,IAAI,SAAS,MAAM,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE;SACxH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,GAAG,GAAG,qBAAqB,MAAM,WAAW,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC;IACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,2BAA2B;YAC9B,OAAO,kKAAkK,CAAC;QAC5K,KAAK,iCAAiC;YACpC,OAAO,uIAAuI,CAAC;QACjJ;YACE,OAAO,gDAAgD,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: build
3
+ description: Build your own Telegram functionality on this install — cards with buttons, editing a card in place, answering a button press, opening a Mini App inside the chat, uploading files, and reaching any of the 185 Bot API methods through telegram-api. Use when the operator wants Telegram to do something the four named tools do not already do.
4
+ ---
5
+
6
+ # Build a Telegram surface
7
+
8
+ The bot is already connected (that is the `telegram:configure` skill). This skill is about what you
9
+ build on top of it.
10
+
11
+ ## When to activate
12
+
13
+ The operator wants Telegram to do something specific: a menu of buttons, a status card that updates
14
+ itself, a form, a photo upload, a pinned message, a poll, a Mini App. Also activate when they ask
15
+ "can Telegram do X" — the answer is in `references/methods.md` (all 185 method names by section),
16
+ and this skill says how to call it.
17
+
18
+ ## What you have
19
+
20
+ Four named tools for the common paths, and one passthrough for everything else.
21
+
22
+ | Tool | Use it for |
23
+ |---|---|
24
+ | `mcp__telegram__message` | Sending text, with an optional inline keyboard |
25
+ | `mcp__telegram__message-history` | Reading what arrived |
26
+ | `mcp__telegram__telegram-webhook-register` | Registering a bot's webhook. The only sanctioned path |
27
+ | `mcp__telegram__telegram-menu-button` | The permanent Mini App button in a bot's chats |
28
+ | `mcp__telegram__telegram-api` | **Any** Bot API method by name |
29
+ | `mcp__telegram__telegram-api-census` | Checking the shipped method list against the live API |
30
+
31
+ `telegram-api` takes `botId` (never a token), `method`, `params`, and optionally `files` and
32
+ `timeoutMs`. Field names inside `params` are Telegram's own snake_case.
33
+
34
+ ## The five methods it will not call
35
+
36
+ Each refusal names the tool that owns the capability instead.
37
+
38
+ | Method | Why | Use instead |
39
+ |---|---|---|
40
+ | `setWebhook`, `deleteWebhook` | Webhook state is registered on the one path the maxy edge admits, stamped with the bot id. A raw call silently repoints or stops every inbound message | `telegram-webhook-register` |
41
+ | `getUpdates` | Telegram's two ways of receiving updates are mutually exclusive, and this one does not work while a webhook is set | The webhook already delivers inbound |
42
+ | `logOut`, `close` | Both move the bot off the cloud Bot API server | Nothing. Do not do this |
43
+
44
+ ## Five things people actually build
45
+
46
+ ### 1. A card with buttons
47
+
48
+ Use `message` with `inlineKeyboard`. `callbackData` is what comes back on a press, capped by
49
+ Telegram at 1 to 64 bytes; longer data is refused with nothing in our logs to explain it. Put an id
50
+ in it, not a sentence.
51
+
52
+ ```
53
+ message channel=telegram botId=<id> chatId=<chat> text="Job 4102, Ladywell Prospect"
54
+ inlineKeyboard=[[{text:"Accept", callbackData:"j4102:accept"},
55
+ {text:"On site", callbackData:"j4102:onsite"}]]
56
+ ```
57
+
58
+ ### 2. Changing that card in place
59
+
60
+ A second `message` posts a new card and leaves the stale one above it. Editing keeps one card:
61
+
62
+ ```
63
+ telegram-api botId=<id> method=editMessageText
64
+ params={chat_id:<chat>, message_id:<id of the card>, text:"Job 4102 — on site",
65
+ reply_markup:{inline_keyboard:[[{text:"Complete", callback_data:"j4102:done"}]]}}
66
+ ```
67
+
68
+ Telegram answers `ok:false` with `Bad Request: message is not modified` when the new text and markup
69
+ are identical to the old. That is not an error to retry; it means the edit was a no-op.
70
+
71
+ ### 3. Answering the press
72
+
73
+ A press spins Telegram's own progress indicator for 15 seconds unless the bot answers. On this
74
+ install the inbound route already answers every press, including refusals, so you do not normally
75
+ call this yourself. When you build a surface that answers out of band, the method is
76
+ `answerCallbackQuery` with the `callback_query_id`, and `show_alert:true` turns the toast into a
77
+ dialog.
78
+
79
+ ### 4. A Mini App inside the chat
80
+
81
+ A `url` button sends the person out to the device browser, where Telegram passes no identity at all.
82
+ A `web_app` button opens the page inside Telegram and hands it `initData`. Use `webAppUrl` on a
83
+ `message` button, or `telegram-menu-button` for a permanent one.
84
+
85
+ Verify `initData` server-side before trusting a single field of it: the `hash` parameter is an
86
+ HMAC-SHA-256 of the data-check-string, keyed by the HMAC-SHA-256 of the bot token with the constant
87
+ `WebAppData`. Check `auth_date` too, or a captured `initData` replays for ever. The worked
88
+ implementation on this install is the field sheet's route; read it rather than writing a second one.
89
+
90
+ ### 5. Sending a file
91
+
92
+ `params` carries a `file_id` or an https URL as a plain string. A local file goes in `files`, which
93
+ switches the request to multipart:
94
+
95
+ ```
96
+ telegram-api botId=<id> method=sendPhoto
97
+ params={chat_id:<chat>, caption:"Before"} files={photo:"/abs/path/before.jpg"}
98
+ ```
99
+
100
+ A `file_id` Telegram gave you earlier is always cheaper than re-uploading the same bytes.
101
+
102
+ ## Reading the method list
103
+
104
+ `references/methods.md` carries all 185 names grouped as Telegram documents them: Getting updates,
105
+ Available methods, Updating messages, Stickers, Rich messages, Inline mode, Payments, Telegram
106
+ Passport, Games. Parameter names for a given method are in Telegram's own documentation; this list
107
+ is what exists, not what each one takes.
108
+
109
+ A method absent from that list is still relayed, so a method Telegram adds after this list was taken
110
+ works without waiting for a release here. `telegram-api-census` is what reports the gap.
@@ -0,0 +1,219 @@
1
+ # Bot API 10.2 methods
2
+
3
+ Every method `telegram-api` can call, as documented at `core.telegram.org/bots/api`
4
+ on 14 July 2026. Five of them are refused, and each refusal names the tool that owns
5
+ the capability instead. Pass the name to `telegram-api` exactly as written here:
6
+ Telegram's own documentation is case-insensitive but this list is not, because the
7
+ census matches it literally.
8
+
9
+ ## Getting updates
10
+
11
+ - `getUpdates`
12
+ - `setWebhook`
13
+ - `deleteWebhook`
14
+ - `getWebhookInfo`
15
+
16
+ ## Available methods
17
+
18
+ - `getMe`
19
+ - `logOut`
20
+ - `close`
21
+ - `sendMessage`
22
+ - `forwardMessage`
23
+ - `forwardMessages`
24
+ - `copyMessage`
25
+ - `copyMessages`
26
+ - `sendPhoto`
27
+ - `sendLivePhoto`
28
+ - `sendAudio`
29
+ - `sendDocument`
30
+ - `sendVideo`
31
+ - `sendAnimation`
32
+ - `sendVoice`
33
+ - `sendVideoNote`
34
+ - `sendPaidMedia`
35
+ - `sendMediaGroup`
36
+ - `sendLocation`
37
+ - `sendVenue`
38
+ - `sendContact`
39
+ - `sendPoll`
40
+ - `sendChecklist`
41
+ - `sendDice`
42
+ - `sendMessageDraft`
43
+ - `sendChatAction`
44
+ - `setMessageReaction`
45
+ - `getUserProfilePhotos`
46
+ - `getUserProfileAudios`
47
+ - `setUserEmojiStatus`
48
+ - `getFile`
49
+ - `banChatMember`
50
+ - `unbanChatMember`
51
+ - `restrictChatMember`
52
+ - `promoteChatMember`
53
+ - `setChatAdministratorCustomTitle`
54
+ - `setChatMemberTag`
55
+ - `banChatSenderChat`
56
+ - `unbanChatSenderChat`
57
+ - `setChatPermissions`
58
+ - `exportChatInviteLink`
59
+ - `createChatInviteLink`
60
+ - `editChatInviteLink`
61
+ - `createChatSubscriptionInviteLink`
62
+ - `editChatSubscriptionInviteLink`
63
+ - `revokeChatInviteLink`
64
+ - `approveChatJoinRequest`
65
+ - `declineChatJoinRequest`
66
+ - `answerChatJoinRequestQuery`
67
+ - `sendChatJoinRequestWebApp`
68
+ - `setChatPhoto`
69
+ - `deleteChatPhoto`
70
+ - `setChatTitle`
71
+ - `setChatDescription`
72
+ - `pinChatMessage`
73
+ - `unpinChatMessage`
74
+ - `unpinAllChatMessages`
75
+ - `leaveChat`
76
+ - `getChat`
77
+ - `getChatAdministrators`
78
+ - `getChatMemberCount`
79
+ - `getChatMember`
80
+ - `getUserPersonalChatMessages`
81
+ - `setChatStickerSet`
82
+ - `deleteChatStickerSet`
83
+ - `getForumTopicIconStickers`
84
+ - `createForumTopic`
85
+ - `editForumTopic`
86
+ - `closeForumTopic`
87
+ - `reopenForumTopic`
88
+ - `deleteForumTopic`
89
+ - `unpinAllForumTopicMessages`
90
+ - `editGeneralForumTopic`
91
+ - `closeGeneralForumTopic`
92
+ - `reopenGeneralForumTopic`
93
+ - `hideGeneralForumTopic`
94
+ - `unhideGeneralForumTopic`
95
+ - `unpinAllGeneralForumTopicMessages`
96
+ - `answerCallbackQuery`
97
+ - `answerGuestQuery`
98
+ - `getUserChatBoosts`
99
+ - `getBusinessConnection`
100
+ - `getManagedBotToken`
101
+ - `replaceManagedBotToken`
102
+ - `getManagedBotAccessSettings`
103
+ - `setManagedBotAccessSettings`
104
+ - `setMyCommands`
105
+ - `deleteMyCommands`
106
+ - `getMyCommands`
107
+ - `setMyName`
108
+ - `getMyName`
109
+ - `setMyDescription`
110
+ - `getMyDescription`
111
+ - `setMyShortDescription`
112
+ - `getMyShortDescription`
113
+ - `setMyProfilePhoto`
114
+ - `removeMyProfilePhoto`
115
+ - `setChatMenuButton`
116
+ - `getChatMenuButton`
117
+ - `setMyDefaultAdministratorRights`
118
+ - `getMyDefaultAdministratorRights`
119
+ - `getAvailableGifts`
120
+ - `sendGift`
121
+ - `giftPremiumSubscription`
122
+ - `verifyUser`
123
+ - `verifyChat`
124
+ - `removeUserVerification`
125
+ - `removeChatVerification`
126
+ - `readBusinessMessage`
127
+ - `deleteBusinessMessages`
128
+ - `setBusinessAccountName`
129
+ - `setBusinessAccountUsername`
130
+ - `setBusinessAccountBio`
131
+ - `setBusinessAccountProfilePhoto`
132
+ - `removeBusinessAccountProfilePhoto`
133
+ - `setBusinessAccountGiftSettings`
134
+ - `getBusinessAccountStarBalance`
135
+ - `transferBusinessAccountStars`
136
+ - `getBusinessAccountGifts`
137
+ - `getUserGifts`
138
+ - `getChatGifts`
139
+ - `convertGiftToStars`
140
+ - `upgradeGift`
141
+ - `transferGift`
142
+ - `postStory`
143
+ - `repostStory`
144
+ - `editStory`
145
+ - `deleteStory`
146
+ - `answerWebAppQuery`
147
+ - `savePreparedInlineMessage`
148
+ - `savePreparedKeyboardButton`
149
+
150
+ ## Updating messages
151
+
152
+ - `editMessageText`
153
+ - `editMessageCaption`
154
+ - `editMessageMedia`
155
+ - `editMessageLiveLocation`
156
+ - `stopMessageLiveLocation`
157
+ - `editMessageChecklist`
158
+ - `editMessageReplyMarkup`
159
+ - `stopPoll`
160
+ - `editEphemeralMessageText`
161
+ - `editEphemeralMessageMedia`
162
+ - `editEphemeralMessageCaption`
163
+ - `editEphemeralMessageReplyMarkup`
164
+ - `approveSuggestedPost`
165
+ - `declineSuggestedPost`
166
+ - `deleteMessage`
167
+ - `deleteMessages`
168
+ - `deleteEphemeralMessage`
169
+ - `deleteMessageReaction`
170
+ - `deleteAllMessageReactions`
171
+
172
+ ## Stickers
173
+
174
+ - `sendSticker`
175
+ - `getStickerSet`
176
+ - `getCustomEmojiStickers`
177
+ - `uploadStickerFile`
178
+ - `createNewStickerSet`
179
+ - `addStickerToSet`
180
+ - `setStickerPositionInSet`
181
+ - `deleteStickerFromSet`
182
+ - `replaceStickerInSet`
183
+ - `setStickerEmojiList`
184
+ - `setStickerKeywords`
185
+ - `setStickerMaskPosition`
186
+ - `setStickerSetTitle`
187
+ - `setStickerSetThumbnail`
188
+ - `setCustomEmojiStickerSetThumbnail`
189
+ - `deleteStickerSet`
190
+
191
+ ## Rich messages
192
+
193
+ - `sendRichMessage`
194
+ - `sendRichMessageDraft`
195
+
196
+ ## Inline mode
197
+
198
+ - `answerInlineQuery`
199
+
200
+ ## Payments
201
+
202
+ - `sendInvoice`
203
+ - `createInvoiceLink`
204
+ - `answerShippingQuery`
205
+ - `answerPreCheckoutQuery`
206
+ - `getMyStarBalance`
207
+ - `getStarTransactions`
208
+ - `refundStarPayment`
209
+ - `editUserStarSubscription`
210
+
211
+ ## Telegram Passport
212
+
213
+ - `setPassportDataErrors`
214
+
215
+ ## Games
216
+
217
+ - `sendGame`
218
+ - `setGameScore`
219
+ - `getGameHighScores`
@@ -119,6 +119,10 @@ const ALLOWLIST = new Set([
119
119
  // wrappers, so the deferral the comments rely on holds.
120
120
  'platform/ui/app/lib/telegram/resolve-admin-userid.ts',
121
121
  'platform/ui/server/routes/telegram.ts',
122
+ // Same vi.hoisted pattern: the download-ref-probe test stamps a realpath'd
123
+ // tmp MAXY_PLATFORM_ROOT inside the hoisted block, before the route module's
124
+ // data-path deps read the env at import, so it requires node builtins there.
125
+ 'platform/ui/server/routes/__tests__/download-ref-probe.test.ts',
122
126
  ])
123
127
 
124
128
  const REQUIRE_CALL_RE = /\brequire\s*\(/
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EA2B7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAoWtD,CAAA"}
1
+ {"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EA2B7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAsWtD,CAAA"}
@@ -348,6 +348,8 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
348
348
  "mcp__plugin_storage-broker_storage-broker__storage-r2-object-put",
349
349
  "mcp__plugin_telegram_telegram__message",
350
350
  "mcp__plugin_telegram_telegram__message-history",
351
+ "mcp__plugin_telegram_telegram__telegram-api",
352
+ "mcp__plugin_telegram_telegram__telegram-api-census",
351
353
  "mcp__plugin_telegram_telegram__telegram-menu-button",
352
354
  "mcp__plugin_telegram_telegram__telegram-webhook-register",
353
355
  "mcp__plugin_url-get_url-get__url-get",
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}