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.
Files changed (330) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.env.template +4 -1
  3. package/README.md +77 -27
  4. package/bun.lock +26 -0
  5. package/dist/package.json +14 -1
  6. package/dist/src/platforms/channeltalk/commands/auth.d.ts +2 -1
  7. package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -1
  8. package/dist/src/platforms/channeltalk/commands/auth.js +5 -3
  9. package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -1
  10. package/dist/src/platforms/channeltalk/token-extractor.d.ts +2 -1
  11. package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -1
  12. package/dist/src/platforms/channeltalk/token-extractor.js +22 -6
  13. package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -1
  14. package/dist/src/platforms/channeltalkbot/cli.d.ts.map +1 -1
  15. package/dist/src/platforms/channeltalkbot/cli.js +11 -1
  16. package/dist/src/platforms/channeltalkbot/cli.js.map +1 -1
  17. package/dist/src/platforms/channeltalkbot/commands/auth.d.ts.map +1 -1
  18. package/dist/src/platforms/channeltalkbot/commands/auth.js +1 -5
  19. package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -1
  20. package/dist/src/platforms/channeltalkbot/commands/bot.d.ts.map +1 -1
  21. package/dist/src/platforms/channeltalkbot/commands/bot.js +1 -6
  22. package/dist/src/platforms/channeltalkbot/commands/bot.js.map +1 -1
  23. package/dist/src/platforms/channeltalkbot/commands/chat.d.ts.map +1 -1
  24. package/dist/src/platforms/channeltalkbot/commands/chat.js +1 -6
  25. package/dist/src/platforms/channeltalkbot/commands/chat.js.map +1 -1
  26. package/dist/src/platforms/channeltalkbot/commands/group.d.ts.map +1 -1
  27. package/dist/src/platforms/channeltalkbot/commands/group.js +1 -6
  28. package/dist/src/platforms/channeltalkbot/commands/group.js.map +1 -1
  29. package/dist/src/platforms/channeltalkbot/commands/manager.d.ts.map +1 -1
  30. package/dist/src/platforms/channeltalkbot/commands/manager.js +1 -6
  31. package/dist/src/platforms/channeltalkbot/commands/manager.js.map +1 -1
  32. package/dist/src/platforms/channeltalkbot/commands/message.d.ts.map +1 -1
  33. package/dist/src/platforms/channeltalkbot/commands/message.js +1 -6
  34. package/dist/src/platforms/channeltalkbot/commands/message.js.map +1 -1
  35. package/dist/src/platforms/channeltalkbot/commands/whoami.d.ts.map +1 -1
  36. package/dist/src/platforms/channeltalkbot/commands/whoami.js +1 -6
  37. package/dist/src/platforms/channeltalkbot/commands/whoami.js.map +1 -1
  38. package/dist/src/platforms/channeltalkbot/credential-manager.d.ts +5 -0
  39. package/dist/src/platforms/channeltalkbot/credential-manager.d.ts.map +1 -1
  40. package/dist/src/platforms/channeltalkbot/credential-manager.js +34 -4
  41. package/dist/src/platforms/channeltalkbot/credential-manager.js.map +1 -1
  42. package/dist/src/platforms/discord/commands/auth.d.ts +1 -0
  43. package/dist/src/platforms/discord/commands/auth.d.ts.map +1 -1
  44. package/dist/src/platforms/discord/commands/auth.js +3 -1
  45. package/dist/src/platforms/discord/commands/auth.js.map +1 -1
  46. package/dist/src/platforms/discord/listener.d.ts +2 -0
  47. package/dist/src/platforms/discord/listener.d.ts.map +1 -1
  48. package/dist/src/platforms/discord/listener.js +51 -21
  49. package/dist/src/platforms/discord/listener.js.map +1 -1
  50. package/dist/src/platforms/discord/token-extractor.d.ts +2 -1
  51. package/dist/src/platforms/discord/token-extractor.d.ts.map +1 -1
  52. package/dist/src/platforms/discord/token-extractor.js +21 -6
  53. package/dist/src/platforms/discord/token-extractor.js.map +1 -1
  54. package/dist/src/platforms/discordbot/cli.d.ts.map +1 -1
  55. package/dist/src/platforms/discordbot/cli.js +12 -1
  56. package/dist/src/platforms/discordbot/cli.js.map +1 -1
  57. package/dist/src/platforms/discordbot/client.d.ts +3 -0
  58. package/dist/src/platforms/discordbot/client.d.ts.map +1 -1
  59. package/dist/src/platforms/discordbot/client.js +3 -0
  60. package/dist/src/platforms/discordbot/client.js.map +1 -1
  61. package/dist/src/platforms/discordbot/commands/auth.d.ts.map +1 -1
  62. package/dist/src/platforms/discordbot/commands/auth.js +1 -5
  63. package/dist/src/platforms/discordbot/commands/auth.js.map +1 -1
  64. package/dist/src/platforms/discordbot/commands/message.d.ts.map +1 -1
  65. package/dist/src/platforms/discordbot/commands/message.js +1 -6
  66. package/dist/src/platforms/discordbot/commands/message.js.map +1 -1
  67. package/dist/src/platforms/discordbot/commands/server.d.ts.map +1 -1
  68. package/dist/src/platforms/discordbot/commands/server.js +1 -4
  69. package/dist/src/platforms/discordbot/commands/server.js.map +1 -1
  70. package/dist/src/platforms/discordbot/commands/whoami.d.ts.map +1 -1
  71. package/dist/src/platforms/discordbot/commands/whoami.js +1 -6
  72. package/dist/src/platforms/discordbot/commands/whoami.js.map +1 -1
  73. package/dist/src/platforms/discordbot/index.d.ts +3 -1
  74. package/dist/src/platforms/discordbot/index.d.ts.map +1 -1
  75. package/dist/src/platforms/discordbot/index.js +2 -1
  76. package/dist/src/platforms/discordbot/index.js.map +1 -1
  77. package/dist/src/platforms/discordbot/listener.d.ts +43 -0
  78. package/dist/src/platforms/discordbot/listener.d.ts.map +1 -0
  79. package/dist/src/platforms/discordbot/listener.js +292 -0
  80. package/dist/src/platforms/discordbot/listener.js.map +1 -0
  81. package/dist/src/platforms/discordbot/types.d.ts +161 -0
  82. package/dist/src/platforms/discordbot/types.d.ts.map +1 -1
  83. package/dist/src/platforms/discordbot/types.js +34 -0
  84. package/dist/src/platforms/discordbot/types.js.map +1 -1
  85. package/dist/src/platforms/instagram/commands/auth.d.ts.map +1 -1
  86. package/dist/src/platforms/instagram/commands/auth.js +3 -1
  87. package/dist/src/platforms/instagram/commands/auth.js.map +1 -1
  88. package/dist/src/platforms/instagram/token-extractor.d.ts +2 -1
  89. package/dist/src/platforms/instagram/token-extractor.d.ts.map +1 -1
  90. package/dist/src/platforms/instagram/token-extractor.js +11 -2
  91. package/dist/src/platforms/instagram/token-extractor.js.map +1 -1
  92. package/dist/src/platforms/slack/commands/auth.d.ts.map +1 -1
  93. package/dist/src/platforms/slack/commands/auth.js +4 -2
  94. package/dist/src/platforms/slack/commands/auth.js.map +1 -1
  95. package/dist/src/platforms/slack/token-extractor.d.ts +4 -1
  96. package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
  97. package/dist/src/platforms/slack/token-extractor.js +64 -15
  98. package/dist/src/platforms/slack/token-extractor.js.map +1 -1
  99. package/dist/src/platforms/slackbot/cli.d.ts.map +1 -1
  100. package/dist/src/platforms/slackbot/cli.js +15 -3
  101. package/dist/src/platforms/slackbot/cli.js.map +1 -1
  102. package/dist/src/platforms/slackbot/client.d.ts +22 -1
  103. package/dist/src/platforms/slackbot/client.d.ts.map +1 -1
  104. package/dist/src/platforms/slackbot/client.js +104 -1
  105. package/dist/src/platforms/slackbot/client.js.map +1 -1
  106. package/dist/src/platforms/slackbot/commands/auth.d.ts.map +1 -1
  107. package/dist/src/platforms/slackbot/commands/auth.js +1 -5
  108. package/dist/src/platforms/slackbot/commands/auth.js.map +1 -1
  109. package/dist/src/platforms/slackbot/commands/file.d.ts +3 -0
  110. package/dist/src/platforms/slackbot/commands/file.d.ts.map +1 -0
  111. package/dist/src/platforms/slackbot/commands/file.js +164 -0
  112. package/dist/src/platforms/slackbot/commands/file.js.map +1 -0
  113. package/dist/src/platforms/slackbot/commands/index.d.ts +1 -0
  114. package/dist/src/platforms/slackbot/commands/index.d.ts.map +1 -1
  115. package/dist/src/platforms/slackbot/commands/index.js +1 -0
  116. package/dist/src/platforms/slackbot/commands/index.js.map +1 -1
  117. package/dist/src/platforms/slackbot/commands/message.d.ts.map +1 -1
  118. package/dist/src/platforms/slackbot/commands/message.js +19 -0
  119. package/dist/src/platforms/slackbot/commands/message.js.map +1 -1
  120. package/dist/src/platforms/slackbot/commands/whoami.d.ts.map +1 -1
  121. package/dist/src/platforms/slackbot/commands/whoami.js +1 -6
  122. package/dist/src/platforms/slackbot/commands/whoami.js.map +1 -1
  123. package/dist/src/platforms/slackbot/credential-manager.d.ts +1 -0
  124. package/dist/src/platforms/slackbot/credential-manager.d.ts.map +1 -1
  125. package/dist/src/platforms/slackbot/credential-manager.js +30 -2
  126. package/dist/src/platforms/slackbot/credential-manager.js.map +1 -1
  127. package/dist/src/platforms/slackbot/index.d.ts +4 -1
  128. package/dist/src/platforms/slackbot/index.d.ts.map +1 -1
  129. package/dist/src/platforms/slackbot/index.js +1 -0
  130. package/dist/src/platforms/slackbot/index.js.map +1 -1
  131. package/dist/src/platforms/slackbot/listener.d.ts +44 -0
  132. package/dist/src/platforms/slackbot/listener.d.ts.map +1 -0
  133. package/dist/src/platforms/slackbot/listener.js +313 -0
  134. package/dist/src/platforms/slackbot/listener.js.map +1 -0
  135. package/dist/src/platforms/slackbot/types.d.ts +196 -1
  136. package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
  137. package/dist/src/platforms/slackbot/types.js +4 -1
  138. package/dist/src/platforms/slackbot/types.js.map +1 -1
  139. package/dist/src/platforms/teams/commands/auth.d.ts +1 -0
  140. package/dist/src/platforms/teams/commands/auth.d.ts.map +1 -1
  141. package/dist/src/platforms/teams/commands/auth.js +37 -6
  142. package/dist/src/platforms/teams/commands/auth.js.map +1 -1
  143. package/dist/src/platforms/teams/ensure-auth.js +31 -9
  144. package/dist/src/platforms/teams/ensure-auth.js.map +1 -1
  145. package/dist/src/platforms/teams/token-extractor.d.ts +4 -1
  146. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
  147. package/dist/src/platforms/teams/token-extractor.js +71 -29
  148. package/dist/src/platforms/teams/token-extractor.js.map +1 -1
  149. package/dist/src/platforms/webex/commands/auth.d.ts +1 -0
  150. package/dist/src/platforms/webex/commands/auth.d.ts.map +1 -1
  151. package/dist/src/platforms/webex/commands/auth.js +3 -1
  152. package/dist/src/platforms/webex/commands/auth.js.map +1 -1
  153. package/dist/src/platforms/webex/token-extractor.d.ts +3 -1
  154. package/dist/src/platforms/webex/token-extractor.d.ts.map +1 -1
  155. package/dist/src/platforms/webex/token-extractor.js +16 -2
  156. package/dist/src/platforms/webex/token-extractor.js.map +1 -1
  157. package/dist/src/platforms/wechatbot/cli.d.ts.map +1 -1
  158. package/dist/src/platforms/wechatbot/cli.js +11 -1
  159. package/dist/src/platforms/wechatbot/cli.js.map +1 -1
  160. package/dist/src/platforms/wechatbot/commands/auth.d.ts.map +1 -1
  161. package/dist/src/platforms/wechatbot/commands/auth.js +1 -5
  162. package/dist/src/platforms/wechatbot/commands/auth.js.map +1 -1
  163. package/dist/src/platforms/wechatbot/commands/message.d.ts.map +1 -1
  164. package/dist/src/platforms/wechatbot/commands/message.js +1 -6
  165. package/dist/src/platforms/wechatbot/commands/message.js.map +1 -1
  166. package/dist/src/platforms/wechatbot/commands/template.d.ts.map +1 -1
  167. package/dist/src/platforms/wechatbot/commands/template.js +1 -6
  168. package/dist/src/platforms/wechatbot/commands/template.js.map +1 -1
  169. package/dist/src/platforms/wechatbot/commands/user.d.ts.map +1 -1
  170. package/dist/src/platforms/wechatbot/commands/user.js +1 -6
  171. package/dist/src/platforms/wechatbot/commands/user.js.map +1 -1
  172. package/dist/src/platforms/wechatbot/commands/whoami.d.ts.map +1 -1
  173. package/dist/src/platforms/wechatbot/commands/whoami.js +1 -6
  174. package/dist/src/platforms/wechatbot/commands/whoami.js.map +1 -1
  175. package/dist/src/platforms/whatsappbot/cli.d.ts.map +1 -1
  176. package/dist/src/platforms/whatsappbot/cli.js +11 -1
  177. package/dist/src/platforms/whatsappbot/cli.js.map +1 -1
  178. package/dist/src/platforms/whatsappbot/commands/auth.d.ts.map +1 -1
  179. package/dist/src/platforms/whatsappbot/commands/auth.js +1 -5
  180. package/dist/src/platforms/whatsappbot/commands/auth.js.map +1 -1
  181. package/dist/src/platforms/whatsappbot/commands/message.d.ts.map +1 -1
  182. package/dist/src/platforms/whatsappbot/commands/message.js +1 -6
  183. package/dist/src/platforms/whatsappbot/commands/message.js.map +1 -1
  184. package/dist/src/platforms/whatsappbot/commands/template.d.ts.map +1 -1
  185. package/dist/src/platforms/whatsappbot/commands/template.js +1 -6
  186. package/dist/src/platforms/whatsappbot/commands/template.js.map +1 -1
  187. package/dist/src/platforms/whatsappbot/commands/whoami.d.ts.map +1 -1
  188. package/dist/src/platforms/whatsappbot/commands/whoami.js +1 -6
  189. package/dist/src/platforms/whatsappbot/commands/whoami.js.map +1 -1
  190. package/dist/src/shared/chromium/browsers.d.ts +8 -0
  191. package/dist/src/shared/chromium/browsers.d.ts.map +1 -1
  192. package/dist/src/shared/chromium/browsers.js +58 -3
  193. package/dist/src/shared/chromium/browsers.js.map +1 -1
  194. package/dist/src/shared/chromium/cli-options.d.ts +5 -0
  195. package/dist/src/shared/chromium/cli-options.d.ts.map +1 -0
  196. package/dist/src/shared/chromium/cli-options.js +8 -0
  197. package/dist/src/shared/chromium/cli-options.js.map +1 -0
  198. package/dist/src/shared/chromium/index.d.ts +3 -1
  199. package/dist/src/shared/chromium/index.d.ts.map +1 -1
  200. package/dist/src/shared/chromium/index.js +2 -1
  201. package/dist/src/shared/chromium/index.js.map +1 -1
  202. package/dist/src/shared/utils/cli-output.d.ts +7 -0
  203. package/dist/src/shared/utils/cli-output.d.ts.map +1 -0
  204. package/dist/src/shared/utils/cli-output.js +7 -0
  205. package/dist/src/shared/utils/cli-output.js.map +1 -0
  206. package/dist/src/tui/app.d.ts.map +1 -1
  207. package/dist/src/tui/app.js +73 -20
  208. package/dist/src/tui/app.js.map +1 -1
  209. package/docs/content/docs/cli/channeltalk.mdx +4 -0
  210. package/docs/content/docs/cli/discord.mdx +5 -0
  211. package/docs/content/docs/cli/instagram.mdx +3 -0
  212. package/docs/content/docs/cli/slack.mdx +5 -0
  213. package/docs/content/docs/cli/slackbot.mdx +60 -22
  214. package/docs/content/docs/cli/teams.mdx +5 -0
  215. package/docs/content/docs/cli/webex.mdx +3 -0
  216. package/docs/content/docs/sdk/channeltalkbot.mdx +38 -1
  217. package/docs/content/docs/sdk/discordbot.mdx +501 -0
  218. package/docs/content/docs/sdk/meta.json +2 -0
  219. package/docs/content/docs/sdk/slackbot.mdx +576 -0
  220. package/e2e/README.md +1 -1
  221. package/e2e/config.ts +9 -4
  222. package/examples/discordbot-listen.ts +65 -0
  223. package/examples/slackbot-listen.ts +65 -0
  224. package/package.json +14 -1
  225. package/skills/agent-channeltalk/SKILL.md +5 -1
  226. package/skills/agent-channeltalk/references/authentication.md +5 -1
  227. package/skills/agent-channeltalkbot/SKILL.md +17 -3
  228. package/skills/agent-channeltalkbot/references/authentication.md +7 -5
  229. package/skills/agent-discord/SKILL.md +5 -1
  230. package/skills/agent-discord/references/authentication.md +7 -1
  231. package/skills/agent-discordbot/SKILL.md +13 -2
  232. package/skills/agent-discordbot/references/common-patterns.md +1 -1
  233. package/skills/agent-instagram/SKILL.md +7 -1
  234. package/skills/agent-instagram/references/authentication.md +6 -0
  235. package/skills/agent-kakaotalk/SKILL.md +1 -1
  236. package/skills/agent-line/SKILL.md +1 -1
  237. package/skills/agent-slack/SKILL.md +5 -1
  238. package/skills/agent-slack/references/authentication.md +7 -1
  239. package/skills/agent-slackbot/SKILL.md +56 -4
  240. package/skills/agent-slackbot/references/authentication.md +4 -0
  241. package/skills/agent-teams/SKILL.md +5 -1
  242. package/skills/agent-teams/references/authentication.md +7 -1
  243. package/skills/agent-telegram/SKILL.md +1 -1
  244. package/skills/agent-webex/SKILL.md +7 -1
  245. package/skills/agent-webex/references/authentication.md +6 -0
  246. package/skills/agent-wechatbot/SKILL.md +16 -1
  247. package/skills/agent-wechatbot/references/authentication.md +219 -0
  248. package/skills/agent-wechatbot/references/common-patterns.md +358 -0
  249. package/skills/agent-wechatbot/templates/account-summary.sh +122 -0
  250. package/skills/agent-wechatbot/templates/post-message.sh +122 -0
  251. package/skills/agent-wechatbot/templates/send-template.sh +152 -0
  252. package/skills/agent-whatsapp/SKILL.md +1 -1
  253. package/skills/agent-whatsappbot/SKILL.md +30 -1
  254. package/src/platforms/channeltalk/commands/auth.test.ts +15 -3
  255. package/src/platforms/channeltalk/commands/auth.ts +15 -5
  256. package/src/platforms/channeltalk/token-extractor.ts +24 -5
  257. package/src/platforms/channeltalkbot/cli.ts +9 -0
  258. package/src/platforms/channeltalkbot/commands/auth.ts +1 -5
  259. package/src/platforms/channeltalkbot/commands/bot.ts +1 -6
  260. package/src/platforms/channeltalkbot/commands/chat.ts +1 -6
  261. package/src/platforms/channeltalkbot/commands/group.ts +1 -6
  262. package/src/platforms/channeltalkbot/commands/manager.ts +1 -6
  263. package/src/platforms/channeltalkbot/commands/message.ts +1 -6
  264. package/src/platforms/channeltalkbot/commands/whoami.test.ts +2 -0
  265. package/src/platforms/channeltalkbot/commands/whoami.ts +1 -6
  266. package/src/platforms/channeltalkbot/credential-manager.test.ts +96 -2
  267. package/src/platforms/channeltalkbot/credential-manager.ts +37 -4
  268. package/src/platforms/discord/commands/auth.ts +13 -2
  269. package/src/platforms/discord/listener.test.ts +59 -1
  270. package/src/platforms/discord/listener.ts +43 -19
  271. package/src/platforms/discord/token-extractor.ts +30 -6
  272. package/src/platforms/discordbot/cli.ts +10 -0
  273. package/src/platforms/discordbot/client.ts +4 -0
  274. package/src/platforms/discordbot/commands/auth.ts +1 -5
  275. package/src/platforms/discordbot/commands/message.ts +1 -6
  276. package/src/platforms/discordbot/commands/server.ts +1 -5
  277. package/src/platforms/discordbot/commands/whoami.ts +1 -6
  278. package/src/platforms/discordbot/index.test.ts +82 -0
  279. package/src/platforms/discordbot/index.ts +27 -9
  280. package/src/platforms/discordbot/listener.test.ts +1002 -0
  281. package/src/platforms/discordbot/listener.ts +321 -0
  282. package/src/platforms/discordbot/types.ts +163 -0
  283. package/src/platforms/instagram/commands/auth.ts +9 -1
  284. package/src/platforms/instagram/token-extractor.ts +13 -1
  285. package/src/platforms/slack/commands/auth.ts +11 -2
  286. package/src/platforms/slack/token-extractor.test.ts +96 -0
  287. package/src/platforms/slack/token-extractor.ts +76 -13
  288. package/src/platforms/slackbot/cli.ts +13 -1
  289. package/src/platforms/slackbot/client.test.ts +274 -0
  290. package/src/platforms/slackbot/client.ts +130 -2
  291. package/src/platforms/slackbot/commands/auth.ts +1 -5
  292. package/src/platforms/slackbot/commands/file.test.ts +201 -0
  293. package/src/platforms/slackbot/commands/file.ts +212 -0
  294. package/src/platforms/slackbot/commands/index.ts +1 -0
  295. package/src/platforms/slackbot/commands/message.ts +22 -0
  296. package/src/platforms/slackbot/commands/whoami.ts +1 -6
  297. package/src/platforms/slackbot/credential-manager.test.ts +62 -2
  298. package/src/platforms/slackbot/credential-manager.ts +32 -2
  299. package/src/platforms/slackbot/index.test.ts +59 -0
  300. package/src/platforms/slackbot/index.ts +31 -7
  301. package/src/platforms/slackbot/listener.test.ts +1012 -0
  302. package/src/platforms/slackbot/listener.ts +362 -0
  303. package/src/platforms/slackbot/types.ts +224 -1
  304. package/src/platforms/teams/commands/auth.test.ts +1 -1
  305. package/src/platforms/teams/commands/auth.ts +66 -7
  306. package/src/platforms/teams/ensure-auth.test.ts +56 -5
  307. package/src/platforms/teams/ensure-auth.ts +39 -11
  308. package/src/platforms/teams/token-extractor.test.ts +146 -24
  309. package/src/platforms/teams/token-extractor.ts +87 -29
  310. package/src/platforms/webex/commands/auth.ts +13 -2
  311. package/src/platforms/webex/token-extractor.ts +25 -3
  312. package/src/platforms/wechatbot/cli.ts +9 -0
  313. package/src/platforms/wechatbot/commands/auth.ts +1 -5
  314. package/src/platforms/wechatbot/commands/message.ts +1 -6
  315. package/src/platforms/wechatbot/commands/template.ts +1 -6
  316. package/src/platforms/wechatbot/commands/user.ts +1 -6
  317. package/src/platforms/wechatbot/commands/whoami.ts +1 -6
  318. package/src/platforms/whatsappbot/cli.ts +9 -0
  319. package/src/platforms/whatsappbot/commands/auth.ts +1 -5
  320. package/src/platforms/whatsappbot/commands/message.ts +1 -6
  321. package/src/platforms/whatsappbot/commands/template.ts +1 -6
  322. package/src/platforms/whatsappbot/commands/whoami.ts +1 -6
  323. package/src/shared/chromium/browsers.test.ts +80 -0
  324. package/src/shared/chromium/browsers.ts +72 -3
  325. package/src/shared/chromium/cli-options.test.ts +22 -0
  326. package/src/shared/chromium/cli-options.ts +12 -0
  327. package/src/shared/chromium/index.ts +3 -0
  328. package/src/shared/utils/cli-output.test.ts +57 -0
  329. package/src/shared/utils/cli-output.ts +8 -0
  330. 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.10.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.10.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. If the desktop app isn't found, scans Chromium browser profiles for Channel Talk cookies
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.10.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 ChannelBot
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/channelbot-credentials.json` (0600 permissions). See [references/authentication.md](references/authentication.md) for format and security details.
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/channelbot-credentials.json`
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/channelbot-credentials.json
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
- - `E2E_CHANNELBOT_ACCESS_KEY` - Access key
159
- - `E2E_CHANNELBOT_ACCESS_SECRET` - Access secret
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.10.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. If the desktop app isn't found, scans Chromium browser profiles for Discord tokens
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.10.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 / Gateway connection
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**: Polling-based, not real-time. For production bots, use Discord's Gateway API.
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.10.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-kakaotalk
3
3
  description: Interact with KakaoTalk - send messages, read chats, manage conversations
4
- version: 2.10.2
4
+ version: 2.11.0
5
5
  allowed-tools: Bash(agent-kakaotalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-line
3
3
  description: Interact with LINE - send messages, read chats, manage conversations
4
- version: 2.10.2
4
+ version: 2.11.0
5
5
  allowed-tools: Bash(agent-line:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.10.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. If the desktop app isn't found, scans Chromium browser profiles for Slack tokens in `localStorage.localConfig_v2` and `d` cookie
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.10.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 | No |
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 / Socket Mode
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
- - No file upload/download
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.10.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. If the desktop app isn't found, scans Chromium browser profiles for Teams cookies
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-telegram
3
3
  description: Interact with Telegram through TDLib - authenticate, inspect chats, and send messages
4
- version: 2.10.2
4
+ version: 2.11.0
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -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.10.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/`.