agent-messenger 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/.claude-plugin/marketplace.json +27 -1
  2. package/.claude-plugin/plugin.json +17 -4
  3. package/.env.template +3 -0
  4. package/.github/workflows/release.yml +94 -0
  5. package/AGENTS.md +48 -0
  6. package/README.md +25 -20
  7. package/biome.json +15 -39
  8. package/bun.lock +69 -0
  9. package/dist/package.json +12 -4
  10. package/dist/src/cli.d.ts.map +1 -1
  11. package/dist/src/cli.js +1 -4
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  14. package/dist/src/platforms/discord/client.js.map +1 -1
  15. package/dist/src/platforms/discord/commands/auth.d.ts.map +1 -1
  16. package/dist/src/platforms/discord/commands/auth.js.map +1 -1
  17. package/dist/src/platforms/discord/commands/channel.d.ts.map +1 -1
  18. package/dist/src/platforms/discord/commands/channel.js.map +1 -1
  19. package/dist/src/platforms/discord/commands/dm.d.ts.map +1 -1
  20. package/dist/src/platforms/discord/commands/dm.js.map +1 -1
  21. package/dist/src/platforms/discord/commands/file.d.ts.map +1 -1
  22. package/dist/src/platforms/discord/commands/file.js +1 -4
  23. package/dist/src/platforms/discord/commands/file.js.map +1 -1
  24. package/dist/src/platforms/discord/commands/friend.d.ts.map +1 -1
  25. package/dist/src/platforms/discord/commands/friend.js +1 -3
  26. package/dist/src/platforms/discord/commands/friend.js.map +1 -1
  27. package/dist/src/platforms/discord/commands/member.d.ts.map +1 -1
  28. package/dist/src/platforms/discord/commands/member.js.map +1 -1
  29. package/dist/src/platforms/discord/commands/mention.d.ts.map +1 -1
  30. package/dist/src/platforms/discord/commands/mention.js.map +1 -1
  31. package/dist/src/platforms/discord/commands/message.d.ts.map +1 -1
  32. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  33. package/dist/src/platforms/discord/commands/note.d.ts.map +1 -1
  34. package/dist/src/platforms/discord/commands/note.js.map +1 -1
  35. package/dist/src/platforms/discord/commands/profile.d.ts.map +1 -1
  36. package/dist/src/platforms/discord/commands/profile.js.map +1 -1
  37. package/dist/src/platforms/discord/commands/reaction.d.ts.map +1 -1
  38. package/dist/src/platforms/discord/commands/reaction.js.map +1 -1
  39. package/dist/src/platforms/discord/commands/server.d.ts.map +1 -1
  40. package/dist/src/platforms/discord/commands/server.js.map +1 -1
  41. package/dist/src/platforms/discord/commands/snapshot.d.ts.map +1 -1
  42. package/dist/src/platforms/discord/commands/snapshot.js.map +1 -1
  43. package/dist/src/platforms/discord/commands/thread.d.ts.map +1 -1
  44. package/dist/src/platforms/discord/commands/thread.js.map +1 -1
  45. package/dist/src/platforms/discord/commands/user.d.ts.map +1 -1
  46. package/dist/src/platforms/discord/commands/user.js.map +1 -1
  47. package/dist/src/platforms/discord/credential-manager.d.ts.map +1 -1
  48. package/dist/src/platforms/discord/credential-manager.js.map +1 -1
  49. package/dist/src/platforms/discord/token-extractor.d.ts.map +1 -1
  50. package/dist/src/platforms/discord/token-extractor.js +2 -7
  51. package/dist/src/platforms/discord/token-extractor.js.map +1 -1
  52. package/dist/src/platforms/slack/client.d.ts.map +1 -1
  53. package/dist/src/platforms/slack/client.js.map +1 -1
  54. package/dist/src/platforms/slack/commands/activity.d.ts.map +1 -1
  55. package/dist/src/platforms/slack/commands/activity.js.map +1 -1
  56. package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
  57. package/dist/src/platforms/slack/commands/auth.js.map +1 -1
  58. package/dist/src/platforms/slack/commands/channel.d.ts.map +1 -1
  59. package/dist/src/platforms/slack/commands/channel.js.map +1 -1
  60. package/dist/src/platforms/slack/commands/drafts.d.ts.map +1 -1
  61. package/dist/src/platforms/slack/commands/drafts.js.map +1 -1
  62. package/dist/src/platforms/slack/commands/file.d.ts.map +1 -1
  63. package/dist/src/platforms/slack/commands/file.js +1 -4
  64. package/dist/src/platforms/slack/commands/file.js.map +1 -1
  65. package/dist/src/platforms/slack/commands/message.d.ts.map +1 -1
  66. package/dist/src/platforms/slack/commands/message.js.map +1 -1
  67. package/dist/src/platforms/slack/commands/reaction.d.ts.map +1 -1
  68. package/dist/src/platforms/slack/commands/reaction.js.map +1 -1
  69. package/dist/src/platforms/slack/commands/saved.d.ts.map +1 -1
  70. package/dist/src/platforms/slack/commands/saved.js.map +1 -1
  71. package/dist/src/platforms/slack/commands/sections.d.ts.map +1 -1
  72. package/dist/src/platforms/slack/commands/sections.js.map +1 -1
  73. package/dist/src/platforms/slack/commands/snapshot.d.ts.map +1 -1
  74. package/dist/src/platforms/slack/commands/snapshot.js.map +1 -1
  75. package/dist/src/platforms/slack/commands/unread.d.ts.map +1 -1
  76. package/dist/src/platforms/slack/commands/unread.js.map +1 -1
  77. package/dist/src/platforms/slack/commands/user.d.ts.map +1 -1
  78. package/dist/src/platforms/slack/commands/user.js.map +1 -1
  79. package/dist/src/platforms/slack/commands/workspace.d.ts.map +1 -1
  80. package/dist/src/platforms/slack/commands/workspace.js.map +1 -1
  81. package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
  82. package/dist/src/platforms/slack/token-extractor.js +4 -5
  83. package/dist/src/platforms/slack/token-extractor.js.map +1 -1
  84. package/dist/src/platforms/slackbot/cli.d.ts +5 -0
  85. package/dist/src/platforms/slackbot/cli.d.ts.map +1 -0
  86. package/dist/src/platforms/slackbot/cli.js +19 -0
  87. package/dist/src/platforms/slackbot/cli.js.map +1 -0
  88. package/dist/src/platforms/slackbot/client.d.ts +43 -0
  89. package/dist/src/platforms/slackbot/client.d.ts.map +1 -0
  90. package/dist/src/platforms/slackbot/client.js +347 -0
  91. package/dist/src/platforms/slackbot/client.js.map +1 -0
  92. package/dist/src/platforms/slackbot/commands/auth.d.ts +35 -0
  93. package/dist/src/platforms/slackbot/commands/auth.d.ts.map +1 -0
  94. package/dist/src/platforms/slackbot/commands/auth.js +185 -0
  95. package/dist/src/platforms/slackbot/commands/auth.js.map +1 -0
  96. package/dist/src/platforms/slackbot/commands/channel.d.ts +3 -0
  97. package/dist/src/platforms/slackbot/commands/channel.d.ts.map +1 -0
  98. package/dist/src/platforms/slackbot/commands/channel.js +40 -0
  99. package/dist/src/platforms/slackbot/commands/channel.js.map +1 -0
  100. package/dist/src/platforms/slackbot/commands/index.d.ts +6 -0
  101. package/dist/src/platforms/slackbot/commands/index.d.ts.map +1 -0
  102. package/dist/src/platforms/slackbot/commands/index.js +6 -0
  103. package/dist/src/platforms/slackbot/commands/index.js.map +1 -0
  104. package/dist/src/platforms/slackbot/commands/message.d.ts +3 -0
  105. package/dist/src/platforms/slackbot/commands/message.d.ts.map +1 -0
  106. package/dist/src/platforms/slackbot/commands/message.js +135 -0
  107. package/dist/src/platforms/slackbot/commands/message.js.map +1 -0
  108. package/dist/src/platforms/slackbot/commands/reaction.d.ts +3 -0
  109. package/dist/src/platforms/slackbot/commands/reaction.d.ts.map +1 -0
  110. package/dist/src/platforms/slackbot/commands/reaction.js +43 -0
  111. package/dist/src/platforms/slackbot/commands/reaction.js.map +1 -0
  112. package/dist/src/platforms/slackbot/commands/shared.d.ts +9 -0
  113. package/dist/src/platforms/slackbot/commands/shared.d.ts.map +1 -0
  114. package/dist/src/platforms/slackbot/commands/shared.js +13 -0
  115. package/dist/src/platforms/slackbot/commands/shared.js.map +1 -0
  116. package/dist/src/platforms/slackbot/commands/user.d.ts +3 -0
  117. package/dist/src/platforms/slackbot/commands/user.d.ts.map +1 -0
  118. package/dist/src/platforms/slackbot/commands/user.js +40 -0
  119. package/dist/src/platforms/slackbot/commands/user.js.map +1 -0
  120. package/dist/src/platforms/slackbot/credential-manager.d.ts +18 -0
  121. package/dist/src/platforms/slackbot/credential-manager.d.ts.map +1 -0
  122. package/dist/src/platforms/slackbot/credential-manager.js +185 -0
  123. package/dist/src/platforms/slackbot/credential-manager.js.map +1 -0
  124. package/dist/src/platforms/slackbot/index.d.ts +4 -0
  125. package/dist/src/platforms/slackbot/index.d.ts.map +1 -0
  126. package/dist/src/platforms/slackbot/index.js +4 -0
  127. package/dist/src/platforms/slackbot/index.js.map +1 -0
  128. package/dist/src/platforms/slackbot/types.d.ts +460 -0
  129. package/dist/src/platforms/slackbot/types.d.ts.map +1 -0
  130. package/dist/src/platforms/slackbot/types.js +114 -0
  131. package/dist/src/platforms/slackbot/types.js.map +1 -0
  132. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  133. package/dist/src/platforms/teams/client.js.map +1 -1
  134. package/dist/src/platforms/teams/commands/auth.d.ts.map +1 -1
  135. package/dist/src/platforms/teams/commands/auth.js.map +1 -1
  136. package/dist/src/platforms/teams/commands/channel.d.ts.map +1 -1
  137. package/dist/src/platforms/teams/commands/channel.js.map +1 -1
  138. package/dist/src/platforms/teams/commands/file.d.ts.map +1 -1
  139. package/dist/src/platforms/teams/commands/file.js.map +1 -1
  140. package/dist/src/platforms/teams/commands/message.d.ts.map +1 -1
  141. package/dist/src/platforms/teams/commands/message.js.map +1 -1
  142. package/dist/src/platforms/teams/commands/reaction.d.ts.map +1 -1
  143. package/dist/src/platforms/teams/commands/reaction.js.map +1 -1
  144. package/dist/src/platforms/teams/commands/snapshot.d.ts.map +1 -1
  145. package/dist/src/platforms/teams/commands/snapshot.js.map +1 -1
  146. package/dist/src/platforms/teams/commands/team.d.ts.map +1 -1
  147. package/dist/src/platforms/teams/commands/team.js +1 -4
  148. package/dist/src/platforms/teams/commands/team.js.map +1 -1
  149. package/dist/src/platforms/teams/commands/user.d.ts.map +1 -1
  150. package/dist/src/platforms/teams/commands/user.js.map +1 -1
  151. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
  152. package/dist/src/platforms/teams/token-extractor.js +3 -1
  153. package/dist/src/platforms/teams/token-extractor.js.map +1 -1
  154. package/docs/content/docs/agent-skills.mdx +4 -4
  155. package/docs/content/docs/index.mdx +11 -18
  156. package/docs/content/docs/integrations/discord.mdx +65 -1
  157. package/docs/content/docs/integrations/meta.json +1 -1
  158. package/docs/content/docs/integrations/slack.mdx +51 -1
  159. package/docs/content/docs/integrations/slackbot.mdx +214 -0
  160. package/docs/content/docs/integrations/teams.mdx +4 -1
  161. package/docs/content/docs/quick-start.mdx +3 -2
  162. package/docs/src/app/icon.png +0 -0
  163. package/docs/src/app/layout.config.tsx +8 -1
  164. package/docs/src/app/page.tsx +18 -1
  165. package/e2e/config.ts +26 -0
  166. package/e2e/helpers.ts +6 -1
  167. package/e2e/slackbot.e2e.test.ts +306 -0
  168. package/package.json +16 -8
  169. package/scripts/prepublish.ts +11 -0
  170. package/skills/agent-slackbot/SKILL.md +285 -0
  171. package/skills/agent-slackbot/references/authentication.md +253 -0
  172. package/skills/agent-slackbot/references/common-patterns.md +218 -0
  173. package/skills/agent-slackbot/templates/monitor-channel.sh +98 -0
  174. package/skills/agent-slackbot/templates/post-message.sh +107 -0
  175. package/skills/agent-slackbot/templates/workspace-summary.sh +113 -0
  176. package/src/cli.ts +1 -4
  177. package/src/platforms/discord/client.test.ts +6 -14
  178. package/src/platforms/discord/client.ts +12 -34
  179. package/src/platforms/discord/commands/auth.test.ts +2 -7
  180. package/src/platforms/discord/commands/auth.ts +14 -19
  181. package/src/platforms/discord/commands/channel.test.ts +18 -20
  182. package/src/platforms/discord/commands/channel.ts +9 -18
  183. package/src/platforms/discord/commands/dm.test.ts +1 -3
  184. package/src/platforms/discord/commands/dm.ts +6 -10
  185. package/src/platforms/discord/commands/file.ts +10 -23
  186. package/src/platforms/discord/commands/friend.ts +33 -35
  187. package/src/platforms/discord/commands/member.ts +5 -7
  188. package/src/platforms/discord/commands/mention.ts +5 -11
  189. package/src/platforms/discord/commands/message.test.ts +1 -3
  190. package/src/platforms/discord/commands/message.ts +23 -61
  191. package/src/platforms/discord/commands/note.ts +7 -15
  192. package/src/platforms/discord/commands/profile.ts +4 -6
  193. package/src/platforms/discord/commands/reaction.test.ts +1 -3
  194. package/src/platforms/discord/commands/reaction.ts +19 -29
  195. package/src/platforms/discord/commands/server.test.ts +14 -18
  196. package/src/platforms/discord/commands/server.ts +9 -15
  197. package/src/platforms/discord/commands/snapshot.ts +5 -7
  198. package/src/platforms/discord/commands/thread.ts +8 -15
  199. package/src/platforms/discord/commands/user.ts +9 -20
  200. package/src/platforms/discord/credential-manager.test.ts +2 -2
  201. package/src/platforms/discord/credential-manager.ts +1 -3
  202. package/src/platforms/discord/token-extractor.test.ts +28 -57
  203. package/src/platforms/discord/token-extractor.ts +10 -30
  204. package/src/platforms/discord/types.ts +1 -1
  205. package/src/platforms/slack/client.test.ts +14 -20
  206. package/src/platforms/slack/client.ts +4 -11
  207. package/src/platforms/slack/commands/activity.test.ts +3 -9
  208. package/src/platforms/slack/commands/activity.ts +7 -12
  209. package/src/platforms/slack/commands/auth.test.ts +2 -2
  210. package/src/platforms/slack/commands/auth.ts +15 -31
  211. package/src/platforms/slack/commands/channel.ts +10 -32
  212. package/src/platforms/slack/commands/drafts.ts +5 -14
  213. package/src/platforms/slack/commands/file.ts +9 -29
  214. package/src/platforms/slack/commands/message.ts +23 -67
  215. package/src/platforms/slack/commands/reaction.ts +19 -48
  216. package/src/platforms/slack/commands/saved.ts +5 -14
  217. package/src/platforms/slack/commands/sections.ts +4 -11
  218. package/src/platforms/slack/commands/snapshot.test.ts +1 -3
  219. package/src/platforms/slack/commands/snapshot.ts +5 -10
  220. package/src/platforms/slack/commands/unread.test.ts +6 -8
  221. package/src/platforms/slack/commands/unread.ts +10 -33
  222. package/src/platforms/slack/commands/user.test.ts +1 -4
  223. package/src/platforms/slack/commands/user.ts +6 -8
  224. package/src/platforms/slack/commands/workspace.test.ts +1 -1
  225. package/src/platforms/slack/commands/workspace.ts +7 -12
  226. package/src/platforms/slack/token-extractor-node-test.ts +1 -1
  227. package/src/platforms/slack/token-extractor.ts +8 -17
  228. package/src/platforms/slack/types.ts +1 -1
  229. package/src/platforms/slackbot/cli.ts +24 -0
  230. package/src/platforms/slackbot/client.test.ts +282 -0
  231. package/src/platforms/slackbot/client.ts +394 -0
  232. package/src/platforms/slackbot/commands/auth.test.ts +245 -0
  233. package/src/platforms/slackbot/commands/auth.ts +240 -0
  234. package/src/platforms/slackbot/commands/channel.ts +46 -0
  235. package/src/platforms/slackbot/commands/index.ts +5 -0
  236. package/src/platforms/slackbot/commands/message.ts +169 -0
  237. package/src/platforms/slackbot/commands/reaction.ts +49 -0
  238. package/src/platforms/slackbot/commands/shared.ts +21 -0
  239. package/src/platforms/slackbot/commands/user.ts +46 -0
  240. package/src/platforms/slackbot/credential-manager.test.ts +264 -0
  241. package/src/platforms/slackbot/credential-manager.ts +213 -0
  242. package/src/platforms/slackbot/index.ts +19 -0
  243. package/src/platforms/slackbot/types.test.ts +90 -0
  244. package/src/platforms/slackbot/types.ts +222 -0
  245. package/src/platforms/teams/client.test.ts +15 -32
  246. package/src/platforms/teams/client.ts +18 -51
  247. package/src/platforms/teams/commands/auth.test.ts +6 -16
  248. package/src/platforms/teams/commands/auth.ts +16 -26
  249. package/src/platforms/teams/commands/channel.test.ts +2 -5
  250. package/src/platforms/teams/commands/channel.ts +10 -20
  251. package/src/platforms/teams/commands/file.test.ts +1 -4
  252. package/src/platforms/teams/commands/file.ts +11 -21
  253. package/src/platforms/teams/commands/message.test.ts +1 -3
  254. package/src/platforms/teams/commands/message.ts +15 -25
  255. package/src/platforms/teams/commands/reaction.test.ts +2 -7
  256. package/src/platforms/teams/commands/reaction.ts +12 -16
  257. package/src/platforms/teams/commands/snapshot.ts +6 -11
  258. package/src/platforms/teams/commands/team.test.ts +15 -26
  259. package/src/platforms/teams/commands/team.ts +10 -19
  260. package/src/platforms/teams/commands/user.ts +8 -14
  261. package/src/platforms/teams/credential-manager.test.ts +2 -5
  262. package/src/platforms/teams/token-extractor.test.ts +21 -50
  263. package/src/platforms/teams/token-extractor.ts +12 -20
  264. package/src/platforms/teams/types.ts +1 -1
  265. package/src/shared/utils/concurrency.test.ts +2 -2
  266. package/src/shared/utils/concurrency.ts +1 -1
  267. package/.claude/commands/release.md +0 -92
  268. package/dist/src/platforms/discord/commands/guild.d.ts +0 -15
  269. package/dist/src/platforms/discord/commands/guild.d.ts.map +0 -1
  270. package/dist/src/platforms/discord/commands/guild.js +0 -102
  271. package/dist/src/platforms/discord/commands/guild.js.map +0 -1
@@ -4,27 +4,18 @@ description: Give your AI agent the power to read and send messages across Slack
4
4
  icon: Info
5
5
  ---
6
6
 
7
- Agent Messenger is a unified, agent-friendly CLI for messaging platforms. It automatically extracts credentials from your desktop apps—no OAuth flows, no API keys, no admin approval needed.
7
+ Agent Messenger is a unified, agent-friendly CLI for messaging platforms. Zero-config credential extraction from your desktop apps—no OAuth flows, no API keys, no admin approval needed. Works out of the box.
8
8
 
9
9
  ## Why Agent Messenger?
10
10
 
11
- ### For AI Agents
11
+ Messaging platforms only offer Bot tokens for API access—your AI agent can never act **as you**. Agent Messenger extracts user credentials directly from your installed desktop apps, letting your agent operate on your behalf. Bot tokens are fully supported too for server-side and CI/CD use cases.
12
12
 
13
- AI agents need to communicate with humans through messaging platforms. But integrating with Slack, Discord, or Teams traditionally requires:
14
-
15
- - **OAuth setup** - Creating apps, getting admin approval, managing tokens
16
- - **API keys** - Storing secrets, handling rotation, security concerns
17
- - **Platform-specific code** - Learning different APIs for each platform
18
-
19
- Agent Messenger eliminates all of this. Your agent can start sending messages in seconds.
20
-
21
- ### For Developers
22
-
23
- Building AI-powered workflows that interact with messaging platforms shouldn't require a week of OAuth debugging. Agent Messenger provides:
24
-
25
- - **Zero configuration** - Extract tokens from your existing desktop apps
26
- - **Unified interface** - Same commands work across all platforms
27
- - **JSON output** - Perfect for piping into other tools or LLMs
13
+ - **Act as yourself, not a bot** Extracted user tokens let your agent operate on your behalf
14
+ - **No API keys needed** — Automatically extracts credentials from your installed desktop apps
15
+ - **One interface, multiple platforms** Learn once, use everywhere (Slack, Discord, Teams)
16
+ - **AI-agent friendly** JSON output by default, perfect for LLM tool use
17
+ - **Human friendly too** Add `--pretty` for readable output
18
+ - **Token efficient** — CLI, not MCP. Load only what you need
28
19
 
29
20
  ## How It Works
30
21
 
@@ -49,6 +40,7 @@ No app creation. No admin approval. No waiting.
49
40
  | **Multi-workspace** | Switch between workspaces/servers easily |
50
41
  | **JSON output** | Machine-readable by default, `--pretty` for humans |
51
42
  | **Comprehensive** | Messages, channels, users, reactions, files |
43
+ | **Bot support** | [`agent-slackbot`](/docs/integrations/slackbot) for server-side and CI/CD |
52
44
 
53
45
  ## Why Not MCP?
54
46
 
@@ -88,7 +80,7 @@ OAuth is better when you need:
88
80
  - **Multi-user applications** - Many users authenticating separately
89
81
  - **Granular permissions** - Fine-tuned access control
90
82
 
91
- Bot support is on our roadmap for these use cases.
83
+ For these use cases, Agent Messenger also supports bot tokens via [`agent-slackbot`](/docs/integrations/slackbot).
92
84
 
93
85
  ## Design Principles
94
86
 
@@ -116,6 +108,7 @@ Tokens stay on your machine. Nothing is sent to external servers. Your credentia
116
108
 
117
109
  - [Quick Start](/docs/quick-start) - Get running in 30 seconds
118
110
  - [Slack](/docs/integrations/slack) - Full Slack command reference
111
+ - [Slack Bot](/docs/integrations/slackbot) - Bot token integration for server-side and CI/CD
119
112
  - [Discord](/docs/integrations/discord) - Full Discord command reference
120
113
  - [Teams](/docs/integrations/teams) - Full Teams command reference
121
114
 
@@ -200,8 +200,72 @@ All commands support these options:
200
200
  | User ID | Alphanumeric (U01234567) | Numeric snowflake (123456789012345678) |
201
201
  | Threads | Thread timestamps | Thread channels |
202
202
 
203
+ ### DM Commands
204
+
205
+ ```bash
206
+ # List DM channels
207
+ agent-discord dm list
208
+
209
+ # Create a DM channel with a user
210
+ agent-discord dm create <user-id>
211
+ ```
212
+
213
+ ### Thread Commands
214
+
215
+ ```bash
216
+ # Create a thread in a channel
217
+ agent-discord thread create <channel-id> <name>
218
+ agent-discord thread create 123456789 "Bug Discussion" --auto-archive-duration 1440
219
+
220
+ # Archive a thread
221
+ agent-discord thread archive <thread-id>
222
+ ```
223
+
224
+ ### Mention Commands
225
+
226
+ ```bash
227
+ # List recent mentions
228
+ agent-discord mention list
229
+ agent-discord mention list --limit 10
230
+
231
+ # Filter by guild
232
+ agent-discord mention list --guild <guild-id>
233
+ ```
234
+
235
+ ### Member Commands
236
+
237
+ ```bash
238
+ # Search guild members
239
+ agent-discord member search <guild-id> <query>
240
+ agent-discord member search 123456789 "john" --limit 20
241
+ ```
242
+
243
+ ### Friend Commands
244
+
245
+ ```bash
246
+ # List friends and relationships
247
+ agent-discord friend list
248
+ ```
249
+
250
+ ### Profile Commands
251
+
252
+ ```bash
253
+ # Get a user's profile
254
+ agent-discord profile get <user-id>
255
+ ```
256
+
257
+ ### Note Commands
258
+
259
+ ```bash
260
+ # Get your note on a user
261
+ agent-discord note get <user-id>
262
+
263
+ # Set a note on a user
264
+ agent-discord note set <user-id> "Met at conference"
265
+ ```
266
+
203
267
  ## AI Agent Integration
204
268
 
205
- See `skills/agent-messenger/` directory for:
269
+ See [`skills/agent-discord/`](https://github.com/devxoul/agent-messenger/tree/main/skills/agent-discord) for:
206
270
  - Complete skill documentation
207
271
  - Runnable templates
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "title": "Integrations",
3
3
  "icon": "Plug",
4
- "pages": ["slack", "discord", "teams"]
4
+ "pages": ["slack", "slackbot", "discord", "teams"]
5
5
  }
@@ -154,8 +154,58 @@ agent-slack snapshot --users-only
154
154
  agent-slack snapshot --limit 10
155
155
  ```
156
156
 
157
+ ### Activity Commands
158
+
159
+ ```bash
160
+ # List activity feed
161
+ agent-slack activity list
162
+ agent-slack activity list --limit 50
163
+
164
+ # Show only unread activity
165
+ agent-slack activity list --unread
166
+
167
+ # Filter by activity types
168
+ agent-slack activity list --types thread_reply,message_reaction,at_user,at_channel,keyword
169
+ ```
170
+
171
+ ### Unread Commands
172
+
173
+ ```bash
174
+ # Get unread counts for all channels
175
+ agent-slack unread counts
176
+
177
+ # Get thread subscription details
178
+ agent-slack unread threads <channel> <thread_ts>
179
+
180
+ # Mark channel as read up to a timestamp
181
+ agent-slack unread mark <channel> <ts>
182
+ ```
183
+
184
+ ### Drafts Commands
185
+
186
+ ```bash
187
+ # List message drafts
188
+ agent-slack drafts list
189
+ agent-slack drafts list --limit 10
190
+ ```
191
+
192
+ ### Saved Items Commands
193
+
194
+ ```bash
195
+ # List saved items
196
+ agent-slack saved list
197
+ agent-slack saved list --limit 10
198
+ ```
199
+
200
+ ### Sections Commands
201
+
202
+ ```bash
203
+ # List channel sections (sidebar folders)
204
+ agent-slack sections list
205
+ ```
206
+
157
207
  ## AI Agent Integration
158
208
 
159
- See `skills/agent-messenger/` directory for:
209
+ See [`skills/agent-slack/`](https://github.com/devxoul/agent-messenger/tree/main/skills/agent-slack) for:
160
210
  - Complete skill documentation
161
211
  - Runnable templates
@@ -0,0 +1,214 @@
1
+ ---
2
+ title: Slack Bot
3
+ description: Complete reference for the agent-slackbot CLI.
4
+ ---
5
+
6
+ > **Tip**: `agent-slackbot` uses bot tokens (xoxb-) instead of user tokens. Ideal for server-side and CI/CD integrations.
7
+
8
+ ## Quick Start
9
+
10
+ ```bash
11
+ # 1. Set your bot token (from api.slack.com/apps)
12
+ agent-slackbot auth set xoxb-your-bot-token
13
+
14
+ # 2. Verify authentication
15
+ agent-slackbot auth status
16
+
17
+ # 3. Send a message
18
+ agent-slackbot message send C0ACZKTDDC0 "Hello from bot!"
19
+ ```
20
+
21
+ ## Authentication
22
+
23
+ ### Create a Slack App
24
+
25
+ The fastest way to get started is to create an app from the manifest below:
26
+
27
+ 1. Go to [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From an app manifest**
28
+ 2. Select your workspace
29
+ 3. Paste the manifest below (choose YAML tab) and click **Next** → **Create**
30
+ 4. Click **Install App** in the left sidebar, then hit **Install to Workspace**
31
+ 5. Copy the **Bot User OAuth Token** (starts with `xoxb-`) from the **Install App** page
32
+
33
+ ```yaml
34
+ display_information:
35
+ name: Agent Messenger Bot
36
+ description: Bot for agent-messenger CLI integration
37
+ background_color: "#1a1a2e"
38
+
39
+ features:
40
+ bot_user:
41
+ display_name: agent-messenger
42
+ always_online: false
43
+
44
+ oauth_config:
45
+ scopes:
46
+ bot:
47
+ - chat:write
48
+ - channels:history
49
+ - channels:read
50
+ - channels:join
51
+ - groups:history
52
+ - groups:read
53
+ - users:read
54
+ - users:read.email
55
+ - reactions:write
56
+ - reactions:read
57
+
58
+ settings:
59
+ org_deploy_enabled: false
60
+ socket_mode_enabled: false
61
+ token_rotation_enabled: false
62
+ ```
63
+
64
+ Then set the token:
65
+
66
+ ```bash
67
+ # Basic setup
68
+ agent-slackbot auth set xoxb-your-bot-token
69
+
70
+ # Or with a custom bot identifier for multi-bot setups
71
+ agent-slackbot auth set xoxb-your-bot-token --bot deploy --name "Deploy Bot"
72
+
73
+ # Verify it works
74
+ agent-slackbot auth status
75
+ ```
76
+
77
+ ### Authentication Commands
78
+
79
+ ```bash
80
+ # Check bot auth status
81
+ agent-slackbot auth status
82
+
83
+ # Clear all stored credentials
84
+ agent-slackbot auth clear
85
+ ```
86
+
87
+ ### Multi-Bot Support
88
+
89
+ Store multiple bot tokens and switch between them:
90
+
91
+ ```bash
92
+ # Add multiple bots
93
+ agent-slackbot auth set xoxb-deploy-token --bot deploy --name "Deploy Bot"
94
+ agent-slackbot auth set xoxb-alert-token --bot alert --name "Alert Bot"
95
+
96
+ # List all stored bots
97
+ agent-slackbot auth list
98
+
99
+ # Switch active bot
100
+ agent-slackbot auth use deploy
101
+
102
+ # Use a specific bot for one command (without switching)
103
+ agent-slackbot message send C0ACZKTDDC0 "Alert!" --bot alert
104
+
105
+ # Remove a stored bot
106
+ agent-slackbot auth remove deploy
107
+ ```
108
+
109
+ ### Scopes Reference
110
+
111
+ | Scope | Used For |
112
+ |-------|----------|
113
+ | `chat:write` | Sending and updating messages |
114
+ | `channels:history` | Reading public channel messages |
115
+ | `channels:read` | Listing public channels |
116
+ | `channels:join` | Joining public channels |
117
+ | `groups:history` | Reading private channel messages |
118
+ | `groups:read` | Listing private channels |
119
+ | `users:read` | Listing users |
120
+ | `users:read.email` | Reading user emails |
121
+ | `reactions:write` | Adding/removing reactions |
122
+ | `reactions:read` | Listing reactions |
123
+
124
+ ### Environment Variables (CI/CD)
125
+
126
+ ```bash
127
+ export E2E_SLACKBOT_TOKEN=xoxb-your-bot-token
128
+ export E2E_SLACKBOT_WORKSPACE_ID=T123456
129
+ export E2E_SLACKBOT_WORKSPACE_NAME="My Workspace"
130
+ ```
131
+
132
+ ## Commands
133
+
134
+ ### Message Commands
135
+
136
+ ```bash
137
+ # Send a message
138
+ agent-slackbot message send <channel> <text>
139
+ agent-slackbot message send C0ACZKTDDC0 "Hello world"
140
+
141
+ # Send a threaded reply
142
+ agent-slackbot message send C0ACZKTDDC0 "Reply" --thread <ts>
143
+
144
+ # List messages
145
+ agent-slackbot message list <channel>
146
+ agent-slackbot message list C0ACZKTDDC0 --limit 50
147
+
148
+ # Get a single message
149
+ agent-slackbot message get <channel> <ts>
150
+
151
+ # Get thread replies
152
+ agent-slackbot message replies <channel> <thread_ts>
153
+ agent-slackbot message replies C0ACZKTDDC0 1234567890.123456
154
+
155
+ # Update a message (bot's own messages only)
156
+ agent-slackbot message update <channel> <ts> <new-text>
157
+
158
+ # Delete a message (bot's own messages only)
159
+ agent-slackbot message delete <channel> <ts> --force
160
+ ```
161
+
162
+ ### Channel Commands
163
+
164
+ ```bash
165
+ # List channels
166
+ agent-slackbot channel list
167
+ agent-slackbot channel list --limit 50
168
+
169
+ # Get channel info
170
+ agent-slackbot channel info <channel>
171
+ agent-slackbot channel info C0ACZKTDDC0
172
+ ```
173
+
174
+ ### User Commands
175
+
176
+ ```bash
177
+ # List users
178
+ agent-slackbot user list
179
+ agent-slackbot user list --limit 50
180
+
181
+ # Get user info
182
+ agent-slackbot user info <user-id>
183
+ ```
184
+
185
+ ### Reaction Commands
186
+
187
+ ```bash
188
+ # Add reaction
189
+ agent-slackbot reaction add <channel> <ts> <emoji>
190
+ agent-slackbot reaction add C0ACZKTDDC0 1234567890.123456 thumbsup
191
+
192
+ # Remove reaction
193
+ agent-slackbot reaction remove <channel> <ts> <emoji>
194
+ ```
195
+
196
+ ## Key Differences from agent-slack
197
+
198
+ | Feature | agent-slack | agent-slackbot |
199
+ |---------|------------|----------------|
200
+ | Token type | User token (xoxc-) | Bot token (xoxb-) |
201
+ | Token source | Auto-extracted from desktop app | Manual from Slack App config |
202
+ | Message search | Yes | No |
203
+ | File operations | Yes | No |
204
+ | Snapshot | Yes | No |
205
+ | Edit/delete messages | Any message | Bot's own only |
206
+ | Multi-bot support | N/A | Yes (`--bot` flag) |
207
+ | CI/CD friendly | Requires desktop app | Yes |
208
+
209
+ ## AI Agent Integration
210
+
211
+ See [`skills/agent-slackbot/`](https://github.com/devxoul/agent-messenger/tree/main/skills/agent-slackbot) for:
212
+ - Complete skill documentation
213
+ - Runnable templates
214
+ - Common patterns for AI agents
@@ -109,6 +109,9 @@ agent-teams team current
109
109
 
110
110
  # Get team info
111
111
  agent-teams team info <team-id>
112
+
113
+ # Remove a stored team
114
+ agent-teams team remove <team-id>
112
115
  ```
113
116
 
114
117
  ## Commands
@@ -283,7 +286,7 @@ Some operations require specific Microsoft 365 permissions. Check with your IT a
283
286
 
284
287
  ## AI Agent Integration
285
288
 
286
- See `skills/agent-messenger/` directory for:
289
+ See [`skills/agent-teams/`](https://github.com/devxoul/agent-messenger/tree/main/skills/agent-teams) for:
287
290
  - Complete skill documentation
288
291
  - Runnable templates
289
292
 
@@ -23,8 +23,9 @@ yarn global add agent-messenger
23
23
  bun add -g agent-messenger
24
24
  ```
25
25
 
26
- This installs three CLI tools:
27
- - `agent-slack` — Slack CLI
26
+ This installs four CLI tools:
27
+ - `agent-slack` — Slack CLI (user token, zero-config)
28
+ - `agent-slackbot` — Slack Bot CLI (bot token, for server-side/CI/CD)
28
29
  - `agent-discord` — Discord CLI
29
30
  - `agent-teams` — Microsoft Teams CLI
30
31
 
Binary file
@@ -1,7 +1,14 @@
1
1
  import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'
2
+ import Image from 'next/image'
3
+ import icon from './icon.png'
2
4
 
3
5
  export const baseOptions: BaseLayoutProps = {
4
6
  nav: {
5
- title: 'Agent Messenger',
7
+ title: (
8
+ <>
9
+ <Image src={icon} alt="Agent Messenger" width={24} height={24} />
10
+ Agent Messenger
11
+ </>
12
+ ),
6
13
  },
7
14
  }
@@ -232,7 +232,24 @@ function ThemeToggle() {
232
232
  )
233
233
  }
234
234
 
235
+ async function fetchNpmVersion(): Promise<string | null> {
236
+ try {
237
+ const res = await fetch('https://registry.npmjs.org/agent-messenger/latest')
238
+ if (!res.ok) return null
239
+ const data = await res.json()
240
+ return data.version ?? null
241
+ } catch {
242
+ return null
243
+ }
244
+ }
245
+
235
246
  export default function Home() {
247
+ const [npmVersion, setNpmVersion] = useState<string | null>(null)
248
+
249
+ useEffect(() => {
250
+ fetchNpmVersion().then(setNpmVersion)
251
+ }, [])
252
+
236
253
  return (
237
254
  <div className="flex min-h-screen flex-col bg-zinc-50 dark:bg-black">
238
255
  <header className="sticky top-0 z-50 border-b border-zinc-200 bg-zinc-50/80 backdrop-blur-sm dark:border-zinc-800 dark:bg-black/80">
@@ -266,7 +283,7 @@ export default function Home() {
266
283
  <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"></span>
267
284
  <span className="relative inline-flex rounded-full h-2 w-2 bg-green-500"></span>
268
285
  </span>
269
- v1.1.0 Available Now
286
+ {npmVersion ? `v${npmVersion} Available Now` : 'Available Now'}
270
287
  </div>
271
288
  <h1 className="max-w-4xl text-5xl font-extrabold tracking-tight text-zinc-900 dark:text-white sm:text-6xl md:text-7xl">
272
289
  Give your AI agent the power to <br className="hidden sm:block" />
package/e2e/config.ts CHANGED
@@ -29,6 +29,32 @@ export async function validateSlackEnvironment() {
29
29
  }
30
30
  }
31
31
 
32
+ // SlackBot Test Environment (same workspace as Slack, bot token)
33
+ export const SLACKBOT_TEST_WORKSPACE_ID = 'T0AC55BSF6E'
34
+ export const SLACKBOT_TEST_WORKSPACE_NAME = 'Agent Messenger'
35
+ export const SLACKBOT_TEST_CHANNEL_ID = 'C0ACZKTDDC0'
36
+ export const SLACKBOT_TEST_CHANNEL = 'e2e-test'
37
+
38
+ export async function validateSlackBotEnvironment() {
39
+ const { runCLI, parseJSON } = await import('./helpers')
40
+
41
+ const result = await runCLI('slackbot', ['auth', 'status'])
42
+ if (result.exitCode !== 0) {
43
+ throw new Error('SlackBot authentication failed. Please run: agent-slackbot auth set <token>')
44
+ }
45
+
46
+ const data = parseJSON<{ workspace_id: string; valid: boolean }>(result.stdout)
47
+ if (!data?.valid) {
48
+ throw new Error('SlackBot token is invalid or expired. Please run: agent-slackbot auth set <token>')
49
+ }
50
+ if (data?.workspace_id !== SLACKBOT_TEST_WORKSPACE_ID) {
51
+ throw new Error(
52
+ `Wrong SlackBot workspace. Expected: ${SLACKBOT_TEST_WORKSPACE_NAME} (${SLACKBOT_TEST_WORKSPACE_ID}), ` +
53
+ `Got: ${data?.workspace_id}`
54
+ )
55
+ }
56
+ }
57
+
32
58
  export async function validateDiscordEnvironment() {
33
59
  const { runCLI, parseJSON } = await import('./helpers')
34
60
 
package/e2e/helpers.ts CHANGED
@@ -7,7 +7,12 @@ export interface CLIResult {
7
7
  }
8
8
 
9
9
  export async function runCLI(platform: string, args: string[]): Promise<CLIResult> {
10
- const command = platform === 'slack' ? 'agent-slack' : 'agent-discord'
10
+ const commandMap: Record<string, string> = {
11
+ slack: 'agent-slack',
12
+ discord: 'agent-discord',
13
+ slackbot: 'agent-slackbot',
14
+ }
15
+ const command = commandMap[platform] || platform
11
16
 
12
17
  try {
13
18
  const result = await $`${command} ${args}`.quiet()