agent-messenger 2.10.1 → 2.11.0
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/.claude-plugin/plugin.json +1 -1
- package/.env.template +4 -1
- package/README.md +77 -27
- package/bun.lock +26 -0
- package/dist/package.json +14 -1
- package/dist/src/platforms/channeltalk/commands/auth.d.ts +2 -1
- package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/channeltalk/commands/auth.js +5 -3
- package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -1
- package/dist/src/platforms/channeltalk/token-extractor.d.ts +2 -1
- package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/channeltalk/token-extractor.js +22 -6
- package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/cli.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/cli.js +11 -1
- package/dist/src/platforms/channeltalkbot/cli.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/auth.js +1 -5
- package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/bot.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/bot.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/bot.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/chat.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/chat.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/chat.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/group.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/group.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/group.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/manager.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/manager.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/manager.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/message.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/message.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/whoami.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/commands/whoami.js +1 -6
- package/dist/src/platforms/channeltalkbot/commands/whoami.js.map +1 -1
- package/dist/src/platforms/channeltalkbot/credential-manager.d.ts +5 -0
- package/dist/src/platforms/channeltalkbot/credential-manager.d.ts.map +1 -1
- package/dist/src/platforms/channeltalkbot/credential-manager.js +34 -4
- package/dist/src/platforms/channeltalkbot/credential-manager.js.map +1 -1
- package/dist/src/platforms/discord/commands/auth.d.ts +1 -0
- package/dist/src/platforms/discord/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/discord/commands/auth.js +3 -1
- package/dist/src/platforms/discord/commands/auth.js.map +1 -1
- package/dist/src/platforms/discord/listener.d.ts +2 -0
- package/dist/src/platforms/discord/listener.d.ts.map +1 -1
- package/dist/src/platforms/discord/listener.js +51 -21
- package/dist/src/platforms/discord/listener.js.map +1 -1
- package/dist/src/platforms/discord/token-extractor.d.ts +2 -1
- package/dist/src/platforms/discord/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/discord/token-extractor.js +21 -6
- package/dist/src/platforms/discord/token-extractor.js.map +1 -1
- package/dist/src/platforms/discordbot/cli.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/cli.js +12 -1
- package/dist/src/platforms/discordbot/cli.js.map +1 -1
- package/dist/src/platforms/discordbot/client.d.ts +3 -0
- package/dist/src/platforms/discordbot/client.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/client.js +3 -0
- package/dist/src/platforms/discordbot/client.js.map +1 -1
- package/dist/src/platforms/discordbot/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/commands/auth.js +1 -5
- package/dist/src/platforms/discordbot/commands/auth.js.map +1 -1
- package/dist/src/platforms/discordbot/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/commands/message.js +1 -6
- package/dist/src/platforms/discordbot/commands/message.js.map +1 -1
- package/dist/src/platforms/discordbot/commands/server.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/commands/server.js +1 -4
- package/dist/src/platforms/discordbot/commands/server.js.map +1 -1
- package/dist/src/platforms/discordbot/commands/whoami.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/commands/whoami.js +1 -6
- package/dist/src/platforms/discordbot/commands/whoami.js.map +1 -1
- package/dist/src/platforms/discordbot/index.d.ts +3 -1
- package/dist/src/platforms/discordbot/index.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/index.js +2 -1
- package/dist/src/platforms/discordbot/index.js.map +1 -1
- package/dist/src/platforms/discordbot/listener.d.ts +43 -0
- package/dist/src/platforms/discordbot/listener.d.ts.map +1 -0
- package/dist/src/platforms/discordbot/listener.js +292 -0
- package/dist/src/platforms/discordbot/listener.js.map +1 -0
- package/dist/src/platforms/discordbot/types.d.ts +161 -0
- package/dist/src/platforms/discordbot/types.d.ts.map +1 -1
- package/dist/src/platforms/discordbot/types.js +34 -0
- package/dist/src/platforms/discordbot/types.js.map +1 -1
- package/dist/src/platforms/instagram/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/instagram/commands/auth.js +3 -1
- package/dist/src/platforms/instagram/commands/auth.js.map +1 -1
- package/dist/src/platforms/instagram/token-extractor.d.ts +2 -1
- package/dist/src/platforms/instagram/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/instagram/token-extractor.js +11 -2
- package/dist/src/platforms/instagram/token-extractor.js.map +1 -1
- package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/slack/commands/auth.js +4 -2
- package/dist/src/platforms/slack/commands/auth.js.map +1 -1
- package/dist/src/platforms/slack/token-extractor.d.ts +4 -1
- package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/slack/token-extractor.js +64 -15
- package/dist/src/platforms/slack/token-extractor.js.map +1 -1
- package/dist/src/platforms/slackbot/cli.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/cli.js +15 -3
- package/dist/src/platforms/slackbot/cli.js.map +1 -1
- package/dist/src/platforms/slackbot/client.d.ts +22 -1
- package/dist/src/platforms/slackbot/client.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/client.js +104 -1
- package/dist/src/platforms/slackbot/client.js.map +1 -1
- package/dist/src/platforms/slackbot/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/commands/auth.js +1 -5
- package/dist/src/platforms/slackbot/commands/auth.js.map +1 -1
- package/dist/src/platforms/slackbot/commands/file.d.ts +3 -0
- package/dist/src/platforms/slackbot/commands/file.d.ts.map +1 -0
- package/dist/src/platforms/slackbot/commands/file.js +164 -0
- package/dist/src/platforms/slackbot/commands/file.js.map +1 -0
- package/dist/src/platforms/slackbot/commands/index.d.ts +1 -0
- package/dist/src/platforms/slackbot/commands/index.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/commands/index.js +1 -0
- package/dist/src/platforms/slackbot/commands/index.js.map +1 -1
- package/dist/src/platforms/slackbot/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/commands/message.js +19 -0
- package/dist/src/platforms/slackbot/commands/message.js.map +1 -1
- package/dist/src/platforms/slackbot/commands/whoami.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/commands/whoami.js +1 -6
- package/dist/src/platforms/slackbot/commands/whoami.js.map +1 -1
- package/dist/src/platforms/slackbot/credential-manager.d.ts +1 -0
- package/dist/src/platforms/slackbot/credential-manager.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/credential-manager.js +30 -2
- package/dist/src/platforms/slackbot/credential-manager.js.map +1 -1
- package/dist/src/platforms/slackbot/index.d.ts +4 -1
- package/dist/src/platforms/slackbot/index.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/index.js +1 -0
- package/dist/src/platforms/slackbot/index.js.map +1 -1
- package/dist/src/platforms/slackbot/listener.d.ts +44 -0
- package/dist/src/platforms/slackbot/listener.d.ts.map +1 -0
- package/dist/src/platforms/slackbot/listener.js +313 -0
- package/dist/src/platforms/slackbot/listener.js.map +1 -0
- package/dist/src/platforms/slackbot/types.d.ts +196 -1
- package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
- package/dist/src/platforms/slackbot/types.js +4 -1
- package/dist/src/platforms/slackbot/types.js.map +1 -1
- package/dist/src/platforms/teams/commands/auth.d.ts +1 -0
- package/dist/src/platforms/teams/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/teams/commands/auth.js +37 -6
- package/dist/src/platforms/teams/commands/auth.js.map +1 -1
- package/dist/src/platforms/teams/ensure-auth.js +31 -9
- package/dist/src/platforms/teams/ensure-auth.js.map +1 -1
- package/dist/src/platforms/teams/token-extractor.d.ts +4 -1
- package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/teams/token-extractor.js +80 -31
- package/dist/src/platforms/teams/token-extractor.js.map +1 -1
- package/dist/src/platforms/webex/commands/auth.d.ts +1 -0
- package/dist/src/platforms/webex/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/webex/commands/auth.js +3 -1
- package/dist/src/platforms/webex/commands/auth.js.map +1 -1
- package/dist/src/platforms/webex/token-extractor.d.ts +3 -1
- package/dist/src/platforms/webex/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/webex/token-extractor.js +16 -2
- package/dist/src/platforms/webex/token-extractor.js.map +1 -1
- package/dist/src/platforms/wechatbot/cli.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/cli.js +11 -1
- package/dist/src/platforms/wechatbot/cli.js.map +1 -1
- package/dist/src/platforms/wechatbot/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/commands/auth.js +1 -5
- package/dist/src/platforms/wechatbot/commands/auth.js.map +1 -1
- package/dist/src/platforms/wechatbot/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/commands/message.js +1 -6
- package/dist/src/platforms/wechatbot/commands/message.js.map +1 -1
- package/dist/src/platforms/wechatbot/commands/template.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/commands/template.js +1 -6
- package/dist/src/platforms/wechatbot/commands/template.js.map +1 -1
- package/dist/src/platforms/wechatbot/commands/user.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/commands/user.js +1 -6
- package/dist/src/platforms/wechatbot/commands/user.js.map +1 -1
- package/dist/src/platforms/wechatbot/commands/whoami.d.ts.map +1 -1
- package/dist/src/platforms/wechatbot/commands/whoami.js +1 -6
- package/dist/src/platforms/wechatbot/commands/whoami.js.map +1 -1
- package/dist/src/platforms/whatsappbot/cli.d.ts.map +1 -1
- package/dist/src/platforms/whatsappbot/cli.js +11 -1
- package/dist/src/platforms/whatsappbot/cli.js.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/auth.d.ts.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/auth.js +1 -5
- package/dist/src/platforms/whatsappbot/commands/auth.js.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/message.d.ts.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/message.js +1 -6
- package/dist/src/platforms/whatsappbot/commands/message.js.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/template.d.ts.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/template.js +1 -6
- package/dist/src/platforms/whatsappbot/commands/template.js.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/whoami.d.ts.map +1 -1
- package/dist/src/platforms/whatsappbot/commands/whoami.js +1 -6
- package/dist/src/platforms/whatsappbot/commands/whoami.js.map +1 -1
- package/dist/src/shared/chromium/browsers.d.ts +8 -0
- package/dist/src/shared/chromium/browsers.d.ts.map +1 -1
- package/dist/src/shared/chromium/browsers.js +58 -3
- package/dist/src/shared/chromium/browsers.js.map +1 -1
- package/dist/src/shared/chromium/cli-options.d.ts +5 -0
- package/dist/src/shared/chromium/cli-options.d.ts.map +1 -0
- package/dist/src/shared/chromium/cli-options.js +8 -0
- package/dist/src/shared/chromium/cli-options.js.map +1 -0
- package/dist/src/shared/chromium/decryptor.d.ts +6 -0
- package/dist/src/shared/chromium/decryptor.d.ts.map +1 -1
- package/dist/src/shared/chromium/decryptor.js +26 -6
- package/dist/src/shared/chromium/decryptor.js.map +1 -1
- package/dist/src/shared/chromium/index.d.ts +3 -1
- package/dist/src/shared/chromium/index.d.ts.map +1 -1
- package/dist/src/shared/chromium/index.js +2 -1
- package/dist/src/shared/chromium/index.js.map +1 -1
- package/dist/src/shared/utils/cli-output.d.ts +7 -0
- package/dist/src/shared/utils/cli-output.d.ts.map +1 -0
- package/dist/src/shared/utils/cli-output.js +7 -0
- package/dist/src/shared/utils/cli-output.js.map +1 -0
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +73 -20
- package/dist/src/tui/app.js.map +1 -1
- package/docs/content/docs/cli/channeltalk.mdx +4 -0
- package/docs/content/docs/cli/discord.mdx +5 -0
- package/docs/content/docs/cli/instagram.mdx +3 -0
- package/docs/content/docs/cli/slack.mdx +5 -0
- package/docs/content/docs/cli/slackbot.mdx +60 -22
- package/docs/content/docs/cli/teams.mdx +5 -0
- package/docs/content/docs/cli/webex.mdx +3 -0
- package/docs/content/docs/sdk/channeltalkbot.mdx +38 -1
- package/docs/content/docs/sdk/discordbot.mdx +501 -0
- package/docs/content/docs/sdk/meta.json +2 -0
- package/docs/content/docs/sdk/slackbot.mdx +576 -0
- package/e2e/README.md +1 -1
- package/e2e/channeltalk.e2e.test.ts +13 -13
- package/e2e/channeltalkbot.e2e.test.ts +13 -13
- package/e2e/config.ts +9 -4
- package/e2e/discord.e2e.test.ts +24 -24
- package/e2e/discordbot.e2e.test.ts +16 -16
- package/e2e/instagram.e2e.test.ts +10 -10
- package/e2e/kakaotalk.e2e.test.ts +7 -7
- package/e2e/line.e2e.test.ts +8 -8
- package/e2e/slack.e2e.test.ts +34 -34
- package/e2e/slackbot.e2e.test.ts +14 -14
- package/e2e/teams.e2e.test.ts +23 -23
- package/e2e/telegram.e2e.test.ts +8 -8
- package/e2e/webex.e2e.test.ts +14 -14
- package/e2e/whatsapp.e2e.test.ts +8 -8
- package/e2e/whatsappbot.e2e.test.ts +6 -6
- package/examples/discordbot-listen.ts +65 -0
- package/examples/slackbot-listen.ts +65 -0
- package/package.json +14 -1
- package/skills/agent-channeltalk/SKILL.md +5 -1
- package/skills/agent-channeltalk/references/authentication.md +5 -1
- package/skills/agent-channeltalkbot/SKILL.md +17 -3
- package/skills/agent-channeltalkbot/references/authentication.md +7 -5
- package/skills/agent-discord/SKILL.md +5 -1
- package/skills/agent-discord/references/authentication.md +7 -1
- package/skills/agent-discordbot/SKILL.md +13 -2
- package/skills/agent-discordbot/references/common-patterns.md +1 -1
- package/skills/agent-instagram/SKILL.md +7 -1
- package/skills/agent-instagram/references/authentication.md +6 -0
- package/skills/agent-kakaotalk/SKILL.md +1 -1
- package/skills/agent-line/SKILL.md +1 -1
- package/skills/agent-slack/SKILL.md +5 -1
- package/skills/agent-slack/references/authentication.md +7 -1
- package/skills/agent-slackbot/SKILL.md +56 -4
- package/skills/agent-slackbot/references/authentication.md +4 -0
- package/skills/agent-teams/SKILL.md +5 -1
- package/skills/agent-teams/references/authentication.md +7 -1
- package/skills/agent-telegram/SKILL.md +1 -1
- package/skills/agent-webex/SKILL.md +7 -1
- package/skills/agent-webex/references/authentication.md +6 -0
- package/skills/agent-wechatbot/SKILL.md +16 -1
- package/skills/agent-wechatbot/references/authentication.md +219 -0
- package/skills/agent-wechatbot/references/common-patterns.md +358 -0
- package/skills/agent-wechatbot/templates/account-summary.sh +122 -0
- package/skills/agent-wechatbot/templates/post-message.sh +122 -0
- package/skills/agent-wechatbot/templates/send-template.sh +152 -0
- package/skills/agent-whatsapp/SKILL.md +1 -1
- package/skills/agent-whatsappbot/SKILL.md +30 -1
- package/src/platforms/channeltalk/client.test.ts +26 -26
- package/src/platforms/channeltalk/commands/auth.test.ts +31 -19
- package/src/platforms/channeltalk/commands/auth.ts +15 -5
- package/src/platforms/channeltalk/commands/bot.test.ts +2 -2
- package/src/platforms/channeltalk/commands/chat.test.ts +3 -3
- package/src/platforms/channeltalk/commands/group.test.ts +4 -4
- package/src/platforms/channeltalk/commands/manager.test.ts +2 -2
- package/src/platforms/channeltalk/commands/message.test.ts +17 -17
- package/src/platforms/channeltalk/commands/snapshot.test.ts +7 -7
- package/src/platforms/channeltalk/commands/whoami.test.ts +3 -3
- package/src/platforms/channeltalk/credential-manager.test.ts +18 -18
- package/src/platforms/channeltalk/ensure-auth.test.ts +5 -5
- package/src/platforms/channeltalk/index.test.ts +23 -23
- package/src/platforms/channeltalk/token-extractor.test.ts +21 -21
- package/src/platforms/channeltalk/token-extractor.ts +24 -5
- package/src/platforms/channeltalk/types.test.ts +12 -12
- package/src/platforms/channeltalkbot/cli.ts +9 -0
- package/src/platforms/channeltalkbot/client.test.ts +14 -14
- package/src/platforms/channeltalkbot/commands/auth.test.ts +16 -16
- package/src/platforms/channeltalkbot/commands/auth.ts +1 -5
- package/src/platforms/channeltalkbot/commands/bot.test.ts +6 -6
- package/src/platforms/channeltalkbot/commands/bot.ts +1 -6
- package/src/platforms/channeltalkbot/commands/chat.test.ts +9 -9
- package/src/platforms/channeltalkbot/commands/chat.ts +1 -6
- package/src/platforms/channeltalkbot/commands/group.test.ts +6 -6
- package/src/platforms/channeltalkbot/commands/group.ts +1 -6
- package/src/platforms/channeltalkbot/commands/manager.test.ts +3 -3
- package/src/platforms/channeltalkbot/commands/manager.ts +1 -6
- package/src/platforms/channeltalkbot/commands/message.test.ts +10 -10
- package/src/platforms/channeltalkbot/commands/message.ts +1 -6
- package/src/platforms/channeltalkbot/commands/snapshot.test.ts +7 -7
- package/src/platforms/channeltalkbot/commands/whoami.test.ts +6 -4
- package/src/platforms/channeltalkbot/commands/whoami.ts +1 -6
- package/src/platforms/channeltalkbot/credential-manager.test.ts +123 -29
- package/src/platforms/channeltalkbot/credential-manager.ts +37 -4
- package/src/platforms/channeltalkbot/index.test.ts +15 -15
- package/src/platforms/discord/client.test.ts +28 -28
- package/src/platforms/discord/commands/auth.test.ts +7 -7
- package/src/platforms/discord/commands/auth.ts +13 -2
- package/src/platforms/discord/commands/channel.test.ts +7 -7
- package/src/platforms/discord/commands/dm.test.ts +4 -4
- package/src/platforms/discord/commands/file.test.ts +4 -4
- package/src/platforms/discord/commands/friend.test.ts +6 -6
- package/src/platforms/discord/commands/member.test.ts +5 -5
- package/src/platforms/discord/commands/mention.test.ts +5 -5
- package/src/platforms/discord/commands/message.test.ts +9 -9
- package/src/platforms/discord/commands/note.test.ts +6 -6
- package/src/platforms/discord/commands/profile.test.ts +4 -4
- package/src/platforms/discord/commands/reaction.test.ts +5 -5
- package/src/platforms/discord/commands/server.test.ts +7 -7
- package/src/platforms/discord/commands/snapshot.test.ts +6 -6
- package/src/platforms/discord/commands/thread.test.ts +6 -6
- package/src/platforms/discord/commands/user.test.ts +5 -5
- package/src/platforms/discord/commands/whoami.test.ts +6 -6
- package/src/platforms/discord/credential-manager.test.ts +16 -16
- package/src/platforms/discord/ensure-auth.test.ts +8 -8
- package/src/platforms/discord/index.test.ts +17 -17
- package/src/platforms/discord/listener.test.ts +92 -34
- package/src/platforms/discord/listener.ts +43 -19
- package/src/platforms/discord/token-extractor.test.ts +53 -53
- package/src/platforms/discord/token-extractor.ts +30 -6
- package/src/platforms/discord/types.test.ts +26 -26
- package/src/platforms/discordbot/cli.ts +10 -0
- package/src/platforms/discordbot/client.test.ts +31 -31
- package/src/platforms/discordbot/client.ts +4 -0
- package/src/platforms/discordbot/commands/auth.test.ts +18 -18
- package/src/platforms/discordbot/commands/auth.ts +1 -5
- package/src/platforms/discordbot/commands/channel.test.ts +11 -11
- package/src/platforms/discordbot/commands/file.test.ts +7 -7
- package/src/platforms/discordbot/commands/message.test.ts +25 -25
- package/src/platforms/discordbot/commands/message.ts +1 -6
- package/src/platforms/discordbot/commands/reaction.test.ts +6 -6
- package/src/platforms/discordbot/commands/server.test.ts +12 -12
- package/src/platforms/discordbot/commands/server.ts +1 -5
- package/src/platforms/discordbot/commands/snapshot.test.ts +13 -13
- package/src/platforms/discordbot/commands/thread.test.ts +10 -10
- package/src/platforms/discordbot/commands/user.test.ts +9 -9
- package/src/platforms/discordbot/commands/whoami.test.ts +4 -4
- package/src/platforms/discordbot/commands/whoami.ts +1 -6
- package/src/platforms/discordbot/credential-manager.test.ts +28 -28
- package/src/platforms/discordbot/index.test.ts +82 -0
- package/src/platforms/discordbot/index.ts +27 -9
- package/src/platforms/discordbot/listener.test.ts +1002 -0
- package/src/platforms/discordbot/listener.ts +321 -0
- package/src/platforms/discordbot/types.ts +163 -0
- package/src/platforms/instagram/client.test.ts +18 -18
- package/src/platforms/instagram/commands/auth.test.ts +11 -11
- package/src/platforms/instagram/commands/auth.ts +9 -1
- package/src/platforms/instagram/commands/chat.test.ts +6 -6
- package/src/platforms/instagram/commands/message.test.ts +11 -11
- package/src/platforms/instagram/commands/shared.test.ts +12 -12
- package/src/platforms/instagram/commands/whoami.test.ts +3 -3
- package/src/platforms/instagram/credential-manager.test.ts +21 -21
- package/src/platforms/instagram/ensure-auth.test.ts +4 -4
- package/src/platforms/instagram/index.test.ts +9 -9
- package/src/platforms/instagram/listener.test.ts +8 -8
- package/src/platforms/instagram/token-extractor.test.ts +35 -35
- package/src/platforms/instagram/token-extractor.ts +13 -1
- package/src/platforms/kakaotalk/client.test.ts +33 -33
- package/src/platforms/kakaotalk/commands/auth.test.ts +11 -11
- package/src/platforms/kakaotalk/commands/chat.test.ts +6 -6
- package/src/platforms/kakaotalk/commands/message.test.ts +7 -7
- package/src/platforms/kakaotalk/commands/whoami.test.ts +5 -5
- package/src/platforms/kakaotalk/credential-manager.test.ts +15 -15
- package/src/platforms/kakaotalk/index.test.ts +15 -15
- package/src/platforms/kakaotalk/listener.test.ts +17 -17
- package/src/platforms/line/client.test.ts +17 -17
- package/src/platforms/line/commands/auth.test.ts +8 -8
- package/src/platforms/line/commands/chat.test.ts +7 -7
- package/src/platforms/line/commands/friend.test.ts +6 -6
- package/src/platforms/line/commands/message.test.ts +7 -7
- package/src/platforms/line/commands/whoami.test.ts +6 -6
- package/src/platforms/line/credential-manager.test.ts +17 -17
- package/src/platforms/line/index.test.ts +10 -10
- package/src/platforms/line/listener.test.ts +15 -15
- package/src/platforms/line/types.test.ts +14 -14
- package/src/platforms/slack/cli.test.ts +8 -8
- package/src/platforms/slack/client.test.ts +151 -151
- package/src/platforms/slack/commands/activity.test.ts +13 -13
- package/src/platforms/slack/commands/auth.test.ts +34 -34
- package/src/platforms/slack/commands/auth.ts +11 -2
- package/src/platforms/slack/commands/bookmark.test.ts +9 -9
- package/src/platforms/slack/commands/channel.test.ts +17 -17
- package/src/platforms/slack/commands/drafts.test.ts +7 -7
- package/src/platforms/slack/commands/emoji.test.ts +3 -3
- package/src/platforms/slack/commands/file.test.ts +12 -12
- package/src/platforms/slack/commands/message.test.ts +19 -19
- package/src/platforms/slack/commands/pin.test.ts +7 -7
- package/src/platforms/slack/commands/reaction.test.ts +10 -10
- package/src/platforms/slack/commands/reminder.test.ts +9 -9
- package/src/platforms/slack/commands/saved.test.ts +7 -7
- package/src/platforms/slack/commands/sections.test.ts +5 -5
- package/src/platforms/slack/commands/snapshot.test.ts +13 -13
- package/src/platforms/slack/commands/unread.test.ts +6 -6
- package/src/platforms/slack/commands/user.test.ts +10 -10
- package/src/platforms/slack/commands/usergroup.test.ts +15 -15
- package/src/platforms/slack/commands/whoami.test.ts +6 -6
- package/src/platforms/slack/commands/workspace.test.ts +26 -26
- package/src/platforms/slack/credential-manager.test.ts +14 -14
- package/src/platforms/slack/ensure-auth.test.ts +21 -21
- package/src/platforms/slack/index.test.ts +12 -12
- package/src/platforms/slack/listener.test.ts +17 -17
- package/src/platforms/slack/token-extractor-node.test.ts +2 -2
- package/src/platforms/slack/token-extractor.test.ts +133 -37
- package/src/platforms/slack/token-extractor.ts +76 -13
- package/src/platforms/slack/types.test.ts +21 -21
- package/src/platforms/slackbot/cli.ts +13 -1
- package/src/platforms/slackbot/client.test.ts +296 -22
- package/src/platforms/slackbot/client.ts +130 -2
- package/src/platforms/slackbot/commands/auth.test.ts +14 -14
- package/src/platforms/slackbot/commands/auth.ts +1 -5
- package/src/platforms/slackbot/commands/channel.test.ts +7 -7
- package/src/platforms/slackbot/commands/file.test.ts +201 -0
- package/src/platforms/slackbot/commands/file.ts +212 -0
- package/src/platforms/slackbot/commands/index.ts +1 -0
- package/src/platforms/slackbot/commands/message.test.ts +13 -13
- package/src/platforms/slackbot/commands/message.ts +22 -0
- package/src/platforms/slackbot/commands/reaction.test.ts +6 -6
- package/src/platforms/slackbot/commands/user.test.ts +7 -7
- package/src/platforms/slackbot/commands/whoami.test.ts +4 -4
- package/src/platforms/slackbot/commands/whoami.ts +1 -6
- package/src/platforms/slackbot/credential-manager.test.ts +83 -23
- package/src/platforms/slackbot/credential-manager.ts +32 -2
- package/src/platforms/slackbot/index.test.ts +59 -0
- package/src/platforms/slackbot/index.ts +31 -7
- package/src/platforms/slackbot/listener.test.ts +1012 -0
- package/src/platforms/slackbot/listener.ts +362 -0
- package/src/platforms/slackbot/types.test.ts +7 -7
- package/src/platforms/slackbot/types.ts +224 -1
- package/src/platforms/teams/client.test.ts +30 -30
- package/src/platforms/teams/commands/auth.test.ts +9 -9
- package/src/platforms/teams/commands/auth.ts +66 -7
- package/src/platforms/teams/commands/channel.test.ts +7 -7
- package/src/platforms/teams/commands/file.test.ts +4 -4
- package/src/platforms/teams/commands/message.test.ts +5 -5
- package/src/platforms/teams/commands/reaction.test.ts +4 -4
- package/src/platforms/teams/commands/snapshot.test.ts +7 -7
- package/src/platforms/teams/commands/team.test.ts +8 -8
- package/src/platforms/teams/commands/user.test.ts +4 -4
- package/src/platforms/teams/commands/whoami.test.ts +6 -6
- package/src/platforms/teams/credential-manager.test.ts +17 -17
- package/src/platforms/teams/ensure-auth.test.ts +69 -18
- package/src/platforms/teams/ensure-auth.ts +39 -11
- package/src/platforms/teams/index.test.ts +15 -15
- package/src/platforms/teams/token-extractor.test.ts +251 -69
- package/src/platforms/teams/token-extractor.ts +94 -31
- package/src/platforms/teams/types.test.ts +26 -26
- package/src/platforms/telegram/app-config.test.ts +4 -4
- package/src/platforms/telegram/chat-utils.test.ts +12 -12
- package/src/platforms/telegram/client.test.ts +4 -4
- package/src/platforms/telegram/commands/auth.test.ts +16 -16
- package/src/platforms/telegram/commands/chat.test.ts +9 -9
- package/src/platforms/telegram/commands/message.test.ts +6 -6
- package/src/platforms/telegram/commands/shared.test.ts +3 -3
- package/src/platforms/telegram/commands/whoami.test.ts +3 -3
- package/src/platforms/telegram/credential-manager.test.ts +10 -10
- package/src/platforms/telegram/types.test.ts +6 -6
- package/src/platforms/webex/app-config.test.ts +8 -8
- package/src/platforms/webex/cli.test.ts +5 -5
- package/src/platforms/webex/client.test.ts +65 -65
- package/src/platforms/webex/commands/auth.test.ts +18 -18
- package/src/platforms/webex/commands/auth.ts +13 -2
- package/src/platforms/webex/commands/member.test.ts +5 -5
- package/src/platforms/webex/commands/message.test.ts +12 -12
- package/src/platforms/webex/commands/snapshot.test.ts +5 -5
- package/src/platforms/webex/commands/space.test.ts +10 -10
- package/src/platforms/webex/commands/whoami.test.ts +6 -6
- package/src/platforms/webex/credential-manager.test.ts +22 -22
- package/src/platforms/webex/encryption.test.ts +4 -4
- package/src/platforms/webex/ensure-auth.test.ts +5 -5
- package/src/platforms/webex/index.test.ts +5 -5
- package/src/platforms/webex/markdown-to-html.test.ts +33 -33
- package/src/platforms/webex/token-extractor.test.ts +23 -23
- package/src/platforms/webex/token-extractor.ts +25 -3
- package/src/platforms/webex/types.test.ts +27 -27
- package/src/platforms/wechatbot/cli.ts +9 -0
- package/src/platforms/wechatbot/client.test.ts +27 -27
- package/src/platforms/wechatbot/commands/auth.test.ts +15 -15
- package/src/platforms/wechatbot/commands/auth.ts +1 -5
- package/src/platforms/wechatbot/commands/message.test.ts +8 -8
- package/src/platforms/wechatbot/commands/message.ts +1 -6
- package/src/platforms/wechatbot/commands/template.test.ts +9 -9
- package/src/platforms/wechatbot/commands/template.ts +1 -6
- package/src/platforms/wechatbot/commands/user.test.ts +7 -7
- package/src/platforms/wechatbot/commands/user.ts +1 -6
- package/src/platforms/wechatbot/commands/whoami.test.ts +5 -5
- package/src/platforms/wechatbot/commands/whoami.ts +1 -6
- package/src/platforms/wechatbot/credential-manager.test.ts +18 -18
- package/src/platforms/wechatbot/index.test.ts +10 -10
- package/src/platforms/wechatbot/types.test.ts +25 -25
- package/src/platforms/whatsapp/commands/auth.test.ts +13 -13
- package/src/platforms/whatsapp/commands/chat.test.ts +8 -8
- package/src/platforms/whatsapp/commands/message.test.ts +10 -10
- package/src/platforms/whatsapp/commands/whoami.test.ts +3 -3
- package/src/platforms/whatsapp/credential-manager.test.ts +23 -23
- package/src/platforms/whatsapp/ensure-auth.test.ts +4 -4
- package/src/platforms/whatsapp/index.test.ts +8 -8
- package/src/platforms/whatsapp/types.test.ts +42 -42
- package/src/platforms/whatsappbot/cli.ts +9 -0
- package/src/platforms/whatsappbot/client.test.ts +27 -27
- package/src/platforms/whatsappbot/commands/auth.test.ts +14 -14
- package/src/platforms/whatsappbot/commands/auth.ts +1 -5
- package/src/platforms/whatsappbot/commands/message.test.ts +16 -16
- package/src/platforms/whatsappbot/commands/message.ts +1 -6
- package/src/platforms/whatsappbot/commands/template.test.ts +9 -9
- package/src/platforms/whatsappbot/commands/template.ts +1 -6
- package/src/platforms/whatsappbot/commands/whoami.test.ts +5 -5
- package/src/platforms/whatsappbot/commands/whoami.ts +1 -6
- package/src/platforms/whatsappbot/credential-manager.test.ts +18 -18
- package/src/platforms/whatsappbot/index.test.ts +7 -7
- package/src/platforms/whatsappbot/types.test.ts +18 -18
- package/src/shared/chromium/browsers.test.ts +102 -22
- package/src/shared/chromium/browsers.ts +72 -3
- package/src/shared/chromium/cli-options.test.ts +22 -0
- package/src/shared/chromium/cli-options.ts +12 -0
- package/src/shared/chromium/cookie-reader.test.ts +13 -13
- package/src/shared/chromium/decryptor.test.ts +97 -32
- package/src/shared/chromium/decryptor.ts +27 -6
- package/src/shared/chromium/index.ts +3 -0
- package/src/shared/utils/cli-output.test.ts +57 -0
- package/src/shared/utils/cli-output.ts +8 -0
- package/src/shared/utils/concurrency.test.ts +6 -6
- package/src/shared/utils/derived-key-cache.test.ts +11 -11
- package/src/tui/app.ts +129 -20
- package/src/tui/utils.test.ts +31 -31
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { afterEach, beforeAll, describe, expect,
|
|
1
|
+
import { afterEach, beforeAll, describe, expect, it } from 'bun:test'
|
|
2
2
|
|
|
3
3
|
import { CHANNEL_TEST_WORKSPACE_ID, CHANNEL_TEST_WORKSPACE_NAME, validateChannelEnvironment } from './config'
|
|
4
4
|
import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
|
|
@@ -30,7 +30,7 @@ describe('Channel E2E Tests', () => {
|
|
|
30
30
|
})
|
|
31
31
|
|
|
32
32
|
describe('auth', () => {
|
|
33
|
-
|
|
33
|
+
it('auth status returns valid workspace info', async () => {
|
|
34
34
|
if (!channelAvailable) return
|
|
35
35
|
|
|
36
36
|
const result = await runCLI('channeltalk', ['auth', 'status'])
|
|
@@ -44,7 +44,7 @@ describe('Channel E2E Tests', () => {
|
|
|
44
44
|
}
|
|
45
45
|
})
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
it('auth list shows workspaces', async () => {
|
|
48
48
|
if (!channelAvailable) return
|
|
49
49
|
|
|
50
50
|
const result = await runCLI('channeltalk', ['auth', 'list'])
|
|
@@ -57,7 +57,7 @@ describe('Channel E2E Tests', () => {
|
|
|
57
57
|
})
|
|
58
58
|
|
|
59
59
|
describe('group', () => {
|
|
60
|
-
|
|
60
|
+
it('group list returns groups array', async () => {
|
|
61
61
|
if (!channelAvailable) return
|
|
62
62
|
|
|
63
63
|
const result = await runCLI('channeltalk', ['group', 'list', '--limit', '10'])
|
|
@@ -68,7 +68,7 @@ describe('Channel E2E Tests', () => {
|
|
|
68
68
|
expect(data!.groups.length).toBeGreaterThan(0)
|
|
69
69
|
})
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
it('group get returns group details', async () => {
|
|
72
72
|
if (!channelAvailable) return
|
|
73
73
|
|
|
74
74
|
const result = await runCLI('channeltalk', ['group', 'get', testGroupId])
|
|
@@ -79,7 +79,7 @@ describe('Channel E2E Tests', () => {
|
|
|
79
79
|
expect(data?.name).toBe(testGroupName)
|
|
80
80
|
})
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
it('group messages returns messages array', async () => {
|
|
83
83
|
if (!channelAvailable) return
|
|
84
84
|
|
|
85
85
|
const result = await runCLI('channeltalk', ['group', 'messages', testGroupId, '--limit', '5'])
|
|
@@ -91,7 +91,7 @@ describe('Channel E2E Tests', () => {
|
|
|
91
91
|
})
|
|
92
92
|
|
|
93
93
|
describe('message', () => {
|
|
94
|
-
|
|
94
|
+
it('message send creates a group message', async () => {
|
|
95
95
|
if (!channelAvailable) return
|
|
96
96
|
|
|
97
97
|
const testId = generateTestId()
|
|
@@ -104,7 +104,7 @@ describe('Channel E2E Tests', () => {
|
|
|
104
104
|
expect(data?.plain_text).toContain(testId)
|
|
105
105
|
})
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
it('message list returns messages from group', async () => {
|
|
108
108
|
if (!channelAvailable) return
|
|
109
109
|
|
|
110
110
|
const result = await runCLI('channeltalk', ['message', 'list', 'group', testGroupId, '--limit', '5'])
|
|
@@ -114,7 +114,7 @@ describe('Channel E2E Tests', () => {
|
|
|
114
114
|
expect(Array.isArray(data?.messages)).toBe(true)
|
|
115
115
|
})
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
it('message get retrieves a specific message', async () => {
|
|
118
118
|
if (!channelAvailable) return
|
|
119
119
|
|
|
120
120
|
const testId = generateTestId()
|
|
@@ -136,7 +136,7 @@ describe('Channel E2E Tests', () => {
|
|
|
136
136
|
})
|
|
137
137
|
|
|
138
138
|
describe('chat', () => {
|
|
139
|
-
|
|
139
|
+
it('chat list returns user chats array', async () => {
|
|
140
140
|
if (!channelAvailable) return
|
|
141
141
|
|
|
142
142
|
const result = await runCLI('channeltalk', ['chat', 'list', '--limit', '5'])
|
|
@@ -148,7 +148,7 @@ describe('Channel E2E Tests', () => {
|
|
|
148
148
|
})
|
|
149
149
|
|
|
150
150
|
describe('manager', () => {
|
|
151
|
-
|
|
151
|
+
it('manager list returns managers array', async () => {
|
|
152
152
|
if (!channelAvailable) return
|
|
153
153
|
|
|
154
154
|
const result = await runCLI('channeltalk', ['manager', 'list', '--limit', '10'])
|
|
@@ -161,7 +161,7 @@ describe('Channel E2E Tests', () => {
|
|
|
161
161
|
})
|
|
162
162
|
|
|
163
163
|
describe('bot', () => {
|
|
164
|
-
|
|
164
|
+
it('bot list returns bots array', async () => {
|
|
165
165
|
if (!channelAvailable) return
|
|
166
166
|
|
|
167
167
|
const result = await runCLI('channeltalk', ['bot', 'list', '--limit', '10'])
|
|
@@ -173,7 +173,7 @@ describe('Channel E2E Tests', () => {
|
|
|
173
173
|
})
|
|
174
174
|
|
|
175
175
|
describe('snapshot', () => {
|
|
176
|
-
|
|
176
|
+
it('snapshot returns workspace overview', async () => {
|
|
177
177
|
if (!channelAvailable) return
|
|
178
178
|
|
|
179
179
|
const result = await runCLI('channeltalk', ['snapshot', '--limit', '2'])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { afterEach, beforeAll, describe, expect,
|
|
1
|
+
import { afterEach, beforeAll, describe, expect, it } from 'bun:test'
|
|
2
2
|
|
|
3
3
|
import { CHANNELBOT_TEST_WORKSPACE_ID, CHANNELBOT_TEST_WORKSPACE_NAME, validateChannelBotEnvironment } from './config'
|
|
4
4
|
import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
|
|
@@ -22,7 +22,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
22
22
|
})
|
|
23
23
|
|
|
24
24
|
describe('auth', () => {
|
|
25
|
-
|
|
25
|
+
it('auth status returns valid workspace info', async () => {
|
|
26
26
|
if (!channelbotAvailable) return
|
|
27
27
|
|
|
28
28
|
const result = await runCLI('channeltalkbot', ['auth', 'status'])
|
|
@@ -38,7 +38,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
describe('group', () => {
|
|
41
|
-
|
|
41
|
+
it('group list returns groups array', async () => {
|
|
42
42
|
if (!channelbotAvailable) return
|
|
43
43
|
|
|
44
44
|
const result = await runCLI('channeltalkbot', ['group', 'list', '--limit', '10'])
|
|
@@ -49,7 +49,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
49
49
|
expect(data!.groups.length).toBeGreaterThan(0)
|
|
50
50
|
})
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
it('group get by id returns the target group', async () => {
|
|
53
53
|
if (!channelbotAvailable) return
|
|
54
54
|
|
|
55
55
|
const result = await runCLI('channeltalkbot', ['group', 'get', testGroupId])
|
|
@@ -60,7 +60,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
60
60
|
expect(data?.name).toBe(testGroupName)
|
|
61
61
|
})
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
it('group get by @name returns the target group', async () => {
|
|
64
64
|
if (!channelbotAvailable) return
|
|
65
65
|
|
|
66
66
|
const result = await runCLI('channeltalkbot', ['group', 'get', `@${testGroupName}`])
|
|
@@ -71,7 +71,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
71
71
|
expect(data?.name).toBe(testGroupName)
|
|
72
72
|
})
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
it('group messages returns messages array', async () => {
|
|
75
75
|
if (!channelbotAvailable) return
|
|
76
76
|
|
|
77
77
|
const result = await runCLI('channeltalkbot', ['group', 'messages', testGroupId, '--limit', '5'])
|
|
@@ -83,7 +83,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
83
83
|
})
|
|
84
84
|
|
|
85
85
|
describe('message', () => {
|
|
86
|
-
|
|
86
|
+
it('message send creates a group message', async () => {
|
|
87
87
|
if (!channelbotAvailable) return
|
|
88
88
|
|
|
89
89
|
const testId = generateTestId()
|
|
@@ -96,7 +96,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
96
96
|
expect(data?.plain_text).toContain(testId)
|
|
97
97
|
})
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
it('message list returns messages array', async () => {
|
|
100
100
|
if (!channelbotAvailable) return
|
|
101
101
|
|
|
102
102
|
const result = await runCLI('channeltalkbot', ['message', 'list', `@${testGroupName}`, '--limit', '5'])
|
|
@@ -106,7 +106,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
106
106
|
expect(Array.isArray(data?.messages)).toBe(true)
|
|
107
107
|
})
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
it('message get retrieves a specific group message', async () => {
|
|
110
110
|
if (!channelbotAvailable) return
|
|
111
111
|
|
|
112
112
|
const testId = generateTestId()
|
|
@@ -128,7 +128,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
128
128
|
})
|
|
129
129
|
|
|
130
130
|
describe('manager', () => {
|
|
131
|
-
|
|
131
|
+
it('manager list returns managers array', async () => {
|
|
132
132
|
if (!channelbotAvailable) return
|
|
133
133
|
|
|
134
134
|
const result = await runCLI('channeltalkbot', ['manager', 'list', '--limit', '10'])
|
|
@@ -139,7 +139,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
139
139
|
expect(data!.managers.length).toBeGreaterThan(0)
|
|
140
140
|
})
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
it('manager get returns manager details', async () => {
|
|
143
143
|
if (!channelbotAvailable) return
|
|
144
144
|
|
|
145
145
|
const listResult = await runCLI('channeltalkbot', ['manager', 'list', '--limit', '1'])
|
|
@@ -157,7 +157,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
157
157
|
})
|
|
158
158
|
|
|
159
159
|
describe('bot', () => {
|
|
160
|
-
|
|
160
|
+
it('bot list returns bots array', async () => {
|
|
161
161
|
if (!channelbotAvailable) return
|
|
162
162
|
|
|
163
163
|
const result = await runCLI('channeltalkbot', ['bot', 'list', '--limit', '10'])
|
|
@@ -170,7 +170,7 @@ describe('ChannelBot E2E Tests', () => {
|
|
|
170
170
|
})
|
|
171
171
|
|
|
172
172
|
describe('snapshot', () => {
|
|
173
|
-
|
|
173
|
+
it('snapshot returns workspace overview', async () => {
|
|
174
174
|
if (!channelbotAvailable) return
|
|
175
175
|
|
|
176
176
|
const result = await runCLI('channeltalkbot', ['snapshot', '--limit', '2'])
|
package/e2e/config.ts
CHANGED
|
@@ -149,16 +149,21 @@ export async function validateTeamsEnvironment(): Promise<boolean> {
|
|
|
149
149
|
return true
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
// ChannelBot Test Environment — requires
|
|
152
|
+
// ChannelBot Test Environment — requires E2E_CHANNELTALKBOT_WORKSPACE_ID to opt-in.
|
|
153
|
+
// E2E_CHANNELBOT_WORKSPACE_ID is also accepted as a legacy fallback.
|
|
153
154
|
// The E2E group is auto-discovered by name from the workspace's group list.
|
|
154
155
|
// Never run against a real business workspace automatically.
|
|
155
|
-
export const CHANNELBOT_TEST_WORKSPACE_ID =
|
|
156
|
-
|
|
156
|
+
export const CHANNELBOT_TEST_WORKSPACE_ID =
|
|
157
|
+
process.env.E2E_CHANNELTALKBOT_WORKSPACE_ID || process.env.E2E_CHANNELBOT_WORKSPACE_ID || ''
|
|
158
|
+
export const CHANNELBOT_TEST_WORKSPACE_NAME =
|
|
159
|
+
process.env.E2E_CHANNELTALKBOT_WORKSPACE_NAME || process.env.E2E_CHANNELBOT_WORKSPACE_NAME || ''
|
|
157
160
|
export const E2E_GROUP_NAME = 'E2E'
|
|
158
161
|
|
|
159
162
|
export async function validateChannelBotEnvironment(): Promise<{ groupId: string; groupName: string } | null> {
|
|
160
163
|
if (!CHANNELBOT_TEST_WORKSPACE_ID) {
|
|
161
|
-
console.warn(
|
|
164
|
+
console.warn(
|
|
165
|
+
'Skipping ChannelBot E2E: set E2E_CHANNELTALKBOT_WORKSPACE_ID to run against a dedicated test workspace.',
|
|
166
|
+
)
|
|
162
167
|
return null
|
|
163
168
|
}
|
|
164
169
|
|
package/e2e/discord.e2e.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe,
|
|
1
|
+
import { describe, it, expect, beforeAll, afterEach } from 'bun:test'
|
|
2
2
|
|
|
3
3
|
import { DISCORD_TEST_CHANNEL_ID, DISCORD_TEST_SERVER_ID, validateDiscordEnvironment } from './config'
|
|
4
4
|
import {
|
|
@@ -28,7 +28,7 @@ describe('Discord E2E Tests', () => {
|
|
|
28
28
|
})
|
|
29
29
|
|
|
30
30
|
describe('auth', () => {
|
|
31
|
-
|
|
31
|
+
it('auth status returns authenticated status', async () => {
|
|
32
32
|
const result = await runCLI('discord', ['auth', 'status'])
|
|
33
33
|
expect(result.exitCode).toBe(0)
|
|
34
34
|
|
|
@@ -38,7 +38,7 @@ describe('Discord E2E Tests', () => {
|
|
|
38
38
|
})
|
|
39
39
|
|
|
40
40
|
describe('server', () => {
|
|
41
|
-
|
|
41
|
+
it('server list returns array', async () => {
|
|
42
42
|
const result = await runCLI('discord', ['server', 'list'])
|
|
43
43
|
expect(result.exitCode).toBe(0)
|
|
44
44
|
|
|
@@ -46,7 +46,7 @@ describe('Discord E2E Tests', () => {
|
|
|
46
46
|
expect(Array.isArray(data)).toBe(true)
|
|
47
47
|
})
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
it('server current returns current server', async () => {
|
|
50
50
|
const result = await runCLI('discord', ['server', 'current'])
|
|
51
51
|
expect(result.exitCode).toBe(0)
|
|
52
52
|
|
|
@@ -54,7 +54,7 @@ describe('Discord E2E Tests', () => {
|
|
|
54
54
|
expect(data?.server_id).toBe(DISCORD_TEST_SERVER_ID)
|
|
55
55
|
})
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
it('server info returns server details', async () => {
|
|
58
58
|
const result = await runCLI('discord', ['server', 'info', DISCORD_TEST_SERVER_ID])
|
|
59
59
|
expect(result.exitCode).toBe(0)
|
|
60
60
|
|
|
@@ -64,7 +64,7 @@ describe('Discord E2E Tests', () => {
|
|
|
64
64
|
})
|
|
65
65
|
|
|
66
66
|
describe('message', () => {
|
|
67
|
-
|
|
67
|
+
it('message send creates message', async () => {
|
|
68
68
|
const testId = generateTestId()
|
|
69
69
|
const result = await runCLI('discord', ['message', 'send', DISCORD_TEST_CHANNEL_ID, `Test message ${testId}`])
|
|
70
70
|
expect(result.exitCode).toBe(0)
|
|
@@ -75,7 +75,7 @@ describe('Discord E2E Tests', () => {
|
|
|
75
75
|
if (data?.id) testMessages.push(data.id)
|
|
76
76
|
})
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
it('message list returns messages array', async () => {
|
|
79
79
|
const result = await runCLI('discord', ['message', 'list', DISCORD_TEST_CHANNEL_ID, '--limit', '5'])
|
|
80
80
|
expect(result.exitCode).toBe(0)
|
|
81
81
|
|
|
@@ -83,7 +83,7 @@ describe('Discord E2E Tests', () => {
|
|
|
83
83
|
expect(Array.isArray(data)).toBe(true)
|
|
84
84
|
})
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
it.skip('message get retrieves specific message (requires bot token)', async () => {
|
|
87
87
|
const testId = generateTestId()
|
|
88
88
|
const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Get test ${testId}`)
|
|
89
89
|
testMessages.push(id)
|
|
@@ -97,7 +97,7 @@ describe('Discord E2E Tests', () => {
|
|
|
97
97
|
expect(data?.content).toContain(testId)
|
|
98
98
|
})
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
it('message delete removes message', async () => {
|
|
101
101
|
const testId = generateTestId()
|
|
102
102
|
const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Delete me ${testId}`)
|
|
103
103
|
|
|
@@ -107,7 +107,7 @@ describe('Discord E2E Tests', () => {
|
|
|
107
107
|
expect(result.exitCode).toBe(0)
|
|
108
108
|
})
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
it('message ack acknowledges message', async () => {
|
|
111
111
|
const testId = generateTestId()
|
|
112
112
|
const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Ack test ${testId}`)
|
|
113
113
|
testMessages.push(id)
|
|
@@ -121,7 +121,7 @@ describe('Discord E2E Tests', () => {
|
|
|
121
121
|
expect(data?.acknowledged).toBe(id)
|
|
122
122
|
})
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
it('message search finds messages', async () => {
|
|
125
125
|
const result = await runCLI('discord', ['message', 'search', 'test', '--limit', '5'])
|
|
126
126
|
expect(result.exitCode).toBe(0)
|
|
127
127
|
|
|
@@ -132,7 +132,7 @@ describe('Discord E2E Tests', () => {
|
|
|
132
132
|
})
|
|
133
133
|
|
|
134
134
|
describe('channel', () => {
|
|
135
|
-
|
|
135
|
+
it('channel list returns channels array', async () => {
|
|
136
136
|
const result = await runCLI('discord', ['channel', 'list'])
|
|
137
137
|
expect(result.exitCode).toBe(0)
|
|
138
138
|
|
|
@@ -140,7 +140,7 @@ describe('Discord E2E Tests', () => {
|
|
|
140
140
|
expect(Array.isArray(data)).toBe(true)
|
|
141
141
|
})
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
it('channel info returns channel details', async () => {
|
|
144
144
|
const result = await runCLI('discord', ['channel', 'info', DISCORD_TEST_CHANNEL_ID])
|
|
145
145
|
expect(result.exitCode).toBe(0)
|
|
146
146
|
|
|
@@ -148,7 +148,7 @@ describe('Discord E2E Tests', () => {
|
|
|
148
148
|
expect(data?.id).toBe(DISCORD_TEST_CHANNEL_ID)
|
|
149
149
|
})
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
it('channel history returns messages', async () => {
|
|
152
152
|
const result = await runCLI('discord', ['channel', 'history', DISCORD_TEST_CHANNEL_ID, '--limit', '5'])
|
|
153
153
|
expect(result.exitCode).toBe(0)
|
|
154
154
|
|
|
@@ -158,7 +158,7 @@ describe('Discord E2E Tests', () => {
|
|
|
158
158
|
})
|
|
159
159
|
|
|
160
160
|
describe('user', () => {
|
|
161
|
-
|
|
161
|
+
it.skip('user list returns users array (requires bot token)', async () => {
|
|
162
162
|
const result = await runCLI('discord', ['user', 'list'])
|
|
163
163
|
expect(result.exitCode).toBe(0)
|
|
164
164
|
|
|
@@ -166,7 +166,7 @@ describe('Discord E2E Tests', () => {
|
|
|
166
166
|
expect(Array.isArray(data)).toBe(true)
|
|
167
167
|
})
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
it('user me returns current user', async () => {
|
|
170
170
|
const result = await runCLI('discord', ['user', 'me'])
|
|
171
171
|
expect(result.exitCode).toBe(0)
|
|
172
172
|
|
|
@@ -175,7 +175,7 @@ describe('Discord E2E Tests', () => {
|
|
|
175
175
|
expect(data?.username).toBeTruthy()
|
|
176
176
|
})
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
it('user info returns user details', async () => {
|
|
179
179
|
// First get current user ID
|
|
180
180
|
const meResult = await runCLI('discord', ['user', 'me'])
|
|
181
181
|
expect(meResult.exitCode).toBe(0)
|
|
@@ -194,7 +194,7 @@ describe('Discord E2E Tests', () => {
|
|
|
194
194
|
})
|
|
195
195
|
|
|
196
196
|
describe('reaction', () => {
|
|
197
|
-
|
|
197
|
+
it.skip('reaction add/list/remove lifecycle (requires bot token)', async () => {
|
|
198
198
|
const testId = generateTestId()
|
|
199
199
|
const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Reaction test ${testId}`)
|
|
200
200
|
testMessages.push(id)
|
|
@@ -220,7 +220,7 @@ describe('Discord E2E Tests', () => {
|
|
|
220
220
|
})
|
|
221
221
|
|
|
222
222
|
describe('file', () => {
|
|
223
|
-
|
|
223
|
+
it('file list returns files array', async () => {
|
|
224
224
|
const result = await runCLI('discord', ['file', 'list', DISCORD_TEST_CHANNEL_ID])
|
|
225
225
|
expect(result.exitCode).toBe(0)
|
|
226
226
|
|
|
@@ -228,7 +228,7 @@ describe('Discord E2E Tests', () => {
|
|
|
228
228
|
expect(Array.isArray(data)).toBe(true)
|
|
229
229
|
})
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
it('file upload uploads file and file info retrieves it', async () => {
|
|
232
232
|
const testId = generateTestId()
|
|
233
233
|
const testFilePath = `/tmp/discord-e2e-${testId}.txt`
|
|
234
234
|
await Bun.write(testFilePath, `Discord E2E test file ${testId}`)
|
|
@@ -254,7 +254,7 @@ describe('Discord E2E Tests', () => {
|
|
|
254
254
|
}
|
|
255
255
|
})
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
it('file info retrieves file details', async () => {
|
|
258
258
|
// List files first to get a file ID
|
|
259
259
|
const listResult = await runCLI('discord', ['file', 'list', DISCORD_TEST_CHANNEL_ID])
|
|
260
260
|
expect(listResult.exitCode).toBe(0)
|
|
@@ -273,7 +273,7 @@ describe('Discord E2E Tests', () => {
|
|
|
273
273
|
})
|
|
274
274
|
|
|
275
275
|
describe('snapshot', () => {
|
|
276
|
-
|
|
276
|
+
it.skip('snapshot returns full server data (requires bot token)', async () => {
|
|
277
277
|
const result = await runCLI('discord', ['snapshot', '--limit', '2'])
|
|
278
278
|
expect(result.exitCode).toBe(0)
|
|
279
279
|
|
|
@@ -282,7 +282,7 @@ describe('Discord E2E Tests', () => {
|
|
|
282
282
|
expect(data?.users).toBeDefined()
|
|
283
283
|
})
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
it('snapshot --channels-only returns only channels', async () => {
|
|
286
286
|
const result = await runCLI('discord', ['snapshot', '--channels-only'])
|
|
287
287
|
expect(result.exitCode).toBe(0)
|
|
288
288
|
|
|
@@ -290,7 +290,7 @@ describe('Discord E2E Tests', () => {
|
|
|
290
290
|
expect(data?.channels).toBeDefined()
|
|
291
291
|
})
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
it.skip('snapshot --users-only returns only users (requires bot token)', async () => {
|
|
294
294
|
const result = await runCLI('discord', ['snapshot', '--users-only'])
|
|
295
295
|
expect(result.exitCode).toBe(0)
|
|
296
296
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe,
|
|
1
|
+
import { describe, it, expect, beforeAll, afterEach } from 'bun:test'
|
|
2
2
|
|
|
3
3
|
import { DiscordBotClient } from '../src/platforms/discordbot/client'
|
|
4
4
|
import { DiscordBotCredentialManager } from '../src/platforms/discordbot/credential-manager'
|
|
@@ -55,7 +55,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
55
55
|
})
|
|
56
56
|
|
|
57
57
|
describe('auth', () => {
|
|
58
|
-
|
|
58
|
+
it('auth status returns valid bot info', async () => {
|
|
59
59
|
const result = await runCLI('discordbot', ['auth', 'status'])
|
|
60
60
|
expect(result.exitCode).toBe(0)
|
|
61
61
|
|
|
@@ -72,7 +72,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
72
72
|
})
|
|
73
73
|
|
|
74
74
|
describe('message', () => {
|
|
75
|
-
|
|
75
|
+
it('message send creates message and returns id', async () => {
|
|
76
76
|
const testId = generateTestId()
|
|
77
77
|
const result = await runCLI('discordbot', ['message', 'send', DISCORDBOT_TEST_CHANNEL_ID, `Bot test ${testId}`])
|
|
78
78
|
expect(result.exitCode).toBe(0)
|
|
@@ -84,7 +84,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
84
84
|
if (data?.id) trackMessage(data.id)
|
|
85
85
|
})
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
it('message list returns messages array', async () => {
|
|
88
88
|
const result = await runCLI('discordbot', ['message', 'list', DISCORDBOT_TEST_CHANNEL_ID, '--limit', '5'])
|
|
89
89
|
expect(result.exitCode).toBe(0)
|
|
90
90
|
|
|
@@ -92,7 +92,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
92
92
|
expect(Array.isArray(data?.messages)).toBe(true)
|
|
93
93
|
})
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
it('message get retrieves specific message', async () => {
|
|
96
96
|
const testId = generateTestId()
|
|
97
97
|
const sendResult = await runCLI('discordbot', [
|
|
98
98
|
'message',
|
|
@@ -114,7 +114,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
114
114
|
expect(data?.id).toBe(sent!.id)
|
|
115
115
|
})
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
it('message update modifies message', async () => {
|
|
118
118
|
const testId = generateTestId()
|
|
119
119
|
const sendResult = await runCLI('discordbot', [
|
|
120
120
|
'message',
|
|
@@ -144,7 +144,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
144
144
|
expect(data?.content).toContain('Updated')
|
|
145
145
|
})
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
it('message delete removes message', async () => {
|
|
148
148
|
const testId = generateTestId()
|
|
149
149
|
const sendResult = await runCLI('discordbot', [
|
|
150
150
|
'message',
|
|
@@ -161,7 +161,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
161
161
|
expect(result.exitCode).toBe(0)
|
|
162
162
|
})
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
it('message send with --thread creates reply', async () => {
|
|
165
165
|
const testId = generateTestId()
|
|
166
166
|
const sendResult = await runCLI('discordbot', ['message', 'send', DISCORDBOT_TEST_CHANNEL_ID, `Parent ${testId}`])
|
|
167
167
|
const parent = parseJSON<{ id: string }>(sendResult.stdout)
|
|
@@ -187,7 +187,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
187
187
|
if (reply?.id) trackMessage(reply.id, replyChannel)
|
|
188
188
|
}, 30000)
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
it('message replies gets thread messages', async () => {
|
|
191
191
|
const testId = generateTestId()
|
|
192
192
|
|
|
193
193
|
// given: create a real thread channel
|
|
@@ -226,7 +226,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
226
226
|
})
|
|
227
227
|
|
|
228
228
|
describe('channel', () => {
|
|
229
|
-
|
|
229
|
+
it('channel list returns channels array', async () => {
|
|
230
230
|
const result = await runCLI('discordbot', ['channel', 'list'])
|
|
231
231
|
expect(result.exitCode).toBe(0)
|
|
232
232
|
|
|
@@ -235,7 +235,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
235
235
|
expect(data!.channels.length).toBeGreaterThan(0)
|
|
236
236
|
})
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
it('channel info returns channel details', async () => {
|
|
239
239
|
const result = await runCLI('discordbot', ['channel', 'info', DISCORDBOT_TEST_CHANNEL_ID])
|
|
240
240
|
expect(result.exitCode).toBe(0)
|
|
241
241
|
|
|
@@ -246,7 +246,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
246
246
|
})
|
|
247
247
|
|
|
248
248
|
describe('user', () => {
|
|
249
|
-
|
|
249
|
+
it('user list returns users array', async () => {
|
|
250
250
|
const result = await runCLI('discordbot', ['user', 'list'])
|
|
251
251
|
expect(result.exitCode).toBe(0)
|
|
252
252
|
|
|
@@ -255,7 +255,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
255
255
|
expect(data!.users.length).toBeGreaterThan(0)
|
|
256
256
|
})
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
it('user info returns user details', async () => {
|
|
259
259
|
// given: get the bot's own user_id via auth status
|
|
260
260
|
const statusResult = await runCLI('discordbot', ['auth', 'status'])
|
|
261
261
|
const status = parseJSON<{ bot_id: string }>(statusResult.stdout)
|
|
@@ -273,7 +273,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
273
273
|
})
|
|
274
274
|
|
|
275
275
|
describe('reaction', () => {
|
|
276
|
-
|
|
276
|
+
it('reaction add and remove lifecycle', async () => {
|
|
277
277
|
// given: a message to react to
|
|
278
278
|
const testId = generateTestId()
|
|
279
279
|
const sendResult = await runCLI('discordbot', [
|
|
@@ -313,7 +313,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
313
313
|
})
|
|
314
314
|
|
|
315
315
|
describe('server', () => {
|
|
316
|
-
|
|
316
|
+
it('server list returns servers array', async () => {
|
|
317
317
|
const result = await runCLI('discordbot', ['server', 'list'])
|
|
318
318
|
expect(result.exitCode).toBe(0)
|
|
319
319
|
|
|
@@ -322,7 +322,7 @@ describe('DiscordBot E2E Tests', () => {
|
|
|
322
322
|
expect(data!.servers.length).toBeGreaterThan(0)
|
|
323
323
|
})
|
|
324
324
|
|
|
325
|
-
|
|
325
|
+
it('server current returns current server', async () => {
|
|
326
326
|
const result = await runCLI('discordbot', ['server', 'current'])
|
|
327
327
|
expect(result.exitCode).toBe(0)
|
|
328
328
|
|