agent-messenger 2.10.1 → 2.10.2

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 (239) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
  4. package/dist/src/platforms/teams/token-extractor.js +9 -2
  5. package/dist/src/platforms/teams/token-extractor.js.map +1 -1
  6. package/dist/src/shared/chromium/decryptor.d.ts +6 -0
  7. package/dist/src/shared/chromium/decryptor.d.ts.map +1 -1
  8. package/dist/src/shared/chromium/decryptor.js +26 -6
  9. package/dist/src/shared/chromium/decryptor.js.map +1 -1
  10. package/e2e/channeltalk.e2e.test.ts +13 -13
  11. package/e2e/channeltalkbot.e2e.test.ts +13 -13
  12. package/e2e/discord.e2e.test.ts +24 -24
  13. package/e2e/discordbot.e2e.test.ts +16 -16
  14. package/e2e/instagram.e2e.test.ts +10 -10
  15. package/e2e/kakaotalk.e2e.test.ts +7 -7
  16. package/e2e/line.e2e.test.ts +8 -8
  17. package/e2e/slack.e2e.test.ts +34 -34
  18. package/e2e/slackbot.e2e.test.ts +14 -14
  19. package/e2e/teams.e2e.test.ts +23 -23
  20. package/e2e/telegram.e2e.test.ts +8 -8
  21. package/e2e/webex.e2e.test.ts +14 -14
  22. package/e2e/whatsapp.e2e.test.ts +8 -8
  23. package/e2e/whatsappbot.e2e.test.ts +6 -6
  24. package/package.json +1 -1
  25. package/skills/agent-channeltalk/SKILL.md +1 -1
  26. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  27. package/skills/agent-discord/SKILL.md +1 -1
  28. package/skills/agent-discordbot/SKILL.md +1 -1
  29. package/skills/agent-instagram/SKILL.md +1 -1
  30. package/skills/agent-kakaotalk/SKILL.md +1 -1
  31. package/skills/agent-line/SKILL.md +1 -1
  32. package/skills/agent-slack/SKILL.md +1 -1
  33. package/skills/agent-slackbot/SKILL.md +1 -1
  34. package/skills/agent-teams/SKILL.md +1 -1
  35. package/skills/agent-telegram/SKILL.md +1 -1
  36. package/skills/agent-webex/SKILL.md +1 -1
  37. package/skills/agent-wechatbot/SKILL.md +1 -1
  38. package/skills/agent-whatsapp/SKILL.md +1 -1
  39. package/skills/agent-whatsappbot/SKILL.md +1 -1
  40. package/src/platforms/channeltalk/client.test.ts +26 -26
  41. package/src/platforms/channeltalk/commands/auth.test.ts +16 -16
  42. package/src/platforms/channeltalk/commands/bot.test.ts +2 -2
  43. package/src/platforms/channeltalk/commands/chat.test.ts +3 -3
  44. package/src/platforms/channeltalk/commands/group.test.ts +4 -4
  45. package/src/platforms/channeltalk/commands/manager.test.ts +2 -2
  46. package/src/platforms/channeltalk/commands/message.test.ts +17 -17
  47. package/src/platforms/channeltalk/commands/snapshot.test.ts +7 -7
  48. package/src/platforms/channeltalk/commands/whoami.test.ts +3 -3
  49. package/src/platforms/channeltalk/credential-manager.test.ts +18 -18
  50. package/src/platforms/channeltalk/ensure-auth.test.ts +5 -5
  51. package/src/platforms/channeltalk/index.test.ts +23 -23
  52. package/src/platforms/channeltalk/token-extractor.test.ts +21 -21
  53. package/src/platforms/channeltalk/types.test.ts +12 -12
  54. package/src/platforms/channeltalkbot/client.test.ts +14 -14
  55. package/src/platforms/channeltalkbot/commands/auth.test.ts +16 -16
  56. package/src/platforms/channeltalkbot/commands/bot.test.ts +6 -6
  57. package/src/platforms/channeltalkbot/commands/chat.test.ts +9 -9
  58. package/src/platforms/channeltalkbot/commands/group.test.ts +6 -6
  59. package/src/platforms/channeltalkbot/commands/manager.test.ts +3 -3
  60. package/src/platforms/channeltalkbot/commands/message.test.ts +10 -10
  61. package/src/platforms/channeltalkbot/commands/snapshot.test.ts +7 -7
  62. package/src/platforms/channeltalkbot/commands/whoami.test.ts +4 -4
  63. package/src/platforms/channeltalkbot/credential-manager.test.ts +27 -27
  64. package/src/platforms/channeltalkbot/index.test.ts +15 -15
  65. package/src/platforms/discord/client.test.ts +28 -28
  66. package/src/platforms/discord/commands/auth.test.ts +7 -7
  67. package/src/platforms/discord/commands/channel.test.ts +7 -7
  68. package/src/platforms/discord/commands/dm.test.ts +4 -4
  69. package/src/platforms/discord/commands/file.test.ts +4 -4
  70. package/src/platforms/discord/commands/friend.test.ts +6 -6
  71. package/src/platforms/discord/commands/member.test.ts +5 -5
  72. package/src/platforms/discord/commands/mention.test.ts +5 -5
  73. package/src/platforms/discord/commands/message.test.ts +9 -9
  74. package/src/platforms/discord/commands/note.test.ts +6 -6
  75. package/src/platforms/discord/commands/profile.test.ts +4 -4
  76. package/src/platforms/discord/commands/reaction.test.ts +5 -5
  77. package/src/platforms/discord/commands/server.test.ts +7 -7
  78. package/src/platforms/discord/commands/snapshot.test.ts +6 -6
  79. package/src/platforms/discord/commands/thread.test.ts +6 -6
  80. package/src/platforms/discord/commands/user.test.ts +5 -5
  81. package/src/platforms/discord/commands/whoami.test.ts +6 -6
  82. package/src/platforms/discord/credential-manager.test.ts +16 -16
  83. package/src/platforms/discord/ensure-auth.test.ts +8 -8
  84. package/src/platforms/discord/index.test.ts +17 -17
  85. package/src/platforms/discord/listener.test.ts +33 -33
  86. package/src/platforms/discord/token-extractor.test.ts +53 -53
  87. package/src/platforms/discord/types.test.ts +26 -26
  88. package/src/platforms/discordbot/client.test.ts +31 -31
  89. package/src/platforms/discordbot/commands/auth.test.ts +18 -18
  90. package/src/platforms/discordbot/commands/channel.test.ts +11 -11
  91. package/src/platforms/discordbot/commands/file.test.ts +7 -7
  92. package/src/platforms/discordbot/commands/message.test.ts +25 -25
  93. package/src/platforms/discordbot/commands/reaction.test.ts +6 -6
  94. package/src/platforms/discordbot/commands/server.test.ts +12 -12
  95. package/src/platforms/discordbot/commands/snapshot.test.ts +13 -13
  96. package/src/platforms/discordbot/commands/thread.test.ts +10 -10
  97. package/src/platforms/discordbot/commands/user.test.ts +9 -9
  98. package/src/platforms/discordbot/commands/whoami.test.ts +4 -4
  99. package/src/platforms/discordbot/credential-manager.test.ts +28 -28
  100. package/src/platforms/instagram/client.test.ts +18 -18
  101. package/src/platforms/instagram/commands/auth.test.ts +11 -11
  102. package/src/platforms/instagram/commands/chat.test.ts +6 -6
  103. package/src/platforms/instagram/commands/message.test.ts +11 -11
  104. package/src/platforms/instagram/commands/shared.test.ts +12 -12
  105. package/src/platforms/instagram/commands/whoami.test.ts +3 -3
  106. package/src/platforms/instagram/credential-manager.test.ts +21 -21
  107. package/src/platforms/instagram/ensure-auth.test.ts +4 -4
  108. package/src/platforms/instagram/index.test.ts +9 -9
  109. package/src/platforms/instagram/listener.test.ts +8 -8
  110. package/src/platforms/instagram/token-extractor.test.ts +35 -35
  111. package/src/platforms/kakaotalk/client.test.ts +33 -33
  112. package/src/platforms/kakaotalk/commands/auth.test.ts +11 -11
  113. package/src/platforms/kakaotalk/commands/chat.test.ts +6 -6
  114. package/src/platforms/kakaotalk/commands/message.test.ts +7 -7
  115. package/src/platforms/kakaotalk/commands/whoami.test.ts +5 -5
  116. package/src/platforms/kakaotalk/credential-manager.test.ts +15 -15
  117. package/src/platforms/kakaotalk/index.test.ts +15 -15
  118. package/src/platforms/kakaotalk/listener.test.ts +17 -17
  119. package/src/platforms/line/client.test.ts +17 -17
  120. package/src/platforms/line/commands/auth.test.ts +8 -8
  121. package/src/platforms/line/commands/chat.test.ts +7 -7
  122. package/src/platforms/line/commands/friend.test.ts +6 -6
  123. package/src/platforms/line/commands/message.test.ts +7 -7
  124. package/src/platforms/line/commands/whoami.test.ts +6 -6
  125. package/src/platforms/line/credential-manager.test.ts +17 -17
  126. package/src/platforms/line/index.test.ts +10 -10
  127. package/src/platforms/line/listener.test.ts +15 -15
  128. package/src/platforms/line/types.test.ts +14 -14
  129. package/src/platforms/slack/cli.test.ts +8 -8
  130. package/src/platforms/slack/client.test.ts +151 -151
  131. package/src/platforms/slack/commands/activity.test.ts +13 -13
  132. package/src/platforms/slack/commands/auth.test.ts +34 -34
  133. package/src/platforms/slack/commands/bookmark.test.ts +9 -9
  134. package/src/platforms/slack/commands/channel.test.ts +17 -17
  135. package/src/platforms/slack/commands/drafts.test.ts +7 -7
  136. package/src/platforms/slack/commands/emoji.test.ts +3 -3
  137. package/src/platforms/slack/commands/file.test.ts +12 -12
  138. package/src/platforms/slack/commands/message.test.ts +19 -19
  139. package/src/platforms/slack/commands/pin.test.ts +7 -7
  140. package/src/platforms/slack/commands/reaction.test.ts +10 -10
  141. package/src/platforms/slack/commands/reminder.test.ts +9 -9
  142. package/src/platforms/slack/commands/saved.test.ts +7 -7
  143. package/src/platforms/slack/commands/sections.test.ts +5 -5
  144. package/src/platforms/slack/commands/snapshot.test.ts +13 -13
  145. package/src/platforms/slack/commands/unread.test.ts +6 -6
  146. package/src/platforms/slack/commands/user.test.ts +10 -10
  147. package/src/platforms/slack/commands/usergroup.test.ts +15 -15
  148. package/src/platforms/slack/commands/whoami.test.ts +6 -6
  149. package/src/platforms/slack/commands/workspace.test.ts +26 -26
  150. package/src/platforms/slack/credential-manager.test.ts +14 -14
  151. package/src/platforms/slack/ensure-auth.test.ts +21 -21
  152. package/src/platforms/slack/index.test.ts +12 -12
  153. package/src/platforms/slack/listener.test.ts +17 -17
  154. package/src/platforms/slack/token-extractor-node.test.ts +2 -2
  155. package/src/platforms/slack/token-extractor.test.ts +37 -37
  156. package/src/platforms/slack/types.test.ts +21 -21
  157. package/src/platforms/slackbot/client.test.ts +22 -22
  158. package/src/platforms/slackbot/commands/auth.test.ts +14 -14
  159. package/src/platforms/slackbot/commands/channel.test.ts +7 -7
  160. package/src/platforms/slackbot/commands/message.test.ts +13 -13
  161. package/src/platforms/slackbot/commands/reaction.test.ts +6 -6
  162. package/src/platforms/slackbot/commands/user.test.ts +7 -7
  163. package/src/platforms/slackbot/commands/whoami.test.ts +4 -4
  164. package/src/platforms/slackbot/credential-manager.test.ts +22 -22
  165. package/src/platforms/slackbot/types.test.ts +7 -7
  166. package/src/platforms/teams/client.test.ts +30 -30
  167. package/src/platforms/teams/commands/auth.test.ts +8 -8
  168. package/src/platforms/teams/commands/channel.test.ts +7 -7
  169. package/src/platforms/teams/commands/file.test.ts +4 -4
  170. package/src/platforms/teams/commands/message.test.ts +5 -5
  171. package/src/platforms/teams/commands/reaction.test.ts +4 -4
  172. package/src/platforms/teams/commands/snapshot.test.ts +7 -7
  173. package/src/platforms/teams/commands/team.test.ts +8 -8
  174. package/src/platforms/teams/commands/user.test.ts +4 -4
  175. package/src/platforms/teams/commands/whoami.test.ts +6 -6
  176. package/src/platforms/teams/credential-manager.test.ts +17 -17
  177. package/src/platforms/teams/ensure-auth.test.ts +13 -13
  178. package/src/platforms/teams/index.test.ts +15 -15
  179. package/src/platforms/teams/token-extractor.test.ts +109 -49
  180. package/src/platforms/teams/token-extractor.ts +7 -2
  181. package/src/platforms/teams/types.test.ts +26 -26
  182. package/src/platforms/telegram/app-config.test.ts +4 -4
  183. package/src/platforms/telegram/chat-utils.test.ts +12 -12
  184. package/src/platforms/telegram/client.test.ts +4 -4
  185. package/src/platforms/telegram/commands/auth.test.ts +16 -16
  186. package/src/platforms/telegram/commands/chat.test.ts +9 -9
  187. package/src/platforms/telegram/commands/message.test.ts +6 -6
  188. package/src/platforms/telegram/commands/shared.test.ts +3 -3
  189. package/src/platforms/telegram/commands/whoami.test.ts +3 -3
  190. package/src/platforms/telegram/credential-manager.test.ts +10 -10
  191. package/src/platforms/telegram/types.test.ts +6 -6
  192. package/src/platforms/webex/app-config.test.ts +8 -8
  193. package/src/platforms/webex/cli.test.ts +5 -5
  194. package/src/platforms/webex/client.test.ts +65 -65
  195. package/src/platforms/webex/commands/auth.test.ts +18 -18
  196. package/src/platforms/webex/commands/member.test.ts +5 -5
  197. package/src/platforms/webex/commands/message.test.ts +12 -12
  198. package/src/platforms/webex/commands/snapshot.test.ts +5 -5
  199. package/src/platforms/webex/commands/space.test.ts +10 -10
  200. package/src/platforms/webex/commands/whoami.test.ts +6 -6
  201. package/src/platforms/webex/credential-manager.test.ts +22 -22
  202. package/src/platforms/webex/encryption.test.ts +4 -4
  203. package/src/platforms/webex/ensure-auth.test.ts +5 -5
  204. package/src/platforms/webex/index.test.ts +5 -5
  205. package/src/platforms/webex/markdown-to-html.test.ts +33 -33
  206. package/src/platforms/webex/token-extractor.test.ts +23 -23
  207. package/src/platforms/webex/types.test.ts +27 -27
  208. package/src/platforms/wechatbot/client.test.ts +27 -27
  209. package/src/platforms/wechatbot/commands/auth.test.ts +15 -15
  210. package/src/platforms/wechatbot/commands/message.test.ts +8 -8
  211. package/src/platforms/wechatbot/commands/template.test.ts +9 -9
  212. package/src/platforms/wechatbot/commands/user.test.ts +7 -7
  213. package/src/platforms/wechatbot/commands/whoami.test.ts +5 -5
  214. package/src/platforms/wechatbot/credential-manager.test.ts +18 -18
  215. package/src/platforms/wechatbot/index.test.ts +10 -10
  216. package/src/platforms/wechatbot/types.test.ts +25 -25
  217. package/src/platforms/whatsapp/commands/auth.test.ts +13 -13
  218. package/src/platforms/whatsapp/commands/chat.test.ts +8 -8
  219. package/src/platforms/whatsapp/commands/message.test.ts +10 -10
  220. package/src/platforms/whatsapp/commands/whoami.test.ts +3 -3
  221. package/src/platforms/whatsapp/credential-manager.test.ts +23 -23
  222. package/src/platforms/whatsapp/ensure-auth.test.ts +4 -4
  223. package/src/platforms/whatsapp/index.test.ts +8 -8
  224. package/src/platforms/whatsapp/types.test.ts +42 -42
  225. package/src/platforms/whatsappbot/client.test.ts +27 -27
  226. package/src/platforms/whatsappbot/commands/auth.test.ts +14 -14
  227. package/src/platforms/whatsappbot/commands/message.test.ts +16 -16
  228. package/src/platforms/whatsappbot/commands/template.test.ts +9 -9
  229. package/src/platforms/whatsappbot/commands/whoami.test.ts +5 -5
  230. package/src/platforms/whatsappbot/credential-manager.test.ts +18 -18
  231. package/src/platforms/whatsappbot/index.test.ts +7 -7
  232. package/src/platforms/whatsappbot/types.test.ts +18 -18
  233. package/src/shared/chromium/browsers.test.ts +22 -22
  234. package/src/shared/chromium/cookie-reader.test.ts +13 -13
  235. package/src/shared/chromium/decryptor.test.ts +97 -32
  236. package/src/shared/chromium/decryptor.ts +27 -6
  237. package/src/shared/utils/concurrency.test.ts +6 -6
  238. package/src/shared/utils/derived-key-cache.test.ts +11 -11
  239. package/src/tui/utils.test.ts +31 -31
@@ -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 { SlackBotClient } from '../src/platforms/slackbot/client'
4
4
  import { SlackBotCredentialManager } from '../src/platforms/slackbot/credential-manager'
@@ -48,7 +48,7 @@ describe('SlackBot E2E Tests', () => {
48
48
  })
49
49
 
50
50
  describe('auth', () => {
51
- test('auth status returns valid bot info', async () => {
51
+ it('auth status returns valid bot info', async () => {
52
52
  const result = await runCLI('slackbot', ['auth', 'status'])
53
53
  expect(result.exitCode).toBe(0)
54
54
 
@@ -67,7 +67,7 @@ describe('SlackBot E2E Tests', () => {
67
67
  })
68
68
 
69
69
  describe('message', () => {
70
- test('message send creates message and returns ts', async () => {
70
+ it('message send creates message and returns ts', async () => {
71
71
  const testId = generateTestId()
72
72
  const result = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Bot test ${testId}`])
73
73
  expect(result.exitCode).toBe(0)
@@ -79,7 +79,7 @@ describe('SlackBot E2E Tests', () => {
79
79
  if (data?.ts) testMessages.push(data.ts)
80
80
  })
81
81
 
82
- test('message list returns messages array', async () => {
82
+ it('message list returns messages array', async () => {
83
83
  const result = await runCLI('slackbot', ['message', 'list', SLACKBOT_TEST_CHANNEL_ID, '--limit', '5'])
84
84
  expect(result.exitCode).toBe(0)
85
85
 
@@ -87,7 +87,7 @@ describe('SlackBot E2E Tests', () => {
87
87
  expect(Array.isArray(data)).toBe(true)
88
88
  })
89
89
 
90
- test('message get retrieves specific message', async () => {
90
+ it('message get retrieves specific message', async () => {
91
91
  const testId = generateTestId()
92
92
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Get test ${testId}`])
93
93
  const sent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -104,7 +104,7 @@ describe('SlackBot E2E Tests', () => {
104
104
  expect(data?.ts).toBe(sent!.ts)
105
105
  })
106
106
 
107
- test('message update modifies message', async () => {
107
+ it('message update modifies message', async () => {
108
108
  const testId = generateTestId()
109
109
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Original ${testId}`])
110
110
  const sent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -129,7 +129,7 @@ describe('SlackBot E2E Tests', () => {
129
129
  expect(data?.text).toContain('Updated')
130
130
  })
131
131
 
132
- test('message delete removes message', async () => {
132
+ it('message delete removes message', async () => {
133
133
  const testId = generateTestId()
134
134
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Delete me ${testId}`])
135
135
  const sent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -144,7 +144,7 @@ describe('SlackBot E2E Tests', () => {
144
144
  expect(data?.deleted).toBe(sent!.ts)
145
145
  })
146
146
 
147
- test('message send with --thread creates reply', async () => {
147
+ it('message send with --thread creates reply', async () => {
148
148
  const testId = generateTestId()
149
149
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Parent ${testId}`])
150
150
  const parent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -169,7 +169,7 @@ describe('SlackBot E2E Tests', () => {
169
169
  if (reply?.ts) testMessages.push(reply.ts)
170
170
  }, 30000)
171
171
 
172
- test('message replies gets thread replies', async () => {
172
+ it('message replies gets thread replies', async () => {
173
173
  const testId = generateTestId()
174
174
  const sendResult = await runCLI('slackbot', [
175
175
  'message',
@@ -207,7 +207,7 @@ describe('SlackBot E2E Tests', () => {
207
207
  })
208
208
 
209
209
  describe('channel', () => {
210
- test('channel list returns channels array', async () => {
210
+ it('channel list returns channels array', async () => {
211
211
  const result = await runCLI('slackbot', ['channel', 'list', '--limit', '10'])
212
212
  expect(result.exitCode).toBe(0)
213
213
 
@@ -216,7 +216,7 @@ describe('SlackBot E2E Tests', () => {
216
216
  expect(data!.length).toBeGreaterThan(0)
217
217
  })
218
218
 
219
- test('channel info returns channel details', async () => {
219
+ it('channel info returns channel details', async () => {
220
220
  const result = await runCLI('slackbot', ['channel', 'info', SLACKBOT_TEST_CHANNEL_ID])
221
221
  expect(result.exitCode).toBe(0)
222
222
 
@@ -227,7 +227,7 @@ describe('SlackBot E2E Tests', () => {
227
227
  })
228
228
 
229
229
  describe('user', () => {
230
- test('user list returns users array', async () => {
230
+ it('user list returns users array', async () => {
231
231
  const result = await runCLI('slackbot', ['user', 'list', '--limit', '10'])
232
232
  expect(result.exitCode).toBe(0)
233
233
 
@@ -236,7 +236,7 @@ describe('SlackBot E2E Tests', () => {
236
236
  expect(data!.length).toBeGreaterThan(0)
237
237
  })
238
238
 
239
- test('user info returns user details', async () => {
239
+ it('user info returns user details', async () => {
240
240
  // given: get the bot's own user_id via auth status
241
241
  const statusResult = await runCLI('slackbot', ['auth', 'status'])
242
242
  const status = parseJSON<{ bot_id: string; user: string }>(statusResult.stdout)
@@ -262,7 +262,7 @@ describe('SlackBot E2E Tests', () => {
262
262
  })
263
263
 
264
264
  describe('reaction', () => {
265
- test('reaction add and remove lifecycle', async () => {
265
+ it('reaction add and remove lifecycle', async () => {
266
266
  // given: a message to react to
267
267
  const testId = generateTestId()
268
268
  const sendResult = await runCLI('slackbot', [
@@ -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 { TEAMS_TEST_CHANNEL_ID, TEAMS_TEST_TEAM_ID, validateTeamsEnvironment } from './config'
4
4
  import { runCLI, parseJSON, generateTestId, waitForRateLimit } from './helpers'
@@ -41,7 +41,7 @@ describe('Teams E2E Tests', () => {
41
41
  })
42
42
 
43
43
  describe('auth', () => {
44
- test('auth status returns authenticated team info', async () => {
44
+ it('auth status returns authenticated team info', async () => {
45
45
  if (!teamsAvailable) return
46
46
 
47
47
  const result = await runCLI('teams', ['auth', 'status'])
@@ -56,7 +56,7 @@ describe('Teams E2E Tests', () => {
56
56
  })
57
57
 
58
58
  describe('team', () => {
59
- test('team list returns array', async () => {
59
+ it('team list returns array', async () => {
60
60
  if (!teamsAvailable) return
61
61
 
62
62
  const result = await runCLI('teams', ['team', 'list'])
@@ -66,7 +66,7 @@ describe('Teams E2E Tests', () => {
66
66
  expect(Array.isArray(data)).toBe(true)
67
67
  })
68
68
 
69
- test('team current returns current team', async () => {
69
+ it('team current returns current team', async () => {
70
70
  if (!teamsAvailable) return
71
71
 
72
72
  const result = await runCLI('teams', ['team', 'current'])
@@ -76,7 +76,7 @@ describe('Teams E2E Tests', () => {
76
76
  expect(data?.team_id).toBe(TEAMS_TEST_TEAM_ID)
77
77
  })
78
78
 
79
- test('team info returns team details', async () => {
79
+ it('team info returns team details', async () => {
80
80
  if (!teamsAvailable) return
81
81
 
82
82
  const result = await runCLI('teams', ['team', 'info', TEAMS_TEST_TEAM_ID])
@@ -89,7 +89,7 @@ describe('Teams E2E Tests', () => {
89
89
  })
90
90
 
91
91
  describe('message', () => {
92
- test('message send creates message', async () => {
92
+ it('message send creates message', async () => {
93
93
  if (!teamsAvailable) return
94
94
 
95
95
  const testId = generateTestId()
@@ -108,7 +108,7 @@ describe('Teams E2E Tests', () => {
108
108
  if (data?.id) testMessages.push(data.id)
109
109
  })
110
110
 
111
- test('message list returns messages array', async () => {
111
+ it('message list returns messages array', async () => {
112
112
  if (!teamsAvailable) return
113
113
 
114
114
  const result = await runCLI('teams', [
@@ -125,7 +125,7 @@ describe('Teams E2E Tests', () => {
125
125
  expect(Array.isArray(data)).toBe(true)
126
126
  })
127
127
 
128
- test('message get retrieves specific message', async () => {
128
+ it('message get retrieves specific message', async () => {
129
129
  if (!teamsAvailable) return
130
130
 
131
131
  const testId = generateTestId()
@@ -141,7 +141,7 @@ describe('Teams E2E Tests', () => {
141
141
  expect(data?.content).toContain(testId)
142
142
  })
143
143
 
144
- test('message delete removes message', async () => {
144
+ it('message delete removes message', async () => {
145
145
  if (!teamsAvailable) return
146
146
 
147
147
  const testId = generateTestId()
@@ -160,7 +160,7 @@ describe('Teams E2E Tests', () => {
160
160
  expect(result.exitCode).toBe(0)
161
161
  })
162
162
 
163
- test('message command does not register update subcommand', async () => {
163
+ it('message command does not register update subcommand', async () => {
164
164
  if (!teamsAvailable) return
165
165
 
166
166
  const result = await runCLI('teams', ['message', '--help'])
@@ -170,7 +170,7 @@ describe('Teams E2E Tests', () => {
170
170
  })
171
171
 
172
172
  describe('channel', () => {
173
- test('channel list returns channels array', async () => {
173
+ it('channel list returns channels array', async () => {
174
174
  if (!teamsAvailable) return
175
175
 
176
176
  const result = await runCLI('teams', ['channel', 'list', TEAMS_TEST_TEAM_ID])
@@ -180,7 +180,7 @@ describe('Teams E2E Tests', () => {
180
180
  expect(Array.isArray(data)).toBe(true)
181
181
  })
182
182
 
183
- test('channel info returns channel details', async () => {
183
+ it('channel info returns channel details', async () => {
184
184
  if (!teamsAvailable) return
185
185
 
186
186
  const result = await runCLI('teams', ['channel', 'info', TEAMS_TEST_TEAM_ID, TEAMS_TEST_CHANNEL_ID])
@@ -190,7 +190,7 @@ describe('Teams E2E Tests', () => {
190
190
  expect(data?.id).toBe(TEAMS_TEST_CHANNEL_ID)
191
191
  })
192
192
 
193
- test('channel history returns messages', async () => {
193
+ it('channel history returns messages', async () => {
194
194
  if (!teamsAvailable) return
195
195
 
196
196
  const result = await runCLI('teams', [
@@ -209,7 +209,7 @@ describe('Teams E2E Tests', () => {
209
209
  })
210
210
 
211
211
  describe('user', () => {
212
- test('user list returns users array', async () => {
212
+ it('user list returns users array', async () => {
213
213
  if (!teamsAvailable) return
214
214
 
215
215
  const result = await runCLI('teams', ['user', 'list', TEAMS_TEST_TEAM_ID])
@@ -219,7 +219,7 @@ describe('Teams E2E Tests', () => {
219
219
  expect(Array.isArray(data)).toBe(true)
220
220
  })
221
221
 
222
- test('user me returns current user', async () => {
222
+ it('user me returns current user', async () => {
223
223
  if (!teamsAvailable) return
224
224
 
225
225
  const result = await runCLI('teams', ['user', 'me'])
@@ -230,7 +230,7 @@ describe('Teams E2E Tests', () => {
230
230
  expect(data?.displayName).toBeTruthy()
231
231
  })
232
232
 
233
- test('user info returns user details', async () => {
233
+ it('user info returns user details', async () => {
234
234
  if (!teamsAvailable) return
235
235
 
236
236
  const meResult = await runCLI('teams', ['user', 'me'])
@@ -250,7 +250,7 @@ describe('Teams E2E Tests', () => {
250
250
  })
251
251
 
252
252
  describe('reaction', () => {
253
- test('reaction add/remove lifecycle', async () => {
253
+ it('reaction add/remove lifecycle', async () => {
254
254
  if (!teamsAvailable) return
255
255
 
256
256
  const testId = generateTestId()
@@ -288,7 +288,7 @@ describe('Teams E2E Tests', () => {
288
288
  expect(removeData?.success).toBe(true)
289
289
  }, 15000)
290
290
 
291
- test('reaction command does not register list subcommand', async () => {
291
+ it('reaction command does not register list subcommand', async () => {
292
292
  if (!teamsAvailable) return
293
293
 
294
294
  const result = await runCLI('teams', ['reaction', '--help'])
@@ -298,7 +298,7 @@ describe('Teams E2E Tests', () => {
298
298
  })
299
299
 
300
300
  describe('file', () => {
301
- test('file list returns files array', async () => {
301
+ it('file list returns files array', async () => {
302
302
  if (!teamsAvailable) return
303
303
 
304
304
  const result = await runCLI('teams', ['file', 'list', TEAMS_TEST_TEAM_ID, TEAMS_TEST_CHANNEL_ID])
@@ -308,7 +308,7 @@ describe('Teams E2E Tests', () => {
308
308
  expect(Array.isArray(data)).toBe(true)
309
309
  })
310
310
 
311
- test('file upload uploads file and file info returns details', async () => {
311
+ it('file upload uploads file and file info returns details', async () => {
312
312
  if (!teamsAvailable) return
313
313
 
314
314
  const testId = generateTestId()
@@ -348,7 +348,7 @@ describe('Teams E2E Tests', () => {
348
348
  })
349
349
 
350
350
  describe('snapshot', () => {
351
- test('snapshot returns full team data', async () => {
351
+ it('snapshot returns full team data', async () => {
352
352
  if (!teamsAvailable) return
353
353
 
354
354
  const result = await runCLI('teams', ['snapshot', '--team-id', TEAMS_TEST_TEAM_ID, '--limit', '2'])
@@ -359,7 +359,7 @@ describe('Teams E2E Tests', () => {
359
359
  expect(data?.members).toBeDefined()
360
360
  })
361
361
 
362
- test('snapshot --channels-only returns only channels', async () => {
362
+ it('snapshot --channels-only returns only channels', async () => {
363
363
  if (!teamsAvailable) return
364
364
 
365
365
  const result = await runCLI('teams', ['snapshot', '--team-id', TEAMS_TEST_TEAM_ID, '--channels-only'])
@@ -369,7 +369,7 @@ describe('Teams E2E Tests', () => {
369
369
  expect(data?.channels).toBeDefined()
370
370
  })
371
371
 
372
- test('snapshot --users-only returns only users', async () => {
372
+ it('snapshot --users-only returns only users', async () => {
373
373
  if (!teamsAvailable) return
374
374
 
375
375
  const result = await runCLI('teams', ['snapshot', '--team-id', TEAMS_TEST_TEAM_ID, '--users-only'])
@@ -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 { TELEGRAM_TEST_CHAT_ID, validateTelegramEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -15,14 +15,14 @@ describe('Telegram E2E Tests', () => {
15
15
  })
16
16
 
17
17
  describe('auth', () => {
18
- test('auth status returns exit code 0', async () => {
18
+ it('auth status returns exit code 0', async () => {
19
19
  if (!telegramAvailable) return
20
20
 
21
21
  const result = await runCLI('telegram', ['auth', 'status'])
22
22
  expect(result.exitCode).toBe(0)
23
23
  })
24
24
 
25
- test('auth list returns accounts array', async () => {
25
+ it('auth list returns accounts array', async () => {
26
26
  if (!telegramAvailable) return
27
27
 
28
28
  const result = await runCLI('telegram', ['auth', 'list'])
@@ -34,7 +34,7 @@ describe('Telegram E2E Tests', () => {
34
34
  })
35
35
 
36
36
  describe('chat', () => {
37
- test('chat list returns chats', async () => {
37
+ it('chat list returns chats', async () => {
38
38
  if (!telegramAvailable) return
39
39
 
40
40
  const result = await runCLI('telegram', ['chat', 'list', '--limit', '5'])
@@ -44,14 +44,14 @@ describe('Telegram E2E Tests', () => {
44
44
  expect(data).toBeTruthy()
45
45
  })
46
46
 
47
- test('chat search returns results', async () => {
47
+ it('chat search returns results', async () => {
48
48
  if (!telegramAvailable) return
49
49
 
50
50
  const result = await runCLI('telegram', ['chat', 'search', 'test', '--limit', '5'])
51
51
  expect(result.exitCode).toBe(0)
52
52
  })
53
53
 
54
- test('chat get returns chat with id', async () => {
54
+ it('chat get returns chat with id', async () => {
55
55
  if (!telegramAvailable) return
56
56
 
57
57
  const result = await runCLI('telegram', ['chat', 'get', TELEGRAM_TEST_CHAT_ID])
@@ -63,7 +63,7 @@ describe('Telegram E2E Tests', () => {
63
63
  })
64
64
 
65
65
  describe('message', () => {
66
- test('message send delivers message to chat', async () => {
66
+ it('message send delivers message to chat', async () => {
67
67
  if (!telegramAvailable) return
68
68
 
69
69
  const testId = generateTestId()
@@ -71,7 +71,7 @@ describe('Telegram E2E Tests', () => {
71
71
  expect(result.exitCode).toBe(0)
72
72
  })
73
73
 
74
- test('message list returns messages', async () => {
74
+ it('message list returns messages', async () => {
75
75
  if (!telegramAvailable) return
76
76
 
77
77
  const result = await runCLI('telegram', ['message', 'list', TELEGRAM_TEST_CHAT_ID, '--limit', '5'])
@@ -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 { WEBEX_TEST_SPACE_ID, WEBEX_TEST_DM_EMAIL, validateWebexEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -31,7 +31,7 @@ describe('Webex E2E Tests', () => {
31
31
  })
32
32
 
33
33
  describe('auth', () => {
34
- test('auth status returns authenticated', async () => {
34
+ it('auth status returns authenticated', async () => {
35
35
  if (!webexAvailable) return
36
36
 
37
37
  const result = await runCLI('webex', ['auth', 'status'])
@@ -43,7 +43,7 @@ describe('Webex E2E Tests', () => {
43
43
  })
44
44
 
45
45
  describe('message', () => {
46
- test('message send creates a message', async () => {
46
+ it('message send creates a message', async () => {
47
47
  if (!webexAvailable) return
48
48
 
49
49
  const testId = generateTestId()
@@ -56,7 +56,7 @@ describe('Webex E2E Tests', () => {
56
56
  if (data?.id) testMessages.push(data.id)
57
57
  })
58
58
 
59
- test('message list returns messages array', async () => {
59
+ it('message list returns messages array', async () => {
60
60
  if (!webexAvailable) return
61
61
 
62
62
  const result = await runCLI('webex', ['message', 'list', WEBEX_TEST_SPACE_ID, '--limit', '5'])
@@ -66,7 +66,7 @@ describe('Webex E2E Tests', () => {
66
66
  expect(Array.isArray(data)).toBe(true)
67
67
  })
68
68
 
69
- test('message get retrieves specific message', async () => {
69
+ it('message get retrieves specific message', async () => {
70
70
  if (!webexAvailable) return
71
71
 
72
72
  const testId = generateTestId()
@@ -86,7 +86,7 @@ describe('Webex E2E Tests', () => {
86
86
  expect(data?.text).toContain(testId)
87
87
  }, 30000)
88
88
 
89
- test('message delete removes message', async () => {
89
+ it('message delete removes message', async () => {
90
90
  if (!webexAvailable) return
91
91
 
92
92
  const testId = generateTestId()
@@ -102,7 +102,7 @@ describe('Webex E2E Tests', () => {
102
102
  expect(result.exitCode).toBe(0)
103
103
  }, 30000)
104
104
 
105
- test('message edit updates message content', async () => {
105
+ it('message edit updates message content', async () => {
106
106
  if (!webexAvailable) return
107
107
 
108
108
  const testId = generateTestId()
@@ -139,7 +139,7 @@ describe('Webex E2E Tests', () => {
139
139
  return runCLI('webex', args)
140
140
  }
141
141
 
142
- test('message edit survives second edit and markdown edit (regression for silent failure)', async () => {
142
+ it('message edit survives second edit and markdown edit (regression for silent failure)', async () => {
143
143
  if (!webexAvailable) return
144
144
 
145
145
  const testId = generateTestId()
@@ -178,7 +178,7 @@ describe('Webex E2E Tests', () => {
178
178
  })
179
179
 
180
180
  describe('space', () => {
181
- test('space list returns spaces array', async () => {
181
+ it('space list returns spaces array', async () => {
182
182
  if (!webexAvailable) return
183
183
 
184
184
  const result = await runCLI('webex', ['space', 'list', '--limit', '5'])
@@ -188,7 +188,7 @@ describe('Webex E2E Tests', () => {
188
188
  expect(Array.isArray(data)).toBe(true)
189
189
  })
190
190
 
191
- test('space info returns space details', async () => {
191
+ it('space info returns space details', async () => {
192
192
  if (!webexAvailable) return
193
193
 
194
194
  const result = await runCLI('webex', ['space', 'info', WEBEX_TEST_SPACE_ID])
@@ -200,7 +200,7 @@ describe('Webex E2E Tests', () => {
200
200
  })
201
201
 
202
202
  describe('member', () => {
203
- test('member list returns members array', async () => {
203
+ it('member list returns members array', async () => {
204
204
  if (!webexAvailable) return
205
205
 
206
206
  const result = await runCLI('webex', ['member', 'list', WEBEX_TEST_SPACE_ID, '--limit', '5'])
@@ -212,7 +212,7 @@ describe('Webex E2E Tests', () => {
212
212
  })
213
213
 
214
214
  describe('snapshot', () => {
215
- test('snapshot returns spaces and members', async () => {
215
+ it('snapshot returns spaces and members', async () => {
216
216
  if (!webexAvailable) return
217
217
 
218
218
  const result = await runCLI('webex', ['snapshot', '--limit', '2'])
@@ -224,7 +224,7 @@ describe('Webex E2E Tests', () => {
224
224
  expect(data?.recent_messages).toBeDefined()
225
225
  }, 30000)
226
226
 
227
- test('snapshot --spaces-only returns only spaces', async () => {
227
+ it('snapshot --spaces-only returns only spaces', async () => {
228
228
  if (!webexAvailable) return
229
229
 
230
230
  const result = await runCLI('webex', ['snapshot', '--spaces-only'])
@@ -234,7 +234,7 @@ describe('Webex E2E Tests', () => {
234
234
  expect(data?.spaces).toBeDefined()
235
235
  })
236
236
 
237
- test('snapshot --members-only returns only members', async () => {
237
+ it('snapshot --members-only returns only members', async () => {
238
238
  if (!webexAvailable) return
239
239
 
240
240
  const result = await runCLI('webex', ['snapshot', '--members-only'])
@@ -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 { WHATSAPP_TEST_CHAT_ID, validateWhatsAppEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -15,14 +15,14 @@ describe('WhatsApp E2E Tests', () => {
15
15
  })
16
16
 
17
17
  describe('auth', () => {
18
- test('auth status returns exit code 0', async () => {
18
+ it('auth status returns exit code 0', async () => {
19
19
  if (!whatsappAvailable) return
20
20
 
21
21
  const result = await runCLI('whatsapp', ['auth', 'status'])
22
22
  expect(result.exitCode).toBe(0)
23
23
  })
24
24
 
25
- test('auth list returns accounts array', async () => {
25
+ it('auth list returns accounts array', async () => {
26
26
  if (!whatsappAvailable) return
27
27
 
28
28
  const result = await runCLI('whatsapp', ['auth', 'list'])
@@ -34,7 +34,7 @@ describe('WhatsApp E2E Tests', () => {
34
34
  })
35
35
 
36
36
  describe('chat', () => {
37
- test('chat list returns chats', async () => {
37
+ it('chat list returns chats', async () => {
38
38
  if (!whatsappAvailable) return
39
39
 
40
40
  const result = await runCLI('whatsapp', ['chat', 'list', '--limit', '5'])
@@ -44,7 +44,7 @@ describe('WhatsApp E2E Tests', () => {
44
44
  expect(data).toBeTruthy()
45
45
  })
46
46
 
47
- test('chat search returns results', async () => {
47
+ it('chat search returns results', async () => {
48
48
  if (!whatsappAvailable) return
49
49
 
50
50
  const result = await runCLI('whatsapp', ['chat', 'search', 'test', '--limit', '5'])
@@ -53,7 +53,7 @@ describe('WhatsApp E2E Tests', () => {
53
53
  })
54
54
 
55
55
  describe('message', () => {
56
- test('message send delivers message to chat', async () => {
56
+ it('message send delivers message to chat', async () => {
57
57
  if (!whatsappAvailable) return
58
58
 
59
59
  const testId = generateTestId()
@@ -61,7 +61,7 @@ describe('WhatsApp E2E Tests', () => {
61
61
  expect(result.exitCode).toBe(0)
62
62
  })
63
63
 
64
- test('message list returns messages', async () => {
64
+ it('message list returns messages', async () => {
65
65
  if (!whatsappAvailable) return
66
66
 
67
67
  const result = await runCLI('whatsapp', ['message', 'list', WHATSAPP_TEST_CHAT_ID, '--limit', '5'])
@@ -71,7 +71,7 @@ describe('WhatsApp E2E Tests', () => {
71
71
  expect(data).toBeTruthy()
72
72
  })
73
73
 
74
- test('message react adds reaction to message', async () => {
74
+ it('message react adds reaction to message', async () => {
75
75
  if (!whatsappAvailable) return
76
76
 
77
77
  const testId = generateTestId()
@@ -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 { WHATSAPPBOT_TEST_PHONE_NUMBER, validateWhatsAppBotEnvironment } from './config'
4
4
  import { generateTestId, parseJSON, runCLI, waitForRateLimit } from './helpers'
@@ -15,7 +15,7 @@ describe('WhatsApp Bot E2E Tests', () => {
15
15
  })
16
16
 
17
17
  describe('auth', () => {
18
- test('auth status returns valid credentials', async () => {
18
+ it('auth status returns valid credentials', async () => {
19
19
  if (!whatsappbotAvailable) return
20
20
 
21
21
  const result = await runCLI('whatsappbot', ['auth', 'status'])
@@ -25,7 +25,7 @@ describe('WhatsApp Bot E2E Tests', () => {
25
25
  expect(data?.valid).toBe(true)
26
26
  })
27
27
 
28
- test('auth list returns accounts array', async () => {
28
+ it('auth list returns accounts array', async () => {
29
29
  if (!whatsappbotAvailable) return
30
30
 
31
31
  const result = await runCLI('whatsappbot', ['auth', 'list'])
@@ -37,7 +37,7 @@ describe('WhatsApp Bot E2E Tests', () => {
37
37
  })
38
38
 
39
39
  describe('message', () => {
40
- test('message send delivers to test phone number', async () => {
40
+ it('message send delivers to test phone number', async () => {
41
41
  if (!whatsappbotAvailable) return
42
42
 
43
43
  const testId = generateTestId()
@@ -47,7 +47,7 @@ describe('WhatsApp Bot E2E Tests', () => {
47
47
  })
48
48
 
49
49
  describe('template', () => {
50
- test('template list returns templates', async () => {
50
+ it('template list returns templates', async () => {
51
51
  if (!whatsappbotAvailable) return
52
52
 
53
53
  const result = await runCLI('whatsappbot', ['template', 'list', '--limit', '5'])
@@ -57,7 +57,7 @@ describe('WhatsApp Bot E2E Tests', () => {
57
57
  expect(data).toBeDefined()
58
58
  })
59
59
 
60
- test('template get returns template details', async () => {
60
+ it('template get returns template details', async () => {
61
61
  if (!whatsappbotAvailable) return
62
62
 
63
63
  const listResult = await runCLI('whatsappbot', ['template', 'list', '--limit', '1'])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.10.1",
3
+ "version": "2.10.2",
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",
@@ -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.1
4
+ version: 2.10.2
5
5
  allowed-tools: Bash(agent-channeltalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.1
4
+ version: 2.10.2
5
5
  allowed-tools: Bash(agent-channeltalkbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.1
4
+ version: 2.10.2
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.1
4
+ version: 2.10.2
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw: