@rubytech/create-maxy-code 0.1.579 → 0.1.581
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.
- package/package.json +1 -1
- package/payload/platform/lib/telegram-media/dist/index.d.ts +45 -0
- package/payload/platform/lib/telegram-media/dist/index.d.ts.map +1 -0
- package/payload/platform/lib/telegram-media/dist/index.js +89 -0
- package/payload/platform/lib/telegram-media/dist/index.js.map +1 -0
- package/payload/platform/lib/telegram-media/src/__tests__/telegram-media.test.ts +104 -0
- package/payload/platform/lib/telegram-media/src/index.ts +102 -0
- package/payload/platform/lib/telegram-media/tsconfig.json +9 -0
- package/payload/platform/lib/telegram-media/vitest.config.ts +9 -0
- package/payload/platform/package.json +2 -2
- package/payload/platform/plugins/admin/PLUGIN.md +2 -2
- package/payload/platform/plugins/admin/hooks/__tests__/archive-ingest-surface-gate.test.sh +22 -0
- package/payload/platform/plugins/admin/hooks/__tests__/fs-schema-guard.test.sh +34 -0
- package/payload/platform/plugins/admin/hooks/__tests__/quote-path-write-gate.test.sh +25 -0
- package/payload/platform/plugins/admin/hooks/archive-ingest-surface-gate.sh +11 -4
- package/payload/platform/plugins/admin/hooks/fs-schema-guard.sh +2 -2
- package/payload/platform/plugins/admin/hooks/quote-path-write-gate.sh +6 -3
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +13 -1
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +16 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-schema-shape.test.ts +23 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visit-status-write.test.ts +175 -3
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +101 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +35 -1
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visit-status.ts +73 -8
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +59 -8
- package/payload/platform/plugins/docs/references/telegram-guide.md +12 -0
- package/payload/platform/plugins/telegram/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/telegram/PLUGIN.md +27 -3
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js +99 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/api-census.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js +226 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/ask-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-ratio.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-ratio.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-ratio.test.js +75 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-ratio.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-store.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-store.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-store.test.js +152 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-store.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js +231 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js +196 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/invoice-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-store.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-store.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-store.test.js +93 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-store.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-tool.test.js +76 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/live-location-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js +95 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-fetch-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js +293 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/media-send-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.js +130 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/schemas.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.js +119 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/thread-tool.test.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/index.js +89 -66
- package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts +15 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js +27 -10
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts +38 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js +106 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/api-census.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-ratio.d.ts +15 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-ratio.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-ratio.js +78 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-ratio.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-store.d.ts +60 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-store.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-store.js +141 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-store.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/live-location-store.d.ts +44 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/live-location-store.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/live-location-store.js +88 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/live-location-store.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts +73 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js +270 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/ask.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts +34 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +140 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts +70 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js +232 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/invoice.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/live-location.d.ts +23 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/live-location.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/live-location.js +43 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/live-location.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts +42 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.js +92 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-fetch.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts +76 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js +288 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/media-send.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.d.ts +250 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.js +400 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/schemas.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts +38 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js +120 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/thread.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/vitest.config.ts +14 -0
- package/payload/platform/plugins/telegram/skills/build/SKILL.md +171 -21
- package/payload/platform/scripts/__tests__/hook-matcher-dispatch.test.sh +163 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +7 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/instructions.js +15 -1
- package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/{adminuser-self-heal-Y4U3UNKF.js → adminuser-self-heal-ZHFNDKJK.js} +2 -10
- package/payload/server/{chunk-637C2FGE.js → chunk-BFRB2U75.js} +3278 -3381
- package/payload/server/{chunk-6DQCFP2E.js → chunk-BTXRBXMU.js} +3785 -4090
- package/payload/server/{chunk-KVR2FT6O.js → chunk-HYQNUVGO.js} +1 -12
- package/payload/server/{chunk-PGGGWUBM.js → chunk-SKYZG6OT.js} +224 -372
- package/payload/server/{manager-R3XH3BNM.js → manager-CTVTF4YB.js} +3 -3
- package/payload/server/maxy-edge.js +4 -27
- package/payload/server/public/activity.html +6 -6
- package/payload/server/public/agents.html +5 -5
- package/payload/server/public/assets/{AdminLoginScreens-Bus-Y-rG.js → AdminLoginScreens-B1lu4-_F.js} +1 -1
- package/payload/server/public/assets/AdminLoginScreens-B1lu4-_F.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-B1lu4-_F.js.gz +0 -0
- package/payload/server/public/assets/{AdminShell-Bsm7q3CW.js → AdminShell-BMslfZxN.js} +1 -1
- package/payload/server/public/assets/AdminShell-BMslfZxN.js.br +0 -0
- package/payload/server/public/assets/AdminShell-BMslfZxN.js.gz +0 -0
- package/payload/server/public/assets/{activity-BWqrCyYM.js → activity-kQ3w70LJ.js} +1 -1
- package/payload/server/public/assets/activity-kQ3w70LJ.js.br +0 -0
- package/payload/server/public/assets/activity-kQ3w70LJ.js.gz +0 -0
- package/payload/server/public/assets/{admin-zly7Y6EZ.js → admin-CkASgYA7.js} +1 -1
- package/payload/server/public/assets/admin-CkASgYA7.js.br +0 -0
- package/payload/server/public/assets/admin-CkASgYA7.js.gz +0 -0
- package/payload/server/public/assets/{agents-BsxGD1V1.js → agents-Cn_bZgnD.js} +1 -1
- package/payload/server/public/assets/agents-Cn_bZgnD.js.br +0 -0
- package/payload/server/public/assets/agents-Cn_bZgnD.js.gz +0 -0
- package/payload/server/public/assets/{browser-CRLxTaw2.js → browser-BE-GDk5-.js} +1 -1
- package/payload/server/public/assets/browser-BE-GDk5-.js.br +0 -0
- package/payload/server/public/assets/browser-BE-GDk5-.js.gz +0 -0
- package/payload/server/public/assets/{calendar-Bmp6qI_P.js → calendar-Di7BEHHN.js} +1 -1
- package/payload/server/public/assets/calendar-Di7BEHHN.js.br +0 -0
- package/payload/server/public/assets/calendar-Di7BEHHN.js.gz +0 -0
- package/payload/server/public/assets/chat-CKyMT5Ai.js +1 -0
- package/payload/server/public/assets/chat-CKyMT5Ai.js.br +1 -0
- package/payload/server/public/assets/chat-CKyMT5Ai.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-Id9VAZAz.js +1 -0
- package/payload/server/public/assets/chevron-left-Id9VAZAz.js.br +0 -0
- package/payload/server/public/assets/clock-DKpWWJbJ.js +1 -0
- package/payload/server/public/assets/clock-DKpWWJbJ.js.br +0 -0
- package/payload/server/public/assets/{copy-Bcjpxqzn.js → copy-nkxspu2J.js} +1 -1
- package/payload/server/public/assets/copy-nkxspu2J.js.br +0 -0
- package/payload/server/public/assets/copy-nkxspu2J.js.gz +0 -0
- package/payload/server/public/assets/data-1c33cAHp.js +1 -0
- package/payload/server/public/assets/data-1c33cAHp.js.br +2 -0
- package/payload/server/public/assets/data-1c33cAHp.js.gz +0 -0
- package/payload/server/public/assets/{field-ChKB2l_d.js → field-2rIXxGMt.js} +1 -1
- package/payload/server/public/assets/field-2rIXxGMt.js.br +0 -0
- package/payload/server/public/assets/field-2rIXxGMt.js.gz +0 -0
- package/payload/server/public/assets/{file-text-COZcf7mU.js → file-text-CdSqrscg.js} +1 -1
- package/payload/server/public/assets/file-text-CdSqrscg.js.br +0 -0
- package/payload/server/public/assets/file-text-CdSqrscg.js.gz +0 -0
- package/payload/server/public/assets/{graph-nnV47iqM.js → graph-BfBHHXaC.js} +1 -1
- package/payload/server/public/assets/graph-BfBHHXaC.js.br +0 -0
- package/payload/server/public/assets/graph-BfBHHXaC.js.gz +0 -0
- package/payload/server/public/assets/{graph-labels-x-1MT-3c.js → graph-labels-CHW2aBke.js} +1 -1
- package/payload/server/public/assets/graph-labels-CHW2aBke.js.br +0 -0
- package/payload/server/public/assets/graph-labels-CHW2aBke.js.gz +0 -0
- package/payload/server/public/assets/jsx-runtime-D43jgaWP.css +1 -0
- package/payload/server/public/assets/jsx-runtime-D43jgaWP.css.br +0 -0
- package/payload/server/public/assets/jsx-runtime-D43jgaWP.css.gz +0 -0
- package/payload/server/public/assets/{operator-BAO0-mjU.js → operator-DRn9LITC.js} +1 -1
- package/payload/server/public/assets/operator-DRn9LITC.js.br +0 -0
- package/payload/server/public/assets/operator-DRn9LITC.js.gz +0 -0
- package/payload/server/public/assets/page-BwqQsoU8.js +1 -0
- package/payload/server/public/assets/page-BwqQsoU8.js.br +0 -0
- package/payload/server/public/assets/page-BwqQsoU8.js.gz +0 -0
- package/payload/server/public/assets/{page-B-F08pod.js → page-D_9mPS6W.js} +1 -1
- package/payload/server/public/assets/page-D_9mPS6W.js.br +0 -0
- package/payload/server/public/assets/page-D_9mPS6W.js.gz +0 -0
- package/payload/server/public/assets/play-7LTxCuLX.js +1 -0
- package/payload/server/public/assets/play-7LTxCuLX.js.br +0 -0
- package/payload/server/public/assets/play-7LTxCuLX.js.gz +0 -0
- package/payload/server/public/assets/{public-_HJsUohA.js → public-CrjZYpdW.js} +1 -1
- package/payload/server/public/assets/public-CrjZYpdW.js.br +0 -0
- package/payload/server/public/assets/public-CrjZYpdW.js.gz +0 -0
- package/payload/server/public/assets/{rotate-ccw-DJeAnYLQ.js → rotate-ccw-J9f-GWjm.js} +1 -1
- package/payload/server/public/assets/rotate-ccw-J9f-GWjm.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-J9f-GWjm.js.gz +0 -0
- package/payload/server/public/assets/{routines-CoIVXRCB.js → routines-C1AB-3FR.js} +1 -1
- package/payload/server/public/assets/routines-C1AB-3FR.js.br +0 -0
- package/payload/server/public/assets/routines-C1AB-3FR.js.gz +0 -0
- package/payload/server/public/assets/{skills-BjHt5lDG.js → skills-C4EfNKEx.js} +1 -1
- package/payload/server/public/assets/skills-C4EfNKEx.js.br +0 -0
- package/payload/server/public/assets/skills-C4EfNKEx.js.gz +0 -0
- package/payload/server/public/assets/{tasks-iUFfeA9_.js → tasks-DszD3aZl.js} +1 -1
- package/payload/server/public/assets/tasks-DszD3aZl.js.br +0 -0
- package/payload/server/public/assets/tasks-DszD3aZl.js.gz +0 -0
- package/payload/server/public/assets/{triangle-alert-Dwa986Gg.js → triangle-alert-B5WAyAkC.js} +1 -1
- package/payload/server/public/assets/triangle-alert-B5WAyAkC.js.br +4 -0
- package/payload/server/public/assets/triangle-alert-B5WAyAkC.js.gz +0 -0
- package/payload/server/public/assets/{useCopyFeedback-B1Jp6CsE.js → useCopyFeedback-B2nuNNJw.js} +1 -1
- package/payload/server/public/assets/useCopyFeedback-B2nuNNJw.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-B2nuNNJw.js.gz +0 -0
- package/payload/server/public/assets/{useMediaQuery-CVZYjRf6.js → useMediaQuery-DUPJPHQt.js} +1 -1
- package/payload/server/public/assets/useMediaQuery-DUPJPHQt.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-DUPJPHQt.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CCK60d2i.js +2 -0
- package/payload/server/public/assets/useVoiceRecorder-CCK60d2i.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-CCK60d2i.js.gz +0 -0
- package/payload/server/public/assets/{wrench-BD7xwbV1.js → wrench-DZJZm17j.js} +1 -1
- package/payload/server/public/assets/wrench-DZJZm17j.js.br +0 -0
- package/payload/server/public/assets/wrench-DZJZm17j.js.gz +0 -0
- package/payload/server/public/browser.html +5 -5
- package/payload/server/public/calendar.html +8 -8
- package/payload/server/public/chat.html +14 -14
- package/payload/server/public/data.html +12 -12
- package/payload/server/public/field.html +3 -3
- package/payload/server/public/graph.html +10 -10
- package/payload/server/public/index.html +14 -14
- package/payload/server/public/operator.html +15 -15
- package/payload/server/public/public.html +14 -14
- package/payload/server/public/routines.html +8 -8
- package/payload/server/public/skills.html +6 -6
- package/payload/server/public/tasks.html +7 -7
- package/payload/server/server.js +10561 -10491
- package/payload/server/{src-IJCLNFYU.js → src-MM64CYYZ.js} +1 -1
- package/payload/server/{userprofile-reconcile-PUA657YX.js → userprofile-reconcile-TL4JKBPG.js} +1 -8
- package/payload/server/public/assets/AdminLoginScreens-Bus-Y-rG.js.br +0 -0
- package/payload/server/public/assets/AdminLoginScreens-Bus-Y-rG.js.gz +0 -0
- package/payload/server/public/assets/AdminShell-Bsm7q3CW.js.br +0 -0
- package/payload/server/public/assets/AdminShell-Bsm7q3CW.js.gz +0 -0
- package/payload/server/public/assets/activity-BWqrCyYM.js.br +0 -0
- package/payload/server/public/assets/activity-BWqrCyYM.js.gz +0 -0
- package/payload/server/public/assets/admin-zly7Y6EZ.js.br +0 -0
- package/payload/server/public/assets/admin-zly7Y6EZ.js.gz +0 -0
- package/payload/server/public/assets/agents-BsxGD1V1.js.br +0 -0
- package/payload/server/public/assets/agents-BsxGD1V1.js.gz +0 -0
- package/payload/server/public/assets/browser-CRLxTaw2.js.br +0 -0
- package/payload/server/public/assets/browser-CRLxTaw2.js.gz +0 -0
- package/payload/server/public/assets/calendar-Bmp6qI_P.js.br +0 -0
- package/payload/server/public/assets/calendar-Bmp6qI_P.js.gz +0 -0
- package/payload/server/public/assets/chat-ChObDKHy.js +0 -1
- package/payload/server/public/assets/chat-ChObDKHy.js.br +0 -0
- package/payload/server/public/assets/chat-ChObDKHy.js.gz +0 -0
- package/payload/server/public/assets/chevron-left-D2l4jMcd.js +0 -1
- package/payload/server/public/assets/chevron-left-D2l4jMcd.js.br +0 -0
- package/payload/server/public/assets/clock-CMdfsroW.js +0 -1
- package/payload/server/public/assets/clock-CMdfsroW.js.br +0 -0
- package/payload/server/public/assets/clock-CMdfsroW.js.gz +0 -0
- package/payload/server/public/assets/copy-Bcjpxqzn.js.br +0 -0
- package/payload/server/public/assets/copy-Bcjpxqzn.js.gz +0 -0
- package/payload/server/public/assets/data-CFB5Lgw-.js +0 -1
- package/payload/server/public/assets/data-CFB5Lgw-.js.br +0 -0
- package/payload/server/public/assets/data-CFB5Lgw-.js.gz +0 -0
- package/payload/server/public/assets/field-ChKB2l_d.js.br +0 -0
- package/payload/server/public/assets/field-ChKB2l_d.js.gz +0 -0
- package/payload/server/public/assets/file-text-COZcf7mU.js.br +0 -0
- package/payload/server/public/assets/file-text-COZcf7mU.js.gz +0 -0
- package/payload/server/public/assets/graph-labels-x-1MT-3c.js.br +0 -0
- package/payload/server/public/assets/graph-labels-x-1MT-3c.js.gz +0 -0
- package/payload/server/public/assets/graph-nnV47iqM.js.br +0 -0
- package/payload/server/public/assets/graph-nnV47iqM.js.gz +0 -0
- package/payload/server/public/assets/jsx-runtime-CeNZasfC.css +0 -1
- package/payload/server/public/assets/jsx-runtime-CeNZasfC.css.br +0 -0
- package/payload/server/public/assets/jsx-runtime-CeNZasfC.css.gz +0 -0
- package/payload/server/public/assets/operator-BAO0-mjU.js.br +0 -0
- package/payload/server/public/assets/operator-BAO0-mjU.js.gz +0 -0
- package/payload/server/public/assets/page-B-F08pod.js.br +0 -0
- package/payload/server/public/assets/page-B-F08pod.js.gz +0 -0
- package/payload/server/public/assets/page-BMOCy2aD.js +0 -1
- package/payload/server/public/assets/page-BMOCy2aD.js.br +0 -0
- package/payload/server/public/assets/page-BMOCy2aD.js.gz +0 -0
- package/payload/server/public/assets/play-DFtlk8Zs.js +0 -1
- package/payload/server/public/assets/play-DFtlk8Zs.js.br +0 -0
- package/payload/server/public/assets/play-DFtlk8Zs.js.gz +0 -0
- package/payload/server/public/assets/public-_HJsUohA.js.br +0 -0
- package/payload/server/public/assets/public-_HJsUohA.js.gz +0 -0
- package/payload/server/public/assets/rotate-ccw-DJeAnYLQ.js.br +0 -0
- package/payload/server/public/assets/rotate-ccw-DJeAnYLQ.js.gz +0 -0
- package/payload/server/public/assets/routines-CoIVXRCB.js.br +0 -0
- package/payload/server/public/assets/routines-CoIVXRCB.js.gz +0 -0
- package/payload/server/public/assets/skills-BjHt5lDG.js.br +0 -0
- package/payload/server/public/assets/skills-BjHt5lDG.js.gz +0 -0
- package/payload/server/public/assets/tasks-iUFfeA9_.js.br +0 -0
- package/payload/server/public/assets/tasks-iUFfeA9_.js.gz +0 -0
- package/payload/server/public/assets/triangle-alert-Dwa986Gg.js.br +0 -0
- package/payload/server/public/assets/triangle-alert-Dwa986Gg.js.gz +0 -0
- package/payload/server/public/assets/useCopyFeedback-B1Jp6CsE.js.br +0 -0
- package/payload/server/public/assets/useCopyFeedback-B1Jp6CsE.js.gz +0 -0
- package/payload/server/public/assets/useMediaQuery-CVZYjRf6.js.br +0 -0
- package/payload/server/public/assets/useMediaQuery-CVZYjRf6.js.gz +0 -0
- package/payload/server/public/assets/useVoiceRecorder-D5b4r4z0.js +0 -2
- package/payload/server/public/assets/useVoiceRecorder-D5b4r4z0.js.br +0 -0
- package/payload/server/public/assets/useVoiceRecorder-D5b4r4z0.js.gz +0 -0
- package/payload/server/public/assets/wrench-BD7xwbV1.js.br +0 -0
- package/payload/server/public/assets/wrench-BD7xwbV1.js.gz +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CjJ246F7.js → jsx-runtime-Cjug_Cyb.js} +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CjJ246F7.js.br → jsx-runtime-Cjug_Cyb.js.br} +0 -0
- /package/payload/server/public/assets/{jsx-runtime-CjJ246F7.js.gz → jsx-runtime-Cjug_Cyb.js.gz} +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { callBotApi } from "../lib/bot-api.js";
|
|
2
|
+
import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
|
|
3
|
+
import { buildInlineKeyboard } from "../lib/telegram.js";
|
|
4
|
+
const TAG = "[telegram-tools]";
|
|
5
|
+
const TOOL = "telegram-ask";
|
|
6
|
+
/** Kind to Bot API method. Verified against the live parameter tables on
|
|
7
|
+
* 2026-08-08. Exported so the census's owned-method map and this tool cannot
|
|
8
|
+
* disagree about which methods the tool owns. */
|
|
9
|
+
export const ASK_METHOD = Object.freeze({
|
|
10
|
+
poll: "sendPoll",
|
|
11
|
+
checklist: "sendChecklist",
|
|
12
|
+
location: "sendLocation",
|
|
13
|
+
venue: "sendVenue",
|
|
14
|
+
contact: "sendContact",
|
|
15
|
+
dice: "sendDice",
|
|
16
|
+
stopPoll: "stopPoll",
|
|
17
|
+
editChecklist: "editMessageChecklist",
|
|
18
|
+
editLiveLocation: "editMessageLiveLocation",
|
|
19
|
+
stopLiveLocation: "stopMessageLiveLocation",
|
|
20
|
+
});
|
|
21
|
+
/** The per-kind required fields Zod cannot express in one flat shape, refused
|
|
22
|
+
* BEFORE any network call. Ten discriminated unions would make every optional
|
|
23
|
+
* field conditional in the tool schema, which is harder for the model to read
|
|
24
|
+
* than one flat shape plus this check. */
|
|
25
|
+
function missingField(p) {
|
|
26
|
+
switch (p.kind) {
|
|
27
|
+
case "poll":
|
|
28
|
+
if (!p.question)
|
|
29
|
+
return "poll needs `question` (the poll question, 1-300 characters).";
|
|
30
|
+
if (!p.options?.length)
|
|
31
|
+
return "poll needs `options` (1-12 answers, as plain strings).";
|
|
32
|
+
if (p.options.length > 12)
|
|
33
|
+
return "poll takes at most 12 `options`; Telegram refuses more.";
|
|
34
|
+
return null;
|
|
35
|
+
case "checklist":
|
|
36
|
+
case "editChecklist": {
|
|
37
|
+
if (!p.businessConnectionId) {
|
|
38
|
+
return `${p.kind} needs \`businessConnectionId\`: Telegram sends a checklist only on behalf of a connected business account.`;
|
|
39
|
+
}
|
|
40
|
+
if (!p.checklist)
|
|
41
|
+
return `${p.kind} needs \`checklist\` (its title and 1-30 tasks).`;
|
|
42
|
+
if (p.kind === "editChecklist" && p.messageId === undefined) {
|
|
43
|
+
return "editChecklist needs `messageId` (the checklist message to replace).";
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
case "location":
|
|
48
|
+
if (p.latitude === undefined || p.longitude === undefined) {
|
|
49
|
+
return "location needs `latitude` and `longitude`.";
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
case "venue":
|
|
53
|
+
if (p.latitude === undefined || p.longitude === undefined) {
|
|
54
|
+
return "venue needs `latitude` and `longitude`.";
|
|
55
|
+
}
|
|
56
|
+
if (!p.title)
|
|
57
|
+
return "venue needs `title` (the venue's name).";
|
|
58
|
+
if (!p.address)
|
|
59
|
+
return "venue needs `address` (the venue's street address).";
|
|
60
|
+
return null;
|
|
61
|
+
case "contact":
|
|
62
|
+
if (!p.phoneNumber)
|
|
63
|
+
return "contact needs `phoneNumber`.";
|
|
64
|
+
if (!p.firstName)
|
|
65
|
+
return "contact needs `firstName`.";
|
|
66
|
+
return null;
|
|
67
|
+
case "dice":
|
|
68
|
+
return null;
|
|
69
|
+
case "editLiveLocation":
|
|
70
|
+
if (p.messageId === undefined) {
|
|
71
|
+
return "editLiveLocation needs `messageId` (the live location message to move).";
|
|
72
|
+
}
|
|
73
|
+
if (p.latitude === undefined || p.longitude === undefined) {
|
|
74
|
+
return "editLiveLocation needs `latitude` and `longitude` (the new position).";
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
case "stopPoll":
|
|
78
|
+
case "stopLiveLocation":
|
|
79
|
+
if (p.messageId === undefined) {
|
|
80
|
+
return `${p.kind} needs \`messageId\` (the message to stop).`;
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** The checklist in Telegram's own snake_case. Kept out of bodyFor so the two
|
|
86
|
+
* checklist kinds cannot drift apart. */
|
|
87
|
+
function checklistBody(c) {
|
|
88
|
+
return {
|
|
89
|
+
title: c.title,
|
|
90
|
+
tasks: c.tasks,
|
|
91
|
+
...(c.othersCanAddTasks !== undefined ? { others_can_add_tasks: c.othersCanAddTasks } : {}),
|
|
92
|
+
...(c.othersCanMarkTasksAsDone !== undefined
|
|
93
|
+
? { others_can_mark_tasks_as_done: c.othersCanMarkTasksAsDone }
|
|
94
|
+
: {}),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function kindBody(p) {
|
|
98
|
+
switch (p.kind) {
|
|
99
|
+
case "poll":
|
|
100
|
+
return {
|
|
101
|
+
question: p.question,
|
|
102
|
+
// Telegram takes InputPollOption objects; the tool takes plain strings,
|
|
103
|
+
// because an option is a string in every case this install has.
|
|
104
|
+
options: (p.options ?? []).map((text) => ({ text })),
|
|
105
|
+
...(p.pollType !== undefined ? { type: p.pollType } : {}),
|
|
106
|
+
...(p.isAnonymous !== undefined ? { is_anonymous: p.isAnonymous } : {}),
|
|
107
|
+
...(p.allowsMultipleAnswers !== undefined
|
|
108
|
+
? { allows_multiple_answers: p.allowsMultipleAnswers }
|
|
109
|
+
: {}),
|
|
110
|
+
...(p.correctOptionIds !== undefined ? { correct_option_ids: p.correctOptionIds } : {}),
|
|
111
|
+
...(p.explanation !== undefined ? { explanation: p.explanation } : {}),
|
|
112
|
+
...(p.openPeriod !== undefined ? { open_period: p.openPeriod } : {}),
|
|
113
|
+
};
|
|
114
|
+
case "checklist":
|
|
115
|
+
return {
|
|
116
|
+
business_connection_id: p.businessConnectionId,
|
|
117
|
+
checklist: checklistBody(p.checklist),
|
|
118
|
+
};
|
|
119
|
+
case "editChecklist":
|
|
120
|
+
return {
|
|
121
|
+
business_connection_id: p.businessConnectionId,
|
|
122
|
+
message_id: p.messageId,
|
|
123
|
+
checklist: checklistBody(p.checklist),
|
|
124
|
+
};
|
|
125
|
+
case "location":
|
|
126
|
+
return {
|
|
127
|
+
latitude: p.latitude,
|
|
128
|
+
longitude: p.longitude,
|
|
129
|
+
...(p.horizontalAccuracy !== undefined
|
|
130
|
+
? { horizontal_accuracy: p.horizontalAccuracy }
|
|
131
|
+
: {}),
|
|
132
|
+
...(p.livePeriod !== undefined ? { live_period: p.livePeriod } : {}),
|
|
133
|
+
...(p.heading !== undefined ? { heading: p.heading } : {}),
|
|
134
|
+
...(p.proximityAlertRadius !== undefined
|
|
135
|
+
? { proximity_alert_radius: p.proximityAlertRadius }
|
|
136
|
+
: {}),
|
|
137
|
+
};
|
|
138
|
+
case "venue":
|
|
139
|
+
return {
|
|
140
|
+
latitude: p.latitude,
|
|
141
|
+
longitude: p.longitude,
|
|
142
|
+
title: p.title,
|
|
143
|
+
address: p.address,
|
|
144
|
+
};
|
|
145
|
+
case "contact":
|
|
146
|
+
return {
|
|
147
|
+
phone_number: p.phoneNumber,
|
|
148
|
+
first_name: p.firstName,
|
|
149
|
+
...(p.lastName !== undefined ? { last_name: p.lastName } : {}),
|
|
150
|
+
};
|
|
151
|
+
case "dice":
|
|
152
|
+
return { ...(p.emoji !== undefined ? { emoji: p.emoji } : {}) };
|
|
153
|
+
case "editLiveLocation":
|
|
154
|
+
return {
|
|
155
|
+
message_id: p.messageId,
|
|
156
|
+
latitude: p.latitude,
|
|
157
|
+
longitude: p.longitude,
|
|
158
|
+
...(p.livePeriod !== undefined ? { live_period: p.livePeriod } : {}),
|
|
159
|
+
...(p.horizontalAccuracy !== undefined
|
|
160
|
+
? { horizontal_accuracy: p.horizontalAccuracy }
|
|
161
|
+
: {}),
|
|
162
|
+
...(p.heading !== undefined ? { heading: p.heading } : {}),
|
|
163
|
+
...(p.proximityAlertRadius !== undefined
|
|
164
|
+
? { proximity_alert_radius: p.proximityAlertRadius }
|
|
165
|
+
: {}),
|
|
166
|
+
};
|
|
167
|
+
case "stopPoll":
|
|
168
|
+
case "stopLiveLocation":
|
|
169
|
+
return { message_id: p.messageId };
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** The four kinds that edit or stop an existing message. Telegram documents
|
|
173
|
+
* reply_markup on all of them and none of the send-envelope options, so those
|
|
174
|
+
* are withheld here rather than sent to a method that has no field for them. */
|
|
175
|
+
const EDIT_KINDS = new Set([
|
|
176
|
+
"stopPoll",
|
|
177
|
+
"editChecklist",
|
|
178
|
+
"editLiveLocation",
|
|
179
|
+
"stopLiveLocation",
|
|
180
|
+
]);
|
|
181
|
+
function bodyFor(p) {
|
|
182
|
+
const markup = p.buttons ? buildInlineKeyboard(p.buttons) : undefined;
|
|
183
|
+
const envelope = EDIT_KINDS.has(p.kind)
|
|
184
|
+
? {}
|
|
185
|
+
: {
|
|
186
|
+
// sendChecklist is the one send method with no message_thread_id in its
|
|
187
|
+
// table, so it is excluded here too.
|
|
188
|
+
...(p.messageThreadId !== undefined && p.kind !== "checklist"
|
|
189
|
+
? { message_thread_id: p.messageThreadId }
|
|
190
|
+
: {}),
|
|
191
|
+
...(p.disableNotification !== undefined
|
|
192
|
+
? { disable_notification: p.disableNotification }
|
|
193
|
+
: {}),
|
|
194
|
+
...(p.protectContent !== undefined ? { protect_content: p.protectContent } : {}),
|
|
195
|
+
...(p.replyToMessageId !== undefined
|
|
196
|
+
? { reply_parameters: { message_id: p.replyToMessageId } }
|
|
197
|
+
: {}),
|
|
198
|
+
};
|
|
199
|
+
return {
|
|
200
|
+
chat_id: p.chatId,
|
|
201
|
+
...kindBody(p),
|
|
202
|
+
...(markup ? { reply_markup: markup } : {}),
|
|
203
|
+
...envelope,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/** Polls, checklists, locations, venues, contacts and dice, plus stopping a
|
|
207
|
+
* poll and editing or stopping a live location.
|
|
208
|
+
*
|
|
209
|
+
* Task 2594: these ten methods were reachable only through telegram-api, whose
|
|
210
|
+
* untyped params object gave the model no field names for any of them, so a
|
|
211
|
+
* malformed call was caught by Telegram's 400 and nothing earlier.
|
|
212
|
+
*
|
|
213
|
+
* Inline messages are not addressed. Telegram lets editMessageLiveLocation and
|
|
214
|
+
* stopMessageLiveLocation target an inline_message_id instead of a chat, but
|
|
215
|
+
* nothing on this install sends inline messages, so chatId stays required. */
|
|
216
|
+
export async function telegramAsk(p, deps) {
|
|
217
|
+
const { callId, log } = deps;
|
|
218
|
+
if (!deps.accountId) {
|
|
219
|
+
log(`${TAG} op=no-account callId=${callId} tool=${TOOL}`);
|
|
220
|
+
return {
|
|
221
|
+
ok: false,
|
|
222
|
+
isError: true,
|
|
223
|
+
text: "telegram-ask cannot execute: this MCP instance was launched without ACCOUNT_ID " +
|
|
224
|
+
"(plugin-system metadata-only mode).",
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const missing = missingField(p);
|
|
228
|
+
if (missing) {
|
|
229
|
+
log(`${TAG} op=refused callId=${callId} tool=${TOOL} kind=${p.kind} reason=missing-field`);
|
|
230
|
+
return { ok: false, isError: true, text: missing };
|
|
231
|
+
}
|
|
232
|
+
const token = resolveBotToken(deps.platformRoot, deps.accountId, p.botId);
|
|
233
|
+
if (!token) {
|
|
234
|
+
const known = listRegisteredBots(deps.platformRoot, deps.accountId);
|
|
235
|
+
log(`${TAG} op=no-bot callId=${callId} tool=${TOOL} account=${deps.accountId} botId=${p.botId} registered=${known.length}`);
|
|
236
|
+
return {
|
|
237
|
+
ok: false,
|
|
238
|
+
isError: true,
|
|
239
|
+
text: known.length
|
|
240
|
+
? `No bot "${p.botId}" is registered on this account. Registered: ${known
|
|
241
|
+
.map((b) => `${b.id} (${b.role})`)
|
|
242
|
+
.join(", ")}.`
|
|
243
|
+
: "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
const method = ASK_METHOD[p.kind];
|
|
247
|
+
log(`${TAG} op=call tool=${TOOL} method=${method} callId=${callId} botId=${p.botId}`);
|
|
248
|
+
let envelope;
|
|
249
|
+
try {
|
|
250
|
+
envelope = await callBotApi(token, method, bodyFor(p), {
|
|
251
|
+
...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
256
|
+
log(`${TAG} op=error callId=${callId} tool=${TOOL} method=${method} reason="${reason}"`);
|
|
257
|
+
return { ok: false, isError: true, text: `telegram-ask could not reach Telegram: ${reason}` };
|
|
258
|
+
}
|
|
259
|
+
log(`${TAG} op=result callId=${callId} tool=${TOOL} method=${method} ok=${envelope.ok} ` +
|
|
260
|
+
`errorCode=${envelope.error_code ?? "-"} description="${envelope.description ?? ""}"`);
|
|
261
|
+
if (!envelope.ok) {
|
|
262
|
+
return {
|
|
263
|
+
ok: false,
|
|
264
|
+
isError: true,
|
|
265
|
+
text: `Telegram refused ${method} (${envelope.error_code ?? "no code"}): ${envelope.description ?? "no description"}`,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return { ok: true, isError: false, text: JSON.stringify(envelope.result ?? true, null, 2) };
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=ask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/tools/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAkC,MAAM,oBAAoB,CAAC;AAEzF,MAAM,GAAG,GAAG,kBAAkB,CAAC;AAC/B,MAAM,IAAI,GAAG,cAAc,CAAC;AAc5B;;kDAEkD;AAClD,MAAM,CAAC,MAAM,UAAU,GAAsC,MAAM,CAAC,MAAM,CAAC;IACzE,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,cAAc;IACxB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,sBAAsB;IACrC,gBAAgB,EAAE,yBAAyB;IAC3C,gBAAgB,EAAE,yBAAyB;CAC5C,CAAC,CAAC;AA0DH;;;2CAG2C;AAC3C,SAAS,YAAY,CAAC,CAAY;IAChC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,OAAO,8DAA8D,CAAC;YACvF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,wDAAwD,CAAC;YACxF,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;gBAAE,OAAO,yDAAyD,CAAC;YAC5F,OAAO,IAAI,CAAC;QACd,KAAK,WAAW,CAAC;QACjB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAC,CAAC,IAAI,6GAA6G,CAAC;YAChI,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,SAAS;gBAAE,OAAO,GAAG,CAAC,CAAC,IAAI,kDAAkD,CAAC;YACrF,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5D,OAAO,qEAAqE,CAAC;YAC/E,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,UAAU;YACb,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,4CAA4C,CAAC;YACtD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,yCAAyC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,OAAO,yCAAyC,CAAC;YAC/D,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,OAAO,qDAAqD,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC,CAAC,WAAW;gBAAE,OAAO,8BAA8B,CAAC;YAC1D,IAAI,CAAC,CAAC,CAAC,SAAS;gBAAE,OAAO,4BAA4B,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd,KAAK,kBAAkB;YACrB,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,yEAAyE,CAAC;YACnF,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,uEAAuE,CAAC;YACjF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,kBAAkB;YACrB,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,GAAG,CAAC,CAAC,IAAI,6CAA6C,CAAC;YAChE,CAAC;YACD,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;0CAC0C;AAC1C,SAAS,aAAa,CAAC,CAAiB;IACtC,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,CAAC,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,CAAC,CAAC,wBAAwB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,6BAA6B,EAAE,CAAC,CAAC,wBAAwB,EAAE;YAC/D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAY;IAC5B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,wEAAwE;gBACxE,gEAAgE;gBAChE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,CAAC,CAAC,qBAAqB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC,qBAAqB,EAAE;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvF,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,sBAAsB,EAAE,CAAC,CAAC,oBAAoB;gBAC9C,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,SAA2B,CAAC;aACxD,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO;gBACL,sBAAsB,EAAE,CAAC,CAAC,oBAAoB;gBAC9C,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,SAA2B,CAAC;aACxD,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,GAAG,CAAC,CAAC,CAAC,kBAAkB,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,CAAC,CAAC,oBAAoB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,oBAAoB,EAAE;oBACpD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,YAAY,EAAE,CAAC,CAAC,WAAW;gBAC3B,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAClE,KAAK,kBAAkB;YACrB,OAAO;gBACL,UAAU,EAAE,CAAC,CAAC,SAAS;gBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,CAAC,kBAAkB,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,EAAE;oBAC/C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,CAAC,CAAC,oBAAoB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,oBAAoB,EAAE;oBACpD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,KAAK,UAAU,CAAC;QAChB,KAAK,kBAAkB;YACrB,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,GAAyB,IAAI,GAAG,CAAU;IACxD,UAAU;IACV,eAAe;IACf,kBAAkB;IAClB,kBAAkB;CACnB,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,CAAY;IAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,wEAAwE;YACxE,qCAAqC;YACrC,GAAG,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;gBAC3D,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,eAAe,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,CAAC,CAAC,mBAAmB,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,mBAAmB,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBAC1D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACN,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,GAAG,QAAQ,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;;+EAS+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAY,EAAE,IAAa;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,GAAG,CAAC,GAAG,GAAG,yBAAyB,MAAM,SAAS,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EACF,iFAAiF;gBACjF,qCAAqC;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,GAAG,sBAAsB,MAAM,SAAS,IAAI,SAAS,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAC3F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,GAAG,CACD,GAAG,GAAG,qBAAqB,MAAM,SAAS,IAAI,YAAY,IAAI,CAAC,SAAS,UAAU,CAAC,CAAC,KAAK,eAAe,KAAK,CAAC,MAAM,EAAE,CACvH,CAAC;QACF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK,CAAC,MAAM;gBAChB,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,gDAAgD,KAAK;qBACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;qBACjC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAClB,CAAC,CAAC,wFAAwF;SAC7F,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,CAAC,GAAG,GAAG,iBAAiB,IAAI,WAAW,MAAM,WAAW,MAAM,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAEtF,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;YACrD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,GAAG,CAAC,GAAG,GAAG,oBAAoB,MAAM,SAAS,IAAI,WAAW,MAAM,YAAY,MAAM,GAAG,CAAC,CAAC;QACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,0CAA0C,MAAM,EAAE,EAAE,CAAC;IAChG,CAAC;IAED,GAAG,CACD,GAAG,GAAG,qBAAqB,MAAM,SAAS,IAAI,WAAW,MAAM,OAAO,QAAQ,CAAC,EAAE,GAAG;QAClF,aAAa,QAAQ,CAAC,UAAU,IAAI,GAAG,iBAAiB,QAAQ,CAAC,WAAW,IAAI,EAAE,GAAG,CACxF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,oBAAoB,MAAM,KAAK,QAAQ,CAAC,UAAU,IAAI,SAAS,MAAM,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE;SACtH,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type InlineKeyboardButtonInput } from "../lib/telegram.js";
|
|
2
|
+
export interface CardParams {
|
|
3
|
+
botId: string;
|
|
4
|
+
chatId: string | number;
|
|
5
|
+
text: string;
|
|
6
|
+
key?: string;
|
|
7
|
+
parseMode?: "HTML" | "Markdown" | "MarkdownV2";
|
|
8
|
+
buttons?: InlineKeyboardButtonInput[][];
|
|
9
|
+
disablePreview?: boolean;
|
|
10
|
+
callbackQueryId?: string;
|
|
11
|
+
alert?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface CardDeps {
|
|
14
|
+
platformRoot: string;
|
|
15
|
+
accountId: string | undefined;
|
|
16
|
+
/** Per-invocation id threading one call's lines together. */
|
|
17
|
+
callId: string;
|
|
18
|
+
log: (line: string) => void;
|
|
19
|
+
fetchImpl?: typeof fetch;
|
|
20
|
+
}
|
|
21
|
+
export interface CardResult {
|
|
22
|
+
ok: boolean;
|
|
23
|
+
text: string;
|
|
24
|
+
isError: boolean;
|
|
25
|
+
outcome: "sent" | "edited" | "unchanged" | "none";
|
|
26
|
+
}
|
|
27
|
+
/** Post a card, or edit the one this key already names.
|
|
28
|
+
*
|
|
29
|
+
* Absorbs sendMessage, editMessageText, editMessageReplyMarkup and
|
|
30
|
+
* answerCallbackQuery behind one typed schema. Task 2588: the passthrough gave
|
|
31
|
+
* the model no field names for any of them, so a malformed call was only
|
|
32
|
+
* caught by Telegram's 400. */
|
|
33
|
+
export declare function telegramCard(p: CardParams, deps: CardDeps): Promise<CardResult>;
|
|
34
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { callBotApi } from "../lib/bot-api.js";
|
|
2
|
+
import { listRegisteredBots, resolveBotToken } from "../lib/account-token.js";
|
|
3
|
+
import { buildInlineKeyboard } from "../lib/telegram.js";
|
|
4
|
+
import { cardKey, readCardId, writeCardId } from "../lib/card-store.js";
|
|
5
|
+
const TAG = "[telegram-tools]";
|
|
6
|
+
const TOOL = "telegram-card";
|
|
7
|
+
/** Telegram's answer when the new text and markup match the old. It is a no-op,
|
|
8
|
+
* not a failure to retry, and an idempotent card re-post is the normal case
|
|
9
|
+
* rather than an error. This is the ONE place this plugin does not relay
|
|
10
|
+
* Telegram's verdict as an error. */
|
|
11
|
+
const NOT_MODIFIED = "message is not modified";
|
|
12
|
+
/** Post a card, or edit the one this key already names.
|
|
13
|
+
*
|
|
14
|
+
* Absorbs sendMessage, editMessageText, editMessageReplyMarkup and
|
|
15
|
+
* answerCallbackQuery behind one typed schema. Task 2588: the passthrough gave
|
|
16
|
+
* the model no field names for any of them, so a malformed call was only
|
|
17
|
+
* caught by Telegram's 400. */
|
|
18
|
+
export async function telegramCard(p, deps) {
|
|
19
|
+
const { callId, log } = deps;
|
|
20
|
+
if (!deps.accountId) {
|
|
21
|
+
log(`${TAG} op=no-account callId=${callId} tool=${TOOL}`);
|
|
22
|
+
return {
|
|
23
|
+
ok: false,
|
|
24
|
+
isError: true,
|
|
25
|
+
outcome: "none",
|
|
26
|
+
text: "telegram-card cannot execute: this MCP instance was launched without ACCOUNT_ID " +
|
|
27
|
+
"(plugin-system metadata-only mode). Per-account bot tokens require ACCOUNT_ID at spawn.",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const token = resolveBotToken(deps.platformRoot, deps.accountId, p.botId);
|
|
31
|
+
if (!token) {
|
|
32
|
+
const known = listRegisteredBots(deps.platformRoot, deps.accountId);
|
|
33
|
+
log(`${TAG} op=no-bot callId=${callId} tool=${TOOL} account=${deps.accountId} botId=${p.botId} registered=${known.length}`);
|
|
34
|
+
return {
|
|
35
|
+
ok: false,
|
|
36
|
+
isError: true,
|
|
37
|
+
outcome: "none",
|
|
38
|
+
text: known.length
|
|
39
|
+
? `No bot "${p.botId}" is registered on this account. Registered: ${known
|
|
40
|
+
.map((b) => `${b.id} (${b.role})`)
|
|
41
|
+
.join(", ")}.`
|
|
42
|
+
: "No Telegram bot is registered on this account. Run the telegram:configure skill first.",
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const markup = p.buttons ? buildInlineKeyboard(p.buttons) : undefined;
|
|
46
|
+
const stored = p.key
|
|
47
|
+
? readCardId(deps.platformRoot, deps.accountId, cardKey(p.botId, p.chatId, p.key))
|
|
48
|
+
: null;
|
|
49
|
+
const common = {
|
|
50
|
+
chat_id: p.chatId,
|
|
51
|
+
text: p.text,
|
|
52
|
+
parse_mode: p.parseMode ?? "HTML",
|
|
53
|
+
...(markup ? { reply_markup: markup } : {}),
|
|
54
|
+
...(p.disablePreview ? { link_preview_options: { is_disabled: true } } : {}),
|
|
55
|
+
};
|
|
56
|
+
const method = stored === null ? "sendMessage" : "editMessageText";
|
|
57
|
+
const body = stored === null ? common : { ...common, message_id: stored };
|
|
58
|
+
log(`${TAG} op=call tool=${TOOL} method=${method} callId=${callId} botId=${p.botId}`);
|
|
59
|
+
let envelope;
|
|
60
|
+
try {
|
|
61
|
+
envelope = await callBotApi(token, method, body, {
|
|
62
|
+
...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
67
|
+
log(`${TAG} op=error callId=${callId} tool=${TOOL} method=${method} reason="${reason}"`);
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
isError: true,
|
|
71
|
+
outcome: "none",
|
|
72
|
+
text: `telegram-card could not reach Telegram: ${reason}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
let outcome;
|
|
76
|
+
let sendError = null;
|
|
77
|
+
if (envelope.ok) {
|
|
78
|
+
outcome = stored === null ? "sent" : "edited";
|
|
79
|
+
const id = envelope.result?.message_id;
|
|
80
|
+
// An edit refreshes the entry's timestamp as well as a first post writing
|
|
81
|
+
// it. The store ages a key out after CARD_TTL_MS UNTOUCHED (card-store.ts);
|
|
82
|
+
// without this a card edited every day would still expire seven days after
|
|
83
|
+
// it was created, mid-life.
|
|
84
|
+
if (p.key) {
|
|
85
|
+
const toStore = stored === null ? (typeof id === "number" ? id : null) : stored;
|
|
86
|
+
if (toStore !== null) {
|
|
87
|
+
writeCardId(deps.platformRoot, deps.accountId, cardKey(p.botId, p.chatId, p.key), toStore);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if ((envelope.description ?? "").includes(NOT_MODIFIED)) {
|
|
92
|
+
outcome = "unchanged";
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
outcome = "none";
|
|
96
|
+
sendError = `Telegram refused ${method} (${envelope.error_code ?? "no code"}): ${envelope.description ?? "no description"}`;
|
|
97
|
+
}
|
|
98
|
+
log(`${TAG} op=result callId=${callId} tool=${TOOL} method=${method} ok=${envelope.ok || outcome === "unchanged"} ` +
|
|
99
|
+
`errorCode=${envelope.error_code ?? "-"} description="${envelope.description ?? ""}"`);
|
|
100
|
+
// Task 2604 — flattened across rows: two buttons in one row and two across two
|
|
101
|
+
// rows are the same two choices, and the census asks whether the person was
|
|
102
|
+
// given choices at all. This is the numerator of
|
|
103
|
+
// `[telegram-card-census] cardsWithButtons=`; without it the clause telling the
|
|
104
|
+
// agent to prefer buttons has no signal and not offering one is a non-event.
|
|
105
|
+
const buttonCount = (p.buttons ?? []).reduce((n, row) => n + row.length, 0);
|
|
106
|
+
log(`${TAG} op=card callId=${callId} outcome=${outcome} buttons=${buttonCount}`);
|
|
107
|
+
// AFTER the send, deliberately. Telegram refuses a callback id older than its
|
|
108
|
+
// window, and answering first would let a stale id block the card update,
|
|
109
|
+
// which is the caller's actual work. A failure here is reported, never
|
|
110
|
+
// swallowed and never retried.
|
|
111
|
+
let answerError = null;
|
|
112
|
+
if (p.callbackQueryId) {
|
|
113
|
+
log(`${TAG} op=call tool=${TOOL} method=answerCallbackQuery callId=${callId} botId=${p.botId}`);
|
|
114
|
+
try {
|
|
115
|
+
const ack = await callBotApi(token, "answerCallbackQuery", { callback_query_id: p.callbackQueryId, ...(p.alert ? { show_alert: true } : {}) }, { ...(deps.fetchImpl ? { fetchImpl: deps.fetchImpl } : {}) });
|
|
116
|
+
log(`${TAG} op=result callId=${callId} tool=${TOOL} method=answerCallbackQuery ok=${ack.ok}`);
|
|
117
|
+
if (!ack.ok) {
|
|
118
|
+
answerError = `Telegram refused answerCallbackQuery (${ack.error_code ?? "no code"}): ${ack.description ?? "no description"}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
answerError = `answerCallbackQuery could not reach Telegram: ${err instanceof Error ? err.message : String(err)}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (sendError || answerError) {
|
|
126
|
+
return {
|
|
127
|
+
ok: false,
|
|
128
|
+
isError: true,
|
|
129
|
+
outcome,
|
|
130
|
+
text: [sendError, answerError].filter(Boolean).join(" "),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const said = outcome === "unchanged"
|
|
134
|
+
? "Card unchanged: the new text and markup match what is already there."
|
|
135
|
+
: outcome === "edited"
|
|
136
|
+
? `Card edited in place (message ${stored}).`
|
|
137
|
+
: `Card sent to ${p.chatId}.`;
|
|
138
|
+
return { ok: true, isError: false, outcome, text: said };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../src/tools/card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export type InvoiceAction = "send" | "link" | "answerShipping" | "answerPreCheckout" | "balance" | "transactions" | "refund" | "editSubscription";
|
|
2
|
+
/** Action to Bot API method. Verified against the live parameter tables on
|
|
3
|
+
* 2026-08-08. Exported so the census's owned-method map and this tool cannot
|
|
4
|
+
* disagree about which methods the tool owns. */
|
|
5
|
+
export declare const INVOICE_METHOD: Readonly<Record<InvoiceAction, string>>;
|
|
6
|
+
export interface LabeledPrice {
|
|
7
|
+
label: string;
|
|
8
|
+
amount: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ShippingOptionInput {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
prices: LabeledPrice[];
|
|
14
|
+
}
|
|
15
|
+
export interface InvoiceParams {
|
|
16
|
+
botId: string;
|
|
17
|
+
action: InvoiceAction;
|
|
18
|
+
chatId?: string | number;
|
|
19
|
+
title?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
payload?: string;
|
|
22
|
+
providerToken?: string;
|
|
23
|
+
currency?: string;
|
|
24
|
+
prices?: LabeledPrice[];
|
|
25
|
+
subscriptionPeriod?: number;
|
|
26
|
+
maxTipAmount?: number;
|
|
27
|
+
suggestedTipAmounts?: number[];
|
|
28
|
+
photoUrl?: string;
|
|
29
|
+
needName?: boolean;
|
|
30
|
+
needPhoneNumber?: boolean;
|
|
31
|
+
needEmail?: boolean;
|
|
32
|
+
needShippingAddress?: boolean;
|
|
33
|
+
isFlexible?: boolean;
|
|
34
|
+
shippingQueryId?: string;
|
|
35
|
+
preCheckoutQueryId?: string;
|
|
36
|
+
ok?: boolean;
|
|
37
|
+
shippingOptions?: ShippingOptionInput[];
|
|
38
|
+
errorMessage?: string;
|
|
39
|
+
offset?: number;
|
|
40
|
+
limit?: number;
|
|
41
|
+
userId?: number;
|
|
42
|
+
telegramPaymentChargeId?: string;
|
|
43
|
+
isCanceled?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface InvoiceDeps {
|
|
46
|
+
platformRoot: string;
|
|
47
|
+
accountId: string | undefined;
|
|
48
|
+
/** Per-invocation id threading one call's lines together. */
|
|
49
|
+
callId: string;
|
|
50
|
+
log: (line: string) => void;
|
|
51
|
+
fetchImpl?: typeof fetch;
|
|
52
|
+
}
|
|
53
|
+
export interface InvoiceResult {
|
|
54
|
+
ok: boolean;
|
|
55
|
+
text: string;
|
|
56
|
+
isError: boolean;
|
|
57
|
+
/** What was created, for the op=invoice line. `none` covers the six actions
|
|
58
|
+
* that create nothing, and any action Telegram refused. */
|
|
59
|
+
outcome: "sent" | "link" | "none";
|
|
60
|
+
}
|
|
61
|
+
/** Invoices and invoice links, the two checkout answers, and the Telegram Stars
|
|
62
|
+
* balance, transaction list, refund and subscription controls.
|
|
63
|
+
*
|
|
64
|
+
* Task 2594: these eight methods were reachable only through telegram-api,
|
|
65
|
+
* whose untyped params object gave the model no field names for any of them.
|
|
66
|
+
*
|
|
67
|
+
* An invoice created and never paid is a business outcome, not a defect, so
|
|
68
|
+
* op=invoice is one line and no alert. */
|
|
69
|
+
export declare function telegramInvoice(p: InvoiceParams, deps: InvoiceDeps): Promise<InvoiceResult>;
|
|
70
|
+
//# sourceMappingURL=invoice.d.ts.map
|
|
@@ -0,0 +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"}
|