@rubytech/create-maxy-code 0.1.582 → 0.1.584

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 (421) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/routine-templates/dist/index.d.ts +1 -1
  3. package/payload/platform/lib/routine-templates/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/routine-templates/dist/index.js +5 -1
  5. package/payload/platform/lib/routine-templates/dist/index.js.map +1 -1
  6. package/payload/platform/lib/routine-templates/src/index.ts +4 -0
  7. package/payload/platform/lib/telegram-managed-bot/dist/index.d.ts +269 -0
  8. package/payload/platform/lib/telegram-managed-bot/dist/index.d.ts.map +1 -0
  9. package/payload/platform/lib/telegram-managed-bot/dist/index.js +351 -0
  10. package/payload/platform/lib/telegram-managed-bot/dist/index.js.map +1 -0
  11. package/payload/platform/lib/telegram-managed-bot/src/__tests__/managed-bot.test.ts +251 -0
  12. package/payload/platform/lib/telegram-managed-bot/src/index.ts +529 -0
  13. package/payload/platform/lib/telegram-managed-bot/tsconfig.json +9 -0
  14. package/payload/platform/lib/telegram-managed-bot/vitest.config.ts +9 -0
  15. package/payload/platform/lib/telegram-reach/dist/index.d.ts +86 -0
  16. package/payload/platform/lib/telegram-reach/dist/index.d.ts.map +1 -0
  17. package/payload/platform/lib/telegram-reach/dist/index.js +246 -0
  18. package/payload/platform/lib/telegram-reach/dist/index.js.map +1 -0
  19. package/payload/platform/lib/telegram-reach/src/__tests__/telegram-reach.test.ts +268 -0
  20. package/payload/platform/lib/telegram-reach/src/index.ts +296 -0
  21. package/payload/platform/lib/telegram-reach/tsconfig.json +9 -0
  22. package/payload/platform/lib/telegram-reach/vitest.config.ts +9 -0
  23. package/payload/platform/package.json +2 -2
  24. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  25. package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +9 -0
  26. package/payload/platform/plugins/admin/hooks/__tests__/preference-consult-directive.test.sh +26 -0
  27. package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +20 -3
  28. package/payload/platform/plugins/admin/hooks/preference-consult-directive.sh +50 -5
  29. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +146 -8
  30. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +16 -0
  31. package/payload/platform/plugins/contacts/mcp/dist/__tests__/telegram-user-id.test.d.ts +2 -0
  32. package/payload/platform/plugins/contacts/mcp/dist/__tests__/telegram-user-id.test.d.ts.map +1 -0
  33. package/payload/platform/plugins/contacts/mcp/dist/__tests__/telegram-user-id.test.js +100 -0
  34. package/payload/platform/plugins/contacts/mcp/dist/__tests__/telegram-user-id.test.js.map +1 -0
  35. package/payload/platform/plugins/contacts/mcp/dist/index.js +11 -5
  36. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
  37. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts +5 -0
  38. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.d.ts.map +1 -1
  39. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js +21 -4
  40. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-create.js.map +1 -1
  41. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts +5 -0
  42. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.d.ts.map +1 -1
  43. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js +29 -1
  44. package/payload/platform/plugins/contacts/mcp/dist/tools/contact-lookup.js.map +1 -1
  45. package/payload/platform/plugins/contacts/mcp/vitest.config.ts +14 -0
  46. package/payload/platform/plugins/docs/references/admin-ui.md +17 -3
  47. package/payload/platform/plugins/docs/references/channel-wake-and-prompt.md +15 -0
  48. package/payload/platform/plugins/docs/references/telegram-guide.md +113 -4
  49. package/payload/platform/plugins/filesystem/PLUGIN.md +2 -2
  50. package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/account-schema.test.d.ts +2 -0
  51. package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/account-schema.test.d.ts.map +1 -0
  52. package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/account-schema.test.js +108 -0
  53. package/payload/platform/plugins/filesystem/mcp/dist/lib/__tests__/account-schema.test.js.map +1 -0
  54. package/payload/platform/plugins/filesystem/mcp/dist/lib/account-schema.d.ts +17 -0
  55. package/payload/platform/plugins/filesystem/mcp/dist/lib/account-schema.d.ts.map +1 -0
  56. package/payload/platform/plugins/filesystem/mcp/dist/lib/account-schema.js +162 -0
  57. package/payload/platform/plugins/filesystem/mcp/dist/lib/account-schema.js.map +1 -0
  58. package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/schema-fence.test.d.ts +2 -0
  59. package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/schema-fence.test.d.ts.map +1 -0
  60. package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/schema-fence.test.js +116 -0
  61. package/payload/platform/plugins/filesystem/mcp/dist/tools/__tests__/schema-fence.test.js.map +1 -0
  62. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.d.ts.map +1 -1
  63. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.js +9 -0
  64. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-edit.js.map +1 -1
  65. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.d.ts.map +1 -1
  66. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js +10 -0
  67. package/payload/platform/plugins/filesystem/mcp/dist/tools/file-write.js.map +1 -1
  68. package/payload/platform/plugins/scheduling/PLUGIN.md +8 -2
  69. package/payload/platform/plugins/scheduling/mcp/dist/index.js +7 -2
  70. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  71. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js +53 -6
  72. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js.map +1 -1
  73. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate.test.js +38 -0
  74. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate.test.js.map +1 -1
  75. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +5 -3
  76. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
  77. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js +18 -3
  78. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
  79. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +30 -0
  80. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
  81. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +112 -39
  82. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
  83. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +14 -1
  84. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  85. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +258 -8
  86. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
  87. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +206 -3
  88. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
  89. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +29 -21
  90. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  91. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +94 -14
  92. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  93. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  94. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +29 -1
  95. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  96. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts +30 -0
  97. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
  98. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +69 -6
  99. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
  100. package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +1 -1
  101. package/payload/platform/plugins/telegram/PLUGIN.md +46 -9
  102. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js +25 -11
  103. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js.map +1 -1
  104. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.js +67 -5
  105. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-guard.test.js.map +1 -1
  106. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.js +9 -3
  107. package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-methods.test.js.map +1 -1
  108. package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js +87 -3
  109. package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js.map +1 -1
  110. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-provision-tool.test.d.ts +2 -0
  111. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-provision-tool.test.d.ts.map +1 -0
  112. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-provision-tool.test.js +326 -0
  113. package/payload/platform/plugins/telegram/mcp/dist/__tests__/bot-provision-tool.test.js.map +1 -0
  114. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-business.test.d.ts +2 -0
  115. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-business.test.d.ts.map +1 -0
  116. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-business.test.js +184 -0
  117. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-business.test.js.map +1 -0
  118. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js +79 -0
  119. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js.map +1 -1
  120. package/payload/platform/plugins/telegram/mcp/dist/__tests__/chat-send-policy.test.d.ts +2 -0
  121. package/payload/platform/plugins/telegram/mcp/dist/__tests__/chat-send-policy.test.d.ts.map +1 -0
  122. package/payload/platform/plugins/telegram/mcp/dist/__tests__/chat-send-policy.test.js +34 -0
  123. package/payload/platform/plugins/telegram/mcp/dist/__tests__/chat-send-policy.test.js.map +1 -0
  124. package/payload/platform/plugins/telegram/mcp/dist/__tests__/reach-tool.test.d.ts +2 -0
  125. package/payload/platform/plugins/telegram/mcp/dist/__tests__/reach-tool.test.d.ts.map +1 -0
  126. package/payload/platform/plugins/telegram/mcp/dist/__tests__/reach-tool.test.js +106 -0
  127. package/payload/platform/plugins/telegram/mcp/dist/__tests__/reach-tool.test.js.map +1 -0
  128. package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.js +2 -31
  129. package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.js.map +1 -1
  130. package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.js +15 -1
  131. package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.js.map +1 -1
  132. package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js +178 -2
  133. package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js.map +1 -1
  134. package/payload/platform/plugins/telegram/mcp/dist/index.js +22 -8
  135. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
  136. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts +19 -0
  137. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts.map +1 -1
  138. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js +41 -1
  139. package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js.map +1 -1
  140. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts +21 -19
  141. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts.map +1 -1
  142. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js +44 -36
  143. package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js.map +1 -1
  144. package/payload/platform/plugins/telegram/mcp/dist/lib/agent-active.d.ts +13 -0
  145. package/payload/platform/plugins/telegram/mcp/dist/lib/agent-active.d.ts.map +1 -1
  146. package/payload/platform/plugins/telegram/mcp/dist/lib/agent-active.js +22 -1
  147. package/payload/platform/plugins/telegram/mcp/dist/lib/agent-active.js.map +1 -1
  148. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts +11 -1
  149. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts.map +1 -1
  150. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js +24 -4
  151. package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js.map +1 -1
  152. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.d.ts +11 -1
  153. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.d.ts.map +1 -1
  154. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.js +54 -2
  155. package/payload/platform/plugins/telegram/mcp/dist/lib/api-guard.js.map +1 -1
  156. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.d.ts +0 -3
  157. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.d.ts.map +1 -1
  158. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.js +0 -1
  159. package/payload/platform/plugins/telegram/mcp/dist/lib/api-methods.js.map +1 -1
  160. package/payload/platform/plugins/telegram/mcp/dist/lib/business-window-store.d.ts +58 -0
  161. package/payload/platform/plugins/telegram/mcp/dist/lib/business-window-store.d.ts.map +1 -0
  162. package/payload/platform/plugins/telegram/mcp/dist/lib/business-window-store.js +125 -0
  163. package/payload/platform/plugins/telegram/mcp/dist/lib/business-window-store.js.map +1 -0
  164. package/payload/platform/plugins/telegram/mcp/dist/lib/chat-send-policy.d.ts +55 -0
  165. package/payload/platform/plugins/telegram/mcp/dist/lib/chat-send-policy.d.ts.map +1 -0
  166. package/payload/platform/plugins/telegram/mcp/dist/lib/chat-send-policy.js +91 -0
  167. package/payload/platform/plugins/telegram/mcp/dist/lib/chat-send-policy.js.map +1 -0
  168. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts +2 -53
  169. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.d.ts.map +1 -1
  170. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js +8 -94
  171. package/payload/platform/plugins/telegram/mcp/dist/lib/telegram.js.map +1 -1
  172. package/payload/platform/plugins/telegram/mcp/dist/tools/api.d.ts.map +1 -1
  173. package/payload/platform/plugins/telegram/mcp/dist/tools/api.js +27 -0
  174. package/payload/platform/plugins/telegram/mcp/dist/tools/api.js.map +1 -1
  175. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts.map +1 -1
  176. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js +31 -1
  177. package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js.map +1 -1
  178. package/payload/platform/plugins/telegram/mcp/dist/tools/bot-provision.d.ts +64 -0
  179. package/payload/platform/plugins/telegram/mcp/dist/tools/bot-provision.d.ts.map +1 -0
  180. package/payload/platform/plugins/telegram/mcp/dist/tools/bot-provision.js +217 -0
  181. package/payload/platform/plugins/telegram/mcp/dist/tools/bot-provision.js.map +1 -0
  182. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts +7 -0
  183. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
  184. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +56 -0
  185. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
  186. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts.map +1 -1
  187. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js +15 -0
  188. package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js.map +1 -1
  189. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts.map +1 -1
  190. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js +12 -0
  191. package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js.map +1 -1
  192. package/payload/platform/plugins/telegram/mcp/dist/tools/reach.d.ts +22 -0
  193. package/payload/platform/plugins/telegram/mcp/dist/tools/reach.d.ts.map +1 -0
  194. package/payload/platform/plugins/telegram/mcp/dist/tools/reach.js +72 -0
  195. package/payload/platform/plugins/telegram/mcp/dist/tools/reach.js.map +1 -0
  196. package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.d.ts +17 -68
  197. package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.d.ts.map +1 -1
  198. package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.js +30 -90
  199. package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.js.map +1 -1
  200. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts.map +1 -1
  201. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js +12 -0
  202. package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js.map +1 -1
  203. package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.d.ts +4 -1
  204. package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.d.ts.map +1 -1
  205. package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js +59 -4
  206. package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js.map +1 -1
  207. package/payload/platform/plugins/telegram/skills/build/SKILL.md +155 -40
  208. package/payload/platform/plugins/telegram/skills/build/references/methods.md +3 -13
  209. package/payload/platform/plugins/telegram/skills/configure/SKILL.md +87 -6
  210. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +12 -0
  211. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts +36 -5
  212. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.d.ts.map +1 -1
  213. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js +103 -10
  214. package/payload/platform/services/claude-session-manager/dist/account-dir-schema-reconcile.js.map +1 -1
  215. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  216. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +2 -1
  217. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  218. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  219. package/payload/platform/services/claude-session-manager/dist/http-server.js +42 -4
  220. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  221. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  222. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +19 -5
  223. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  224. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +9 -0
  225. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  226. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +5 -1
  227. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  228. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  229. package/payload/platform/services/telegram-channel/dist/instructions.js +13 -0
  230. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  231. package/payload/platform/services/telegram-channel/dist/notification.d.ts +13 -0
  232. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  233. package/payload/platform/services/telegram-channel/dist/notification.js +13 -2
  234. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  235. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +52 -0
  236. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  237. package/payload/platform/services/whatsapp-channel/dist/notification.js +64 -1
  238. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  239. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
  240. package/payload/platform/services/whatsapp-channel/dist/server.js +14 -2
  241. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
  242. package/payload/platform/templates/account-schema/SCHEMA.md +17 -10
  243. package/payload/platform/templates/agents/admin/IDENTITY.md +5 -0
  244. package/payload/platform/templates/specialists/agents/data-manager.md +2 -2
  245. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  246. package/payload/server/{chunk-BFRB2U75.js → chunk-CV6AEMKH.js} +1 -0
  247. package/payload/server/{manager-CTVTF4YB.js → manager-FQSQSSJ3.js} +1 -1
  248. package/payload/server/public/activity.html +6 -6
  249. package/payload/server/public/agents.html +5 -5
  250. package/payload/server/public/assets/{AdminLoginScreens-AnJZfgFz.js → AdminLoginScreens-BLsDYWVi.js} +1 -1
  251. package/payload/server/public/assets/AdminLoginScreens-BLsDYWVi.js.br +0 -0
  252. package/payload/server/public/assets/AdminLoginScreens-BLsDYWVi.js.gz +0 -0
  253. package/payload/server/public/assets/{AdminShell-CEVqyQqg.js → AdminShell-BZS8jzFA.js} +1 -1
  254. package/payload/server/public/assets/AdminShell-BZS8jzFA.js.br +0 -0
  255. package/payload/server/public/assets/AdminShell-BZS8jzFA.js.gz +0 -0
  256. package/payload/server/public/assets/{activity-czUaUl8I.js → activity-DOjvoLdd.js} +1 -1
  257. package/payload/server/public/assets/activity-DOjvoLdd.js.br +0 -0
  258. package/payload/server/public/assets/activity-DOjvoLdd.js.gz +0 -0
  259. package/payload/server/public/assets/{admin-B0iRcfuk.js → admin-JrSNg29g.js} +1 -1
  260. package/payload/server/public/assets/admin-JrSNg29g.js.br +0 -0
  261. package/payload/server/public/assets/admin-JrSNg29g.js.gz +0 -0
  262. package/payload/server/public/assets/{agents-BocONCeQ.js → agents--9WMJVLC.js} +1 -1
  263. package/payload/server/public/assets/agents--9WMJVLC.js.br +0 -0
  264. package/payload/server/public/assets/agents--9WMJVLC.js.gz +0 -0
  265. package/payload/server/public/assets/{browser-Cy-rJm3t.js → browser-DiiMmTrM.js} +1 -1
  266. package/payload/server/public/assets/browser-DiiMmTrM.js.br +0 -0
  267. package/payload/server/public/assets/browser-DiiMmTrM.js.gz +0 -0
  268. package/payload/server/public/assets/{calendar-DUTKxWtd.js → calendar-CazmCzgO.js} +1 -1
  269. package/payload/server/public/assets/calendar-CazmCzgO.js.br +0 -0
  270. package/payload/server/public/assets/calendar-CazmCzgO.js.gz +0 -0
  271. package/payload/server/public/assets/chat-CB0TcyXX.js +1 -0
  272. package/payload/server/public/assets/chat-CB0TcyXX.js.br +0 -0
  273. package/payload/server/public/assets/chat-CB0TcyXX.js.gz +0 -0
  274. package/payload/server/public/assets/chevron-left-0tVo23Dh.js +1 -0
  275. package/payload/server/public/assets/chevron-left-0tVo23Dh.js.br +0 -0
  276. package/payload/server/public/assets/clock-D2cZ0sge.js +1 -0
  277. package/payload/server/public/assets/clock-D2cZ0sge.js.br +0 -0
  278. package/payload/server/public/assets/clock-D2cZ0sge.js.gz +0 -0
  279. package/payload/server/public/assets/{copy-DE9qmAs5.js → copy-C87QIN_o.js} +1 -1
  280. package/payload/server/public/assets/copy-C87QIN_o.js.br +0 -0
  281. package/payload/server/public/assets/copy-C87QIN_o.js.gz +0 -0
  282. package/payload/server/public/assets/data-CK7AMxPt.js +1 -0
  283. package/payload/server/public/assets/data-CK7AMxPt.js.br +0 -0
  284. package/payload/server/public/assets/data-CK7AMxPt.js.gz +0 -0
  285. package/payload/server/public/assets/{field-DE2tEfTo.js → field-C3kQgGWE.js} +1 -1
  286. package/payload/server/public/assets/field-C3kQgGWE.js.br +0 -0
  287. package/payload/server/public/assets/field-C3kQgGWE.js.gz +0 -0
  288. package/payload/server/public/assets/{file-text-BHfL2gqo.js → file-text-rWowl9RN.js} +1 -1
  289. package/payload/server/public/assets/file-text-rWowl9RN.js.br +0 -0
  290. package/payload/server/public/assets/file-text-rWowl9RN.js.gz +0 -0
  291. package/payload/server/public/assets/{graph-08S_BofN.js → graph-CVJKz1Uo.js} +1 -1
  292. package/payload/server/public/assets/graph-CVJKz1Uo.js.br +0 -0
  293. package/payload/server/public/assets/graph-CVJKz1Uo.js.gz +0 -0
  294. package/payload/server/public/assets/{graph-labels-C640Er5R.js → graph-labels-kneGnsHB.js} +1 -1
  295. package/payload/server/public/assets/graph-labels-kneGnsHB.js.br +0 -0
  296. package/payload/server/public/assets/graph-labels-kneGnsHB.js.gz +0 -0
  297. package/payload/server/public/assets/{jsx-runtime-FxjwOUbA.css → jsx-runtime-rMaiYjNu.css} +1 -1
  298. package/payload/server/public/assets/jsx-runtime-rMaiYjNu.css.br +0 -0
  299. package/payload/server/public/assets/{jsx-runtime-FxjwOUbA.css.gz → jsx-runtime-rMaiYjNu.css.gz} +0 -0
  300. package/payload/server/public/assets/{operator-DH5Kw3fL.js → operator-BGvB4hu4.js} +1 -1
  301. package/payload/server/public/assets/operator-BGvB4hu4.js.br +0 -0
  302. package/payload/server/public/assets/operator-BGvB4hu4.js.gz +0 -0
  303. package/payload/server/public/assets/{page-BDpa4HWT.js → page-DBQLOasI.js} +1 -1
  304. package/payload/server/public/assets/page-DBQLOasI.js.br +0 -0
  305. package/payload/server/public/assets/page-DBQLOasI.js.gz +0 -0
  306. package/payload/server/public/assets/{page-yn7ivq8O.js → page-DyVAu7tm.js} +1 -1
  307. package/payload/server/public/assets/page-DyVAu7tm.js.br +0 -0
  308. package/payload/server/public/assets/page-DyVAu7tm.js.gz +0 -0
  309. package/payload/server/public/assets/play-DgP7vl0r.js +1 -0
  310. package/payload/server/public/assets/play-DgP7vl0r.js.br +0 -0
  311. package/payload/server/public/assets/play-DgP7vl0r.js.gz +0 -0
  312. package/payload/server/public/assets/{public-D_qjqet7.js → public-BvUQR3hd.js} +1 -1
  313. package/payload/server/public/assets/public-BvUQR3hd.js.br +0 -0
  314. package/payload/server/public/assets/public-BvUQR3hd.js.gz +0 -0
  315. package/payload/server/public/assets/{rotate-ccw-Ixkq1iUA.js → rotate-ccw-Dnn7gbPh.js} +1 -1
  316. package/payload/server/public/assets/rotate-ccw-Dnn7gbPh.js.br +0 -0
  317. package/payload/server/public/assets/rotate-ccw-Dnn7gbPh.js.gz +0 -0
  318. package/payload/server/public/assets/{routines-Cxjlmcp7.js → routines-N8NmxPOZ.js} +1 -1
  319. package/payload/server/public/assets/routines-N8NmxPOZ.js.br +0 -0
  320. package/payload/server/public/assets/routines-N8NmxPOZ.js.gz +0 -0
  321. package/payload/server/public/assets/{skills-DEo9hSVX.js → skills-B2CRgO-U.js} +1 -1
  322. package/payload/server/public/assets/skills-B2CRgO-U.js.br +0 -0
  323. package/payload/server/public/assets/skills-B2CRgO-U.js.gz +0 -0
  324. package/payload/server/public/assets/{tasks-BxApOIXI.js → tasks-8QLGtlSj.js} +1 -1
  325. package/payload/server/public/assets/tasks-8QLGtlSj.js.br +0 -0
  326. package/payload/server/public/assets/tasks-8QLGtlSj.js.gz +0 -0
  327. package/payload/server/public/assets/{triangle-alert-BYzMcXv8.js → triangle-alert-el772yUQ.js} +1 -1
  328. package/payload/server/public/assets/triangle-alert-el772yUQ.js.br +0 -0
  329. package/payload/server/public/assets/triangle-alert-el772yUQ.js.gz +0 -0
  330. package/payload/server/public/assets/{useCopyFeedback-Bk2HVcjy.js → useCopyFeedback-DfNAu8hQ.js} +1 -1
  331. package/payload/server/public/assets/useCopyFeedback-DfNAu8hQ.js.br +0 -0
  332. package/payload/server/public/assets/useCopyFeedback-DfNAu8hQ.js.gz +0 -0
  333. package/payload/server/public/assets/{useMediaQuery-DEti-vAx.js → useMediaQuery-B469O83-.js} +1 -1
  334. package/payload/server/public/assets/useMediaQuery-B469O83-.js.br +0 -0
  335. package/payload/server/public/assets/{useMediaQuery-DEti-vAx.js.gz → useMediaQuery-B469O83-.js.gz} +0 -0
  336. package/payload/server/public/assets/{useVoiceRecorder-kQ92rL-f.js → useVoiceRecorder-Bb-51cJv.js} +1 -1
  337. package/payload/server/public/assets/useVoiceRecorder-Bb-51cJv.js.br +0 -0
  338. package/payload/server/public/assets/useVoiceRecorder-Bb-51cJv.js.gz +0 -0
  339. package/payload/server/public/assets/{wrench-BhLkHffv.js → wrench-Ck4phkdB.js} +1 -1
  340. package/payload/server/public/assets/wrench-Ck4phkdB.js.br +0 -0
  341. package/payload/server/public/assets/wrench-Ck4phkdB.js.gz +0 -0
  342. package/payload/server/public/browser.html +5 -5
  343. package/payload/server/public/calendar.html +8 -8
  344. package/payload/server/public/chat.html +14 -14
  345. package/payload/server/public/data.html +12 -12
  346. package/payload/server/public/field.html +3 -3
  347. package/payload/server/public/graph.html +10 -10
  348. package/payload/server/public/index.html +14 -14
  349. package/payload/server/public/operator.html +15 -15
  350. package/payload/server/public/public.html +14 -14
  351. package/payload/server/public/routines.html +8 -8
  352. package/payload/server/public/skills.html +6 -6
  353. package/payload/server/public/tasks.html +7 -7
  354. package/payload/server/server.js +3114 -1371
  355. package/payload/server/public/assets/AdminLoginScreens-AnJZfgFz.js.br +0 -0
  356. package/payload/server/public/assets/AdminLoginScreens-AnJZfgFz.js.gz +0 -0
  357. package/payload/server/public/assets/AdminShell-CEVqyQqg.js.br +0 -0
  358. package/payload/server/public/assets/AdminShell-CEVqyQqg.js.gz +0 -0
  359. package/payload/server/public/assets/activity-czUaUl8I.js.br +0 -0
  360. package/payload/server/public/assets/activity-czUaUl8I.js.gz +0 -0
  361. package/payload/server/public/assets/admin-B0iRcfuk.js.br +0 -0
  362. package/payload/server/public/assets/admin-B0iRcfuk.js.gz +0 -0
  363. package/payload/server/public/assets/agents-BocONCeQ.js.br +0 -0
  364. package/payload/server/public/assets/agents-BocONCeQ.js.gz +0 -0
  365. package/payload/server/public/assets/browser-Cy-rJm3t.js.br +0 -0
  366. package/payload/server/public/assets/browser-Cy-rJm3t.js.gz +0 -0
  367. package/payload/server/public/assets/calendar-DUTKxWtd.js.br +0 -0
  368. package/payload/server/public/assets/calendar-DUTKxWtd.js.gz +0 -0
  369. package/payload/server/public/assets/chat-Cis7sHsZ.js +0 -1
  370. package/payload/server/public/assets/chat-Cis7sHsZ.js.br +0 -0
  371. package/payload/server/public/assets/chat-Cis7sHsZ.js.gz +0 -0
  372. package/payload/server/public/assets/chevron-left-Bhhx8j2r.js +0 -1
  373. package/payload/server/public/assets/chevron-left-Bhhx8j2r.js.br +0 -0
  374. package/payload/server/public/assets/clock-Ca3nx7Cc.js +0 -1
  375. package/payload/server/public/assets/clock-Ca3nx7Cc.js.br +0 -0
  376. package/payload/server/public/assets/clock-Ca3nx7Cc.js.gz +0 -0
  377. package/payload/server/public/assets/copy-DE9qmAs5.js.br +0 -0
  378. package/payload/server/public/assets/copy-DE9qmAs5.js.gz +0 -0
  379. package/payload/server/public/assets/data-CkaAEeP1.js +0 -1
  380. package/payload/server/public/assets/data-CkaAEeP1.js.br +0 -0
  381. package/payload/server/public/assets/data-CkaAEeP1.js.gz +0 -0
  382. package/payload/server/public/assets/field-DE2tEfTo.js.br +0 -0
  383. package/payload/server/public/assets/field-DE2tEfTo.js.gz +0 -0
  384. package/payload/server/public/assets/file-text-BHfL2gqo.js.br +0 -0
  385. package/payload/server/public/assets/file-text-BHfL2gqo.js.gz +0 -0
  386. package/payload/server/public/assets/graph-08S_BofN.js.br +0 -0
  387. package/payload/server/public/assets/graph-08S_BofN.js.gz +0 -0
  388. package/payload/server/public/assets/graph-labels-C640Er5R.js.br +0 -0
  389. package/payload/server/public/assets/graph-labels-C640Er5R.js.gz +0 -0
  390. package/payload/server/public/assets/jsx-runtime-FxjwOUbA.css.br +0 -0
  391. package/payload/server/public/assets/operator-DH5Kw3fL.js.br +0 -0
  392. package/payload/server/public/assets/operator-DH5Kw3fL.js.gz +0 -0
  393. package/payload/server/public/assets/page-BDpa4HWT.js.br +0 -0
  394. package/payload/server/public/assets/page-BDpa4HWT.js.gz +0 -0
  395. package/payload/server/public/assets/page-yn7ivq8O.js.br +0 -0
  396. package/payload/server/public/assets/page-yn7ivq8O.js.gz +0 -0
  397. package/payload/server/public/assets/play-CMN7ht-S.js +0 -1
  398. package/payload/server/public/assets/play-CMN7ht-S.js.br +0 -0
  399. package/payload/server/public/assets/play-CMN7ht-S.js.gz +0 -0
  400. package/payload/server/public/assets/public-D_qjqet7.js.br +0 -0
  401. package/payload/server/public/assets/public-D_qjqet7.js.gz +0 -0
  402. package/payload/server/public/assets/rotate-ccw-Ixkq1iUA.js.br +0 -0
  403. package/payload/server/public/assets/rotate-ccw-Ixkq1iUA.js.gz +0 -0
  404. package/payload/server/public/assets/routines-Cxjlmcp7.js.br +0 -0
  405. package/payload/server/public/assets/routines-Cxjlmcp7.js.gz +0 -0
  406. package/payload/server/public/assets/skills-DEo9hSVX.js.br +0 -0
  407. package/payload/server/public/assets/skills-DEo9hSVX.js.gz +0 -0
  408. package/payload/server/public/assets/tasks-BxApOIXI.js.br +0 -0
  409. package/payload/server/public/assets/tasks-BxApOIXI.js.gz +0 -0
  410. package/payload/server/public/assets/triangle-alert-BYzMcXv8.js.br +0 -0
  411. package/payload/server/public/assets/triangle-alert-BYzMcXv8.js.gz +0 -0
  412. package/payload/server/public/assets/useCopyFeedback-Bk2HVcjy.js.br +0 -0
  413. package/payload/server/public/assets/useCopyFeedback-Bk2HVcjy.js.gz +0 -0
  414. package/payload/server/public/assets/useMediaQuery-DEti-vAx.js.br +0 -0
  415. package/payload/server/public/assets/useVoiceRecorder-kQ92rL-f.js.br +0 -0
  416. package/payload/server/public/assets/useVoiceRecorder-kQ92rL-f.js.gz +0 -0
  417. package/payload/server/public/assets/wrench-BhLkHffv.js.br +0 -0
  418. package/payload/server/public/assets/wrench-BhLkHffv.js.gz +0 -0
  419. /package/payload/server/public/assets/{jsx-runtime-BL3pljPe.js → jsx-runtime-BmNepPEn.js} +0 -0
  420. /package/payload/server/public/assets/{jsx-runtime-BL3pljPe.js.br → jsx-runtime-BmNepPEn.js.br} +0 -0
  421. /package/payload/server/public/assets/{jsx-runtime-BL3pljPe.js.gz → jsx-runtime-BmNepPEn.js.gz} +0 -0
@@ -2,6 +2,7 @@ import { callBotApi } from "../lib/bot-api.js";
2
2
  import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
3
3
  import { readBusinessConnection } from "../lib/business-connection-store.js";
4
4
  import { buildInlineKeyboard } from "../lib/telegram.js";
5
+ import { gateChatSend } from "../lib/chat-send-policy.js";
5
6
  const TAG = "[telegram-tools]";
6
7
  const TOOL = "telegram-ask";
7
8
  /** Kind to Bot API method. Verified against the live parameter tables on
@@ -193,7 +194,9 @@ function bodyFor(p) {
193
194
  ? {}
194
195
  : {
195
196
  // sendChecklist is the one send method with no message_thread_id in its
196
- // table, so it is excluded here too.
197
+ // table. Task 2616 refuses that pair in `telegramAsk` before this builder
198
+ // runs, so the `kind` test here is unreachable in practice and kept as
199
+ // the shape guard for any caller that reaches `bodyFor` directly.
197
200
  ...(p.messageThreadId !== undefined && p.kind !== "checklist"
198
201
  ? { message_thread_id: p.messageThreadId }
199
202
  : {}),
@@ -268,6 +271,22 @@ export async function telegramAsk(p, deps) {
268
271
  log(`${TAG} op=refused callId=${callId} tool=${TOOL} kind=${params.kind} reason=missing-field`);
269
272
  return { ok: false, isError: true, text: missing };
270
273
  }
274
+ // Task 2616 — `sendChecklist` is the one send method with no
275
+ // `message_thread_id` in its table. The envelope builder below excluded the
276
+ // field for that reason and said nothing, so a checklist addressed to a forum
277
+ // topic landed in the group's General thread and the call reported success:
278
+ // the caller was told the checklist went where it asked, and it had not. A
279
+ // refusal before the network call is the honest answer.
280
+ if (params.kind === "checklist" && params.messageThreadId !== undefined) {
281
+ log(`${TAG} op=refused callId=${callId} tool=${TOOL} kind=${params.kind} reason=checklist-no-thread`);
282
+ return {
283
+ ok: false,
284
+ isError: true,
285
+ text: `sendChecklist has no message_thread_id, so a checklist cannot be sent into a forum topic. ` +
286
+ `Send it without messageThreadId and it lands in the group's General thread, or use a poll ` +
287
+ `or a plain message for the topic itself.`,
288
+ };
289
+ }
271
290
  const token = resolveBotToken(deps.platformRoot, deps.accountId, params.botId);
272
291
  if (!token) {
273
292
  const known = listRegisteredBots(deps.platformRoot, deps.accountId);
@@ -282,6 +301,17 @@ export async function telegramAsk(p, deps) {
282
301
  : "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
283
302
  };
284
303
  }
304
+ // Task 2617 — before the method is chosen and before any body is built, so a
305
+ // refused send touches nothing.
306
+ const gate = gateChatSend({
307
+ platformRoot: deps.platformRoot,
308
+ accountId: deps.accountId,
309
+ botId: params.botId,
310
+ chatId: params.chatId,
311
+ log,
312
+ });
313
+ if (!gate.allowed)
314
+ return { ok: false, isError: true, text: gate.text };
285
315
  const method = ASK_METHOD[params.kind];
286
316
  log(`${TAG} op=call tool=${TOOL} method=${method} callId=${callId} botId=${params.botId}`);
287
317
  let envelope;
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/tools/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/tools/ask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ export type BotProvisionAction = "offer" | "rotate" | "access" | "list";
2
+ /** Action to Bot API method, for the actions that call one. `offer` sends a
3
+ * message and `list` reads local config, so neither appears.
4
+ *
5
+ * Exported so the census's owned-method map and this tool cannot disagree about
6
+ * which methods the tool covers. The two token-returning methods are ALSO in
7
+ * `api-guard`'s refusals: this map governs the census bucket, the refusal
8
+ * governs whether `telegram-api` can relay the call at all. */
9
+ export declare const PROVISION_METHOD: Readonly<{
10
+ readonly token: "getManagedBotToken";
11
+ readonly rotate: "replaceManagedBotToken";
12
+ readonly accessRead: "getManagedBotAccessSettings";
13
+ readonly accessWrite: "setManagedBotAccessSettings";
14
+ }>;
15
+ export interface BotProvisionParams {
16
+ /** The MANAGING bot: the one that offers the button and owns the created bots.
17
+ * Must be a `role:'admin'` entry on this account. */
18
+ botId: string;
19
+ action: BotProvisionAction;
20
+ /** `offer` only — the private chat the button is sent to. */
21
+ chatId?: number;
22
+ buttonText?: string;
23
+ suggestedName?: string;
24
+ suggestedUsername?: string;
25
+ /** `rotate` and `access` — the managed bot being acted on. */
26
+ managedBotId?: string;
27
+ /** `access` — omit to READ the current settings, pass to write them. */
28
+ isAccessRestricted?: boolean;
29
+ addedUserIds?: number[];
30
+ }
31
+ export interface BotProvisionDeps {
32
+ platformRoot: string;
33
+ accountId: string | undefined;
34
+ log: (line: string) => void;
35
+ fetchImpl?: typeof fetch;
36
+ /** Injected so a test can pin the generated request id, which is otherwise
37
+ * random and would make the offer line unassertable. */
38
+ requestIdGen?: () => number;
39
+ /** Injected so a test does not write a secret into the real home directory. */
40
+ secretPathFor?: (botId: string) => string;
41
+ }
42
+ export interface BotProvisionResult {
43
+ text: string;
44
+ isError: boolean;
45
+ }
46
+ /**
47
+ * `telegram-bot-provision` — create and manage bots without visiting BotFather.
48
+ *
49
+ * NOTHING here returns a token. `offer` returns the request id, `rotate` returns
50
+ * the bot id whose token changed, `access` returns the restriction state, and
51
+ * `list` returns ids and roles. The tokens themselves go from Telegram straight
52
+ * into account.json and are never rendered, logged or returned, because a tool
53
+ * result is transcript and a transcript is not where a live bot token belongs.
54
+ * `api-guard` refuses the same two methods on the `telegram-api` passthrough for
55
+ * exactly that reason; this tool would otherwise be a lock with the key beside it.
56
+ *
57
+ * Every action names a `botId` and every action requires that entry to be
58
+ * `role:'admin'`. The MCP child receives only ACCOUNT_ID, LOG_DIR and
59
+ * PLATFORM_ROOT, so it cannot see which entry spawned it; but the offer is sent
60
+ * AS the named bot and the managed bots belong to it, so the named bot's own role
61
+ * is the authority that actually matters.
62
+ */
63
+ export declare function telegramBotProvision(params: BotProvisionParams, deps: BotProvisionDeps): Promise<BotProvisionResult>;
64
+ //# sourceMappingURL=bot-provision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-provision.d.ts","sourceRoot":"","sources":["../../src/tools/bot-provision.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE;;;;;;gEAMgE;AAChE,eAAO,MAAM,gBAAgB;;;;;EAAsB,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC;0DACsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;IAC3B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;6DACyD;IACzD,YAAY,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAoP7B"}
@@ -0,0 +1,217 @@
1
+ import { randomInt } from "node:crypto";
2
+ import { callBotApi } from "../lib/bot-api.js";
3
+ import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
4
+ import { persistTelegramBot, resolveAccountDir } from "../lib/account-write.js";
5
+ import { resolveSecretFilePath } from "../lib/secret-path.js";
6
+ import { getWebhookInfo } from "../lib/telegram.js";
7
+ import { MANAGED_BOT_METHODS, MANAGED_BOT_REQUEST_ID_MAX, MAX_ADDED_USER_IDS, botCanManageBots, buildManagedBotRequestKeyboard, getManagedBotAccessSettings, readTelegramBotEntry, replaceManagedBotToken, setManagedBotAccessSettings, setTelegramWebhook, TELEGRAM_ALLOWED_UPDATES, } from "../../../../../lib/telegram-managed-bot/dist/index.js";
8
+ const TAG = "[telegram-provision]";
9
+ /** Action to Bot API method, for the actions that call one. `offer` sends a
10
+ * message and `list` reads local config, so neither appears.
11
+ *
12
+ * Exported so the census's owned-method map and this tool cannot disagree about
13
+ * which methods the tool covers. The two token-returning methods are ALSO in
14
+ * `api-guard`'s refusals: this map governs the census bucket, the refusal
15
+ * governs whether `telegram-api` can relay the call at all. */
16
+ export const PROVISION_METHOD = MANAGED_BOT_METHODS;
17
+ const fail = (text) => ({ text, isError: true });
18
+ /**
19
+ * `telegram-bot-provision` — create and manage bots without visiting BotFather.
20
+ *
21
+ * NOTHING here returns a token. `offer` returns the request id, `rotate` returns
22
+ * the bot id whose token changed, `access` returns the restriction state, and
23
+ * `list` returns ids and roles. The tokens themselves go from Telegram straight
24
+ * into account.json and are never rendered, logged or returned, because a tool
25
+ * result is transcript and a transcript is not where a live bot token belongs.
26
+ * `api-guard` refuses the same two methods on the `telegram-api` passthrough for
27
+ * exactly that reason; this tool would otherwise be a lock with the key beside it.
28
+ *
29
+ * Every action names a `botId` and every action requires that entry to be
30
+ * `role:'admin'`. The MCP child receives only ACCOUNT_ID, LOG_DIR and
31
+ * PLATFORM_ROOT, so it cannot see which entry spawned it; but the offer is sent
32
+ * AS the named bot and the managed bots belong to it, so the named bot's own role
33
+ * is the authority that actually matters.
34
+ */
35
+ export async function telegramBotProvision(params, deps) {
36
+ const { platformRoot, accountId, log } = deps;
37
+ const fetchImpl = deps.fetchImpl ?? fetch;
38
+ const secretPathFor = deps.secretPathFor ?? resolveSecretFilePath;
39
+ // Telegram: "Signed 32-bit identifier of the request." Generated here rather
40
+ // than taken from the caller: it must be unique per message and a model
41
+ // choosing "1" every time would make two offers indistinguishable in the log.
42
+ const requestIdGen = deps.requestIdGen ?? (() => randomInt(1, MANAGED_BOT_REQUEST_ID_MAX));
43
+ if (!platformRoot || !accountId) {
44
+ log(`${TAG} op=refused reason=no-account-env`);
45
+ return fail(`PLATFORM_ROOT/ACCOUNT_ID not in MCP env — cannot reach this account's bots.`);
46
+ }
47
+ const registered = listRegisteredBots(platformRoot, accountId);
48
+ if (params.action === "list") {
49
+ // Never a token. `managed` is provenance: a bot this install created through
50
+ // the button, as opposed to one whose BotFather token an operator pasted.
51
+ const rows = registered.map((b) => `${b.id} role=${b.role}${b.agent ? ` agent=${b.agent}` : ""}`);
52
+ log(`${TAG} op=provision-list bots=${registered.length}`);
53
+ return {
54
+ isError: false,
55
+ text: rows.length === 0
56
+ ? `No Telegram bots are registered on this account.`
57
+ : `Bots on this account:\n${rows.join("\n")}`,
58
+ };
59
+ }
60
+ const entry = registered.find((b) => b.id === params.botId);
61
+ if (!entry) {
62
+ log(`${TAG} op=refused reason=unknown-bot botId=${params.botId}`);
63
+ return fail(`No bot ${params.botId} is registered on this account. Registered: ${registered.map((b) => b.id).join(", ") || "none"}`);
64
+ }
65
+ // The authorisation gate, before any Telegram call. A public bot answering for
66
+ // someone else's agent must not be able to mint bots on this account or read
67
+ // the access settings of one.
68
+ if (entry.role !== "admin") {
69
+ log(`${TAG} op=refused reason=public-entry-no-provision botId=${params.botId} role=${entry.role}`);
70
+ return fail(`Bot ${params.botId} is a ${entry.role} bot. Provisioning is an admin-entry action: only a bot registered with role admin can create or manage other bots.`);
71
+ }
72
+ const token = resolveBotToken(platformRoot, accountId, params.botId);
73
+ if (!token) {
74
+ log(`${TAG} op=refused reason=no-token botId=${params.botId}`);
75
+ return fail(`Bot ${params.botId} has no token in account.json.`);
76
+ }
77
+ switch (params.action) {
78
+ case "offer": {
79
+ if (params.chatId === undefined) {
80
+ return fail(`offer needs \`chatId\`: the private chat the button is sent to. Telegram makes this button "Available in private chats only".`);
81
+ }
82
+ // Pre-flight. The switch lives in the @BotFather Mini App and no API call
83
+ // turns it on, so without this the send succeeds and the button simply does
84
+ // nothing when tapped, with nothing anywhere explaining why.
85
+ const me = await botCanManageBots(token, fetchImpl);
86
+ if (!me.ok)
87
+ return fail(`Could not read the bot's own profile: ${me.error}`);
88
+ if (!me.canManageBots) {
89
+ log(`${TAG} op=refused reason=management-not-enabled botId=${params.botId}`);
90
+ return fail(`@${me.username} cannot manage other bots yet, so the button would do nothing. ` +
91
+ `Open @BotFather, go to its Mini App, select this bot and enable management of other bots. ` +
92
+ `This is a one-time step per managing bot; every bot created afterwards needs no BotFather visit.`);
93
+ }
94
+ const requestId = requestIdGen();
95
+ const keyboard = buildManagedBotRequestKeyboard({
96
+ text: params.buttonText ?? "Create a bot",
97
+ requestId,
98
+ ...(params.suggestedName !== undefined ? { suggestedName: params.suggestedName } : {}),
99
+ ...(params.suggestedUsername !== undefined
100
+ ? { suggestedUsername: params.suggestedUsername }
101
+ : {}),
102
+ });
103
+ const res = await callBotApi(token, "sendMessage", {
104
+ chat_id: params.chatId,
105
+ text: `Tap the button to create a bot. Telegram will ask you to name it, then hand it straight to this install: ` +
106
+ `no BotFather, no token to copy. It will be registered and restricted to you until an agent is bound to it.`,
107
+ reply_markup: JSON.stringify(keyboard),
108
+ }, { fetchImpl });
109
+ log(`${TAG} op=provision-offer botId=${params.botId} chatId=${params.chatId} requestId=${requestId} ` +
110
+ `suggestedUsername=${params.suggestedUsername ?? "none"}`);
111
+ if (!res.ok)
112
+ return fail(`Could not send the button: ${res.description ?? "sendMessage failed"}`);
113
+ return {
114
+ isError: false,
115
+ text: `Sent the create-a-bot button to chat ${params.chatId} (request ${requestId}).\n` +
116
+ `When it is tapped, this install receives the new bot, stores its token, restricts it to its owner and registers its webhook. ` +
117
+ `Telegram does not echo the request id back, so the arrival is matched on the new bot's id.`,
118
+ };
119
+ }
120
+ case "rotate": {
121
+ if (!params.managedBotId) {
122
+ return fail(`rotate needs \`managedBotId\`: the bot whose token is being replaced.`);
123
+ }
124
+ const managed = registered.find((b) => b.id === params.managedBotId);
125
+ if (!managed) {
126
+ return fail(`Bot ${params.managedBotId} is not registered on this account, so there is nothing here to rotate.`);
127
+ }
128
+ const oldToken = resolveBotToken(platformRoot, accountId, params.managedBotId);
129
+ if (!oldToken)
130
+ return fail(`Bot ${params.managedBotId} has no token in account.json.`);
131
+ // The WHOLE stored entry, not the `{ id, role, agent }` registry row.
132
+ // Spreading the row would drop adminUsers, dmPolicy, allowFrom and managed,
133
+ // so replacing a token would quietly un-admit every admin on the bot.
134
+ const dir = resolveAccountDir(platformRoot, accountId);
135
+ const stored = dir.ok ? readTelegramBotEntry(dir.dir, params.managedBotId) : null;
136
+ if (!stored) {
137
+ return fail(`Could not read bot ${params.managedBotId} from account.json, so nothing was rotated.`);
138
+ }
139
+ // Read the registered URL BEFORE revoking, so the re-registration needs no
140
+ // operator input and cannot land the bot on a different path than it was on.
141
+ let url = "";
142
+ try {
143
+ url = (await getWebhookInfo(oldToken, fetchImpl)).url;
144
+ }
145
+ catch (e) {
146
+ return fail(`Could not read the current webhook before rotating: ${e instanceof Error ? e.message : String(e)}. ` +
147
+ `Nothing was revoked.`);
148
+ }
149
+ if (!url) {
150
+ return fail(`Bot ${params.managedBotId} has no webhook registered, so there is no URL to restore it to after a rotation. ` +
151
+ `Register it with telegram-webhook-register first.`);
152
+ }
153
+ const rotated = await replaceManagedBotToken(token, Number(params.managedBotId), fetchImpl);
154
+ log(`${TAG} op=provision-token botId=${params.botId} newBotId=${params.managedBotId} ` +
155
+ `fetched=${rotated.ok ? "yes" : "no"} reason=${rotated.ok ? "ok" : "api-error"}`);
156
+ if (!rotated.ok)
157
+ return fail(`Telegram refused the rotation: ${rotated.error}`);
158
+ // The bot's user id survives a rotation, so the entry keeps its id, its role
159
+ // and its policy: this replaces a credential, it does not re-bind a bot.
160
+ const persisted = persistTelegramBot(platformRoot, accountId, {
161
+ ...stored,
162
+ token: rotated.token,
163
+ });
164
+ log(`${TAG} op=provision-persist botId=${params.botId} newBotId=${params.managedBotId} ` +
165
+ `written=${persisted.ok ? "yes" : "no"} restricted=unchanged`);
166
+ if (!persisted.ok) {
167
+ return fail(`The token was rotated but could not be saved (${persisted.error}). The old token is dead and the new one is only reachable by rotating again.`);
168
+ }
169
+ const reg = await setTelegramWebhook(rotated.token, url, secretPathFor(params.managedBotId), fetchImpl);
170
+ log(`${TAG} op=provision-register botId=${params.botId} newBotId=${params.managedBotId} ` +
171
+ `webhook=${reg.ok ? "ok" : "failed"} allowedCount=${TELEGRAM_ALLOWED_UPDATES.length}`);
172
+ return reg.ok
173
+ ? {
174
+ isError: false,
175
+ text: `Rotated bot ${params.managedBotId}. The new token is saved and its webhook is re-registered at ${url}.`,
176
+ }
177
+ : fail(`The new token is saved but the webhook did not re-register: ${reg.error}. The bot receives nothing until it does.`);
178
+ }
179
+ case "access": {
180
+ if (!params.managedBotId) {
181
+ return fail(`access needs \`managedBotId\`: the bot whose access settings are read or set.`);
182
+ }
183
+ const target = Number(params.managedBotId);
184
+ if (params.isAccessRestricted === undefined) {
185
+ const got = await getManagedBotAccessSettings(token, target, fetchImpl);
186
+ if (!got.ok)
187
+ return fail(`Could not read the access settings: ${got.error}`);
188
+ log(`${TAG} op=provision-access botId=${params.botId} newBotId=${params.managedBotId} ` +
189
+ `mode=read restricted=${got.isAccessRestricted ? "yes" : "no"} added=${got.addedUserIds.length}`);
190
+ return {
191
+ isError: false,
192
+ text: got.isAccessRestricted
193
+ ? `Bot ${params.managedBotId} is restricted. Besides its owner, ${got.addedUserIds.length === 0
194
+ ? "nobody"
195
+ : `these users can reach it: ${got.addedUserIds.join(", ")}`}.`
196
+ : `Bot ${params.managedBotId} is OPEN: anyone who finds it can message it.`,
197
+ };
198
+ }
199
+ if (params.addedUserIds && params.addedUserIds.length > MAX_ADDED_USER_IDS) {
200
+ return fail(`Telegram allows at most ${MAX_ADDED_USER_IDS} added users; ${params.addedUserIds.length} were given.`);
201
+ }
202
+ const set = await setManagedBotAccessSettings(token, target, params.isAccessRestricted, params.addedUserIds, fetchImpl);
203
+ log(`${TAG} op=provision-access botId=${params.botId} newBotId=${params.managedBotId} ` +
204
+ `mode=write restricted=${params.isAccessRestricted ? "yes" : "no"} ` +
205
+ `added=${params.addedUserIds?.length ?? 0} result=${set.ok ? "ok" : "failed"}`);
206
+ if (!set.ok)
207
+ return fail(`Telegram refused the change: ${set.error}`);
208
+ return {
209
+ isError: false,
210
+ text: params.isAccessRestricted
211
+ ? `Bot ${params.managedBotId} is now restricted to its owner${params.addedUserIds?.length ? ` and ${params.addedUserIds.length} named user(s)` : ""}.`
212
+ : `Bot ${params.managedBotId} is now OPEN: anyone who finds it can message it.`,
213
+ };
214
+ }
215
+ }
216
+ }
217
+ //# sourceMappingURL=bot-provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-provision.js","sourceRoot":"","sources":["../../src/tools/bot-provision.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,13 @@ export interface CardParams {
9
9
  disablePreview?: boolean;
10
10
  callbackQueryId?: string;
11
11
  alert?: boolean;
12
+ /** Task 2615 — send AS a connected business account rather than as the bot.
13
+ *
14
+ * Rarely passed. When this account holds a stored connection and `chatId` is
15
+ * a business chat, it is filled in from the store below, for the reason Task
16
+ * 2611 gave `telegram-ask`: the identifier exists only inside a connection
17
+ * Telegram announces once, so the model has no way to supply one. */
18
+ businessConnectionId?: string;
12
19
  }
13
20
  export interface CardDeps {
14
21
  platformRoot: string;
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/tools/card.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAMzF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,OAAO,CAAC,EAAE,yBAAyB,EAAE,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,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,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;CACnD;AAQD;;;;;gCAKgC;AAChC,wBAAsB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA4IrF"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/tools/card.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAczF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,OAAO,CAAC,EAAE,yBAAyB,EAAE,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;0EAKsE;IACtE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,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,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;CACnD;AAQD;;;;;gCAKgC;AAChC,wBAAsB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAsMrF"}
@@ -2,6 +2,9 @@ import { callBotApi } from "../lib/bot-api.js";
2
2
  import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
3
3
  import { buildInlineKeyboard } from "../lib/telegram.js";
4
4
  import { cardKey, readCardId, writeCardId } from "../lib/card-store.js";
5
+ import { gateChatSend } from "../lib/chat-send-policy.js";
6
+ import { readBusinessConnection } from "../lib/business-connection-store.js";
7
+ import { businessChannelKey, newestInboundTelegramDate, businessWindowVerdict, businessWindowRefusal, } from "../lib/business-window-store.js";
5
8
  const TAG = "[telegram-tools]";
6
9
  const TOOL = "telegram-card";
7
10
  /** Telegram's answer when the new text and markup match the old. It is a no-op,
@@ -42,14 +45,67 @@ export async function telegramCard(p, deps) {
42
45
  : "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
43
46
  };
44
47
  }
48
+ // Task 2617 — before the body is built and before the card store is read, so a
49
+ // refused send touches nothing. A channel post reaches every subscriber and
50
+ // cannot be unsent.
51
+ const gate = gateChatSend({
52
+ platformRoot: deps.platformRoot,
53
+ accountId: deps.accountId,
54
+ botId: p.botId,
55
+ chatId: p.chatId,
56
+ log,
57
+ });
58
+ if (!gate.allowed)
59
+ return { ok: false, isError: true, outcome: "none", text: gate.text };
45
60
  const markup = p.buttons ? buildInlineKeyboard(p.buttons) : undefined;
46
61
  const stored = p.key
47
62
  ? readCardId(deps.platformRoot, deps.accountId, cardKey(p.botId, p.chatId, p.key))
48
63
  : null;
64
+ // Task 2615 — a card into a connected business account's chat.
65
+ //
66
+ // Resolved from the store when the caller named no id, the same shape
67
+ // `telegram-ask` uses for a checklist: the identifier exists only inside a
68
+ // connection Telegram announces once, so naming a missing parameter would tell
69
+ // the model to supply something it cannot obtain. The store lookup is keyed on
70
+ // the business channel key, so a card to an ordinary chat finds nothing and
71
+ // this whole block is inert — every pre-2615 card body stays byte-identical.
72
+ const bizKey = businessChannelKey(p.botId, p.chatId);
73
+ const newestInbound = newestInboundTelegramDate(deps.platformRoot, deps.accountId, bizKey);
74
+ let connectionId = p.businessConnectionId;
75
+ if (!connectionId && newestInbound !== null) {
76
+ const rec = readBusinessConnection(deps.platformRoot, deps.accountId, p.botId);
77
+ if (rec) {
78
+ connectionId = rec.id;
79
+ // The line names the SOURCE and never the identifier: it is a capability
80
+ // handle, and the platform side truncates it for the same reason.
81
+ log(`${TAG} op=business-connection-resolved callId=${callId} tool=${TOOL} ` +
82
+ `botId=${p.botId} chatId=${p.chatId} source=store`);
83
+ }
84
+ }
85
+ if (connectionId) {
86
+ // Decided BEFORE the network call. Telegram emits nothing when a window
87
+ // closes, so a refusal after the fetch would be indistinguishable from a
88
+ // send that merely failed.
89
+ const verdict = businessWindowVerdict({ newestInboundDate: newestInbound, nowMs: Date.now() });
90
+ log(`${TAG} op=business-window callId=${callId} tool=${TOOL} botId=${p.botId} ` +
91
+ `chatId=${p.chatId} ageS=${verdict.ageS ?? "none"} allowed=${verdict.allowed ? "yes" : "no"}`);
92
+ if (!verdict.allowed) {
93
+ return {
94
+ ok: false,
95
+ isError: true,
96
+ outcome: "none",
97
+ text: businessWindowRefusal(p.chatId, verdict.ageS),
98
+ };
99
+ }
100
+ }
49
101
  const common = {
50
102
  chat_id: p.chatId,
51
103
  text: p.text,
52
104
  parse_mode: p.parseMode ?? "HTML",
105
+ // Built from `common`, so the id rides `editMessageText` as well as
106
+ // `sendMessage`: editing a business card is as much a business send as the
107
+ // first post was.
108
+ ...(connectionId ? { business_connection_id: connectionId } : {}),
53
109
  ...(markup ? { reply_markup: markup } : {}),
54
110
  ...(p.disablePreview ? { link_preview_options: { is_disabled: true } } : {}),
55
111
  };
@@ -1 +1 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tools/card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tools/card.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/tools/invoice.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,mBAAmB,GACnB,SAAS,GACT,cAAc,GACd,QAAQ,GACR,kBAAkB,CAAC;AAEvB;;kDAEkD;AAClD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CASjE,CAAC;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,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,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB;gEAC4D;IAC5D,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACnC;AAwID;;;;;;;2CAO2C;AAC3C,wBAAsB,eAAe,CACnC,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CAoFxB"}
1
+ {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/tools/invoice.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,mBAAmB,GACnB,SAAS,GACT,cAAc,GACd,QAAQ,GACR,kBAAkB,CAAC;AAEvB;;kDAEkD;AAClD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CASjE,CAAC;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,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,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB;gEAC4D;IAC5D,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACnC;AAwID;;;;;;;2CAO2C;AAC3C,wBAAsB,eAAe,CACnC,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CAkGxB"}
@@ -1,5 +1,6 @@
1
1
  import { callBotApi } from "../lib/bot-api.js";
2
2
  import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
3
+ import { gateChatSend } from "../lib/chat-send-policy.js";
3
4
  const TAG = "[telegram-tools]";
4
5
  const TOOL = "telegram-invoice";
5
6
  /** Action to Bot API method. Verified against the live parameter tables on
@@ -190,6 +191,20 @@ export async function telegramInvoice(p, deps) {
190
191
  : "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
191
192
  };
192
193
  }
194
+ // Task 2617 — guarded on PRESENCE, because `action: 'link'` mints a payable URL
195
+ // and posts to no chat at all. Gating an absent chat id would refuse an action
196
+ // that reaches nobody.
197
+ if (p.chatId !== undefined) {
198
+ const gate = gateChatSend({
199
+ platformRoot: deps.platformRoot,
200
+ accountId: deps.accountId,
201
+ botId: p.botId,
202
+ chatId: p.chatId,
203
+ log,
204
+ });
205
+ if (!gate.allowed)
206
+ return { ok: false, isError: true, outcome: "none", text: gate.text };
207
+ }
193
208
  const method = INVOICE_METHOD[p.action];
194
209
  log(`${TAG} op=call tool=${TOOL} method=${method} callId=${callId} botId=${p.botId}`);
195
210
  let envelope;