agent-messenger 2.10.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) 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 +80 -31
  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/decryptor.d.ts +6 -0
  199. package/dist/src/shared/chromium/decryptor.d.ts.map +1 -1
  200. package/dist/src/shared/chromium/decryptor.js +26 -6
  201. package/dist/src/shared/chromium/decryptor.js.map +1 -1
  202. package/dist/src/shared/chromium/index.d.ts +3 -1
  203. package/dist/src/shared/chromium/index.d.ts.map +1 -1
  204. package/dist/src/shared/chromium/index.js +2 -1
  205. package/dist/src/shared/chromium/index.js.map +1 -1
  206. package/dist/src/shared/utils/cli-output.d.ts +7 -0
  207. package/dist/src/shared/utils/cli-output.d.ts.map +1 -0
  208. package/dist/src/shared/utils/cli-output.js +7 -0
  209. package/dist/src/shared/utils/cli-output.js.map +1 -0
  210. package/dist/src/tui/app.d.ts.map +1 -1
  211. package/dist/src/tui/app.js +73 -20
  212. package/dist/src/tui/app.js.map +1 -1
  213. package/docs/content/docs/cli/channeltalk.mdx +4 -0
  214. package/docs/content/docs/cli/discord.mdx +5 -0
  215. package/docs/content/docs/cli/instagram.mdx +3 -0
  216. package/docs/content/docs/cli/slack.mdx +5 -0
  217. package/docs/content/docs/cli/slackbot.mdx +60 -22
  218. package/docs/content/docs/cli/teams.mdx +5 -0
  219. package/docs/content/docs/cli/webex.mdx +3 -0
  220. package/docs/content/docs/sdk/channeltalkbot.mdx +38 -1
  221. package/docs/content/docs/sdk/discordbot.mdx +501 -0
  222. package/docs/content/docs/sdk/meta.json +2 -0
  223. package/docs/content/docs/sdk/slackbot.mdx +576 -0
  224. package/e2e/README.md +1 -1
  225. package/e2e/channeltalk.e2e.test.ts +13 -13
  226. package/e2e/channeltalkbot.e2e.test.ts +13 -13
  227. package/e2e/config.ts +9 -4
  228. package/e2e/discord.e2e.test.ts +24 -24
  229. package/e2e/discordbot.e2e.test.ts +16 -16
  230. package/e2e/instagram.e2e.test.ts +10 -10
  231. package/e2e/kakaotalk.e2e.test.ts +7 -7
  232. package/e2e/line.e2e.test.ts +8 -8
  233. package/e2e/slack.e2e.test.ts +34 -34
  234. package/e2e/slackbot.e2e.test.ts +14 -14
  235. package/e2e/teams.e2e.test.ts +23 -23
  236. package/e2e/telegram.e2e.test.ts +8 -8
  237. package/e2e/webex.e2e.test.ts +14 -14
  238. package/e2e/whatsapp.e2e.test.ts +8 -8
  239. package/e2e/whatsappbot.e2e.test.ts +6 -6
  240. package/examples/discordbot-listen.ts +65 -0
  241. package/examples/slackbot-listen.ts +65 -0
  242. package/package.json +14 -1
  243. package/skills/agent-channeltalk/SKILL.md +5 -1
  244. package/skills/agent-channeltalk/references/authentication.md +5 -1
  245. package/skills/agent-channeltalkbot/SKILL.md +17 -3
  246. package/skills/agent-channeltalkbot/references/authentication.md +7 -5
  247. package/skills/agent-discord/SKILL.md +5 -1
  248. package/skills/agent-discord/references/authentication.md +7 -1
  249. package/skills/agent-discordbot/SKILL.md +13 -2
  250. package/skills/agent-discordbot/references/common-patterns.md +1 -1
  251. package/skills/agent-instagram/SKILL.md +7 -1
  252. package/skills/agent-instagram/references/authentication.md +6 -0
  253. package/skills/agent-kakaotalk/SKILL.md +1 -1
  254. package/skills/agent-line/SKILL.md +1 -1
  255. package/skills/agent-slack/SKILL.md +5 -1
  256. package/skills/agent-slack/references/authentication.md +7 -1
  257. package/skills/agent-slackbot/SKILL.md +56 -4
  258. package/skills/agent-slackbot/references/authentication.md +4 -0
  259. package/skills/agent-teams/SKILL.md +5 -1
  260. package/skills/agent-teams/references/authentication.md +7 -1
  261. package/skills/agent-telegram/SKILL.md +1 -1
  262. package/skills/agent-webex/SKILL.md +7 -1
  263. package/skills/agent-webex/references/authentication.md +6 -0
  264. package/skills/agent-wechatbot/SKILL.md +16 -1
  265. package/skills/agent-wechatbot/references/authentication.md +219 -0
  266. package/skills/agent-wechatbot/references/common-patterns.md +358 -0
  267. package/skills/agent-wechatbot/templates/account-summary.sh +122 -0
  268. package/skills/agent-wechatbot/templates/post-message.sh +122 -0
  269. package/skills/agent-wechatbot/templates/send-template.sh +152 -0
  270. package/skills/agent-whatsapp/SKILL.md +1 -1
  271. package/skills/agent-whatsappbot/SKILL.md +30 -1
  272. package/src/platforms/channeltalk/client.test.ts +26 -26
  273. package/src/platforms/channeltalk/commands/auth.test.ts +31 -19
  274. package/src/platforms/channeltalk/commands/auth.ts +15 -5
  275. package/src/platforms/channeltalk/commands/bot.test.ts +2 -2
  276. package/src/platforms/channeltalk/commands/chat.test.ts +3 -3
  277. package/src/platforms/channeltalk/commands/group.test.ts +4 -4
  278. package/src/platforms/channeltalk/commands/manager.test.ts +2 -2
  279. package/src/platforms/channeltalk/commands/message.test.ts +17 -17
  280. package/src/platforms/channeltalk/commands/snapshot.test.ts +7 -7
  281. package/src/platforms/channeltalk/commands/whoami.test.ts +3 -3
  282. package/src/platforms/channeltalk/credential-manager.test.ts +18 -18
  283. package/src/platforms/channeltalk/ensure-auth.test.ts +5 -5
  284. package/src/platforms/channeltalk/index.test.ts +23 -23
  285. package/src/platforms/channeltalk/token-extractor.test.ts +21 -21
  286. package/src/platforms/channeltalk/token-extractor.ts +24 -5
  287. package/src/platforms/channeltalk/types.test.ts +12 -12
  288. package/src/platforms/channeltalkbot/cli.ts +9 -0
  289. package/src/platforms/channeltalkbot/client.test.ts +14 -14
  290. package/src/platforms/channeltalkbot/commands/auth.test.ts +16 -16
  291. package/src/platforms/channeltalkbot/commands/auth.ts +1 -5
  292. package/src/platforms/channeltalkbot/commands/bot.test.ts +6 -6
  293. package/src/platforms/channeltalkbot/commands/bot.ts +1 -6
  294. package/src/platforms/channeltalkbot/commands/chat.test.ts +9 -9
  295. package/src/platforms/channeltalkbot/commands/chat.ts +1 -6
  296. package/src/platforms/channeltalkbot/commands/group.test.ts +6 -6
  297. package/src/platforms/channeltalkbot/commands/group.ts +1 -6
  298. package/src/platforms/channeltalkbot/commands/manager.test.ts +3 -3
  299. package/src/platforms/channeltalkbot/commands/manager.ts +1 -6
  300. package/src/platforms/channeltalkbot/commands/message.test.ts +10 -10
  301. package/src/platforms/channeltalkbot/commands/message.ts +1 -6
  302. package/src/platforms/channeltalkbot/commands/snapshot.test.ts +7 -7
  303. package/src/platforms/channeltalkbot/commands/whoami.test.ts +6 -4
  304. package/src/platforms/channeltalkbot/commands/whoami.ts +1 -6
  305. package/src/platforms/channeltalkbot/credential-manager.test.ts +123 -29
  306. package/src/platforms/channeltalkbot/credential-manager.ts +37 -4
  307. package/src/platforms/channeltalkbot/index.test.ts +15 -15
  308. package/src/platforms/discord/client.test.ts +28 -28
  309. package/src/platforms/discord/commands/auth.test.ts +7 -7
  310. package/src/platforms/discord/commands/auth.ts +13 -2
  311. package/src/platforms/discord/commands/channel.test.ts +7 -7
  312. package/src/platforms/discord/commands/dm.test.ts +4 -4
  313. package/src/platforms/discord/commands/file.test.ts +4 -4
  314. package/src/platforms/discord/commands/friend.test.ts +6 -6
  315. package/src/platforms/discord/commands/member.test.ts +5 -5
  316. package/src/platforms/discord/commands/mention.test.ts +5 -5
  317. package/src/platforms/discord/commands/message.test.ts +9 -9
  318. package/src/platforms/discord/commands/note.test.ts +6 -6
  319. package/src/platforms/discord/commands/profile.test.ts +4 -4
  320. package/src/platforms/discord/commands/reaction.test.ts +5 -5
  321. package/src/platforms/discord/commands/server.test.ts +7 -7
  322. package/src/platforms/discord/commands/snapshot.test.ts +6 -6
  323. package/src/platforms/discord/commands/thread.test.ts +6 -6
  324. package/src/platforms/discord/commands/user.test.ts +5 -5
  325. package/src/platforms/discord/commands/whoami.test.ts +6 -6
  326. package/src/platforms/discord/credential-manager.test.ts +16 -16
  327. package/src/platforms/discord/ensure-auth.test.ts +8 -8
  328. package/src/platforms/discord/index.test.ts +17 -17
  329. package/src/platforms/discord/listener.test.ts +92 -34
  330. package/src/platforms/discord/listener.ts +43 -19
  331. package/src/platforms/discord/token-extractor.test.ts +53 -53
  332. package/src/platforms/discord/token-extractor.ts +30 -6
  333. package/src/platforms/discord/types.test.ts +26 -26
  334. package/src/platforms/discordbot/cli.ts +10 -0
  335. package/src/platforms/discordbot/client.test.ts +31 -31
  336. package/src/platforms/discordbot/client.ts +4 -0
  337. package/src/platforms/discordbot/commands/auth.test.ts +18 -18
  338. package/src/platforms/discordbot/commands/auth.ts +1 -5
  339. package/src/platforms/discordbot/commands/channel.test.ts +11 -11
  340. package/src/platforms/discordbot/commands/file.test.ts +7 -7
  341. package/src/platforms/discordbot/commands/message.test.ts +25 -25
  342. package/src/platforms/discordbot/commands/message.ts +1 -6
  343. package/src/platforms/discordbot/commands/reaction.test.ts +6 -6
  344. package/src/platforms/discordbot/commands/server.test.ts +12 -12
  345. package/src/platforms/discordbot/commands/server.ts +1 -5
  346. package/src/platforms/discordbot/commands/snapshot.test.ts +13 -13
  347. package/src/platforms/discordbot/commands/thread.test.ts +10 -10
  348. package/src/platforms/discordbot/commands/user.test.ts +9 -9
  349. package/src/platforms/discordbot/commands/whoami.test.ts +4 -4
  350. package/src/platforms/discordbot/commands/whoami.ts +1 -6
  351. package/src/platforms/discordbot/credential-manager.test.ts +28 -28
  352. package/src/platforms/discordbot/index.test.ts +82 -0
  353. package/src/platforms/discordbot/index.ts +27 -9
  354. package/src/platforms/discordbot/listener.test.ts +1002 -0
  355. package/src/platforms/discordbot/listener.ts +321 -0
  356. package/src/platforms/discordbot/types.ts +163 -0
  357. package/src/platforms/instagram/client.test.ts +18 -18
  358. package/src/platforms/instagram/commands/auth.test.ts +11 -11
  359. package/src/platforms/instagram/commands/auth.ts +9 -1
  360. package/src/platforms/instagram/commands/chat.test.ts +6 -6
  361. package/src/platforms/instagram/commands/message.test.ts +11 -11
  362. package/src/platforms/instagram/commands/shared.test.ts +12 -12
  363. package/src/platforms/instagram/commands/whoami.test.ts +3 -3
  364. package/src/platforms/instagram/credential-manager.test.ts +21 -21
  365. package/src/platforms/instagram/ensure-auth.test.ts +4 -4
  366. package/src/platforms/instagram/index.test.ts +9 -9
  367. package/src/platforms/instagram/listener.test.ts +8 -8
  368. package/src/platforms/instagram/token-extractor.test.ts +35 -35
  369. package/src/platforms/instagram/token-extractor.ts +13 -1
  370. package/src/platforms/kakaotalk/client.test.ts +33 -33
  371. package/src/platforms/kakaotalk/commands/auth.test.ts +11 -11
  372. package/src/platforms/kakaotalk/commands/chat.test.ts +6 -6
  373. package/src/platforms/kakaotalk/commands/message.test.ts +7 -7
  374. package/src/platforms/kakaotalk/commands/whoami.test.ts +5 -5
  375. package/src/platforms/kakaotalk/credential-manager.test.ts +15 -15
  376. package/src/platforms/kakaotalk/index.test.ts +15 -15
  377. package/src/platforms/kakaotalk/listener.test.ts +17 -17
  378. package/src/platforms/line/client.test.ts +17 -17
  379. package/src/platforms/line/commands/auth.test.ts +8 -8
  380. package/src/platforms/line/commands/chat.test.ts +7 -7
  381. package/src/platforms/line/commands/friend.test.ts +6 -6
  382. package/src/platforms/line/commands/message.test.ts +7 -7
  383. package/src/platforms/line/commands/whoami.test.ts +6 -6
  384. package/src/platforms/line/credential-manager.test.ts +17 -17
  385. package/src/platforms/line/index.test.ts +10 -10
  386. package/src/platforms/line/listener.test.ts +15 -15
  387. package/src/platforms/line/types.test.ts +14 -14
  388. package/src/platforms/slack/cli.test.ts +8 -8
  389. package/src/platforms/slack/client.test.ts +151 -151
  390. package/src/platforms/slack/commands/activity.test.ts +13 -13
  391. package/src/platforms/slack/commands/auth.test.ts +34 -34
  392. package/src/platforms/slack/commands/auth.ts +11 -2
  393. package/src/platforms/slack/commands/bookmark.test.ts +9 -9
  394. package/src/platforms/slack/commands/channel.test.ts +17 -17
  395. package/src/platforms/slack/commands/drafts.test.ts +7 -7
  396. package/src/platforms/slack/commands/emoji.test.ts +3 -3
  397. package/src/platforms/slack/commands/file.test.ts +12 -12
  398. package/src/platforms/slack/commands/message.test.ts +19 -19
  399. package/src/platforms/slack/commands/pin.test.ts +7 -7
  400. package/src/platforms/slack/commands/reaction.test.ts +10 -10
  401. package/src/platforms/slack/commands/reminder.test.ts +9 -9
  402. package/src/platforms/slack/commands/saved.test.ts +7 -7
  403. package/src/platforms/slack/commands/sections.test.ts +5 -5
  404. package/src/platforms/slack/commands/snapshot.test.ts +13 -13
  405. package/src/platforms/slack/commands/unread.test.ts +6 -6
  406. package/src/platforms/slack/commands/user.test.ts +10 -10
  407. package/src/platforms/slack/commands/usergroup.test.ts +15 -15
  408. package/src/platforms/slack/commands/whoami.test.ts +6 -6
  409. package/src/platforms/slack/commands/workspace.test.ts +26 -26
  410. package/src/platforms/slack/credential-manager.test.ts +14 -14
  411. package/src/platforms/slack/ensure-auth.test.ts +21 -21
  412. package/src/platforms/slack/index.test.ts +12 -12
  413. package/src/platforms/slack/listener.test.ts +17 -17
  414. package/src/platforms/slack/token-extractor-node.test.ts +2 -2
  415. package/src/platforms/slack/token-extractor.test.ts +133 -37
  416. package/src/platforms/slack/token-extractor.ts +76 -13
  417. package/src/platforms/slack/types.test.ts +21 -21
  418. package/src/platforms/slackbot/cli.ts +13 -1
  419. package/src/platforms/slackbot/client.test.ts +296 -22
  420. package/src/platforms/slackbot/client.ts +130 -2
  421. package/src/platforms/slackbot/commands/auth.test.ts +14 -14
  422. package/src/platforms/slackbot/commands/auth.ts +1 -5
  423. package/src/platforms/slackbot/commands/channel.test.ts +7 -7
  424. package/src/platforms/slackbot/commands/file.test.ts +201 -0
  425. package/src/platforms/slackbot/commands/file.ts +212 -0
  426. package/src/platforms/slackbot/commands/index.ts +1 -0
  427. package/src/platforms/slackbot/commands/message.test.ts +13 -13
  428. package/src/platforms/slackbot/commands/message.ts +22 -0
  429. package/src/platforms/slackbot/commands/reaction.test.ts +6 -6
  430. package/src/platforms/slackbot/commands/user.test.ts +7 -7
  431. package/src/platforms/slackbot/commands/whoami.test.ts +4 -4
  432. package/src/platforms/slackbot/commands/whoami.ts +1 -6
  433. package/src/platforms/slackbot/credential-manager.test.ts +83 -23
  434. package/src/platforms/slackbot/credential-manager.ts +32 -2
  435. package/src/platforms/slackbot/index.test.ts +59 -0
  436. package/src/platforms/slackbot/index.ts +31 -7
  437. package/src/platforms/slackbot/listener.test.ts +1012 -0
  438. package/src/platforms/slackbot/listener.ts +362 -0
  439. package/src/platforms/slackbot/types.test.ts +7 -7
  440. package/src/platforms/slackbot/types.ts +224 -1
  441. package/src/platforms/teams/client.test.ts +30 -30
  442. package/src/platforms/teams/commands/auth.test.ts +9 -9
  443. package/src/platforms/teams/commands/auth.ts +66 -7
  444. package/src/platforms/teams/commands/channel.test.ts +7 -7
  445. package/src/platforms/teams/commands/file.test.ts +4 -4
  446. package/src/platforms/teams/commands/message.test.ts +5 -5
  447. package/src/platforms/teams/commands/reaction.test.ts +4 -4
  448. package/src/platforms/teams/commands/snapshot.test.ts +7 -7
  449. package/src/platforms/teams/commands/team.test.ts +8 -8
  450. package/src/platforms/teams/commands/user.test.ts +4 -4
  451. package/src/platforms/teams/commands/whoami.test.ts +6 -6
  452. package/src/platforms/teams/credential-manager.test.ts +17 -17
  453. package/src/platforms/teams/ensure-auth.test.ts +69 -18
  454. package/src/platforms/teams/ensure-auth.ts +39 -11
  455. package/src/platforms/teams/index.test.ts +15 -15
  456. package/src/platforms/teams/token-extractor.test.ts +251 -69
  457. package/src/platforms/teams/token-extractor.ts +94 -31
  458. package/src/platforms/teams/types.test.ts +26 -26
  459. package/src/platforms/telegram/app-config.test.ts +4 -4
  460. package/src/platforms/telegram/chat-utils.test.ts +12 -12
  461. package/src/platforms/telegram/client.test.ts +4 -4
  462. package/src/platforms/telegram/commands/auth.test.ts +16 -16
  463. package/src/platforms/telegram/commands/chat.test.ts +9 -9
  464. package/src/platforms/telegram/commands/message.test.ts +6 -6
  465. package/src/platforms/telegram/commands/shared.test.ts +3 -3
  466. package/src/platforms/telegram/commands/whoami.test.ts +3 -3
  467. package/src/platforms/telegram/credential-manager.test.ts +10 -10
  468. package/src/platforms/telegram/types.test.ts +6 -6
  469. package/src/platforms/webex/app-config.test.ts +8 -8
  470. package/src/platforms/webex/cli.test.ts +5 -5
  471. package/src/platforms/webex/client.test.ts +65 -65
  472. package/src/platforms/webex/commands/auth.test.ts +18 -18
  473. package/src/platforms/webex/commands/auth.ts +13 -2
  474. package/src/platforms/webex/commands/member.test.ts +5 -5
  475. package/src/platforms/webex/commands/message.test.ts +12 -12
  476. package/src/platforms/webex/commands/snapshot.test.ts +5 -5
  477. package/src/platforms/webex/commands/space.test.ts +10 -10
  478. package/src/platforms/webex/commands/whoami.test.ts +6 -6
  479. package/src/platforms/webex/credential-manager.test.ts +22 -22
  480. package/src/platforms/webex/encryption.test.ts +4 -4
  481. package/src/platforms/webex/ensure-auth.test.ts +5 -5
  482. package/src/platforms/webex/index.test.ts +5 -5
  483. package/src/platforms/webex/markdown-to-html.test.ts +33 -33
  484. package/src/platforms/webex/token-extractor.test.ts +23 -23
  485. package/src/platforms/webex/token-extractor.ts +25 -3
  486. package/src/platforms/webex/types.test.ts +27 -27
  487. package/src/platforms/wechatbot/cli.ts +9 -0
  488. package/src/platforms/wechatbot/client.test.ts +27 -27
  489. package/src/platforms/wechatbot/commands/auth.test.ts +15 -15
  490. package/src/platforms/wechatbot/commands/auth.ts +1 -5
  491. package/src/platforms/wechatbot/commands/message.test.ts +8 -8
  492. package/src/platforms/wechatbot/commands/message.ts +1 -6
  493. package/src/platforms/wechatbot/commands/template.test.ts +9 -9
  494. package/src/platforms/wechatbot/commands/template.ts +1 -6
  495. package/src/platforms/wechatbot/commands/user.test.ts +7 -7
  496. package/src/platforms/wechatbot/commands/user.ts +1 -6
  497. package/src/platforms/wechatbot/commands/whoami.test.ts +5 -5
  498. package/src/platforms/wechatbot/commands/whoami.ts +1 -6
  499. package/src/platforms/wechatbot/credential-manager.test.ts +18 -18
  500. package/src/platforms/wechatbot/index.test.ts +10 -10
  501. package/src/platforms/wechatbot/types.test.ts +25 -25
  502. package/src/platforms/whatsapp/commands/auth.test.ts +13 -13
  503. package/src/platforms/whatsapp/commands/chat.test.ts +8 -8
  504. package/src/platforms/whatsapp/commands/message.test.ts +10 -10
  505. package/src/platforms/whatsapp/commands/whoami.test.ts +3 -3
  506. package/src/platforms/whatsapp/credential-manager.test.ts +23 -23
  507. package/src/platforms/whatsapp/ensure-auth.test.ts +4 -4
  508. package/src/platforms/whatsapp/index.test.ts +8 -8
  509. package/src/platforms/whatsapp/types.test.ts +42 -42
  510. package/src/platforms/whatsappbot/cli.ts +9 -0
  511. package/src/platforms/whatsappbot/client.test.ts +27 -27
  512. package/src/platforms/whatsappbot/commands/auth.test.ts +14 -14
  513. package/src/platforms/whatsappbot/commands/auth.ts +1 -5
  514. package/src/platforms/whatsappbot/commands/message.test.ts +16 -16
  515. package/src/platforms/whatsappbot/commands/message.ts +1 -6
  516. package/src/platforms/whatsappbot/commands/template.test.ts +9 -9
  517. package/src/platforms/whatsappbot/commands/template.ts +1 -6
  518. package/src/platforms/whatsappbot/commands/whoami.test.ts +5 -5
  519. package/src/platforms/whatsappbot/commands/whoami.ts +1 -6
  520. package/src/platforms/whatsappbot/credential-manager.test.ts +18 -18
  521. package/src/platforms/whatsappbot/index.test.ts +7 -7
  522. package/src/platforms/whatsappbot/types.test.ts +18 -18
  523. package/src/shared/chromium/browsers.test.ts +102 -22
  524. package/src/shared/chromium/browsers.ts +72 -3
  525. package/src/shared/chromium/cli-options.test.ts +22 -0
  526. package/src/shared/chromium/cli-options.ts +12 -0
  527. package/src/shared/chromium/cookie-reader.test.ts +13 -13
  528. package/src/shared/chromium/decryptor.test.ts +97 -32
  529. package/src/shared/chromium/decryptor.ts +27 -6
  530. package/src/shared/chromium/index.ts +3 -0
  531. package/src/shared/utils/cli-output.test.ts +57 -0
  532. package/src/shared/utils/cli-output.ts +8 -0
  533. package/src/shared/utils/concurrency.test.ts +6 -6
  534. package/src/shared/utils/derived-key-cache.test.ts +11 -11
  535. package/src/tui/app.ts +129 -20
  536. package/src/tui/utils.test.ts +31 -31
@@ -1,4 +1,4 @@
1
- import { afterEach, beforeAll, describe, expect, test } from 'bun:test'
1
+ import { afterEach, beforeAll, describe, expect, it } from 'bun:test'
2
2
 
3
3
  import { CHANNEL_TEST_WORKSPACE_ID, CHANNEL_TEST_WORKSPACE_NAME, validateChannelEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -30,7 +30,7 @@ describe('Channel E2E Tests', () => {
30
30
  })
31
31
 
32
32
  describe('auth', () => {
33
- test('auth status returns valid workspace info', async () => {
33
+ it('auth status returns valid workspace info', async () => {
34
34
  if (!channelAvailable) return
35
35
 
36
36
  const result = await runCLI('channeltalk', ['auth', 'status'])
@@ -44,7 +44,7 @@ describe('Channel E2E Tests', () => {
44
44
  }
45
45
  })
46
46
 
47
- test('auth list shows workspaces', async () => {
47
+ it('auth list shows workspaces', async () => {
48
48
  if (!channelAvailable) return
49
49
 
50
50
  const result = await runCLI('channeltalk', ['auth', 'list'])
@@ -57,7 +57,7 @@ describe('Channel E2E Tests', () => {
57
57
  })
58
58
 
59
59
  describe('group', () => {
60
- test('group list returns groups array', async () => {
60
+ it('group list returns groups array', async () => {
61
61
  if (!channelAvailable) return
62
62
 
63
63
  const result = await runCLI('channeltalk', ['group', 'list', '--limit', '10'])
@@ -68,7 +68,7 @@ describe('Channel E2E Tests', () => {
68
68
  expect(data!.groups.length).toBeGreaterThan(0)
69
69
  })
70
70
 
71
- test('group get returns group details', async () => {
71
+ it('group get returns group details', async () => {
72
72
  if (!channelAvailable) return
73
73
 
74
74
  const result = await runCLI('channeltalk', ['group', 'get', testGroupId])
@@ -79,7 +79,7 @@ describe('Channel E2E Tests', () => {
79
79
  expect(data?.name).toBe(testGroupName)
80
80
  })
81
81
 
82
- test('group messages returns messages array', async () => {
82
+ it('group messages returns messages array', async () => {
83
83
  if (!channelAvailable) return
84
84
 
85
85
  const result = await runCLI('channeltalk', ['group', 'messages', testGroupId, '--limit', '5'])
@@ -91,7 +91,7 @@ describe('Channel E2E Tests', () => {
91
91
  })
92
92
 
93
93
  describe('message', () => {
94
- test('message send creates a group message', async () => {
94
+ it('message send creates a group message', async () => {
95
95
  if (!channelAvailable) return
96
96
 
97
97
  const testId = generateTestId()
@@ -104,7 +104,7 @@ describe('Channel E2E Tests', () => {
104
104
  expect(data?.plain_text).toContain(testId)
105
105
  })
106
106
 
107
- test('message list returns messages from group', async () => {
107
+ it('message list returns messages from group', async () => {
108
108
  if (!channelAvailable) return
109
109
 
110
110
  const result = await runCLI('channeltalk', ['message', 'list', 'group', testGroupId, '--limit', '5'])
@@ -114,7 +114,7 @@ describe('Channel E2E Tests', () => {
114
114
  expect(Array.isArray(data?.messages)).toBe(true)
115
115
  })
116
116
 
117
- test('message get retrieves a specific message', async () => {
117
+ it('message get retrieves a specific message', async () => {
118
118
  if (!channelAvailable) return
119
119
 
120
120
  const testId = generateTestId()
@@ -136,7 +136,7 @@ describe('Channel E2E Tests', () => {
136
136
  })
137
137
 
138
138
  describe('chat', () => {
139
- test('chat list returns user chats array', async () => {
139
+ it('chat list returns user chats array', async () => {
140
140
  if (!channelAvailable) return
141
141
 
142
142
  const result = await runCLI('channeltalk', ['chat', 'list', '--limit', '5'])
@@ -148,7 +148,7 @@ describe('Channel E2E Tests', () => {
148
148
  })
149
149
 
150
150
  describe('manager', () => {
151
- test('manager list returns managers array', async () => {
151
+ it('manager list returns managers array', async () => {
152
152
  if (!channelAvailable) return
153
153
 
154
154
  const result = await runCLI('channeltalk', ['manager', 'list', '--limit', '10'])
@@ -161,7 +161,7 @@ describe('Channel E2E Tests', () => {
161
161
  })
162
162
 
163
163
  describe('bot', () => {
164
- test('bot list returns bots array', async () => {
164
+ it('bot list returns bots array', async () => {
165
165
  if (!channelAvailable) return
166
166
 
167
167
  const result = await runCLI('channeltalk', ['bot', 'list', '--limit', '10'])
@@ -173,7 +173,7 @@ describe('Channel E2E Tests', () => {
173
173
  })
174
174
 
175
175
  describe('snapshot', () => {
176
- test('snapshot returns workspace overview', async () => {
176
+ it('snapshot returns workspace overview', async () => {
177
177
  if (!channelAvailable) return
178
178
 
179
179
  const result = await runCLI('channeltalk', ['snapshot', '--limit', '2'])
@@ -1,4 +1,4 @@
1
- import { afterEach, beforeAll, describe, expect, test } from 'bun:test'
1
+ import { afterEach, beforeAll, describe, expect, it } from 'bun:test'
2
2
 
3
3
  import { CHANNELBOT_TEST_WORKSPACE_ID, CHANNELBOT_TEST_WORKSPACE_NAME, validateChannelBotEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -22,7 +22,7 @@ describe('ChannelBot E2E Tests', () => {
22
22
  })
23
23
 
24
24
  describe('auth', () => {
25
- test('auth status returns valid workspace info', async () => {
25
+ it('auth status returns valid workspace info', async () => {
26
26
  if (!channelbotAvailable) return
27
27
 
28
28
  const result = await runCLI('channeltalkbot', ['auth', 'status'])
@@ -38,7 +38,7 @@ describe('ChannelBot E2E Tests', () => {
38
38
  })
39
39
 
40
40
  describe('group', () => {
41
- test('group list returns groups array', async () => {
41
+ it('group list returns groups array', async () => {
42
42
  if (!channelbotAvailable) return
43
43
 
44
44
  const result = await runCLI('channeltalkbot', ['group', 'list', '--limit', '10'])
@@ -49,7 +49,7 @@ describe('ChannelBot E2E Tests', () => {
49
49
  expect(data!.groups.length).toBeGreaterThan(0)
50
50
  })
51
51
 
52
- test('group get by id returns the target group', async () => {
52
+ it('group get by id returns the target group', async () => {
53
53
  if (!channelbotAvailable) return
54
54
 
55
55
  const result = await runCLI('channeltalkbot', ['group', 'get', testGroupId])
@@ -60,7 +60,7 @@ describe('ChannelBot E2E Tests', () => {
60
60
  expect(data?.name).toBe(testGroupName)
61
61
  })
62
62
 
63
- test('group get by @name returns the target group', async () => {
63
+ it('group get by @name returns the target group', async () => {
64
64
  if (!channelbotAvailable) return
65
65
 
66
66
  const result = await runCLI('channeltalkbot', ['group', 'get', `@${testGroupName}`])
@@ -71,7 +71,7 @@ describe('ChannelBot E2E Tests', () => {
71
71
  expect(data?.name).toBe(testGroupName)
72
72
  })
73
73
 
74
- test('group messages returns messages array', async () => {
74
+ it('group messages returns messages array', async () => {
75
75
  if (!channelbotAvailable) return
76
76
 
77
77
  const result = await runCLI('channeltalkbot', ['group', 'messages', testGroupId, '--limit', '5'])
@@ -83,7 +83,7 @@ describe('ChannelBot E2E Tests', () => {
83
83
  })
84
84
 
85
85
  describe('message', () => {
86
- test('message send creates a group message', async () => {
86
+ it('message send creates a group message', async () => {
87
87
  if (!channelbotAvailable) return
88
88
 
89
89
  const testId = generateTestId()
@@ -96,7 +96,7 @@ describe('ChannelBot E2E Tests', () => {
96
96
  expect(data?.plain_text).toContain(testId)
97
97
  })
98
98
 
99
- test('message list returns messages array', async () => {
99
+ it('message list returns messages array', async () => {
100
100
  if (!channelbotAvailable) return
101
101
 
102
102
  const result = await runCLI('channeltalkbot', ['message', 'list', `@${testGroupName}`, '--limit', '5'])
@@ -106,7 +106,7 @@ describe('ChannelBot E2E Tests', () => {
106
106
  expect(Array.isArray(data?.messages)).toBe(true)
107
107
  })
108
108
 
109
- test('message get retrieves a specific group message', async () => {
109
+ it('message get retrieves a specific group message', async () => {
110
110
  if (!channelbotAvailable) return
111
111
 
112
112
  const testId = generateTestId()
@@ -128,7 +128,7 @@ describe('ChannelBot E2E Tests', () => {
128
128
  })
129
129
 
130
130
  describe('manager', () => {
131
- test('manager list returns managers array', async () => {
131
+ it('manager list returns managers array', async () => {
132
132
  if (!channelbotAvailable) return
133
133
 
134
134
  const result = await runCLI('channeltalkbot', ['manager', 'list', '--limit', '10'])
@@ -139,7 +139,7 @@ describe('ChannelBot E2E Tests', () => {
139
139
  expect(data!.managers.length).toBeGreaterThan(0)
140
140
  })
141
141
 
142
- test('manager get returns manager details', async () => {
142
+ it('manager get returns manager details', async () => {
143
143
  if (!channelbotAvailable) return
144
144
 
145
145
  const listResult = await runCLI('channeltalkbot', ['manager', 'list', '--limit', '1'])
@@ -157,7 +157,7 @@ describe('ChannelBot E2E Tests', () => {
157
157
  })
158
158
 
159
159
  describe('bot', () => {
160
- test('bot list returns bots array', async () => {
160
+ it('bot list returns bots array', async () => {
161
161
  if (!channelbotAvailable) return
162
162
 
163
163
  const result = await runCLI('channeltalkbot', ['bot', 'list', '--limit', '10'])
@@ -170,7 +170,7 @@ describe('ChannelBot E2E Tests', () => {
170
170
  })
171
171
 
172
172
  describe('snapshot', () => {
173
- test('snapshot returns workspace overview', async () => {
173
+ it('snapshot returns workspace overview', async () => {
174
174
  if (!channelbotAvailable) return
175
175
 
176
176
  const result = await runCLI('channeltalkbot', ['snapshot', '--limit', '2'])
package/e2e/config.ts CHANGED
@@ -149,16 +149,21 @@ export async function validateTeamsEnvironment(): Promise<boolean> {
149
149
  return true
150
150
  }
151
151
 
152
- // ChannelBot Test Environment — requires E2E_CHANNELBOT_WORKSPACE_ID to opt-in.
152
+ // ChannelBot Test Environment — requires E2E_CHANNELTALKBOT_WORKSPACE_ID to opt-in.
153
+ // E2E_CHANNELBOT_WORKSPACE_ID is also accepted as a legacy fallback.
153
154
  // The E2E group is auto-discovered by name from the workspace's group list.
154
155
  // Never run against a real business workspace automatically.
155
- export const CHANNELBOT_TEST_WORKSPACE_ID = process.env.E2E_CHANNELBOT_WORKSPACE_ID || ''
156
- export const CHANNELBOT_TEST_WORKSPACE_NAME = process.env.E2E_CHANNELBOT_WORKSPACE_NAME || ''
156
+ export const CHANNELBOT_TEST_WORKSPACE_ID =
157
+ process.env.E2E_CHANNELTALKBOT_WORKSPACE_ID || process.env.E2E_CHANNELBOT_WORKSPACE_ID || ''
158
+ export const CHANNELBOT_TEST_WORKSPACE_NAME =
159
+ process.env.E2E_CHANNELTALKBOT_WORKSPACE_NAME || process.env.E2E_CHANNELBOT_WORKSPACE_NAME || ''
157
160
  export const E2E_GROUP_NAME = 'E2E'
158
161
 
159
162
  export async function validateChannelBotEnvironment(): Promise<{ groupId: string; groupName: string } | null> {
160
163
  if (!CHANNELBOT_TEST_WORKSPACE_ID) {
161
- console.warn('Skipping ChannelBot E2E: set E2E_CHANNELBOT_WORKSPACE_ID to run against a dedicated test workspace.')
164
+ console.warn(
165
+ 'Skipping ChannelBot E2E: set E2E_CHANNELTALKBOT_WORKSPACE_ID to run against a dedicated test workspace.',
166
+ )
162
167
  return null
163
168
  }
164
169
 
@@ -1,4 +1,4 @@
1
- import { describe, test, expect, beforeAll, afterEach } from 'bun:test'
1
+ import { describe, it, expect, beforeAll, afterEach } from 'bun:test'
2
2
 
3
3
  import { DISCORD_TEST_CHANNEL_ID, DISCORD_TEST_SERVER_ID, validateDiscordEnvironment } from './config'
4
4
  import {
@@ -28,7 +28,7 @@ describe('Discord E2E Tests', () => {
28
28
  })
29
29
 
30
30
  describe('auth', () => {
31
- test('auth status returns authenticated status', async () => {
31
+ it('auth status returns authenticated status', async () => {
32
32
  const result = await runCLI('discord', ['auth', 'status'])
33
33
  expect(result.exitCode).toBe(0)
34
34
 
@@ -38,7 +38,7 @@ describe('Discord E2E Tests', () => {
38
38
  })
39
39
 
40
40
  describe('server', () => {
41
- test('server list returns array', async () => {
41
+ it('server list returns array', async () => {
42
42
  const result = await runCLI('discord', ['server', 'list'])
43
43
  expect(result.exitCode).toBe(0)
44
44
 
@@ -46,7 +46,7 @@ describe('Discord E2E Tests', () => {
46
46
  expect(Array.isArray(data)).toBe(true)
47
47
  })
48
48
 
49
- test('server current returns current server', async () => {
49
+ it('server current returns current server', async () => {
50
50
  const result = await runCLI('discord', ['server', 'current'])
51
51
  expect(result.exitCode).toBe(0)
52
52
 
@@ -54,7 +54,7 @@ describe('Discord E2E Tests', () => {
54
54
  expect(data?.server_id).toBe(DISCORD_TEST_SERVER_ID)
55
55
  })
56
56
 
57
- test('server info returns server details', async () => {
57
+ it('server info returns server details', async () => {
58
58
  const result = await runCLI('discord', ['server', 'info', DISCORD_TEST_SERVER_ID])
59
59
  expect(result.exitCode).toBe(0)
60
60
 
@@ -64,7 +64,7 @@ describe('Discord E2E Tests', () => {
64
64
  })
65
65
 
66
66
  describe('message', () => {
67
- test('message send creates message', async () => {
67
+ it('message send creates message', async () => {
68
68
  const testId = generateTestId()
69
69
  const result = await runCLI('discord', ['message', 'send', DISCORD_TEST_CHANNEL_ID, `Test message ${testId}`])
70
70
  expect(result.exitCode).toBe(0)
@@ -75,7 +75,7 @@ describe('Discord E2E Tests', () => {
75
75
  if (data?.id) testMessages.push(data.id)
76
76
  })
77
77
 
78
- test('message list returns messages array', async () => {
78
+ it('message list returns messages array', async () => {
79
79
  const result = await runCLI('discord', ['message', 'list', DISCORD_TEST_CHANNEL_ID, '--limit', '5'])
80
80
  expect(result.exitCode).toBe(0)
81
81
 
@@ -83,7 +83,7 @@ describe('Discord E2E Tests', () => {
83
83
  expect(Array.isArray(data)).toBe(true)
84
84
  })
85
85
 
86
- test.skip('message get retrieves specific message (requires bot token)', async () => {
86
+ it.skip('message get retrieves specific message (requires bot token)', async () => {
87
87
  const testId = generateTestId()
88
88
  const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Get test ${testId}`)
89
89
  testMessages.push(id)
@@ -97,7 +97,7 @@ describe('Discord E2E Tests', () => {
97
97
  expect(data?.content).toContain(testId)
98
98
  })
99
99
 
100
- test('message delete removes message', async () => {
100
+ it('message delete removes message', async () => {
101
101
  const testId = generateTestId()
102
102
  const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Delete me ${testId}`)
103
103
 
@@ -107,7 +107,7 @@ describe('Discord E2E Tests', () => {
107
107
  expect(result.exitCode).toBe(0)
108
108
  })
109
109
 
110
- test('message ack acknowledges message', async () => {
110
+ it('message ack acknowledges message', async () => {
111
111
  const testId = generateTestId()
112
112
  const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Ack test ${testId}`)
113
113
  testMessages.push(id)
@@ -121,7 +121,7 @@ describe('Discord E2E Tests', () => {
121
121
  expect(data?.acknowledged).toBe(id)
122
122
  })
123
123
 
124
- test('message search finds messages', async () => {
124
+ it('message search finds messages', async () => {
125
125
  const result = await runCLI('discord', ['message', 'search', 'test', '--limit', '5'])
126
126
  expect(result.exitCode).toBe(0)
127
127
 
@@ -132,7 +132,7 @@ describe('Discord E2E Tests', () => {
132
132
  })
133
133
 
134
134
  describe('channel', () => {
135
- test('channel list returns channels array', async () => {
135
+ it('channel list returns channels array', async () => {
136
136
  const result = await runCLI('discord', ['channel', 'list'])
137
137
  expect(result.exitCode).toBe(0)
138
138
 
@@ -140,7 +140,7 @@ describe('Discord E2E Tests', () => {
140
140
  expect(Array.isArray(data)).toBe(true)
141
141
  })
142
142
 
143
- test('channel info returns channel details', async () => {
143
+ it('channel info returns channel details', async () => {
144
144
  const result = await runCLI('discord', ['channel', 'info', DISCORD_TEST_CHANNEL_ID])
145
145
  expect(result.exitCode).toBe(0)
146
146
 
@@ -148,7 +148,7 @@ describe('Discord E2E Tests', () => {
148
148
  expect(data?.id).toBe(DISCORD_TEST_CHANNEL_ID)
149
149
  })
150
150
 
151
- test('channel history returns messages', async () => {
151
+ it('channel history returns messages', async () => {
152
152
  const result = await runCLI('discord', ['channel', 'history', DISCORD_TEST_CHANNEL_ID, '--limit', '5'])
153
153
  expect(result.exitCode).toBe(0)
154
154
 
@@ -158,7 +158,7 @@ describe('Discord E2E Tests', () => {
158
158
  })
159
159
 
160
160
  describe('user', () => {
161
- test.skip('user list returns users array (requires bot token)', async () => {
161
+ it.skip('user list returns users array (requires bot token)', async () => {
162
162
  const result = await runCLI('discord', ['user', 'list'])
163
163
  expect(result.exitCode).toBe(0)
164
164
 
@@ -166,7 +166,7 @@ describe('Discord E2E Tests', () => {
166
166
  expect(Array.isArray(data)).toBe(true)
167
167
  })
168
168
 
169
- test('user me returns current user', async () => {
169
+ it('user me returns current user', async () => {
170
170
  const result = await runCLI('discord', ['user', 'me'])
171
171
  expect(result.exitCode).toBe(0)
172
172
 
@@ -175,7 +175,7 @@ describe('Discord E2E Tests', () => {
175
175
  expect(data?.username).toBeTruthy()
176
176
  })
177
177
 
178
- test('user info returns user details', async () => {
178
+ it('user info returns user details', async () => {
179
179
  // First get current user ID
180
180
  const meResult = await runCLI('discord', ['user', 'me'])
181
181
  expect(meResult.exitCode).toBe(0)
@@ -194,7 +194,7 @@ describe('Discord E2E Tests', () => {
194
194
  })
195
195
 
196
196
  describe('reaction', () => {
197
- test.skip('reaction add/list/remove lifecycle (requires bot token)', async () => {
197
+ it.skip('reaction add/list/remove lifecycle (requires bot token)', async () => {
198
198
  const testId = generateTestId()
199
199
  const { id } = await createTestMessage('discord', DISCORD_TEST_CHANNEL_ID, `Reaction test ${testId}`)
200
200
  testMessages.push(id)
@@ -220,7 +220,7 @@ describe('Discord E2E Tests', () => {
220
220
  })
221
221
 
222
222
  describe('file', () => {
223
- test('file list returns files array', async () => {
223
+ it('file list returns files array', async () => {
224
224
  const result = await runCLI('discord', ['file', 'list', DISCORD_TEST_CHANNEL_ID])
225
225
  expect(result.exitCode).toBe(0)
226
226
 
@@ -228,7 +228,7 @@ describe('Discord E2E Tests', () => {
228
228
  expect(Array.isArray(data)).toBe(true)
229
229
  })
230
230
 
231
- test('file upload uploads file and file info retrieves it', async () => {
231
+ it('file upload uploads file and file info retrieves it', async () => {
232
232
  const testId = generateTestId()
233
233
  const testFilePath = `/tmp/discord-e2e-${testId}.txt`
234
234
  await Bun.write(testFilePath, `Discord E2E test file ${testId}`)
@@ -254,7 +254,7 @@ describe('Discord E2E Tests', () => {
254
254
  }
255
255
  })
256
256
 
257
- test('file info retrieves file details', async () => {
257
+ it('file info retrieves file details', async () => {
258
258
  // List files first to get a file ID
259
259
  const listResult = await runCLI('discord', ['file', 'list', DISCORD_TEST_CHANNEL_ID])
260
260
  expect(listResult.exitCode).toBe(0)
@@ -273,7 +273,7 @@ describe('Discord E2E Tests', () => {
273
273
  })
274
274
 
275
275
  describe('snapshot', () => {
276
- test.skip('snapshot returns full server data (requires bot token)', async () => {
276
+ it.skip('snapshot returns full server data (requires bot token)', async () => {
277
277
  const result = await runCLI('discord', ['snapshot', '--limit', '2'])
278
278
  expect(result.exitCode).toBe(0)
279
279
 
@@ -282,7 +282,7 @@ describe('Discord E2E Tests', () => {
282
282
  expect(data?.users).toBeDefined()
283
283
  })
284
284
 
285
- test('snapshot --channels-only returns only channels', async () => {
285
+ it('snapshot --channels-only returns only channels', async () => {
286
286
  const result = await runCLI('discord', ['snapshot', '--channels-only'])
287
287
  expect(result.exitCode).toBe(0)
288
288
 
@@ -290,7 +290,7 @@ describe('Discord E2E Tests', () => {
290
290
  expect(data?.channels).toBeDefined()
291
291
  })
292
292
 
293
- test.skip('snapshot --users-only returns only users (requires bot token)', async () => {
293
+ it.skip('snapshot --users-only returns only users (requires bot token)', async () => {
294
294
  const result = await runCLI('discord', ['snapshot', '--users-only'])
295
295
  expect(result.exitCode).toBe(0)
296
296
 
@@ -1,4 +1,4 @@
1
- import { describe, test, expect, beforeAll, afterEach } from 'bun:test'
1
+ import { describe, it, expect, beforeAll, afterEach } from 'bun:test'
2
2
 
3
3
  import { DiscordBotClient } from '../src/platforms/discordbot/client'
4
4
  import { DiscordBotCredentialManager } from '../src/platforms/discordbot/credential-manager'
@@ -55,7 +55,7 @@ describe('DiscordBot E2E Tests', () => {
55
55
  })
56
56
 
57
57
  describe('auth', () => {
58
- test('auth status returns valid bot info', async () => {
58
+ it('auth status returns valid bot info', async () => {
59
59
  const result = await runCLI('discordbot', ['auth', 'status'])
60
60
  expect(result.exitCode).toBe(0)
61
61
 
@@ -72,7 +72,7 @@ describe('DiscordBot E2E Tests', () => {
72
72
  })
73
73
 
74
74
  describe('message', () => {
75
- test('message send creates message and returns id', async () => {
75
+ it('message send creates message and returns id', async () => {
76
76
  const testId = generateTestId()
77
77
  const result = await runCLI('discordbot', ['message', 'send', DISCORDBOT_TEST_CHANNEL_ID, `Bot test ${testId}`])
78
78
  expect(result.exitCode).toBe(0)
@@ -84,7 +84,7 @@ describe('DiscordBot E2E Tests', () => {
84
84
  if (data?.id) trackMessage(data.id)
85
85
  })
86
86
 
87
- test('message list returns messages array', async () => {
87
+ it('message list returns messages array', async () => {
88
88
  const result = await runCLI('discordbot', ['message', 'list', DISCORDBOT_TEST_CHANNEL_ID, '--limit', '5'])
89
89
  expect(result.exitCode).toBe(0)
90
90
 
@@ -92,7 +92,7 @@ describe('DiscordBot E2E Tests', () => {
92
92
  expect(Array.isArray(data?.messages)).toBe(true)
93
93
  })
94
94
 
95
- test('message get retrieves specific message', async () => {
95
+ it('message get retrieves specific message', async () => {
96
96
  const testId = generateTestId()
97
97
  const sendResult = await runCLI('discordbot', [
98
98
  'message',
@@ -114,7 +114,7 @@ describe('DiscordBot E2E Tests', () => {
114
114
  expect(data?.id).toBe(sent!.id)
115
115
  })
116
116
 
117
- test('message update modifies message', async () => {
117
+ it('message update modifies message', async () => {
118
118
  const testId = generateTestId()
119
119
  const sendResult = await runCLI('discordbot', [
120
120
  'message',
@@ -144,7 +144,7 @@ describe('DiscordBot E2E Tests', () => {
144
144
  expect(data?.content).toContain('Updated')
145
145
  })
146
146
 
147
- test('message delete removes message', async () => {
147
+ it('message delete removes message', async () => {
148
148
  const testId = generateTestId()
149
149
  const sendResult = await runCLI('discordbot', [
150
150
  'message',
@@ -161,7 +161,7 @@ describe('DiscordBot E2E Tests', () => {
161
161
  expect(result.exitCode).toBe(0)
162
162
  })
163
163
 
164
- test('message send with --thread creates reply', async () => {
164
+ it('message send with --thread creates reply', async () => {
165
165
  const testId = generateTestId()
166
166
  const sendResult = await runCLI('discordbot', ['message', 'send', DISCORDBOT_TEST_CHANNEL_ID, `Parent ${testId}`])
167
167
  const parent = parseJSON<{ id: string }>(sendResult.stdout)
@@ -187,7 +187,7 @@ describe('DiscordBot E2E Tests', () => {
187
187
  if (reply?.id) trackMessage(reply.id, replyChannel)
188
188
  }, 30000)
189
189
 
190
- test('message replies gets thread messages', async () => {
190
+ it('message replies gets thread messages', async () => {
191
191
  const testId = generateTestId()
192
192
 
193
193
  // given: create a real thread channel
@@ -226,7 +226,7 @@ describe('DiscordBot E2E Tests', () => {
226
226
  })
227
227
 
228
228
  describe('channel', () => {
229
- test('channel list returns channels array', async () => {
229
+ it('channel list returns channels array', async () => {
230
230
  const result = await runCLI('discordbot', ['channel', 'list'])
231
231
  expect(result.exitCode).toBe(0)
232
232
 
@@ -235,7 +235,7 @@ describe('DiscordBot E2E Tests', () => {
235
235
  expect(data!.channels.length).toBeGreaterThan(0)
236
236
  })
237
237
 
238
- test('channel info returns channel details', async () => {
238
+ it('channel info returns channel details', async () => {
239
239
  const result = await runCLI('discordbot', ['channel', 'info', DISCORDBOT_TEST_CHANNEL_ID])
240
240
  expect(result.exitCode).toBe(0)
241
241
 
@@ -246,7 +246,7 @@ describe('DiscordBot E2E Tests', () => {
246
246
  })
247
247
 
248
248
  describe('user', () => {
249
- test('user list returns users array', async () => {
249
+ it('user list returns users array', async () => {
250
250
  const result = await runCLI('discordbot', ['user', 'list'])
251
251
  expect(result.exitCode).toBe(0)
252
252
 
@@ -255,7 +255,7 @@ describe('DiscordBot E2E Tests', () => {
255
255
  expect(data!.users.length).toBeGreaterThan(0)
256
256
  })
257
257
 
258
- test('user info returns user details', async () => {
258
+ it('user info returns user details', async () => {
259
259
  // given: get the bot's own user_id via auth status
260
260
  const statusResult = await runCLI('discordbot', ['auth', 'status'])
261
261
  const status = parseJSON<{ bot_id: string }>(statusResult.stdout)
@@ -273,7 +273,7 @@ describe('DiscordBot E2E Tests', () => {
273
273
  })
274
274
 
275
275
  describe('reaction', () => {
276
- test('reaction add and remove lifecycle', async () => {
276
+ it('reaction add and remove lifecycle', async () => {
277
277
  // given: a message to react to
278
278
  const testId = generateTestId()
279
279
  const sendResult = await runCLI('discordbot', [
@@ -313,7 +313,7 @@ describe('DiscordBot E2E Tests', () => {
313
313
  })
314
314
 
315
315
  describe('server', () => {
316
- test('server list returns servers array', async () => {
316
+ it('server list returns servers array', async () => {
317
317
  const result = await runCLI('discordbot', ['server', 'list'])
318
318
  expect(result.exitCode).toBe(0)
319
319
 
@@ -322,7 +322,7 @@ describe('DiscordBot E2E Tests', () => {
322
322
  expect(data!.servers.length).toBeGreaterThan(0)
323
323
  })
324
324
 
325
- test('server current returns current server', async () => {
325
+ it('server current returns current server', async () => {
326
326
  const result = await runCLI('discordbot', ['server', 'current'])
327
327
  expect(result.exitCode).toBe(0)
328
328