agent-messenger 2.10.0 → 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 +15 -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 +219 -145
  180. package/src/platforms/teams/token-extractor.ts +13 -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,51 +1,51 @@
1
- import { describe, expect, test } from 'bun:test'
1
+ import { describe, expect, it } from 'bun:test'
2
2
 
3
3
  import { parseLimitOption } from '@/platforms/instagram/commands/shared'
4
4
  import { InstagramError } from '@/platforms/instagram/types'
5
5
 
6
6
  describe('parseLimitOption', () => {
7
- test('returns parsed integer for valid input', () => {
7
+ it('returns parsed integer for valid input', () => {
8
8
  expect(parseLimitOption('10', 20)).toBe(10)
9
9
  })
10
10
 
11
- test('returns default when undefined', () => {
11
+ it('returns default when undefined', () => {
12
12
  expect(parseLimitOption(undefined, 20)).toBe(20)
13
13
  })
14
14
 
15
- test('trims whitespace', () => {
15
+ it('trims whitespace', () => {
16
16
  expect(parseLimitOption(' 15 ', 20)).toBe(15)
17
17
  })
18
18
 
19
- test('throws InstagramError for non-numeric input', () => {
19
+ it('throws InstagramError for non-numeric input', () => {
20
20
  expect(() => parseLimitOption('abc', 20)).toThrow(InstagramError)
21
21
  })
22
22
 
23
- test('throws for zero', () => {
23
+ it('throws for zero', () => {
24
24
  expect(() => parseLimitOption('0', 20)).toThrow(InstagramError)
25
25
  })
26
26
 
27
- test('throws for negative numbers', () => {
27
+ it('throws for negative numbers', () => {
28
28
  expect(() => parseLimitOption('-5', 20)).toThrow(InstagramError)
29
29
  })
30
30
 
31
- test('throws for values exceeding default maxValue', () => {
31
+ it('throws for values exceeding default maxValue', () => {
32
32
  expect(() => parseLimitOption('101', 20)).toThrow(InstagramError)
33
33
  })
34
34
 
35
- test('respects custom maxValue', () => {
35
+ it('respects custom maxValue', () => {
36
36
  expect(parseLimitOption('50', 20, 50)).toBe(50)
37
37
  expect(() => parseLimitOption('51', 20, 50)).toThrow(InstagramError)
38
38
  })
39
39
 
40
- test('throws for decimal numbers', () => {
40
+ it('throws for decimal numbers', () => {
41
41
  expect(() => parseLimitOption('10.5', 20)).toThrow(InstagramError)
42
42
  })
43
43
 
44
- test('accepts boundary value 1', () => {
44
+ it('accepts boundary value 1', () => {
45
45
  expect(parseLimitOption('1', 20)).toBe(1)
46
46
  })
47
47
 
48
- test('accepts boundary value 100', () => {
48
+ it('accepts boundary value 100', () => {
49
49
  expect(parseLimitOption('100', 20)).toBe(100)
50
50
  })
51
51
  })
@@ -1,4 +1,4 @@
1
- import { afterEach, beforeEach, describe, expect, spyOn, test } from 'bun:test'
1
+ import { afterEach, beforeEach, describe, expect, spyOn, it } from 'bun:test'
2
2
 
3
3
  import { InstagramClient } from '../client'
4
4
  import * as sharedModule from './shared'
@@ -29,7 +29,7 @@ describe('whoami command', () => {
29
29
  consoleLogSpy?.mockRestore()
30
30
  })
31
31
 
32
- test('outputs profile information', async () => {
32
+ it('outputs profile information', async () => {
33
33
  await whoamiAction({})
34
34
 
35
35
  expect(consoleLogSpy).toHaveBeenCalledTimes(1)
@@ -40,7 +40,7 @@ describe('whoami command', () => {
40
40
  expect(output.profile_pic_url).toBe('https://example.com/pic.jpg')
41
41
  })
42
42
 
43
- test('outputs profile with null optional fields', async () => {
43
+ it('outputs profile with null optional fields', async () => {
44
44
  getProfileSpy.mockResolvedValue({
45
45
  user_id: '987654321',
46
46
  username: 'testuser',
@@ -1,4 +1,4 @@
1
- import { afterAll, describe, expect, test } from 'bun:test'
1
+ import { afterAll, describe, expect, it } from 'bun:test'
2
2
  import { existsSync, rmSync } from 'node:fs'
3
3
  import { join } from 'node:path'
4
4
 
@@ -34,7 +34,7 @@ afterAll(() => {
34
34
 
35
35
  describe('InstagramCredentialManager', () => {
36
36
  describe('loadConfig', () => {
37
- test('returns default config when file does not exist', async () => {
37
+ it('returns default config when file does not exist', async () => {
38
38
  const manager = setup()
39
39
  const config = await manager.loadConfig()
40
40
 
@@ -43,7 +43,7 @@ describe('InstagramCredentialManager', () => {
43
43
  })
44
44
 
45
45
  describe('saveConfig', () => {
46
- test('creates file and can be re-read via loadConfig', async () => {
46
+ it('creates file and can be re-read via loadConfig', async () => {
47
47
  const manager = setup()
48
48
  const config = {
49
49
  current: 'test-account',
@@ -60,14 +60,14 @@ describe('InstagramCredentialManager', () => {
60
60
  })
61
61
 
62
62
  describe('getAccount', () => {
63
- test('returns null when no accounts exist', async () => {
63
+ it('returns null when no accounts exist', async () => {
64
64
  const manager = setup()
65
65
  const account = await manager.getAccount()
66
66
 
67
67
  expect(account).toBeNull()
68
68
  })
69
69
 
70
- test('returns null for specific accountId when no accounts exist', async () => {
70
+ it('returns null for specific accountId when no accounts exist', async () => {
71
71
  const manager = setup()
72
72
  const account = await manager.getAccount('nonexistent')
73
73
 
@@ -76,7 +76,7 @@ describe('InstagramCredentialManager', () => {
76
76
  })
77
77
 
78
78
  describe('setAccount', () => {
79
- test('round-trips: set then get returns same account', async () => {
79
+ it('round-trips: set then get returns same account', async () => {
80
80
  const manager = setup()
81
81
  const account = makeAccount()
82
82
 
@@ -86,7 +86,7 @@ describe('InstagramCredentialManager', () => {
86
86
  expect(retrieved).toEqual(account)
87
87
  })
88
88
 
89
- test('sets first account as current automatically', async () => {
89
+ it('sets first account as current automatically', async () => {
90
90
  const manager = setup()
91
91
  const account = makeAccount()
92
92
 
@@ -96,7 +96,7 @@ describe('InstagramCredentialManager', () => {
96
96
  expect(current).toEqual(account)
97
97
  })
98
98
 
99
- test('does not override current when it is already set', async () => {
99
+ it('does not override current when it is already set', async () => {
100
100
  const manager = setup()
101
101
  const first = makeAccount({ account_id: 'first-account' })
102
102
  const second = makeAccount({ account_id: 'second-account' })
@@ -108,7 +108,7 @@ describe('InstagramCredentialManager', () => {
108
108
  expect(current?.account_id).toBe('first-account')
109
109
  })
110
110
 
111
- test('getAccount with normalized ID lookup via createAccountId', async () => {
111
+ it('getAccount looks up account by normalized ID via createAccountId', async () => {
112
112
  const manager = setup()
113
113
  const account = makeAccount({ account_id: 'my-username' })
114
114
 
@@ -120,14 +120,14 @@ describe('InstagramCredentialManager', () => {
120
120
  })
121
121
 
122
122
  describe('listAccounts', () => {
123
- test('returns empty array when no accounts', async () => {
123
+ it('returns empty array when no accounts', async () => {
124
124
  const manager = setup()
125
125
  const accounts = await manager.listAccounts()
126
126
 
127
127
  expect(accounts).toEqual([])
128
128
  })
129
129
 
130
- test('returns all accounts with is_current flag', async () => {
130
+ it('returns all accounts with is_current flag', async () => {
131
131
  const manager = setup()
132
132
  const first = makeAccount({ account_id: 'first-account' })
133
133
  const second = makeAccount({ account_id: 'second-account' })
@@ -146,7 +146,7 @@ describe('InstagramCredentialManager', () => {
146
146
  })
147
147
 
148
148
  describe('setCurrent', () => {
149
- test('switches active account and returns true', async () => {
149
+ it('switches active account and returns true', async () => {
150
150
  const manager = setup()
151
151
  const first = makeAccount({ account_id: 'first-account' })
152
152
  const second = makeAccount({ account_id: 'second-account' })
@@ -161,7 +161,7 @@ describe('InstagramCredentialManager', () => {
161
161
  expect(current?.account_id).toBe('second-account')
162
162
  })
163
163
 
164
- test('returns false for non-existent account', async () => {
164
+ it('returns false for non-existent account', async () => {
165
165
  const manager = setup()
166
166
 
167
167
  const result = await manager.setCurrent('nonexistent')
@@ -171,7 +171,7 @@ describe('InstagramCredentialManager', () => {
171
171
  })
172
172
 
173
173
  describe('removeAccount', () => {
174
- test('removes account and adjusts current to next available', async () => {
174
+ it('removes account and adjusts current to next available', async () => {
175
175
  const manager = setup()
176
176
  const first = makeAccount({ account_id: 'first-account' })
177
177
  const second = makeAccount({ account_id: 'second-account' })
@@ -190,7 +190,7 @@ describe('InstagramCredentialManager', () => {
190
190
  expect(current?.account_id).toBe('second-account')
191
191
  })
192
192
 
193
- test('returns false for non-existent account', async () => {
193
+ it('returns false for non-existent account', async () => {
194
194
  const manager = setup()
195
195
 
196
196
  const result = await manager.removeAccount('nonexistent')
@@ -200,7 +200,7 @@ describe('InstagramCredentialManager', () => {
200
200
  })
201
201
 
202
202
  describe('clearCredentials', () => {
203
- test('removes credentials file when it exists', async () => {
203
+ it('removes credentials file when it exists', async () => {
204
204
  const manager = setup()
205
205
  const account = makeAccount()
206
206
  await manager.setAccount(account)
@@ -214,7 +214,7 @@ describe('InstagramCredentialManager', () => {
214
214
  expect(existsSync(credentialsPath)).toBe(false)
215
215
  })
216
216
 
217
- test('does not throw when credentials file does not exist', async () => {
217
+ it('does not throw when credentials file does not exist', async () => {
218
218
  const manager = setup()
219
219
 
220
220
  await expect(manager.clearCredentials()).resolves.toBeUndefined()
@@ -222,7 +222,7 @@ describe('InstagramCredentialManager', () => {
222
222
  })
223
223
 
224
224
  describe('getAccountPaths', () => {
225
- test('returns correct paths structure for account ID', async () => {
225
+ it('returns correct paths structure for account ID', async () => {
226
226
  const testConfigDir = join(
227
227
  import.meta.dir,
228
228
  `.test-instagram-config-${Date.now()}-${Math.random().toString(36).slice(2)}`,
@@ -236,7 +236,7 @@ describe('InstagramCredentialManager', () => {
236
236
  expect(paths.session_path).toBe(join(testConfigDir, 'instagram', 'test-account', 'session.json'))
237
237
  })
238
238
 
239
- test('normalizes account ID via createAccountId', async () => {
239
+ it('normalizes account ID via createAccountId', async () => {
240
240
  const testConfigDir = join(
241
241
  import.meta.dir,
242
242
  `.test-instagram-config-${Date.now()}-${Math.random().toString(36).slice(2)}`,
@@ -252,7 +252,7 @@ describe('InstagramCredentialManager', () => {
252
252
  })
253
253
 
254
254
  describe('ensureAccountPaths', () => {
255
- test('creates directories', async () => {
255
+ it('creates directories', async () => {
256
256
  const manager = setup()
257
257
 
258
258
  const paths = await manager.ensureAccountPaths('test-account')
@@ -260,7 +260,7 @@ describe('InstagramCredentialManager', () => {
260
260
  expect(existsSync(paths.account_dir)).toBe(true)
261
261
  })
262
262
 
263
- test('returns paths structure', async () => {
263
+ it('returns paths structure', async () => {
264
264
  const testConfigDir = join(
265
265
  import.meta.dir,
266
266
  `.test-instagram-config-${Date.now()}-${Math.random().toString(36).slice(2)}`,
@@ -1,4 +1,4 @@
1
- import { afterEach, beforeEach, describe, expect, spyOn, test } from 'bun:test'
1
+ import { afterEach, beforeEach, describe, expect, spyOn, it } from 'bun:test'
2
2
  import * as fs from 'node:fs'
3
3
 
4
4
  import { InstagramCredentialManager } from '@/platforms/instagram/credential-manager'
@@ -46,7 +46,7 @@ afterEach(() => {
46
46
  })
47
47
 
48
48
  describe('ensureInstagramAuth', () => {
49
- test('exits with error when no account configured', async () => {
49
+ it('exits with error when no account configured', async () => {
50
50
  // given
51
51
  getAccountSpy.mockResolvedValue(null)
52
52
 
@@ -56,7 +56,7 @@ describe('ensureInstagramAuth', () => {
56
56
  expect(consoleSpy).toHaveBeenCalled()
57
57
  })
58
58
 
59
- test('exits with error when session file missing', async () => {
59
+ it('exits with error when session file missing', async () => {
60
60
  // given
61
61
  getAccountSpy.mockResolvedValue(validAccount)
62
62
  existsSyncSpy.mockReturnValue(false)
@@ -67,7 +67,7 @@ describe('ensureInstagramAuth', () => {
67
67
  expect(consoleSpy).toHaveBeenCalled()
68
68
  })
69
69
 
70
- test('succeeds when account and session file exist', async () => {
70
+ it('succeeds when account and session file exist', async () => {
71
71
  // given
72
72
  getAccountSpy.mockResolvedValue(validAccount)
73
73
  existsSyncSpy.mockReturnValue(true)
@@ -1,4 +1,4 @@
1
- import { expect, test } from 'bun:test'
1
+ import { expect, it } from 'bun:test'
2
2
 
3
3
  import {
4
4
  createAccountId,
@@ -11,34 +11,34 @@ import {
11
11
  InstagramListener,
12
12
  } from '@/platforms/instagram/index'
13
13
 
14
- test('InstagramClient is exported from barrel', () => {
14
+ it('InstagramClient is exported from barrel', () => {
15
15
  expect(typeof InstagramClient).toBe('function')
16
16
  })
17
17
 
18
- test('InstagramCredentialManager is exported from barrel', () => {
18
+ it('InstagramCredentialManager is exported from barrel', () => {
19
19
  expect(typeof InstagramCredentialManager).toBe('function')
20
20
  })
21
21
 
22
- test('InstagramListener is exported from barrel', () => {
22
+ it('InstagramListener is exported from barrel', () => {
23
23
  expect(typeof InstagramListener).toBe('function')
24
24
  })
25
25
 
26
- test('InstagramError is exported from barrel', () => {
26
+ it('InstagramError is exported from barrel', () => {
27
27
  expect(typeof InstagramError).toBe('function')
28
28
  })
29
29
 
30
- test('createAccountId is exported from barrel', () => {
30
+ it('createAccountId is exported from barrel', () => {
31
31
  expect(typeof createAccountId).toBe('function')
32
32
  })
33
33
 
34
- test('extractMediaUrl is exported from barrel', () => {
34
+ it('extractMediaUrl is exported from barrel', () => {
35
35
  expect(typeof extractMediaUrl).toBe('function')
36
36
  })
37
37
 
38
- test('extractMessageText is exported from barrel', () => {
38
+ it('extractMessageText is exported from barrel', () => {
39
39
  expect(typeof extractMessageText).toBe('function')
40
40
  })
41
41
 
42
- test('getMessageType is exported from barrel', () => {
42
+ it('getMessageType is exported from barrel', () => {
43
43
  expect(typeof getMessageType).toBe('function')
44
44
  })
@@ -1,4 +1,4 @@
1
- import { afterEach, describe, expect, spyOn, test } from 'bun:test'
1
+ import { afterEach, describe, expect, spyOn, it } from 'bun:test'
2
2
 
3
3
  import { InstagramListener } from '@/platforms/instagram/listener'
4
4
  import type { InstagramChatSummary } from '@/platforms/instagram/types'
@@ -38,7 +38,7 @@ describe('InstagramListener', () => {
38
38
  listener?.stop()
39
39
  })
40
40
 
41
- test('emits connected on start', async () => {
41
+ it('emits connected on start', async () => {
42
42
  const client = makeMockClient([makeChat()])
43
43
  listener = new InstagramListener(client, { pollInterval: 60_000 })
44
44
 
@@ -51,7 +51,7 @@ describe('InstagramListener', () => {
51
51
  expect(result.userId).toBe('123')
52
52
  })
53
53
 
54
- test('stop emits disconnected', async () => {
54
+ it('emits disconnected on stop', async () => {
55
55
  const client = makeMockClient([])
56
56
  listener = new InstagramListener(client, { pollInterval: 60_000 })
57
57
 
@@ -64,7 +64,7 @@ describe('InstagramListener', () => {
64
64
  await disconnected
65
65
  })
66
66
 
67
- test('does not emit message for initial poll', async () => {
67
+ it('does not emit message for initial poll', async () => {
68
68
  const client = makeMockClient([makeChat()])
69
69
  listener = new InstagramListener(client, { pollInterval: 60_000 })
70
70
 
@@ -77,7 +77,7 @@ describe('InstagramListener', () => {
77
77
  expect(messages).toHaveLength(0)
78
78
  })
79
79
 
80
- test('multiple start calls are idempotent', async () => {
80
+ it('multiple start calls are idempotent', async () => {
81
81
  const client = makeMockClient([])
82
82
  listener = new InstagramListener(client, { pollInterval: 60_000 })
83
83
 
@@ -87,7 +87,7 @@ describe('InstagramListener', () => {
87
87
  expect(client.listChats).toHaveBeenCalledTimes(1)
88
88
  })
89
89
 
90
- test('emits error when listChats throws', async () => {
90
+ it('emits error when listChats throws', async () => {
91
91
  const client = makeMockClient()
92
92
  client.listChats.mockRejectedValueOnce(new Error('network error'))
93
93
  listener = new InstagramListener(client, { pollInterval: 60_000 })
@@ -101,7 +101,7 @@ describe('InstagramListener', () => {
101
101
  expect(err.message).toBe('network error')
102
102
  })
103
103
 
104
- test('on/off registers and unregisters handlers', () => {
104
+ it('on/off registers and unregisters handlers', () => {
105
105
  const client = makeMockClient()
106
106
  listener = new InstagramListener(client, { pollInterval: 60_000 })
107
107
 
@@ -116,7 +116,7 @@ describe('InstagramListener', () => {
116
116
  expect(called).toBe(false)
117
117
  })
118
118
 
119
- test('once fires handler only once', async () => {
119
+ it('once fires handler only once', async () => {
120
120
  const client = makeMockClient([])
121
121
  listener = new InstagramListener(client, { pollInterval: 60_000 })
122
122