agent-messenger 2.10.2 → 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 +71 -29
- 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/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/config.ts +9 -4
- 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/commands/auth.test.ts +15 -3
- package/src/platforms/channeltalk/commands/auth.ts +15 -5
- package/src/platforms/channeltalk/token-extractor.ts +24 -5
- package/src/platforms/channeltalkbot/cli.ts +9 -0
- package/src/platforms/channeltalkbot/commands/auth.ts +1 -5
- package/src/platforms/channeltalkbot/commands/bot.ts +1 -6
- package/src/platforms/channeltalkbot/commands/chat.ts +1 -6
- package/src/platforms/channeltalkbot/commands/group.ts +1 -6
- package/src/platforms/channeltalkbot/commands/manager.ts +1 -6
- package/src/platforms/channeltalkbot/commands/message.ts +1 -6
- package/src/platforms/channeltalkbot/commands/whoami.test.ts +2 -0
- package/src/platforms/channeltalkbot/commands/whoami.ts +1 -6
- package/src/platforms/channeltalkbot/credential-manager.test.ts +96 -2
- package/src/platforms/channeltalkbot/credential-manager.ts +37 -4
- package/src/platforms/discord/commands/auth.ts +13 -2
- package/src/platforms/discord/listener.test.ts +59 -1
- package/src/platforms/discord/listener.ts +43 -19
- package/src/platforms/discord/token-extractor.ts +30 -6
- package/src/platforms/discordbot/cli.ts +10 -0
- package/src/platforms/discordbot/client.ts +4 -0
- package/src/platforms/discordbot/commands/auth.ts +1 -5
- package/src/platforms/discordbot/commands/message.ts +1 -6
- package/src/platforms/discordbot/commands/server.ts +1 -5
- package/src/platforms/discordbot/commands/whoami.ts +1 -6
- 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/commands/auth.ts +9 -1
- package/src/platforms/instagram/token-extractor.ts +13 -1
- package/src/platforms/slack/commands/auth.ts +11 -2
- package/src/platforms/slack/token-extractor.test.ts +96 -0
- package/src/platforms/slack/token-extractor.ts +76 -13
- package/src/platforms/slackbot/cli.ts +13 -1
- package/src/platforms/slackbot/client.test.ts +274 -0
- package/src/platforms/slackbot/client.ts +130 -2
- package/src/platforms/slackbot/commands/auth.ts +1 -5
- 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.ts +22 -0
- package/src/platforms/slackbot/commands/whoami.ts +1 -6
- package/src/platforms/slackbot/credential-manager.test.ts +62 -2
- 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.ts +224 -1
- package/src/platforms/teams/commands/auth.test.ts +1 -1
- package/src/platforms/teams/commands/auth.ts +66 -7
- package/src/platforms/teams/ensure-auth.test.ts +56 -5
- package/src/platforms/teams/ensure-auth.ts +39 -11
- package/src/platforms/teams/token-extractor.test.ts +146 -24
- package/src/platforms/teams/token-extractor.ts +87 -29
- package/src/platforms/webex/commands/auth.ts +13 -2
- package/src/platforms/webex/token-extractor.ts +25 -3
- package/src/platforms/wechatbot/cli.ts +9 -0
- package/src/platforms/wechatbot/commands/auth.ts +1 -5
- package/src/platforms/wechatbot/commands/message.ts +1 -6
- package/src/platforms/wechatbot/commands/template.ts +1 -6
- package/src/platforms/wechatbot/commands/user.ts +1 -6
- package/src/platforms/wechatbot/commands/whoami.ts +1 -6
- package/src/platforms/whatsappbot/cli.ts +9 -0
- package/src/platforms/whatsappbot/commands/auth.ts +1 -5
- package/src/platforms/whatsappbot/commands/message.ts +1 -6
- package/src/platforms/whatsappbot/commands/template.ts +1 -6
- package/src/platforms/whatsappbot/commands/whoami.ts +1 -6
- package/src/shared/chromium/browsers.test.ts +80 -0
- 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/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/tui/app.ts +129 -20
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { SlackBotClient } from '../src/platforms/slackbot/client'
|
|
3
|
+
import { SlackBotListener } from '../src/platforms/slackbot/listener'
|
|
4
|
+
|
|
5
|
+
async function main() {
|
|
6
|
+
const appToken = process.env.SLACK_APP_TOKEN
|
|
7
|
+
if (!appToken) {
|
|
8
|
+
console.error('Set SLACK_APP_TOKEN to an xapp-... token with connections:write scope.')
|
|
9
|
+
console.error('Create one in your Slack app: Settings → Basic Information → App-Level Tokens.')
|
|
10
|
+
process.exit(1)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const client = await new SlackBotClient().login()
|
|
14
|
+
const listener = new SlackBotListener(client, { appToken })
|
|
15
|
+
|
|
16
|
+
listener.on('connected', (info) => {
|
|
17
|
+
console.log(`Connected (app: ${info.app_id}, connections: ${info.num_connections})`)
|
|
18
|
+
console.log('Listening for events. Press Ctrl+C to stop.\n')
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
listener.on('disconnected', () => {
|
|
22
|
+
console.log('[disconnected] reconnecting...')
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
listener.on('message', ({ ack, event }) => {
|
|
26
|
+
ack()
|
|
27
|
+
if (event.subtype || event.bot_id) return
|
|
28
|
+
const time = new Date(Number(event.ts) * 1000).toLocaleTimeString()
|
|
29
|
+
console.log(`[${time}] message #${event.channel} <${event.user ?? 'system'}>: ${event.text}`)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
listener.on('app_mention', ({ ack, event }) => {
|
|
33
|
+
ack()
|
|
34
|
+
console.log(`[mention] ${event.user} in #${event.channel}: ${event.text}`)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
listener.on('reaction_added', ({ ack, event }) => {
|
|
38
|
+
ack()
|
|
39
|
+
console.log(`[reaction] :${event.reaction}: by ${event.user} on ${event.item.channel}/${event.item.ts}`)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
listener.on('slash_commands', ({ ack, body }) => {
|
|
43
|
+
console.log(`[slash] ${body.command} ${body.text} from ${body.user_id}`)
|
|
44
|
+
ack({ text: `Got \`${body.command} ${body.text}\`` })
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
listener.on('interactive', ({ ack, body }) => {
|
|
48
|
+
console.log(`[interactive] ${body.type} from ${body.user?.id}`)
|
|
49
|
+
ack()
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
listener.on('error', (err) => {
|
|
53
|
+
console.error(`[error] ${err.message}`)
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
process.on('SIGINT', () => {
|
|
57
|
+
console.log('\nStopping...')
|
|
58
|
+
listener.stop()
|
|
59
|
+
process.exit(130)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
await listener.start()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
main()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-messenger",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, Channel Talk)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,6 +36,9 @@
|
|
|
36
36
|
"discord": [
|
|
37
37
|
"./dist/src/platforms/discord/index.d.ts"
|
|
38
38
|
],
|
|
39
|
+
"discordbot": [
|
|
40
|
+
"./dist/src/platforms/discordbot/index.d.ts"
|
|
41
|
+
],
|
|
39
42
|
"teams": [
|
|
40
43
|
"./dist/src/platforms/teams/index.d.ts"
|
|
41
44
|
],
|
|
@@ -82,6 +85,10 @@
|
|
|
82
85
|
"types": "./dist/src/platforms/discord/index.d.ts",
|
|
83
86
|
"default": "./dist/src/platforms/discord/index.js"
|
|
84
87
|
},
|
|
88
|
+
"./discordbot": {
|
|
89
|
+
"types": "./dist/src/platforms/discordbot/index.d.ts",
|
|
90
|
+
"default": "./dist/src/platforms/discordbot/index.js"
|
|
91
|
+
},
|
|
85
92
|
"./teams": {
|
|
86
93
|
"types": "./dist/src/platforms/teams/index.d.ts",
|
|
87
94
|
"default": "./dist/src/platforms/teams/index.js"
|
|
@@ -146,9 +153,15 @@
|
|
|
146
153
|
"bson": "^7.2.0",
|
|
147
154
|
"classic-level": "^3.0.0",
|
|
148
155
|
"commander": "^11.1.0",
|
|
156
|
+
"crypto-js": "^4.2.0",
|
|
157
|
+
"curve25519-js": "^0.0.4",
|
|
158
|
+
"node-bignumber": "^1.2.2",
|
|
159
|
+
"node-int64": "^0.4.0",
|
|
149
160
|
"node-jose": "^2.2.0",
|
|
150
161
|
"pino": "^10.3.1",
|
|
151
162
|
"qrcode": "^1.5.4",
|
|
163
|
+
"thrift": "^0.20.0",
|
|
164
|
+
"tweetnacl": "^1.0.3",
|
|
152
165
|
"ws": "^8.19.0",
|
|
153
166
|
"zod": "^4.3.6"
|
|
154
167
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-channeltalk
|
|
3
3
|
description: Interact with Channel Talk using extracted desktop app or browser credentials - read chats, send messages, search messages, manage groups
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-channeltalk:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -168,6 +168,10 @@ If a memorized ID returns an error (chat not found, group not found), remove it
|
|
|
168
168
|
```bash
|
|
169
169
|
# Extract cookies from Channel Talk desktop app or browser (usually automatic)
|
|
170
170
|
agent-channeltalk auth extract
|
|
171
|
+
agent-channeltalk auth extract --browser-profile ~/browser-data
|
|
172
|
+
agent-channeltalk auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
173
|
+
|
|
174
|
+
# --browser-profile accepts repeatable or comma-separated Chromium profile/user-data dirs
|
|
171
175
|
|
|
172
176
|
# Check auth status
|
|
173
177
|
agent-channeltalk auth status
|
|
@@ -18,12 +18,16 @@ This triggers the extraction flow behind the scenes. You can also extract manual
|
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
agent-channeltalk auth extract
|
|
21
|
+
agent-channeltalk auth extract --browser-profile ~/browser-data
|
|
22
|
+
agent-channeltalk auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
21
23
|
```
|
|
22
24
|
|
|
25
|
+
Use `--browser-profile <path>` for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles. The option can be repeated or given comma-separated paths.
|
|
26
|
+
|
|
23
27
|
### How It Works
|
|
24
28
|
|
|
25
29
|
1. Locates the Channel Talk desktop app's SQLite cookie database
|
|
26
|
-
2.
|
|
30
|
+
2. Scans Chromium browser profiles for Channel Talk cookies when the desktop app isn't found, or when custom `--browser-profile` paths are provided
|
|
27
31
|
3. Copies the database to a temp file (avoids locking the original)
|
|
28
32
|
4. Reads `x-account` and `ch-session-1` cookies for `*.channel.io`
|
|
29
33
|
5. Decrypts encrypted cookies if needed (macOS Keychain, Linux peanuts, Windows DPAPI)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-channeltalkbot
|
|
3
3
|
description: Interact with Channel Talk workspaces using API credentials - send messages, read chats, manage groups and bots
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-channeltalkbot:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -14,7 +14,7 @@ metadata:
|
|
|
14
14
|
bins: [agent-channeltalkbot]
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
# Agent
|
|
17
|
+
# Agent ChannelTalkBot
|
|
18
18
|
|
|
19
19
|
A TypeScript CLI tool that enables AI agents and humans to interact with Channel Talk workspaces using API credentials (Access Key + Access Secret). Designed for customer support automation, team inbox management, and CI/CD integrations.
|
|
20
20
|
|
|
@@ -364,7 +364,7 @@ Common errors: `No credentials`, `Workspace not found`, `Bot name is required`,
|
|
|
364
364
|
|
|
365
365
|
## Configuration
|
|
366
366
|
|
|
367
|
-
Credentials stored in `~/.config/agent-messenger/
|
|
367
|
+
Credentials stored in `~/.config/agent-messenger/channeltalkbot-credentials.json` (0600 permissions). See [references/authentication.md](references/authentication.md) for format and security details.
|
|
368
368
|
|
|
369
369
|
Config format:
|
|
370
370
|
|
|
@@ -383,6 +383,20 @@ Config format:
|
|
|
383
383
|
}
|
|
384
384
|
```
|
|
385
385
|
|
|
386
|
+
## Key Differences from agent-channeltalk
|
|
387
|
+
|
|
388
|
+
| Feature | agent-channeltalk | agent-channeltalkbot |
|
|
389
|
+
| -------------------- | --------------------------- | ----------------------------------- |
|
|
390
|
+
| Auth type | Cookie extraction (browser) | API credentials (access key/secret) |
|
|
391
|
+
| Token source | Auto-extracted from session | Channel Talk admin Open API |
|
|
392
|
+
| Acts as | Manager (you) | Bot (named identity) |
|
|
393
|
+
| Send group messages | Yes | Yes (requires bot name) |
|
|
394
|
+
| Send user-chat reply | Yes | Yes |
|
|
395
|
+
| Manage bots | No | Yes (create / delete) |
|
|
396
|
+
| Workspace snapshot | Yes | Yes |
|
|
397
|
+
| Search messages | Yes (UI search) | No (API limitation) |
|
|
398
|
+
| CI/CD friendly | Requires browser session | Yes (just set access key/secret) |
|
|
399
|
+
|
|
386
400
|
## Limitations
|
|
387
401
|
|
|
388
402
|
- No real-time events / WebSocket connection
|
|
@@ -24,14 +24,14 @@ This command:
|
|
|
24
24
|
1. Validates the credentials against the Channel Talk API
|
|
25
25
|
2. Retrieves the workspace ID and name
|
|
26
26
|
3. Sets this workspace as the current active workspace
|
|
27
|
-
4. Saves credentials to `~/.config/agent-messenger/
|
|
27
|
+
4. Saves credentials to `~/.config/agent-messenger/channeltalkbot-credentials.json`
|
|
28
28
|
|
|
29
29
|
## Credential Storage
|
|
30
30
|
|
|
31
31
|
### Location
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
~/.config/agent-messenger/
|
|
34
|
+
~/.config/agent-messenger/channeltalkbot-credentials.json
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### Format
|
|
@@ -155,10 +155,12 @@ agent-channeltalkbot auth status
|
|
|
155
155
|
|
|
156
156
|
For CI/CD and testing, credentials can be set via environment variables:
|
|
157
157
|
|
|
158
|
-
- `
|
|
159
|
-
- `
|
|
158
|
+
- `E2E_CHANNELTALKBOT_ACCESS_KEY` - Access key (preferred)
|
|
159
|
+
- `E2E_CHANNELTALKBOT_ACCESS_SECRET` - Access secret (preferred)
|
|
160
|
+
- `E2E_CHANNELBOT_ACCESS_KEY` - Legacy fallback, still accepted
|
|
161
|
+
- `E2E_CHANNELBOT_ACCESS_SECRET` - Legacy fallback, still accepted
|
|
160
162
|
|
|
161
|
-
Environment variables take precedence over stored credentials when no specific workspace is requested.
|
|
163
|
+
Environment variables take precedence over stored credentials when no specific workspace is requested. The newer `E2E_CHANNELTALKBOT_*` names are preferred and override the legacy `E2E_CHANNELBOT_*` names when both are set.
|
|
162
164
|
|
|
163
165
|
## Troubleshooting
|
|
164
166
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-discord
|
|
3
3
|
description: Interact with Discord servers - send messages, read channels, manage reactions
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-discord:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -137,6 +137,10 @@ If a memorized ID returns an error (channel not found, server not found), remove
|
|
|
137
137
|
# Extract token from Discord desktop app or browser (usually automatic)
|
|
138
138
|
agent-discord auth extract
|
|
139
139
|
agent-discord auth extract --debug
|
|
140
|
+
agent-discord auth extract --browser-profile ~/browser-data
|
|
141
|
+
agent-discord auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
142
|
+
|
|
143
|
+
# --browser-profile accepts repeatable or comma-separated Chromium profile/user-data dirs
|
|
140
144
|
|
|
141
145
|
# Check auth status
|
|
142
146
|
agent-discord auth status
|
|
@@ -15,6 +15,10 @@ agent-discord auth extract
|
|
|
15
15
|
|
|
16
16
|
# Use --debug for troubleshooting extraction issues
|
|
17
17
|
agent-discord auth extract --debug
|
|
18
|
+
|
|
19
|
+
# Scan custom Chromium profile/user-data dirs (repeatable or comma-separated)
|
|
20
|
+
agent-discord auth extract --browser-profile ~/browser-data
|
|
21
|
+
agent-discord auth extract --browser-profile ~/work-profile --browser-profile ~/personal-profile
|
|
18
22
|
```
|
|
19
23
|
|
|
20
24
|
This command:
|
|
@@ -22,12 +26,14 @@ This command:
|
|
|
22
26
|
1. Detects your operating system (macOS, Linux, Windows)
|
|
23
27
|
2. Locates the Discord desktop app data directory
|
|
24
28
|
3. Reads the LevelDB storage containing session data
|
|
25
|
-
4.
|
|
29
|
+
4. Scans Chromium browser profiles for Discord tokens when the desktop app isn't found, or when custom `--browser-profile` paths are provided
|
|
26
30
|
5. Extracts user token (handles encrypted tokens on all platforms)
|
|
27
31
|
6. Validates token against Discord API before saving
|
|
28
32
|
7. Discovers ALL joined servers
|
|
29
33
|
8. Stores credentials securely in `~/.config/agent-messenger/discord-credentials.json`
|
|
30
34
|
|
|
35
|
+
Use `--browser-profile <path>` for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles. The option can be repeated or given comma-separated paths; explicit paths are prioritized so they are not masked by default desktop/browser locations.
|
|
36
|
+
|
|
31
37
|
### Platform-Specific Paths
|
|
32
38
|
|
|
33
39
|
**macOS:**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-discordbot
|
|
3
3
|
description: Interact with Discord servers using bot tokens - send messages, read channels, manage reactions
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-discordbot:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -18,6 +18,17 @@ metadata:
|
|
|
18
18
|
|
|
19
19
|
A TypeScript CLI tool that enables AI agents and humans to interact with Discord servers using bot tokens. Unlike agent-discord which extracts user tokens from the desktop app, agent-discordbot uses standard Discord Bot tokens for server-side and CI/CD integrations.
|
|
20
20
|
|
|
21
|
+
## Key Concepts
|
|
22
|
+
|
|
23
|
+
Before diving in, a few things about Discord Bot integration:
|
|
24
|
+
|
|
25
|
+
- **Bot tokens** — Issued from the Discord Developer Portal (discord.com/developers/applications). Bots act as the bot application's user, with their own ID and presence.
|
|
26
|
+
- **Server (Guild) preference** — A bot can be in many servers. Use `server switch <id>` to set the active server, or pass `--server <id>` per command.
|
|
27
|
+
- **Privileged intents** — `MessageContent`, `GuildMembers`, and `GuildPresences` are privileged and must be enabled in the Developer Portal before they can be used by the SDK listener.
|
|
28
|
+
- **Permission gates** — Bot capabilities depend on the role's permission flags in each server. Missing permissions return 403 errors.
|
|
29
|
+
- **Real-time events** — Available via the SDK's Gateway listener, not via the CLI.
|
|
30
|
+
- **Channel resolution** — Use channel IDs (snowflake numbers) directly. The CLI does not resolve `#channel-name` syntax.
|
|
31
|
+
|
|
21
32
|
## Quick Start
|
|
22
33
|
|
|
23
34
|
```bash
|
|
@@ -371,7 +382,7 @@ Credentials stored in `~/.config/agent-messenger/discordbot-credentials.json` (0
|
|
|
371
382
|
|
|
372
383
|
## Limitations
|
|
373
384
|
|
|
374
|
-
- No real-time events
|
|
385
|
+
- No real-time events in the CLI (real-time Gateway events are available via the SDK — `import { DiscordBotListener } from 'agent-messenger/discordbot'`)
|
|
375
386
|
- No voice channel support
|
|
376
387
|
- No server management (create/delete channels, roles)
|
|
377
388
|
- No slash commands
|
|
@@ -82,7 +82,7 @@ while true; do
|
|
|
82
82
|
done
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
**Limitations**:
|
|
85
|
+
**Limitations**: This CLI pattern is polling-based. For real-time event delivery, the SDK exposes `DiscordBotListener` (Discord Gateway WebSocket) — `import { DiscordBotListener } from 'agent-messenger/discordbot'`.
|
|
86
86
|
|
|
87
87
|
## Pattern 4: Reaction-Based Workflow
|
|
88
88
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-instagram
|
|
3
3
|
description: Interact with Instagram DMs - send messages, read conversations, manage accounts
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-instagram:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -66,8 +66,14 @@ agent-instagram auth extract
|
|
|
66
66
|
|
|
67
67
|
# With debug output
|
|
68
68
|
agent-instagram auth extract --debug
|
|
69
|
+
|
|
70
|
+
# Scan custom Chromium profile/user-data dirs
|
|
71
|
+
agent-instagram auth extract --browser-profile ~/browser-data
|
|
72
|
+
agent-instagram auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
69
73
|
```
|
|
70
74
|
|
|
75
|
+
`--browser-profile` accepts repeatable or comma-separated Chromium profile/user-data directories. Use it for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles.
|
|
76
|
+
|
|
71
77
|
**How it works**: The CLI reads Instagram cookies (`sessionid`, `csrftoken`, `ds_user_id`) directly from the browser's SQLite cookie database. No browser automation, no password prompts. The session is stored locally in `~/.config/agent-messenger/`.
|
|
72
78
|
|
|
73
79
|
**When to re-extract**: Browser cookies expire. When your session expires, re-run `agent-instagram auth extract` or let auto-extraction handle it (the CLI attempts extraction automatically when no valid session exists).
|
|
@@ -23,8 +23,14 @@ agent-instagram auth extract
|
|
|
23
23
|
|
|
24
24
|
# With debug output
|
|
25
25
|
agent-instagram auth extract --debug
|
|
26
|
+
|
|
27
|
+
# Scan custom Chromium profile/user-data dirs (repeatable or comma-separated)
|
|
28
|
+
agent-instagram auth extract --browser-profile ~/browser-data
|
|
29
|
+
agent-instagram auth extract --browser-profile ~/work-profile --browser-profile ~/personal-profile
|
|
26
30
|
```
|
|
27
31
|
|
|
32
|
+
Use `--browser-profile <path>` for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles. The option can be repeated or given comma-separated paths.
|
|
33
|
+
|
|
28
34
|
### Auto-Extraction
|
|
29
35
|
|
|
30
36
|
When no valid session exists, the CLI automatically attempts browser extraction before prompting for credentials. This means most users never need to run `auth extract` manually.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-slack
|
|
3
3
|
description: Interact with Slack workspaces - send messages, read channels, manage reactions
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-slack:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -140,6 +140,10 @@ If a memorized ID returns an error (channel not found, user not found), remove i
|
|
|
140
140
|
# Extract tokens from Slack desktop app or browser (usually automatic)
|
|
141
141
|
agent-slack auth extract
|
|
142
142
|
agent-slack auth extract --debug
|
|
143
|
+
agent-slack auth extract --browser-profile ~/browser-data
|
|
144
|
+
agent-slack auth extract --browser-profile ~/work-profile --browser-profile ~/personal-profile
|
|
145
|
+
|
|
146
|
+
# --browser-profile accepts repeatable or comma-separated Chromium profile/user-data dirs
|
|
143
147
|
|
|
144
148
|
# Check auth status
|
|
145
149
|
agent-slack auth status
|
|
@@ -15,6 +15,10 @@ agent-slack auth extract
|
|
|
15
15
|
|
|
16
16
|
# Use --debug for troubleshooting extraction issues
|
|
17
17
|
agent-slack auth extract --debug
|
|
18
|
+
|
|
19
|
+
# Scan custom Chromium profile/user-data dirs (repeatable or comma-separated)
|
|
20
|
+
agent-slack auth extract --browser-profile ~/browser-data
|
|
21
|
+
agent-slack auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
18
22
|
```
|
|
19
23
|
|
|
20
24
|
This command:
|
|
@@ -22,12 +26,14 @@ This command:
|
|
|
22
26
|
1. Detects your operating system (macOS, Linux, Windows)
|
|
23
27
|
2. Locates the Slack desktop app data directory (supports both direct download and App Store versions on macOS)
|
|
24
28
|
3. Reads the LevelDB storage containing session data
|
|
25
|
-
4.
|
|
29
|
+
4. Scans Chromium browser profiles for Slack tokens in `localStorage.localConfig_v2` and `d` cookie when the desktop app isn't found, or when custom `--browser-profile` paths are provided
|
|
26
30
|
5. Decrypts cookies using macOS Keychain, Linux keyring, or Windows DPAPI
|
|
27
31
|
6. Validates tokens against Slack API before saving
|
|
28
32
|
7. Extracts xoxc token and xoxd cookie for ALL logged-in workspaces
|
|
29
33
|
8. Stores credentials securely in `~/.config/agent-messenger/slack-credentials.json`
|
|
30
34
|
|
|
35
|
+
Use `--browser-profile <path>` for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles. The option can be repeated or given comma-separated paths, and explicit paths are included even when desktop credentials are also present.
|
|
36
|
+
|
|
31
37
|
### Platform-Specific Paths
|
|
32
38
|
|
|
33
39
|
**macOS (Direct Download):**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-slackbot
|
|
3
3
|
description: Interact with Slack workspaces using bot tokens - send messages, read channels, manage reactions
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-slackbot:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -18,6 +18,17 @@ metadata:
|
|
|
18
18
|
|
|
19
19
|
A TypeScript CLI tool that enables AI agents and humans to interact with Slack workspaces using bot tokens (xoxb-). Unlike agent-slack which extracts user tokens from the desktop app, agent-slackbot uses standard Slack Bot tokens for server-side and CI/CD integrations.
|
|
20
20
|
|
|
21
|
+
## Key Concepts
|
|
22
|
+
|
|
23
|
+
Before diving in, a few things about Slack Bot integration:
|
|
24
|
+
|
|
25
|
+
- **Bot tokens (xoxb-)** — Issued from the Slack App config (api.slack.com/apps). Bots act as the bot user, not as you. Different name, different permissions, different identity.
|
|
26
|
+
- **Workspace + Bot hierarchy** — Each workspace can have multiple bot tokens (one per Slack App). The CLI stores bots under their workspace and lets you switch between them.
|
|
27
|
+
- **Channel access requires invitation** — Bots must be invited to private channels with `/invite @YourBotName` before they can read or post.
|
|
28
|
+
- **Bot scopes are immutable per-token** — Token capabilities are baked in at App creation. Adding a new scope means re-installing the App and refreshing the token.
|
|
29
|
+
- **Edit/delete is bot-scoped** — A bot can only edit/delete messages it sent. It cannot modify other users' messages.
|
|
30
|
+
- **Real-time events** — Available via the SDK's Socket Mode listener (separate `xapp-` app-level token required), not via the CLI.
|
|
31
|
+
|
|
21
32
|
## Quick Start
|
|
22
33
|
|
|
23
34
|
```bash
|
|
@@ -200,8 +211,15 @@ agent-slackbot message update <channel> <ts> <new-text>
|
|
|
200
211
|
|
|
201
212
|
# Delete a message (bot's own messages only)
|
|
202
213
|
agent-slackbot message delete <channel> <ts> --force
|
|
214
|
+
|
|
215
|
+
# Show typing/status indicator in an AI Assistant thread
|
|
216
|
+
agent-slackbot message typing <channel> <thread_ts>
|
|
217
|
+
agent-slackbot message typing <channel> <thread_ts> "is analyzing..."
|
|
218
|
+
agent-slackbot message typing <channel> <thread_ts> "" # clear status
|
|
203
219
|
```
|
|
204
220
|
|
|
221
|
+
> **Typing indicators**: `message typing` calls Slack's `assistant.threads.setStatus` API. It only works inside **AI Assistant threads** (not regular channels/DMs) and requires the `chat:write` bot scope. The status auto-clears when your bot posts the next message, or after 2 minutes if no message is sent. Pass an empty string `""` to clear the status manually.
|
|
222
|
+
|
|
205
223
|
### Channel Commands
|
|
206
224
|
|
|
207
225
|
```bash
|
|
@@ -236,6 +254,33 @@ agent-slackbot reaction add C0ACZKTDDC0 1234567890.123456 thumbsup
|
|
|
236
254
|
agent-slackbot reaction remove <channel> <ts> <emoji>
|
|
237
255
|
```
|
|
238
256
|
|
|
257
|
+
### File Commands
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Upload a file to a channel (requires files:write scope)
|
|
261
|
+
agent-slackbot file upload <channel> <path>
|
|
262
|
+
agent-slackbot file upload C0ACZKTDDC0 ./report.pdf
|
|
263
|
+
agent-slackbot file upload C0ACZKTDDC0 ./log.txt --filename build-log.txt
|
|
264
|
+
agent-slackbot file upload C0ACZKTDDC0 ./screenshot.png --thread 1234567890.123456 --comment "FYI"
|
|
265
|
+
|
|
266
|
+
# List files visible to the bot (requires files:read scope)
|
|
267
|
+
agent-slackbot file list
|
|
268
|
+
agent-slackbot file list --channel C0ACZKTDDC0
|
|
269
|
+
agent-slackbot file list --user U123 --limit 50
|
|
270
|
+
|
|
271
|
+
# Show file details
|
|
272
|
+
agent-slackbot file info <file-id>
|
|
273
|
+
|
|
274
|
+
# Download a file by ID (saves to current dir or given path)
|
|
275
|
+
agent-slackbot file download <file-id>
|
|
276
|
+
agent-slackbot file download F0123ABC ./downloads/
|
|
277
|
+
|
|
278
|
+
# Delete a file (bot's own files only)
|
|
279
|
+
agent-slackbot file delete <file-id> --force
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
> **File scopes**: `file upload` requires `files:write`; `file list`, `file info`, and `file download` require `files:read`. Add these to your Slack App's bot token scopes and reinstall the app. The bot can only delete files it uploaded.
|
|
283
|
+
|
|
239
284
|
## Output Format
|
|
240
285
|
|
|
241
286
|
### JSON (Default)
|
|
@@ -258,6 +303,13 @@ Use `--pretty` flag for formatted output:
|
|
|
258
303
|
agent-slackbot channel list --pretty
|
|
259
304
|
```
|
|
260
305
|
|
|
306
|
+
## Global Options
|
|
307
|
+
|
|
308
|
+
| Option | Description |
|
|
309
|
+
| ------------ | ---------------------------------------------------- |
|
|
310
|
+
| `--pretty` | Human-readable output instead of compact JSON |
|
|
311
|
+
| `--bot <id>` | Use a specific bot for this command (workspace/bot) |
|
|
312
|
+
|
|
261
313
|
## Common Patterns
|
|
262
314
|
|
|
263
315
|
See `references/common-patterns.md` for typical AI agent workflows.
|
|
@@ -298,7 +350,7 @@ Credentials stored in `~/.config/agent-messenger/slackbot-credentials.json` (060
|
|
|
298
350
|
| Token type | User token (xoxc-) | Bot token (xoxb-) |
|
|
299
351
|
| Token source | Auto-extracted from desktop app | Manual from Slack App config |
|
|
300
352
|
| Message search | Yes | No (requires user token) |
|
|
301
|
-
| File operations | Yes |
|
|
353
|
+
| File operations | Yes | Upload/list/info/download/delete (with scopes) |
|
|
302
354
|
| Snapshot | Yes | No |
|
|
303
355
|
| Edit/delete messages | Any message | Bot's own messages only |
|
|
304
356
|
| Workspace management | Multi-workspace | Multi-bot, multi-workspace |
|
|
@@ -306,9 +358,9 @@ Credentials stored in `~/.config/agent-messenger/slackbot-credentials.json` (060
|
|
|
306
358
|
|
|
307
359
|
## Limitations
|
|
308
360
|
|
|
309
|
-
- No real-time events
|
|
361
|
+
- No real-time events in the CLI (real-time Socket Mode events are available via the SDK — see the README's "Real-time Events (Slack Bot)" section)
|
|
310
362
|
- No message search (requires user token scope)
|
|
311
|
-
-
|
|
363
|
+
- File operations require `files:read` / `files:write` scopes; bot can only delete files it uploaded
|
|
312
364
|
- No workspace snapshot
|
|
313
365
|
- Bot can only edit/delete its own messages
|
|
314
366
|
- Bot must be invited to private channels
|
|
@@ -29,6 +29,8 @@ Add these **Bot Token Scopes**:
|
|
|
29
29
|
| `users:read.email` | Access user email addresses |
|
|
30
30
|
| `reactions:write` | Add and remove emoji reactions |
|
|
31
31
|
| `reactions:read` | List reactions on messages |
|
|
32
|
+
| `files:read` | List, inspect, and download files |
|
|
33
|
+
| `files:write` | Upload and delete files |
|
|
32
34
|
|
|
33
35
|
### Installing the App
|
|
34
36
|
|
|
@@ -246,6 +248,8 @@ oauth_config:
|
|
|
246
248
|
- users:read.email
|
|
247
249
|
- reactions:write
|
|
248
250
|
- reactions:read
|
|
251
|
+
- files:read
|
|
252
|
+
- files:write
|
|
249
253
|
|
|
250
254
|
settings:
|
|
251
255
|
org_deploy_enabled: false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-teams
|
|
3
3
|
description: Interact with Microsoft Teams - send messages, read channels, manage reactions
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-teams:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -148,6 +148,10 @@ If a memorized ID returns an error (channel not found, team not found), remove i
|
|
|
148
148
|
# Extract token from Teams desktop app or browser (usually automatic)
|
|
149
149
|
agent-teams auth extract
|
|
150
150
|
agent-teams auth extract --debug
|
|
151
|
+
agent-teams auth extract --browser-profile ~/browser-data
|
|
152
|
+
agent-teams auth extract --browser-profile ~/work-profile --browser-profile ~/personal-profile
|
|
153
|
+
|
|
154
|
+
# --browser-profile accepts repeatable or comma-separated Chromium profile/user-data dirs
|
|
151
155
|
|
|
152
156
|
# Check auth status (includes token expiry info)
|
|
153
157
|
agent-teams auth status
|
|
@@ -49,6 +49,10 @@ agent-teams auth extract
|
|
|
49
49
|
|
|
50
50
|
# Use --debug for troubleshooting extraction issues
|
|
51
51
|
agent-teams auth extract --debug
|
|
52
|
+
|
|
53
|
+
# Scan custom Chromium profile/user-data dirs (repeatable or comma-separated)
|
|
54
|
+
agent-teams auth extract --browser-profile ~/browser-data
|
|
55
|
+
agent-teams auth extract --browser-profile "$HOME/work-profile,$HOME/personal-profile"
|
|
52
56
|
```
|
|
53
57
|
|
|
54
58
|
This command:
|
|
@@ -56,12 +60,14 @@ This command:
|
|
|
56
60
|
1. Detects your operating system (macOS, Linux, Windows)
|
|
57
61
|
2. Locates the Teams desktop app data directory
|
|
58
62
|
3. Reads the **Cookies SQLite database** containing session data
|
|
59
|
-
4.
|
|
63
|
+
4. Scans Chromium browser profiles for Teams cookies when the desktop app isn't found, or when custom `--browser-profile` paths are provided
|
|
60
64
|
5. Extracts `skypetoken_asm` cookie value
|
|
61
65
|
6. Validates token against Teams API before saving
|
|
62
66
|
7. Discovers ALL joined teams
|
|
63
67
|
8. Stores credentials securely in `~/.config/agent-messenger/teams-credentials.json`
|
|
64
68
|
|
|
69
|
+
Use `--browser-profile <path>` for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles. The option can be repeated or given comma-separated paths.
|
|
70
|
+
|
|
65
71
|
### Platform-Specific Paths
|
|
66
72
|
|
|
67
73
|
**macOS:**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-webex
|
|
3
3
|
description: Interact with Cisco Webex - send messages, read spaces, manage memberships
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.11.0
|
|
5
5
|
allowed-tools: Bash(agent-webex:*)
|
|
6
6
|
metadata:
|
|
7
7
|
openclaw:
|
|
@@ -54,8 +54,14 @@ agent-webex auth extract
|
|
|
54
54
|
|
|
55
55
|
# With debug output
|
|
56
56
|
agent-webex auth extract --debug
|
|
57
|
+
|
|
58
|
+
# Scan custom Chromium profile/user-data dirs
|
|
59
|
+
agent-webex auth extract --browser-profile ~/browser-data
|
|
60
|
+
agent-webex auth extract --browser-profile ~/work-profile --browser-profile ~/personal-profile
|
|
57
61
|
```
|
|
58
62
|
|
|
63
|
+
`--browser-profile` accepts repeatable or comma-separated Chromium profile/user-data directories. Use it for agent-browser profiles, custom Chrome user data dirs, or portable browser profiles.
|
|
64
|
+
|
|
59
65
|
**Supported browsers**: Chrome, Chrome Canary, Edge, Arc, Brave, Vivaldi, Chromium
|
|
60
66
|
|
|
61
67
|
**How it works**: The Webex web client stores its authentication token in the browser's localStorage. This CLI reads it directly from the browser's LevelDB files — no browser automation, no password prompts. The token is stored locally in `~/.config/agent-messenger/`.
|