@rubytech/create-maxy-code 0.1.601 → 0.1.602

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 (253) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/hooks/video-frames-inject.sh +141 -0
  3. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +5 -1
  4. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +6 -0
  5. package/payload/platform/plugins/docs/references/admin-ui.md +2 -0
  6. package/payload/platform/plugins/docs/references/telegram-guide.md +2 -0
  7. package/payload/platform/plugins/scheduling/PLUGIN.md +2 -0
  8. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js +67 -1
  9. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js.map +1 -1
  10. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate.test.js +89 -1
  11. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate.test.js.map +1 -1
  12. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/outage-marker.test.d.ts +2 -0
  13. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/outage-marker.test.d.ts.map +1 -0
  14. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/outage-marker.test.js +160 -0
  15. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/outage-marker.test.js.map +1 -0
  16. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +16 -0
  17. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -1
  18. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +31 -1
  19. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
  20. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js +42 -4
  21. package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/outage-marker.d.ts +101 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/outage-marker.d.ts.map +1 -0
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/outage-marker.js +130 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/outage-marker.js.map +1 -0
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +10 -1
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -1
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -1
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts +24 -0
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +89 -0
  32. package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
  33. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +67 -1
  34. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  35. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/gate-dispatch-wiring.test.js +31 -0
  36. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/gate-dispatch-wiring.test.js.map +1 -1
  37. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +10 -1
  38. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  39. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +46 -1
  40. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  41. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +72 -4
  42. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  43. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +81 -4
  44. package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
  45. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts +50 -0
  46. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
  47. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +48 -7
  48. package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
  49. package/payload/platform/plugins/telegram/PLUGIN.md +4 -0
  50. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js +33 -1
  51. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin-registry.test.js.map +1 -1
  52. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js +166 -1
  53. package/payload/platform/plugins/telegram/mcp/dist/__tests__/public-pin.test.js.map +1 -1
  54. package/payload/platform/plugins/telegram/mcp/dist/index.js +39 -14
  55. package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
  56. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts +95 -0
  57. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.d.ts.map +1 -1
  58. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js +125 -0
  59. package/payload/platform/plugins/telegram/mcp/dist/lib/public-pin.js.map +1 -1
  60. package/payload/platform/services/telegram-channel/dist/notification.d.ts +6 -0
  61. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  62. package/payload/platform/services/telegram-channel/dist/notification.js +12 -5
  63. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  64. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +5 -0
  65. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  66. package/payload/platform/services/whatsapp-channel/dist/notification.js +9 -3
  67. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  68. package/payload/platform/templates/account-settings.json +6 -0
  69. package/payload/server/chunk-CYU75QAV.js +377 -0
  70. package/payload/server/{chunk-34FPJYHN.js → chunk-GI5AVCRG.js} +87 -146
  71. package/payload/server/chunk-KUVNCAE4.js +77 -0
  72. package/payload/server/{manager-7BXVB76I.js → manager-VDHT3YYI.js} +2 -1
  73. package/payload/server/maxy-edge.js +33 -1
  74. package/payload/server/public/activity.html +6 -6
  75. package/payload/server/public/agents.html +5 -5
  76. package/payload/server/public/assets/{AdminLoginScreens-B3W6J6Bl.js → AdminLoginScreens-CaQqLuxZ.js} +1 -1
  77. package/payload/server/public/assets/AdminLoginScreens-CaQqLuxZ.js.br +0 -0
  78. package/payload/server/public/assets/AdminLoginScreens-CaQqLuxZ.js.gz +0 -0
  79. package/payload/server/public/assets/{AdminShell-C3R-vMZ5.js → AdminShell-D8WTrqem.js} +1 -1
  80. package/payload/server/public/assets/AdminShell-D8WTrqem.js.br +0 -0
  81. package/payload/server/public/assets/AdminShell-D8WTrqem.js.gz +0 -0
  82. package/payload/server/public/assets/{activity-tzv68iBs.js → activity-B3fiJrC2.js} +1 -1
  83. package/payload/server/public/assets/activity-B3fiJrC2.js.br +0 -0
  84. package/payload/server/public/assets/activity-B3fiJrC2.js.gz +0 -0
  85. package/payload/server/public/assets/admin-ouF-DflP.js +1 -0
  86. package/payload/server/public/assets/admin-ouF-DflP.js.br +0 -0
  87. package/payload/server/public/assets/admin-ouF-DflP.js.gz +0 -0
  88. package/payload/server/public/assets/{agents-DUZfeY3X.js → agents-C8RSXHdh.js} +1 -1
  89. package/payload/server/public/assets/agents-C8RSXHdh.js.br +0 -0
  90. package/payload/server/public/assets/agents-C8RSXHdh.js.gz +0 -0
  91. package/payload/server/public/assets/{browser-DwLaXqjO.js → browser-Dbv6-Rag.js} +1 -1
  92. package/payload/server/public/assets/browser-Dbv6-Rag.js.br +0 -0
  93. package/payload/server/public/assets/browser-Dbv6-Rag.js.gz +0 -0
  94. package/payload/server/public/assets/{calendar-Cli8Qjl9.js → calendar-vJjtsH9n.js} +1 -1
  95. package/payload/server/public/assets/calendar-vJjtsH9n.js.br +0 -0
  96. package/payload/server/public/assets/calendar-vJjtsH9n.js.gz +0 -0
  97. package/payload/server/public/assets/chat-cqL4qPUy.js +1 -0
  98. package/payload/server/public/assets/chat-cqL4qPUy.js.br +1 -0
  99. package/payload/server/public/assets/chat-cqL4qPUy.js.gz +0 -0
  100. package/payload/server/public/assets/chevron-left-DB98DSG3.js +1 -0
  101. package/payload/server/public/assets/chevron-left-DB98DSG3.js.br +0 -0
  102. package/payload/server/public/assets/clock-4YwsYe4L.js +1 -0
  103. package/payload/server/public/assets/clock-4YwsYe4L.js.br +0 -0
  104. package/payload/server/public/assets/clock-4YwsYe4L.js.gz +0 -0
  105. package/payload/server/public/assets/{copy-yhhwfEbQ.js → copy-DyG7sC5o.js} +1 -1
  106. package/payload/server/public/assets/copy-DyG7sC5o.js.br +0 -0
  107. package/payload/server/public/assets/copy-DyG7sC5o.js.gz +0 -0
  108. package/payload/server/public/assets/data-BAzLtx9C.js +1 -0
  109. package/payload/server/public/assets/data-BAzLtx9C.js.br +0 -0
  110. package/payload/server/public/assets/data-BAzLtx9C.js.gz +0 -0
  111. package/payload/server/public/assets/{field-jg0YQNDy.js → field-Bx6pM-vq.js} +1 -1
  112. package/payload/server/public/assets/field-Bx6pM-vq.js.br +0 -0
  113. package/payload/server/public/assets/field-Bx6pM-vq.js.gz +0 -0
  114. package/payload/server/public/assets/{file-text-D0EdW7h4.js → file-text-CpHWsMGe.js} +1 -1
  115. package/payload/server/public/assets/file-text-CpHWsMGe.js.br +0 -0
  116. package/payload/server/public/assets/file-text-CpHWsMGe.js.gz +0 -0
  117. package/payload/server/public/assets/{graph--AUr4uBc.js → graph-DjOywuv_.js} +1 -1
  118. package/payload/server/public/assets/graph-DjOywuv_.js.br +0 -0
  119. package/payload/server/public/assets/graph-DjOywuv_.js.gz +0 -0
  120. package/payload/server/public/assets/{graph-labels-DM0CiAX1.js → graph-labels-CGWtqa-m.js} +1 -1
  121. package/payload/server/public/assets/graph-labels-CGWtqa-m.js.br +0 -0
  122. package/payload/server/public/assets/graph-labels-CGWtqa-m.js.gz +0 -0
  123. package/payload/server/public/assets/{jsx-runtime-lfcjzaWi.css → jsx-runtime-D75_aR1J.css} +1 -1
  124. package/payload/server/public/assets/jsx-runtime-D75_aR1J.css.br +0 -0
  125. package/payload/server/public/assets/{jsx-runtime-lfcjzaWi.css.gz → jsx-runtime-D75_aR1J.css.gz} +0 -0
  126. package/payload/server/public/assets/{operator-CNYKStFX.js → operator-_DN0RF1R.js} +1 -1
  127. package/payload/server/public/assets/operator-_DN0RF1R.js.br +0 -0
  128. package/payload/server/public/assets/operator-_DN0RF1R.js.gz +0 -0
  129. package/payload/server/public/assets/page-DI4qQIK0.js +1 -0
  130. package/payload/server/public/assets/page-DI4qQIK0.js.br +0 -0
  131. package/payload/server/public/assets/page-DI4qQIK0.js.gz +0 -0
  132. package/payload/server/public/assets/page-zCwgrs8m.js +32 -0
  133. package/payload/server/public/assets/page-zCwgrs8m.js.br +0 -0
  134. package/payload/server/public/assets/page-zCwgrs8m.js.gz +0 -0
  135. package/payload/server/public/assets/play-CHQ5a9yh.js +1 -0
  136. package/payload/server/public/assets/play-CHQ5a9yh.js.br +0 -0
  137. package/payload/server/public/assets/play-CHQ5a9yh.js.gz +0 -0
  138. package/payload/server/public/assets/{public-7gXDqCog.js → public-DDVWBNSH.js} +1 -1
  139. package/payload/server/public/assets/public-DDVWBNSH.js.br +0 -0
  140. package/payload/server/public/assets/public-DDVWBNSH.js.gz +0 -0
  141. package/payload/server/public/assets/{rotate-ccw-DhqNTPpo.js → rotate-ccw-xTwkf-m7.js} +1 -1
  142. package/payload/server/public/assets/rotate-ccw-xTwkf-m7.js.br +0 -0
  143. package/payload/server/public/assets/rotate-ccw-xTwkf-m7.js.gz +0 -0
  144. package/payload/server/public/assets/{routines-DN_yDtEj.js → routines-Bu5MdNmG.js} +1 -1
  145. package/payload/server/public/assets/routines-Bu5MdNmG.js.br +0 -0
  146. package/payload/server/public/assets/routines-Bu5MdNmG.js.gz +0 -0
  147. package/payload/server/public/assets/{skills-pb_3BdOl.js → skills-DRunh5vy.js} +1 -1
  148. package/payload/server/public/assets/skills-DRunh5vy.js.br +0 -0
  149. package/payload/server/public/assets/skills-DRunh5vy.js.gz +0 -0
  150. package/payload/server/public/assets/{tasks-BQm4boat.js → tasks-DI2fznvd.js} +1 -1
  151. package/payload/server/public/assets/tasks-DI2fznvd.js.br +0 -0
  152. package/payload/server/public/assets/tasks-DI2fznvd.js.gz +0 -0
  153. package/payload/server/public/assets/{triangle-alert-d7yjaIqv.js → triangle-alert-B6CHZeUf.js} +1 -1
  154. package/payload/server/public/assets/triangle-alert-B6CHZeUf.js.br +0 -0
  155. package/payload/server/public/assets/triangle-alert-B6CHZeUf.js.gz +0 -0
  156. package/payload/server/public/assets/{useCopyFeedback-CZ6Qhfkj.js → useCopyFeedback-6rU2IEPk.js} +1 -1
  157. package/payload/server/public/assets/useCopyFeedback-6rU2IEPk.js.br +2 -0
  158. package/payload/server/public/assets/useCopyFeedback-6rU2IEPk.js.gz +0 -0
  159. package/payload/server/public/assets/{useMediaQuery-R1smYLx4.js → useMediaQuery-D7A5Bzs3.js} +1 -1
  160. package/payload/server/public/assets/useMediaQuery-D7A5Bzs3.js.br +0 -0
  161. package/payload/server/public/assets/useMediaQuery-D7A5Bzs3.js.gz +0 -0
  162. package/payload/server/public/assets/useVoiceRecorder-CptrerVA.js +2 -0
  163. package/payload/server/public/assets/useVoiceRecorder-CptrerVA.js.br +0 -0
  164. package/payload/server/public/assets/useVoiceRecorder-CptrerVA.js.gz +0 -0
  165. package/payload/server/public/assets/{wrench-DL1pbaCs.js → wrench-DyX4C8aY.js} +1 -1
  166. package/payload/server/public/assets/wrench-DyX4C8aY.js.br +0 -0
  167. package/payload/server/public/assets/wrench-DyX4C8aY.js.gz +0 -0
  168. package/payload/server/public/browser.html +5 -5
  169. package/payload/server/public/calendar.html +8 -8
  170. package/payload/server/public/chat.html +14 -14
  171. package/payload/server/public/data.html +12 -12
  172. package/payload/server/public/field.html +3 -3
  173. package/payload/server/public/graph.html +10 -10
  174. package/payload/server/public/index.html +14 -14
  175. package/payload/server/public/operator.html +15 -15
  176. package/payload/server/public/public.html +14 -14
  177. package/payload/server/public/routines.html +8 -8
  178. package/payload/server/public/skills.html +6 -6
  179. package/payload/server/public/tasks.html +7 -7
  180. package/payload/server/server.js +634 -461
  181. package/payload/server/video-extract.js +36 -0
  182. package/payload/server/public/assets/AdminLoginScreens-B3W6J6Bl.js.br +0 -0
  183. package/payload/server/public/assets/AdminLoginScreens-B3W6J6Bl.js.gz +0 -0
  184. package/payload/server/public/assets/AdminShell-C3R-vMZ5.js.br +0 -0
  185. package/payload/server/public/assets/AdminShell-C3R-vMZ5.js.gz +0 -0
  186. package/payload/server/public/assets/activity-tzv68iBs.js.br +0 -0
  187. package/payload/server/public/assets/activity-tzv68iBs.js.gz +0 -0
  188. package/payload/server/public/assets/admin-CzW_9jm3.js +0 -1
  189. package/payload/server/public/assets/admin-CzW_9jm3.js.br +0 -0
  190. package/payload/server/public/assets/admin-CzW_9jm3.js.gz +0 -0
  191. package/payload/server/public/assets/agents-DUZfeY3X.js.br +0 -0
  192. package/payload/server/public/assets/agents-DUZfeY3X.js.gz +0 -0
  193. package/payload/server/public/assets/browser-DwLaXqjO.js.br +0 -0
  194. package/payload/server/public/assets/browser-DwLaXqjO.js.gz +0 -0
  195. package/payload/server/public/assets/calendar-Cli8Qjl9.js.br +0 -0
  196. package/payload/server/public/assets/calendar-Cli8Qjl9.js.gz +0 -0
  197. package/payload/server/public/assets/chat-ByAgBgm1.js +0 -1
  198. package/payload/server/public/assets/chat-ByAgBgm1.js.br +0 -1
  199. package/payload/server/public/assets/chat-ByAgBgm1.js.gz +0 -0
  200. package/payload/server/public/assets/chevron-left-BIYVnwvk.js +0 -1
  201. package/payload/server/public/assets/chevron-left-BIYVnwvk.js.br +0 -0
  202. package/payload/server/public/assets/clock-Dzy79hq3.js +0 -1
  203. package/payload/server/public/assets/clock-Dzy79hq3.js.br +0 -0
  204. package/payload/server/public/assets/clock-Dzy79hq3.js.gz +0 -0
  205. package/payload/server/public/assets/copy-yhhwfEbQ.js.br +0 -0
  206. package/payload/server/public/assets/copy-yhhwfEbQ.js.gz +0 -0
  207. package/payload/server/public/assets/data-CsMMki2A.js +0 -1
  208. package/payload/server/public/assets/data-CsMMki2A.js.br +0 -0
  209. package/payload/server/public/assets/data-CsMMki2A.js.gz +0 -0
  210. package/payload/server/public/assets/field-jg0YQNDy.js.br +0 -0
  211. package/payload/server/public/assets/field-jg0YQNDy.js.gz +0 -0
  212. package/payload/server/public/assets/file-text-D0EdW7h4.js.br +0 -0
  213. package/payload/server/public/assets/file-text-D0EdW7h4.js.gz +0 -0
  214. package/payload/server/public/assets/graph--AUr4uBc.js.br +0 -0
  215. package/payload/server/public/assets/graph--AUr4uBc.js.gz +0 -0
  216. package/payload/server/public/assets/graph-labels-DM0CiAX1.js.br +0 -0
  217. package/payload/server/public/assets/graph-labels-DM0CiAX1.js.gz +0 -0
  218. package/payload/server/public/assets/jsx-runtime-lfcjzaWi.css.br +0 -0
  219. package/payload/server/public/assets/operator-CNYKStFX.js.br +0 -0
  220. package/payload/server/public/assets/operator-CNYKStFX.js.gz +0 -0
  221. package/payload/server/public/assets/page-DSsEpl8J.js +0 -32
  222. package/payload/server/public/assets/page-DSsEpl8J.js.br +0 -0
  223. package/payload/server/public/assets/page-DSsEpl8J.js.gz +0 -0
  224. package/payload/server/public/assets/page-DjhmwxnY.js +0 -1
  225. package/payload/server/public/assets/page-DjhmwxnY.js.br +0 -0
  226. package/payload/server/public/assets/page-DjhmwxnY.js.gz +0 -0
  227. package/payload/server/public/assets/play-DhZlml5b.js +0 -1
  228. package/payload/server/public/assets/play-DhZlml5b.js.br +0 -0
  229. package/payload/server/public/assets/play-DhZlml5b.js.gz +0 -0
  230. package/payload/server/public/assets/public-7gXDqCog.js.br +0 -0
  231. package/payload/server/public/assets/public-7gXDqCog.js.gz +0 -0
  232. package/payload/server/public/assets/rotate-ccw-DhqNTPpo.js.br +0 -0
  233. package/payload/server/public/assets/rotate-ccw-DhqNTPpo.js.gz +0 -0
  234. package/payload/server/public/assets/routines-DN_yDtEj.js.br +0 -0
  235. package/payload/server/public/assets/routines-DN_yDtEj.js.gz +0 -0
  236. package/payload/server/public/assets/skills-pb_3BdOl.js.br +0 -0
  237. package/payload/server/public/assets/skills-pb_3BdOl.js.gz +0 -0
  238. package/payload/server/public/assets/tasks-BQm4boat.js.br +0 -0
  239. package/payload/server/public/assets/tasks-BQm4boat.js.gz +0 -0
  240. package/payload/server/public/assets/triangle-alert-d7yjaIqv.js.br +0 -0
  241. package/payload/server/public/assets/triangle-alert-d7yjaIqv.js.gz +0 -0
  242. package/payload/server/public/assets/useCopyFeedback-CZ6Qhfkj.js.br +0 -0
  243. package/payload/server/public/assets/useCopyFeedback-CZ6Qhfkj.js.gz +0 -0
  244. package/payload/server/public/assets/useMediaQuery-R1smYLx4.js.br +0 -0
  245. package/payload/server/public/assets/useMediaQuery-R1smYLx4.js.gz +0 -0
  246. package/payload/server/public/assets/useVoiceRecorder-DM1v6sRa.js +0 -2
  247. package/payload/server/public/assets/useVoiceRecorder-DM1v6sRa.js.br +0 -0
  248. package/payload/server/public/assets/useVoiceRecorder-DM1v6sRa.js.gz +0 -0
  249. package/payload/server/public/assets/wrench-DL1pbaCs.js.br +0 -0
  250. package/payload/server/public/assets/wrench-DL1pbaCs.js.gz +0 -0
  251. /package/payload/server/public/assets/{jsx-runtime-BtDK2X5t.js → jsx-runtime-B2Q1UOSJ.js} +0 -0
  252. /package/payload/server/public/assets/{jsx-runtime-BtDK2X5t.js.br → jsx-runtime-B2Q1UOSJ.js.br} +0 -0
  253. /package/payload/server/public/assets/{jsx-runtime-BtDK2X5t.js.gz → jsx-runtime-B2Q1UOSJ.js.gz} +0 -0
@@ -16,7 +16,7 @@ import { telegramAsk } from "./tools/ask.js";
16
16
  import { telegramMediaSend } from "./tools/media-send.js";
17
17
  import { telegramBotProvision } from "./tools/bot-provision.js";
18
18
  import { ASK_SHAPE, BOT_PROVISION_SHAPE, CARD_SHAPE, MEDIA_FETCH_SHAPE, MEDIA_SEND_SHAPE, THREAD_SHAPE, } from "./tools/schemas.js";
19
- import { resolvePublicPin, runPinned } from "./lib/public-pin.js";
19
+ import { makeToolGate, postPublicSurfaceCensus, resolvePublicPin, runPinned, } from "./lib/public-pin.js";
20
20
  import { bootCensusLine, passthroughCensusLine } from "./lib/api-census.js";
21
21
  import { cardCensusLine } from "./lib/card-store.js";
22
22
  import { API_VERSION } from "./lib/api-methods.js";
@@ -39,13 +39,33 @@ const server = new McpServer({
39
39
  name: "maxy-messaging",
40
40
  version: "0.1.0",
41
41
  });
42
- eagerTool(server, "telegram-card", "Post a Telegram card, or edit the one a key already names. Give `key` and the same key later edits that card in place instead of stacking a new one below it; omit `key` for a one-off message. Buttons are typed rows. Absorbs sendMessage, editMessageText, editMessageReplyMarkup and answerCallbackQuery: prefer this over telegram-api for all four.", CARD_SHAPE, async (params) => runPinned("telegram-card", params, telegramCard, toolDeps));
43
- eagerTool(server, "telegram-media-fetch", "Fetch a Telegram file by its file_id and save it locally, then Read the returned path. Use it for a file_id you learned about after the fact; files attached to an inbound message are already downloaded and their paths are on the turn. Owns getFile.", MEDIA_FETCH_SHAPE, async (params) => runPinned("telegram-media-fetch", params, telegramMediaFetch, toolDeps));
44
- eagerTool(server, "telegram-thread", "Create and manage forum topics, so one chat can carry a separate thread per job. Telegram allows a topic in a forum supergroup OR in a private chat with a user; the private-chat form needs forum topic mode enabled on the bot, without which the topic exists but nothing can be sent into it. Owns the six forum-topic methods.", THREAD_SHAPE, async (params) => runPinned("telegram-thread", params, telegramThread, toolDeps));
45
- eagerTool(server, "telegram-ask", "Ask for something structured, or send a place or a person: polls and quizzes, business checklists, a map pin, a live location, a venue, a contact card, a rolled die. Also stops a poll, and edits or stops a live location it sent earlier. Pick `kind` and the tool refuses a missing required field before it reaches Telegram. Owns sendPoll, sendChecklist, sendLocation, sendVenue, sendContact, sendDice, stopPoll, editMessageChecklist, editMessageLiveLocation and stopMessageLiveLocation: prefer this over telegram-api for all ten.", ASK_SHAPE, async (params) => runPinned("telegram-ask", params, telegramAsk, toolDeps));
46
- eagerTool(server, "telegram-media-send", "Send a photo, document, video, audio, voice note, animation, round video note or a 2-10 item album, and edit a sent message's media or caption. Name the file exactly one way: `fileId` for something Telegram already holds (always cheapest), `url` for an https address Telegram fetches itself, or `filePath` for an absolute local path uploaded as multipart. An album takes the same three per item and mixes them freely. Owns sendPhoto, sendDocument, sendVideo, sendAudio, sendVoice, sendAnimation, sendVideoNote, sendMediaGroup, editMessageMedia and editMessageCaption: prefer this over telegram-api for all ten.", MEDIA_SEND_SHAPE, async (params) => runPinned("telegram-media-send", params, telegramMediaSend, toolDeps));
47
- eagerTool(server, "telegram-bot-provision", "Create and manage Telegram bots for this account without visiting BotFather. `offer` sends a one-tap button into a private chat: the person taps it, names the bot, and this install receives the bot, stores its token, restricts it to its owner and registers its webhook, with no token for anyone to copy. `rotate` revokes a managed bot's token and re-registers it at the same URL. `access` reads or sets who may reach a managed bot besides its owner. `list` reports this account's bots by id and role. Owns getManagedBotToken, replaceManagedBotToken, getManagedBotAccessSettings and setManagedBotAccessSettings; the first two are refused on telegram-api because their result IS a live bot token, and nothing here ever returns one. The managing bot needs management of other bots enabled once in the @BotFather Mini App, which `offer` checks and names before sending anything.", BOT_PROVISION_SHAPE, async (params) => runPinned("telegram-bot-provision", params, telegramBotProvision, toolDeps));
48
- eagerTool(server, "message-history", "Query conversation history from the message log.", {
42
+ /** Task 2697 every registration below goes through `tool` instead of
43
+ * `eagerTool(server, ...)`, so a pinned spawn advertises only the four public
44
+ * tools and this file carries no per-tool conditional of its own. Permission
45
+ * and advertisement are separate: `--allowed-tools` already refused the rest,
46
+ * but a refused tool still reached the model's list and still cost a visitor a
47
+ * turn. */
48
+ const { tool, census: publicSurfaceCensus } = makeToolGate({
49
+ pin: PUBLIC_PIN,
50
+ register: (name, description, shape, handler) => eagerTool(server, name, description, shape, handler),
51
+ log: (line) => process.stderr.write(line + "\n"),
52
+ // Two sinks, because they answer to two readers. stderr reaches this spawn's
53
+ // own `mcp-telegram-<sessionId>.log`; only the loopback route reaches
54
+ // `server.log`, which is where the operator is told to grep and where
55
+ // `op=mcp-registered` for the same spawn already sits.
56
+ post: (body) => void postPublicSurfaceCensus(body, {
57
+ port: process.env.PLATFORM_PORT,
58
+ fetchImpl: fetch,
59
+ onFallback: (line) => process.stderr.write(line + "\n"),
60
+ }),
61
+ });
62
+ tool("telegram-card", "Post a Telegram card, or edit the one a key already names. Give `key` and the same key later edits that card in place instead of stacking a new one below it; omit `key` for a one-off message. Buttons are typed rows. Absorbs sendMessage, editMessageText, editMessageReplyMarkup and answerCallbackQuery: prefer this over telegram-api for all four.", CARD_SHAPE, async (params) => runPinned("telegram-card", params, telegramCard, toolDeps));
63
+ tool("telegram-media-fetch", "Fetch a Telegram file by its file_id and save it locally, then Read the returned path. Use it for a file_id you learned about after the fact; files attached to an inbound message are already downloaded and their paths are on the turn. Owns getFile.", MEDIA_FETCH_SHAPE, async (params) => runPinned("telegram-media-fetch", params, telegramMediaFetch, toolDeps));
64
+ tool("telegram-thread", "Create and manage forum topics, so one chat can carry a separate thread per job. Telegram allows a topic in a forum supergroup OR in a private chat with a user; the private-chat form needs forum topic mode enabled on the bot, without which the topic exists but nothing can be sent into it. Owns the six forum-topic methods.", THREAD_SHAPE, async (params) => runPinned("telegram-thread", params, telegramThread, toolDeps));
65
+ tool("telegram-ask", "Ask for something structured, or send a place or a person: polls and quizzes, business checklists, a map pin, a live location, a venue, a contact card, a rolled die. Also stops a poll, and edits or stops a live location it sent earlier. Pick `kind` and the tool refuses a missing required field before it reaches Telegram. Owns sendPoll, sendChecklist, sendLocation, sendVenue, sendContact, sendDice, stopPoll, editMessageChecklist, editMessageLiveLocation and stopMessageLiveLocation: prefer this over telegram-api for all ten.", ASK_SHAPE, async (params) => runPinned("telegram-ask", params, telegramAsk, toolDeps));
66
+ tool("telegram-media-send", "Send a photo, document, video, audio, voice note, animation, round video note or a 2-10 item album, and edit a sent message's media or caption. Name the file exactly one way: `fileId` for something Telegram already holds (always cheapest), `url` for an https address Telegram fetches itself, or `filePath` for an absolute local path uploaded as multipart. An album takes the same three per item and mixes them freely. Owns sendPhoto, sendDocument, sendVideo, sendAudio, sendVoice, sendAnimation, sendVideoNote, sendMediaGroup, editMessageMedia and editMessageCaption: prefer this over telegram-api for all ten.", MEDIA_SEND_SHAPE, async (params) => runPinned("telegram-media-send", params, telegramMediaSend, toolDeps));
67
+ tool("telegram-bot-provision", "Create and manage Telegram bots for this account without visiting BotFather. `offer` sends a one-tap button into a private chat: the person taps it, names the bot, and this install receives the bot, stores its token, restricts it to its owner and registers its webhook, with no token for anyone to copy. `rotate` revokes a managed bot's token and re-registers it at the same URL. `access` reads or sets who may reach a managed bot besides its owner. `list` reports this account's bots by id and role. Owns getManagedBotToken, replaceManagedBotToken, getManagedBotAccessSettings and setManagedBotAccessSettings; the first two are refused on telegram-api because their result IS a live bot token, and nothing here ever returns one. The managing bot needs management of other bots enabled once in the @BotFather Mini App, which `offer` checks and names before sending anything.", BOT_PROVISION_SHAPE, async (params) => runPinned("telegram-bot-provision", params, telegramBotProvision, toolDeps));
68
+ tool("message-history", "Query conversation history from the message log.", {
49
69
  channel: z.string().optional().describe("Filter by channel (telegram)"),
50
70
  chatId: z.string().optional().describe("Filter by chat ID"),
51
71
  limit: z.number().optional().describe("Max messages to return (default 20)"),
@@ -79,7 +99,7 @@ eagerTool(server, "message-history", "Query conversation history from the messag
79
99
  }
80
100
  });
81
101
  import { buildMenuButtonRequest, setChatMenuButton } from "./lib/menu-button.js";
82
- eagerTool(server, "telegram-menu-button", "Put a permanent job-sheet button in a bot's chats, opening the dispatch field sheet as a Telegram Mini App. The worker taps it inside Telegram; nothing is installed and there is no second login. Call this once per bot after telegram-webhook-register.", {
102
+ tool("telegram-menu-button", "Put a permanent job-sheet button in a bot's chats, opening the dispatch field sheet as a Telegram Mini App. The worker taps it inside Telegram; nothing is installed and there is no second login. Call this once per bot after telegram-webhook-register.", {
83
103
  botToken: z.string().describe("Telegram bot token from BotFather"),
84
104
  publicOrigin: z.string().url().describe("The account's public https origin, for example https://acme.example.com. Origin only — this tool appends the /field path and stamps ?bot= on for you."),
85
105
  text: z.string().optional().describe("Button label the worker sees. Defaults to \"Job sheet\"; use the account's own noun if it differs."),
@@ -121,7 +141,7 @@ eagerTool(server, "telegram-menu-button", "Put a permanent job-sheet button in a
121
141
  }],
122
142
  };
123
143
  });
124
- eagerTool(server, "telegram-webhook-register", "Register or re-register a Telegram bot webhook. Generates a cryptographic secret, persists it to disk, and passes it to the Telegram Bot API. Call this after obtaining a bot token from BotFather.", {
144
+ tool("telegram-webhook-register", "Register or re-register a Telegram bot webhook. Generates a cryptographic secret, persists it to disk, and passes it to the Telegram Bot API. Call this after obtaining a bot token from BotFather.", {
125
145
  botToken: z.string().describe("Telegram bot token from BotFather"),
126
146
  webhookUrl: z.string().url().describe("Full webhook URL; its path MUST be exactly /api/telegram/ (the only path this install serves). Do NOT add ?bot= or ?account= — this tool stamps the bot id on for you."),
127
147
  role: z.enum(["admin", "public", "specialist"]).describe("Bot role — an admin bot answers only the operator's numeric IDs and runs as the admin agent; a public bot is customer-facing and runs as the agent named in `agent`; a specialist bot runs the card named in `specialist` and answers only the IDs in `allowFrom`. This selects the spawn path, so it is a privilege decision and is never derived."),
@@ -150,7 +170,7 @@ eagerTool(server, "telegram-webhook-register", "Register or re-register a Telegr
150
170
  ...(result.isError ? { isError: true } : {}),
151
171
  };
152
172
  });
153
- eagerTool(server, "telegram-api", `Escape hatch for the long tail of the Telegram Bot API. Bot API ${API_VERSION} documents 177 methods and this reaches every one, plus any Telegram adds later. Params are untyped, so prefer a named tool where one exists: telegram-card owns sendMessage, editMessageText, editMessageReplyMarkup and answerCallbackQuery; telegram-media-fetch owns getFile; telegram-thread owns the six forum-topic methods; telegram-ask owns polls, checklists, locations, venues, contacts and dice; telegram-media-send owns every send of a photo, document, video, audio, voice, animation, video note or album, plus editing media and captions; telegram-webhook-register owns webhook state; telegram-menu-button owns the Mini App button. What is left here is genuinely long tail: chat membership and administration, business-account management, the bot's own commands and profile, org verification, chat cosmetics, stickers, gifts, transport, games, passport, ephemeral sends, and answerWebAppQuery. Fifteen methods are refused and the refusal says why: seven of the listed methods would break this install's own inbound routing or hand back a live token, and the eight Bot API payment methods are refused because this install takes no payment inside Telegram at all. There is no invoice, no payment link and no Stars balance here; charging happens outside Telegram. The build skill (telegram:build) carries the full method list and worked examples.`, {
173
+ tool("telegram-api", `Escape hatch for the long tail of the Telegram Bot API. Bot API ${API_VERSION} documents 177 methods and this reaches every one, plus any Telegram adds later. Params are untyped, so prefer a named tool where one exists: telegram-card owns sendMessage, editMessageText, editMessageReplyMarkup and answerCallbackQuery; telegram-media-fetch owns getFile; telegram-thread owns the six forum-topic methods; telegram-ask owns polls, checklists, locations, venues, contacts and dice; telegram-media-send owns every send of a photo, document, video, audio, voice, animation, video note or album, plus editing media and captions; telegram-webhook-register owns webhook state; telegram-menu-button owns the Mini App button. What is left here is genuinely long tail: chat membership and administration, business-account management, the bot's own commands and profile, org verification, chat cosmetics, stickers, gifts, transport, games, passport, ephemeral sends, and answerWebAppQuery. Fifteen methods are refused and the refusal says why: seven of the listed methods would break this install's own inbound routing or hand back a live token, and the eight Bot API payment methods are refused because this install takes no payment inside Telegram at all. There is no invoice, no payment link and no Stars balance here; charging happens outside Telegram. The build skill (telegram:build) carries the full method list and worked examples.`, {
154
174
  botId: z.string().describe("Which registered bot to call as (its numeric Telegram id, the token's colon-prefix). Never a raw token: the token is resolved from the account, so it never crosses this boundary. On a miss the error lists every bot registered here."),
155
175
  method: z.string().describe("Bot API method name, exactly as documented, for example editMessageText. See the telegram:build skill's references/methods.md for all 185."),
156
176
  params: z.record(z.unknown()).optional().describe("The method's own parameters, passed to Telegram verbatim. Use Telegram's snake_case field names, for example { chat_id, message_id, text }."),
@@ -174,7 +194,7 @@ eagerTool(server, "telegram-api", `Escape hatch for the long tail of the Telegra
174
194
  ...(result.isError ? { isError: true } : {}),
175
195
  };
176
196
  });
177
- eagerTool(server, "telegram-api-census", "Reconcile the Bot API method list this plugin ships against the live documentation at core.telegram.org, and report what drifted. Run it on a schedule, not per call: a method Telegram renames or removes 404s on every call and emits nothing until somebody makes one, so this is the only signal that finds it without a failure first.", {}, async () => {
197
+ tool("telegram-api-census", "Reconcile the Bot API method list this plugin ships against the live documentation at core.telegram.org, and report what drifted. Run it on a schedule, not per call: a method Telegram renames or removes 404s on every call and emits nothing until somebody makes one, so this is the only signal that finds it without a failure first.", {}, async () => {
178
198
  const result = await telegramApiCensus({
179
199
  log: (line) => process.stderr.write(line + "\n"),
180
200
  });
@@ -183,7 +203,7 @@ eagerTool(server, "telegram-api-census", "Reconcile the Bot API method list this
183
203
  ...(result.isError ? { isError: true } : {}),
184
204
  };
185
205
  });
186
- eagerTool(server, "telegram-live-location", "Where a Telegram live-location share currently is. When somebody shares their live location, the first share raises one turn and every movement after it updates a record silently — this reads that record. Returns the coordinates and the time Telegram measured them, so an answer always says how old it is. Refuses by name when the share has ended (past its own live_period) or when that sender is not sharing, rather than handing back a stale position; the refusal lists the shares that ARE active, so a wrong id is recoverable.", {
206
+ tool("telegram-live-location", "Where a Telegram live-location share currently is. When somebody shares their live location, the first share raises one turn and every movement after it updates a record silently — this reads that record. Returns the coordinates and the time Telegram measured them, so an answer always says how old it is. Refuses by name when the share has ended (past its own live_period) or when that sender is not sharing, rather than handing back a stale position; the refusal lists the shares that ARE active, so a wrong id is recoverable.", {
187
207
  botId: z.string().describe("The bot that received the share (its numeric Telegram id, the token's colon-prefix). A person sharing to two bots is two separate shares."),
188
208
  senderId: z.string().describe("The sharer's numeric Telegram user id."),
189
209
  }, async ({ botId, senderId }) => {
@@ -197,7 +217,7 @@ eagerTool(server, "telegram-live-location", "Where a Telegram live-location shar
197
217
  ...(result.isError ? { isError: true } : {}),
198
218
  };
199
219
  });
200
- eagerTool(server, "telegram-reach", "Who this account can message on Telegram right now. Lists every registered bot with the private chats that have messaged it — chat id, name and when they last wrote — plus any admin user allowlisted on that bot who has never messaged, which is the one case that is NOT reachable. Telegram does not let a bot open a conversation, so a person who has never written to the bot must do that first; everyone listed with a chat id can be messaged immediately with telegram-card. Read this before telling anybody a Telegram send is impossible.", {}, async () => {
220
+ tool("telegram-reach", "Who this account can message on Telegram right now. Lists every registered bot with the private chats that have messaged it — chat id, name and when they last wrote — plus any admin user allowlisted on that bot who has never messaged, which is the one case that is NOT reachable. Telegram does not let a bot open a conversation, so a person who has never written to the bot must do that first; everyone listed with a chat id can be messaged immediately with telegram-card. Read this before telling anybody a Telegram send is impossible.", {}, async () => {
201
221
  const result = telegramReach({
202
222
  platformRoot: process.env.PLATFORM_ROOT ?? "",
203
223
  accountId: process.env.ACCOUNT_ID,
@@ -226,6 +246,11 @@ process.stderr.write(passthroughCensusLine(process.env.LOG_DIR) + "\n");
226
246
  // the affordances clause in the Telegram turn instruction has no other signal,
227
247
  // because not offering a button logs nothing.
228
248
  process.stderr.write(cardCensusLine(process.env.PLATFORM_ROOT ?? "", process.env.ACCOUNT_ID, process.env.LOG_DIR) + "\n");
249
+ // Task 2697 standing check. A tool advertised to a public spawn emits nothing
250
+ // until a visitor calls it and is denied, and that denial reads as a model
251
+ // error rather than a platform one. This is the signal that needs no visitor
252
+ // turn. Pinned spawns only: on an admin spawn the full surface is expected.
253
+ publicSurfaceCensus();
229
254
  const transport = new StdioServerTransport();
230
255
  await server.connect(transport);
231
256
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,100 @@ export declare function resolvePublicPin(env: NodeJS.ProcessEnv): PublicPin | nu
53
53
  * spawn, where there is no pin and the call is a no-op, and means neither can
54
54
  * be opened later without the pin already in place. */
55
55
  export declare const PINNED_TOOLS: ReadonlySet<string>;
56
+ /** Task 2697 — what a PUBLIC spawn is ALLOWED TO SEE, which is a different
57
+ * question from what it is allowed to do with a pin. `--allowed-tools` gates
58
+ * permission, not advertisement: a tool absent from this set is never put in
59
+ * front of the model at all, so it cannot spend a visitor's turn calling one
60
+ * and reading the denial back to them.
61
+ *
62
+ * Deliberately NOT `PINNED_TOOLS`. That set is a superset on purpose — two of
63
+ * its members are pinned against being opened later, and pinning costs nothing
64
+ * where there is no pin. Narrowing it so one set could serve both jobs would
65
+ * drop that guarantee. `public-pin-registry.test.ts` reconciles THIS set
66
+ * against PLUGIN.md in both directions, so advertised and granted cannot
67
+ * drift. */
68
+ export declare const PUBLIC_VISIBLE_TOOLS: ReadonlySet<string>;
69
+ /** Every tool this plugin offers. The gate refuses a name outside it, so a tool
70
+ * added to index.ts without a decision about its public visibility fails at
71
+ * boot rather than defaulting to advertised — which is the defect this file
72
+ * exists to close, arriving by a different door.
73
+ *
74
+ * Exported for `public-pin-registry.test.ts`, which reconciles it against the
75
+ * registrations in index.ts. That refusal is a MODULE-INIT throw and would
76
+ * take the plugin down on every account, admin included, so the forgotten line
77
+ * has to be caught at commit; the throw is the backstop, not the guard. */
78
+ export declare const OFFERED_TOOLS: ReadonlySet<string>;
79
+ /** The four-argument `eagerTool(server, ...)` call shape with the server already
80
+ * bound. The handler type mirrors `eagerTool`'s own, deliberately: the gate
81
+ * never reads a handler's arguments, and anything narrower here would replace
82
+ * the contextual type each registration in index.ts destructures its params
83
+ * from — `(...args: never[])` makes every `({ botToken })` a `never`. */
84
+ export type ToolRegister = (name: string, description: string, shape: Record<string, unknown>, handler: (...args: any[]) => any) => void;
85
+ /** The boot line without its tag. The log-ingest route composes `[<tag>] <line>`
86
+ * itself, so the wire body must carry everything after the tag and none of it.
87
+ * Sorted, so two boots of one build produce the same line and a grep can
88
+ * compare by equality rather than by set. */
89
+ export declare function publicSurfaceCensusBody(names: readonly string[]): string;
90
+ /** The same line as it appears in a log file, tag included. One definition:
91
+ * the two sinks must not be able to disagree about the text. */
92
+ export declare function publicSurfaceCensusLine(names: readonly string[]): string;
93
+ /** Minimal shape of the `fetch` this poster needs, so a test drives it without
94
+ * a live route. Deliberately not `typeof fetch`: nothing here reads a Response
95
+ * beyond `ok` and `status`, and demanding the full type would force a test to
96
+ * build one. */
97
+ type CensusFetch = (url: string, init: {
98
+ method: string;
99
+ headers: Record<string, string>;
100
+ body: string;
101
+ }) => Promise<{
102
+ ok: boolean;
103
+ status: number;
104
+ }>;
105
+ /** Put the boot census where the operator is told to look for it.
106
+ *
107
+ * The plugin's stderr lands in `~/.<brand>/logs/mcp-telegram-<sessionId>.log`;
108
+ * the spawn-tee mirrors only its own `[mcp-helper]` lifecycle lines onward, so
109
+ * a census on stderr alone never reaches `server.log`. PLUGIN.md, the operator
110
+ * guide and the task all say to grep the server log, and `op=mcp-registered`
111
+ * for the same spawn is already there — a standing check nothing reads at the
112
+ * place it documents is not observability.
113
+ *
114
+ * `PLATFORM_PORT` is present exactly when it is needed: a pinned spawn is
115
+ * always built by the session manager's spawn-tee, which stamps it. Never
116
+ * throws, for the reason the gate's own refusal is the backstop and not the
117
+ * guard: this runs at module init, and a throw here would empty the plugin
118
+ * registry for every account. */
119
+ export declare function postPublicSurfaceCensus(body: string, deps: {
120
+ port: string | undefined;
121
+ fetchImpl: CensusFetch;
122
+ /** Told that `server.log` did NOT get the census, and why. Given a reason
123
+ * rather than the census again: the caller has already put the census on
124
+ * stderr, so repeating it there would have one boot look like two. An
125
+ * absent census in `server.log` with no line here is a different fault
126
+ * from one this reported, so the reason is enumerated and greppable. */
127
+ onFallback: (line: string) => void;
128
+ }): Promise<void>;
129
+ /** The ONE place a registration meets the pin. index.ts calls `tool(...)` for
130
+ * every tool it offers and holds no conditional of its own: a gate applied at
131
+ * thirteen call sites is thirteen places to forget, and a tool added next year
132
+ * would miss it in silence. Same reasoning as `runPinned` below.
133
+ *
134
+ * `register` is a parameter rather than an import of `eagerTool` so a test can
135
+ * pass a recorder and assert on what actually registered. index.ts
136
+ * top-level-awaits a stdio transport and cannot be imported by a test, so
137
+ * without this seam the only available check would be reading its source. */
138
+ export declare function makeToolGate(opts: {
139
+ pin: PublicPin | null;
140
+ register: ToolRegister;
141
+ log: (line: string) => void;
142
+ /** The second sink, given the census body without its tag. Optional so the
143
+ * gate's registration tests need not stand up a route; index.ts always
144
+ * supplies it, because stderr alone does not reach `server.log`. */
145
+ post?: (body: string) => void;
146
+ }): {
147
+ tool: ToolRegister;
148
+ census: () => void;
149
+ };
56
150
  /** Overwrite `botId`, and `chatId` when the shape has one, with the pinned
57
151
  * pair. Returns the input untouched and logs nothing when there is no pin,
58
152
  * which is every admin and specialist spawn. */
@@ -77,4 +171,5 @@ export declare function runPinned<P extends {
77
171
  }>;
78
172
  isError?: true;
79
173
  }>;
174
+ export {};
80
175
  //# sourceMappingURL=public-pin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-pin.d.ts","sourceRoot":"","sources":["../../src/lib/public-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;+DAE+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;8EAE8E;AAC9E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAMzE;AAED;;;;;;;;wDAQwD;AACxD,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,CAO3C,CAAC;AAEH;;iDAEiD;AACjD,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAClF,CAAC,EAAE,CAAC,EACJ,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,GACX,CAAC,CAmBH;AAED;;;uEAGuE;AACvE,wBAAsB,SAAS,CAC7B,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACrD,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAE5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9B,WAAW,EAAE,MAAM,CAAC,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC,CAS7E"}
1
+ {"version":3,"file":"public-pin.d.ts","sourceRoot":"","sources":["../../src/lib/public-pin.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,13 @@
28
28
  * including the ordinary one.
29
29
  */
30
30
  const TAG = "[telegram-public]";
31
+ /** Task 2697's own tag. Separate from TAG because the two answer different
32
+ * questions — TAG is per call, this is per boot — and one grep must not drag
33
+ * in the other. The bare name is what the log-ingest route takes as `tag`; the
34
+ * bracketed form is what the route composes and what a log file shows, so both
35
+ * come from one string and cannot drift apart. */
36
+ const TOOLS_TAG_NAME = "telegram-tools";
37
+ const TOOLS_TAG = `[${TOOLS_TAG_NAME}]`;
31
38
  /** Read the pin from a spawn env. Admitted only as a matched pair of non-empty
32
39
  * strings: a half pin would confine one axis and leave the other free, which
33
40
  * reads as protection while granting exactly what this exists to prevent. */
@@ -57,6 +64,124 @@ export const PINNED_TOOLS = new Set([
57
64
  "telegram-media-send",
58
65
  "telegram-bot-provision",
59
66
  ]);
67
+ /** Task 2697 — what a PUBLIC spawn is ALLOWED TO SEE, which is a different
68
+ * question from what it is allowed to do with a pin. `--allowed-tools` gates
69
+ * permission, not advertisement: a tool absent from this set is never put in
70
+ * front of the model at all, so it cannot spend a visitor's turn calling one
71
+ * and reading the denial back to them.
72
+ *
73
+ * Deliberately NOT `PINNED_TOOLS`. That set is a superset on purpose — two of
74
+ * its members are pinned against being opened later, and pinning costs nothing
75
+ * where there is no pin. Narrowing it so one set could serve both jobs would
76
+ * drop that guarantee. `public-pin-registry.test.ts` reconciles THIS set
77
+ * against PLUGIN.md in both directions, so advertised and granted cannot
78
+ * drift. */
79
+ export const PUBLIC_VISIBLE_TOOLS = new Set([
80
+ "telegram-ask",
81
+ "telegram-card",
82
+ "telegram-media-fetch",
83
+ "telegram-media-send",
84
+ ]);
85
+ /** Every tool this plugin offers. The gate refuses a name outside it, so a tool
86
+ * added to index.ts without a decision about its public visibility fails at
87
+ * boot rather than defaulting to advertised — which is the defect this file
88
+ * exists to close, arriving by a different door.
89
+ *
90
+ * Exported for `public-pin-registry.test.ts`, which reconciles it against the
91
+ * registrations in index.ts. That refusal is a MODULE-INIT throw and would
92
+ * take the plugin down on every account, admin included, so the forgotten line
93
+ * has to be caught at commit; the throw is the backstop, not the guard. */
94
+ export const OFFERED_TOOLS = new Set([
95
+ "telegram-card",
96
+ "telegram-media-fetch",
97
+ "telegram-thread",
98
+ "telegram-ask",
99
+ "telegram-media-send",
100
+ "telegram-bot-provision",
101
+ "message-history",
102
+ "telegram-menu-button",
103
+ "telegram-webhook-register",
104
+ "telegram-api",
105
+ "telegram-api-census",
106
+ "telegram-live-location",
107
+ "telegram-reach",
108
+ ]);
109
+ /** The boot line without its tag. The log-ingest route composes `[<tag>] <line>`
110
+ * itself, so the wire body must carry everything after the tag and none of it.
111
+ * Sorted, so two boots of one build produce the same line and a grep can
112
+ * compare by equality rather than by set. */
113
+ export function publicSurfaceCensusBody(names) {
114
+ const sorted = [...names].sort();
115
+ return `op=public-surface registered=${sorted.length} tools=${sorted.join(",")}`;
116
+ }
117
+ /** The same line as it appears in a log file, tag included. One definition:
118
+ * the two sinks must not be able to disagree about the text. */
119
+ export function publicSurfaceCensusLine(names) {
120
+ return `${TOOLS_TAG} ${publicSurfaceCensusBody(names)}`;
121
+ }
122
+ /** Put the boot census where the operator is told to look for it.
123
+ *
124
+ * The plugin's stderr lands in `~/.<brand>/logs/mcp-telegram-<sessionId>.log`;
125
+ * the spawn-tee mirrors only its own `[mcp-helper]` lifecycle lines onward, so
126
+ * a census on stderr alone never reaches `server.log`. PLUGIN.md, the operator
127
+ * guide and the task all say to grep the server log, and `op=mcp-registered`
128
+ * for the same spawn is already there — a standing check nothing reads at the
129
+ * place it documents is not observability.
130
+ *
131
+ * `PLATFORM_PORT` is present exactly when it is needed: a pinned spawn is
132
+ * always built by the session manager's spawn-tee, which stamps it. Never
133
+ * throws, for the reason the gate's own refusal is the backstop and not the
134
+ * guard: this runs at module init, and a throw here would empty the plugin
135
+ * registry for every account. */
136
+ export async function postPublicSurfaceCensus(body, deps) {
137
+ const failed = (reason) => deps.onFallback(`${TOOLS_TAG} op=public-surface-unposted reason=${reason}`);
138
+ if (!deps.port)
139
+ return failed("no-platform-port");
140
+ try {
141
+ const res = await deps.fetchImpl(`http://127.0.0.1:${deps.port}/api/admin/log-ingest`, {
142
+ method: "POST",
143
+ headers: { "content-type": "application/json" },
144
+ body: JSON.stringify({ tag: TOOLS_TAG_NAME, level: "info", line: body }),
145
+ });
146
+ if (!res.ok)
147
+ failed(`status-${res.status}`);
148
+ }
149
+ catch {
150
+ failed("unreachable");
151
+ }
152
+ }
153
+ /** The ONE place a registration meets the pin. index.ts calls `tool(...)` for
154
+ * every tool it offers and holds no conditional of its own: a gate applied at
155
+ * thirteen call sites is thirteen places to forget, and a tool added next year
156
+ * would miss it in silence. Same reasoning as `runPinned` below.
157
+ *
158
+ * `register` is a parameter rather than an import of `eagerTool` so a test can
159
+ * pass a recorder and assert on what actually registered. index.ts
160
+ * top-level-awaits a stdio transport and cannot be imported by a test, so
161
+ * without this seam the only available check would be reading its source. */
162
+ export function makeToolGate(opts) {
163
+ const registered = [];
164
+ const tool = (name, description, shape, handler) => {
165
+ if (!OFFERED_TOOLS.has(name)) {
166
+ throw new Error(`${TOOLS_TAG} ${name} is not in OFFERED_TOOLS. Add it there and decide whether it ` +
167
+ `belongs in PUBLIC_VISIBLE_TOOLS and PLUGIN.md's publicAllowlist.`);
168
+ }
169
+ if (opts.pin && !PUBLIC_VISIBLE_TOOLS.has(name))
170
+ return;
171
+ registered.push(name);
172
+ opts.register(name, description, shape, handler);
173
+ };
174
+ // Emitted only under a pin. On an admin spawn the full surface is the
175
+ // expected state, and a line saying so every boot would be noise that trains
176
+ // the reader to skip the tag.
177
+ const census = () => {
178
+ if (!opts.pin)
179
+ return;
180
+ opts.log(publicSurfaceCensusLine(registered));
181
+ opts.post?.(publicSurfaceCensusBody(registered));
182
+ };
183
+ return { tool, census };
184
+ }
60
185
  /** Overwrite `botId`, and `chatId` when the shape has one, with the pinned
61
186
  * pair. Returns the input untouched and logs nothing when there is no pin,
62
187
  * which is every admin and specialist spawn. */
@@ -1 +1 @@
1
- {"version":3,"file":"public-pin.js","sourceRoot":"","sources":["../../src/lib/public-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,GAAG,GAAG,mBAAmB,CAAC;AAgBhC;;8EAE8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;wDAQwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC;IACvD,eAAe;IACf,sBAAsB;IACtB,iBAAiB;IACjB,cAAc;IACd,qBAAqB;IACrB,wBAAwB;CACzB,CAAC,CAAC;AAEH;;iDAEiD;AACjD,MAAM,UAAU,cAAc,CAC5B,CAAI,EACJ,IAAkB,EAClB,IAAY;IAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,6EAA6E;IAC7E,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,QAAQ,GACZ,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;QACzC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM;YAChE,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,SAAS,CAAC;IAClB,IAAI,CAAC,GAAG,CACN,GAAG,GAAG,kBAAkB,IAAI,CAAC,MAAM,SAAS,IAAI,GAAG;QACjD,SAAS,GAAG,CAAC,KAAK,WAAW,GAAG,CAAC,MAAM,aAAa,QAAQ,EAAE,CACjE,CAAC;IACF,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IACvC,IAAI,QAAQ,IAAI,CAAC;QAAG,GAAoC,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC7E,OAAO,GAAQ,CAAC;AAClB,CAAC;AAED;;;uEAGuE;AACvE,MAAM,CAAC,KAAK,UAAU,SAAS,CAK7B,IAAY,EACZ,MAAS,EACT,EAA8B,EAC9B,WAAoB;IAEpB,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"public-pin.js","sourceRoot":"","sources":["../../src/lib/public-pin.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,12 @@ export interface TelegramMediaInbound {
52
52
  * the model cannot open an `.ogg`. Absent means unheard, which keeps the note
53
53
  * so the turn still knows audio arrived. */
54
54
  transcribed?: boolean;
55
+ /** Task 2696 — the video counterpart of `transcribed`: set only on a `video`
56
+ * item whose frame-and-speech timeline was extracted. This server renders it
57
+ * in place of the `Read this file` note, because the model cannot decode an
58
+ * mp4 but can read the frame JPEGs it points at. Absent means extraction
59
+ * degraded, which keeps the note. */
60
+ timeline?: string;
55
61
  }
56
62
  export interface InboundPayload {
57
63
  /** The telegram conversation key this payload is for. */
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAyBA,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvF;;uEAEuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAUpE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;2CAOuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,MAAM,CAaT;AAED;;;wBAGwB;AACxB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAA;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;iDAI6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;0CAIsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB;;iFAE6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC5B;;;;;oFAKgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;qDAEiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;6DAIyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;gDAE4C;IAC5C,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;kFAE8E;IAC9E,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC9B;;;;;;4DAMwD;IACxD,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED;;4EAE4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAKD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAQzD;AAED;yCACyC;AACzC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB;;;wBAGoB;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB;;;uEAGmE;IACnE,iBAAiB,EAAE,UAAU,GAAG,cAAc,CAAA;CAC/C;AAoDD,wBAAgB,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,GAAG,eAAe,CA6C5F;AAED;;2BAE2B;AAC3B,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAErE;AAED;;;mCAGmC;AACnC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAE7F;AAED;;;;;;;;;mDASmD;AACnD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,OAAO,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAEzD;AAID;;;;cAIc;AACd,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAChF,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;kFAEkF;AAClF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAIrE"}
@@ -110,11 +110,18 @@ function composePayload(p) {
110
110
  const items = (p.media ?? []).filter((m) => !(m.type === 'audio' && m.transcribed === true));
111
111
  if (items.length === 0)
112
112
  return `${quotePrefix}${p.text}`;
113
- const notes = items.map((m) => m.path
114
- ? `[Inbound Telegram ${m.type}: ${m.path}` +
115
- `${m.mimetype ? ` (${m.mimetype})` : ''}. ` +
116
- `Read this file to see what the sender shared.]`
117
- : `[Inbound Telegram ${m.type} could not be downloaded: ${m.failure ?? 'unknown reason'}]`);
113
+ // Task 2696 a video whose timeline was extracted carries frame paths and the
114
+ // spoken transcript already aligned on one clock, so its `Read this file` note
115
+ // would point at a container the model cannot decode. Absent timeline means
116
+ // extraction degraded and the note stays, exactly as before 2696. This mirrors
117
+ // the `transcribed` rule for audio directly above.
118
+ const notes = items.map((m) => m.timeline
119
+ ? m.timeline
120
+ : m.path
121
+ ? `[Inbound Telegram ${m.type}: ${m.path}` +
122
+ `${m.mimetype ? ` (${m.mimetype})` : ''}. ` +
123
+ `Read this file to see what the sender shared.]`
124
+ : `[Inbound Telegram ${m.type} could not be downloaded: ${m.failure ?? 'unknown reason'}]`);
118
125
  const caption = p.text.trim();
119
126
  const body = notes.join('\n\n');
120
127
  return `${quotePrefix}${caption ? `${caption}\n\n${body}` : body}`;
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,yEAAyE;AACzE,gCAAgC;AAChC,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,gEAAgE;AAChE,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,2FAA2F;AAC3F,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AAErF,+EAA+E;AAC/E,gFAAgF;AAChF,sEAAsE;AAEtE,OAAO,EAAE,yBAAyB,EAA4B,MAAM,mBAAmB,CAAA;AAavF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAChG,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,+CAA+C;QAC/C,0FAA0F;QAC1F,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI;QAC5F,wEAAwE;QACxE,+GAA+G,CAChH,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAYxC;IACC,8EAA8E;IAC9E,gEAAgE;IAChE,MAAM,GAAG,GACP,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,QAAQ,GAAG;QAC9C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IACpB,OAAO,CACL,6CAA6C;QAC7C,WAAW,GAAG,IAAI;QAClB,YAAY,KAAK,CAAC,SAAS,IAAI;QAC/B,2DAA2D,KAAK,CAAC,QAAQ,GAAG,CAC7E,CAAA;AACH,CAAC;AA2ED,yDAAyD;AACzD,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAgB;IAC/C,IAAI,CAAC,EAAE,CAAC,IAAI;QAAE,OAAO,wDAAwD,CAAA;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,+BAA+B;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAA;IACxG,OAAO,0DAA0D,MAAM,IAAI,CAAA;AAC7E,CAAC;AAmBD;;;;;;2EAM2E;AAC3E;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,CAAiB;IACvC,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,iFAAiF;IACjF,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAA;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,CAAC,CAAC,IAAI;QACJ,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;YACxC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YAC3C,gDAAgD;QAClD,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,OAAO,IAAI,gBAAgB,GAAG,CAC7F,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAiB,EAAE,IAAyB;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACvD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;IACjG,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACrG,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,uEAAuE;IACvE,+EAA+E;IAC/E,oCAAoC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,MAAM,eAAe,GACnB,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IACpF,MAAM,gBAAgB,GAAG,eAAe;QACtC,CAAC,CAAC,GAAG,wBAAwB,CAAC;YAC1B,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,GAAG,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBACnE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,MAAM;QACV,CAAC,CAAC,EAAE,CAAA;IACN,+EAA+E;IAC/E,qEAAqE;IACrE,MAAM,WAAW,GACf,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM;QACjC,CAAC,CAAC,EAAE,CAAA;IACR,OAAO;QACL,OAAO,EAAE,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,eAAe,OAAO,uBAAuB,yBAAyB,EAAE;QACjI,YAAY;QACZ,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,UAAU;KAC9B,CAAA;AACH,CAAC;AAED;;2BAE2B;AAC3B,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,CAAkB;IAC1D,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,CAAA;AACxB,CAAC;AAED;;;mCAGmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,IAAY;IAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;mDASmD;AACnD,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,SAAiB,EACjB,UAAmB;IAEnB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAC9C,CAAC;AAED,4EAA4E;AAE5E;;;;cAIc;AACd,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA+B,EAC/B,IAAiF;IAEjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,OAAO,EAAE;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAa;IAC3D,MAAM,CAAC,GAAG,IAAkC,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAClF,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,2BAA2B,MAAM,EAAE,CAAA;AAC1E,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,yDAAyD"}
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,yEAAyE;AACzE,gCAAgC;AAChC,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,gEAAgE;AAChE,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,2FAA2F;AAC3F,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AAErF,+EAA+E;AAC/E,gFAAgF;AAChF,sEAAsE;AAEtE,OAAO,EAAE,yBAAyB,EAA4B,MAAM,mBAAmB,CAAA;AAavF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAChG,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,+CAA+C;QAC/C,0FAA0F;QAC1F,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI;QAC5F,wEAAwE;QACxE,+GAA+G,CAChH,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAYxC;IACC,8EAA8E;IAC9E,gEAAgE;IAChE,MAAM,GAAG,GACP,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,QAAQ,GAAG;QAC9C,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAA;IACpB,OAAO,CACL,6CAA6C;QAC7C,WAAW,GAAG,IAAI;QAClB,YAAY,KAAK,CAAC,SAAS,IAAI;QAC/B,2DAA2D,KAAK,CAAC,QAAQ,GAAG,CAC7E,CAAA;AACH,CAAC;AAiFD,yDAAyD;AACzD,MAAM,eAAe,GAAG,GAAG,CAAA;AAE3B;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAgB;IAC/C,IAAI,CAAC,EAAE,CAAC,IAAI;QAAE,OAAO,wDAAwD,CAAA;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,+BAA+B;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAA;IACxG,OAAO,0DAA0D,MAAM,IAAI,CAAA;AAC7E,CAAC;AAmBD;;;;;;2EAM2E;AAC3E;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,CAAiB;IACvC,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,8EAA8E;IAC9E,8EAA8E;IAC9E,iFAAiF;IACjF,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACnF,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAA;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,+EAA+E;IAC/E,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,mDAAmD;IACnD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,CAAC,CAAC,QAAQ;QACR,CAAC,CAAC,CAAC,CAAC,QAAQ;QACZ,CAAC,CAAC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;gBACxC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;gBAC3C,gDAAgD;YAClD,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,OAAO,IAAI,gBAAgB,GAAG,CAC/F,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAiB,EAAE,IAAyB;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACvD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;IACjG,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACrG,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,uEAAuE;IACvE,+EAA+E;IAC/E,oCAAoC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,MAAM,eAAe,GACnB,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IACpF,MAAM,gBAAgB,GAAG,eAAe;QACtC,CAAC,CAAC,GAAG,wBAAwB,CAAC;YAC1B,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,GAAG,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBACnE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,MAAM;QACV,CAAC,CAAC,EAAE,CAAA;IACN,+EAA+E;IAC/E,qEAAqE;IACrE,MAAM,WAAW,GACf,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM;QACjC,CAAC,CAAC,EAAE,CAAA;IACR,OAAO;QACL,OAAO,EAAE,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,eAAe,OAAO,uBAAuB,yBAAyB,EAAE;QACjI,YAAY;QACZ,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,UAAU;KAC9B,CAAA;AACH,CAAC;AAED;;2BAE2B;AAC3B,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,CAAkB;IAC1D,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,CAAA;AACxB,CAAC;AAED;;;mCAGmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,IAAY;IAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;mDASmD;AACnD,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,SAAiB,EACjB,UAAmB;IAEnB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAC9C,CAAC;AAED,4EAA4E;AAE5E;;;;cAIc;AACd,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA+B,EAC/B,IAAiF;IAEjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,OAAO,EAAE;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAa;IAC3D,MAAM,CAAC,GAAG,IAAkC,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAClF,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,2BAA2B,MAAM,EAAE,CAAA;AAC1E,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,yDAAyD"}
@@ -2,6 +2,11 @@ export interface MediaInbound {
2
2
  path: string;
3
3
  type: 'image' | 'audio' | 'video' | 'document' | 'sticker';
4
4
  mimetype?: string;
5
+ /** Task 2696 — set only on a `video` item whose frame-and-speech timeline was
6
+ * extracted upstream. composePayload renders it in place of the `Read this
7
+ * file` note. Absent means extraction degraded, which keeps the note. Mirrors
8
+ * platform/ui MediaRef (this package never cross-imports it). */
9
+ timeline?: string;
5
10
  }
6
11
  /** Task 1516 — the dispatcher's operator-provenance marker, present only on a
7
12
  * scheduled inject. A local copy of the shape (this package never cross-imports
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAA;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;sEAEsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;gEAGgE;AAChE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,CAAA;AAE/C;;;;;8EAK8E;AAC9E,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;4DAIwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB;;;kFAG8E;IAC9E,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB;;;4EAGwE;IACxE,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;;;uCAImC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;;wEAMoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;;;;;;iDAe6C;IAC7C,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IACnD;;;oCAGgC;IAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC;;;;oEAIgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED;;;8CAG8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;gFAGgF;AAChF,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAQzD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,cAAc,QAKsE,CAAA;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,eAAO,MAAM,mBAAmB,QA0DhB,CAAA;AAUhB,eAAO,MAAM,gCAAgC,QAuCf,CAAA;AAE9B;mCACmC;AACnC,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;IACvC,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAOtF;AAED;;;4CAG4C;AAC5C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAA;AAEhE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAUpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAOjG;AAED;;;YAGY;AACZ,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB;8EAC0E;IAC1E,MAAM,EAAE,aAAa,CAAA;IACrB;;;oCAGgC;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB;;;;;gBAKY;IACZ,iBAAiB,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;CACrD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,cAAc;;;;;EAOzD;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,GAAE,aAA0B,GAAG,eAAe,CA2D1G;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAElF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAI5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,OAAO,GACZ;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAQ1G;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,IAAI,GAAG,WAAW,CAAA;AAExD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,eAAe,GACxB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAEzF;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAChF,OAAO,CAAC,OAAO,CAAC,CAMlB;AAKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,CAGzE;AAED;;;;gCAIgC;AAChC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAMrE;AAYD,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAOhE,CAAA;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAU5F"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
@@ -306,9 +306,15 @@ function composePayload(p) {
306
306
  const openable = (p.media ?? []).filter((m) => m.type !== 'audio');
307
307
  if (openable.length === 0)
308
308
  return `${quotePrefix}${p.text}`;
309
- const notes = openable.map((m) => `[Inbound WhatsApp ${m.type}: ${m.path}` +
310
- `${m.mimetype ? ` (${m.mimetype})` : ''}. ` +
311
- `Read this file to see what the sender shared.]`);
309
+ // Task 2696 a video whose timeline was extracted upstream carries frame
310
+ // paths and the spoken transcript already aligned on one clock, so the note
311
+ // it would otherwise get ("Read this file") points at a container the model
312
+ // cannot decode. Absent timeline means extraction degraded: the note stays,
313
+ // which is exactly the pre-2696 behaviour.
314
+ const notes = openable.map((m) => m.timeline ??
315
+ `[Inbound WhatsApp ${m.type}: ${m.path}` +
316
+ `${m.mimetype ? ` (${m.mimetype})` : ''}. ` +
317
+ `Read this file to see what the sender shared.]`);
312
318
  const caption = p.text.trim();
313
319
  const body = notes.join('\n\n');
314
320
  return `${quotePrefix}${caption ? `${caption}\n\n${body}` : body}`;