agent-messenger 1.14.0 → 2.0.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 (931) hide show
  1. package/.claude-plugin/README.md +94 -13
  2. package/.claude-plugin/marketplace.json +51 -12
  3. package/.claude-plugin/plugin.json +14 -3
  4. package/CONTRIBUTING.md +49 -3
  5. package/README.md +211 -54
  6. package/bun.lock +350 -2
  7. package/cubic.yaml +69 -0
  8. package/dist/package.json +118 -9
  9. package/dist/src/cli.d.ts.map +1 -1
  10. package/dist/src/cli.js +27 -6
  11. package/dist/src/cli.js.map +1 -1
  12. package/dist/src/platforms/channeltalk/client.d.ts +5 -1
  13. package/dist/src/platforms/channeltalk/client.d.ts.map +1 -1
  14. package/dist/src/platforms/channeltalk/client.js +23 -6
  15. package/dist/src/platforms/channeltalk/client.js.map +1 -1
  16. package/dist/src/platforms/channeltalk/commands/auth.d.ts +1 -1
  17. package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -1
  18. package/dist/src/platforms/channeltalk/commands/auth.js +4 -4
  19. package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -1
  20. package/dist/src/platforms/channeltalk/commands/shared.js +1 -1
  21. package/dist/src/platforms/channeltalk/commands/shared.js.map +1 -1
  22. package/dist/src/platforms/channeltalk/ensure-auth.d.ts +2 -2
  23. package/dist/src/platforms/channeltalk/ensure-auth.d.ts.map +1 -1
  24. package/dist/src/platforms/channeltalk/ensure-auth.js +4 -4
  25. package/dist/src/platforms/channeltalk/ensure-auth.js.map +1 -1
  26. package/dist/src/platforms/channeltalk/index.d.ts +2 -2
  27. package/dist/src/platforms/channeltalk/index.d.ts.map +1 -1
  28. package/dist/src/platforms/channeltalk/index.js +1 -2
  29. package/dist/src/platforms/channeltalk/index.js.map +1 -1
  30. package/dist/src/platforms/channeltalk/token-extractor.d.ts +8 -0
  31. package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -1
  32. package/dist/src/platforms/channeltalk/token-extractor.js +127 -13
  33. package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -1
  34. package/dist/src/platforms/channeltalk/types.d.ts +52 -949
  35. package/dist/src/platforms/channeltalk/types.d.ts.map +1 -1
  36. package/dist/src/platforms/channeltalk/types.js +1 -1
  37. package/dist/src/platforms/channeltalk/types.js.map +1 -1
  38. package/dist/src/platforms/channeltalkbot/client.d.ts +5 -1
  39. package/dist/src/platforms/channeltalkbot/client.d.ts.map +1 -1
  40. package/dist/src/platforms/channeltalkbot/client.js +24 -9
  41. package/dist/src/platforms/channeltalkbot/client.js.map +1 -1
  42. package/dist/src/platforms/channeltalkbot/commands/auth.js +2 -2
  43. package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -1
  44. package/dist/src/platforms/channeltalkbot/commands/shared.js +1 -1
  45. package/dist/src/platforms/channeltalkbot/commands/shared.js.map +1 -1
  46. package/dist/src/platforms/channeltalkbot/index.d.ts +2 -1
  47. package/dist/src/platforms/channeltalkbot/index.d.ts.map +1 -1
  48. package/dist/src/platforms/channeltalkbot/index.js.map +1 -1
  49. package/dist/src/platforms/channeltalkbot/types.d.ts +24 -186
  50. package/dist/src/platforms/channeltalkbot/types.d.ts.map +1 -1
  51. package/dist/src/platforms/discord/client.d.ts +7 -1
  52. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  53. package/dist/src/platforms/discord/client.js +27 -6
  54. package/dist/src/platforms/discord/client.js.map +1 -1
  55. package/dist/src/platforms/discord/commands/auth.js +2 -2
  56. package/dist/src/platforms/discord/commands/auth.js.map +1 -1
  57. package/dist/src/platforms/discord/commands/channel.js +3 -3
  58. package/dist/src/platforms/discord/commands/channel.js.map +1 -1
  59. package/dist/src/platforms/discord/commands/dm.js +2 -2
  60. package/dist/src/platforms/discord/commands/dm.js.map +1 -1
  61. package/dist/src/platforms/discord/commands/file.js +3 -3
  62. package/dist/src/platforms/discord/commands/file.js.map +1 -1
  63. package/dist/src/platforms/discord/commands/friend.js +1 -1
  64. package/dist/src/platforms/discord/commands/friend.js.map +1 -1
  65. package/dist/src/platforms/discord/commands/member.js +1 -1
  66. package/dist/src/platforms/discord/commands/member.js.map +1 -1
  67. package/dist/src/platforms/discord/commands/mention.js +1 -1
  68. package/dist/src/platforms/discord/commands/mention.js.map +1 -1
  69. package/dist/src/platforms/discord/commands/message.js +6 -6
  70. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  71. package/dist/src/platforms/discord/commands/note.js +2 -2
  72. package/dist/src/platforms/discord/commands/note.js.map +1 -1
  73. package/dist/src/platforms/discord/commands/profile.js +1 -1
  74. package/dist/src/platforms/discord/commands/profile.js.map +1 -1
  75. package/dist/src/platforms/discord/commands/reaction.js +3 -3
  76. package/dist/src/platforms/discord/commands/reaction.js.map +1 -1
  77. package/dist/src/platforms/discord/commands/server.js +1 -1
  78. package/dist/src/platforms/discord/commands/server.js.map +1 -1
  79. package/dist/src/platforms/discord/commands/snapshot.js +1 -1
  80. package/dist/src/platforms/discord/commands/snapshot.js.map +1 -1
  81. package/dist/src/platforms/discord/commands/thread.js +2 -2
  82. package/dist/src/platforms/discord/commands/thread.js.map +1 -1
  83. package/dist/src/platforms/discord/commands/user.js +3 -3
  84. package/dist/src/platforms/discord/commands/user.js.map +1 -1
  85. package/dist/src/platforms/discord/ensure-auth.js +1 -1
  86. package/dist/src/platforms/discord/ensure-auth.js.map +1 -1
  87. package/dist/src/platforms/discord/index.d.ts +6 -0
  88. package/dist/src/platforms/discord/index.d.ts.map +1 -0
  89. package/dist/src/platforms/discord/index.js +5 -0
  90. package/dist/src/platforms/discord/index.js.map +1 -0
  91. package/dist/src/platforms/discord/listener.d.ts +41 -0
  92. package/dist/src/platforms/discord/listener.d.ts.map +1 -0
  93. package/dist/src/platforms/discord/listener.js +262 -0
  94. package/dist/src/platforms/discord/listener.js.map +1 -0
  95. package/dist/src/platforms/discord/types.d.ts +150 -352
  96. package/dist/src/platforms/discord/types.d.ts.map +1 -1
  97. package/dist/src/platforms/discord/types.js +28 -0
  98. package/dist/src/platforms/discord/types.js.map +1 -1
  99. package/dist/src/platforms/discordbot/client.d.ts +4 -1
  100. package/dist/src/platforms/discordbot/client.d.ts.map +1 -1
  101. package/dist/src/platforms/discordbot/client.js +23 -7
  102. package/dist/src/platforms/discordbot/client.js.map +1 -1
  103. package/dist/src/platforms/discordbot/commands/auth.js +2 -2
  104. package/dist/src/platforms/discordbot/commands/auth.js.map +1 -1
  105. package/dist/src/platforms/discordbot/commands/shared.js +1 -1
  106. package/dist/src/platforms/discordbot/commands/shared.js.map +1 -1
  107. package/dist/src/platforms/discordbot/types.d.ts +15 -203
  108. package/dist/src/platforms/discordbot/types.d.ts.map +1 -1
  109. package/dist/src/platforms/instagram/cli.d.ts +5 -0
  110. package/dist/src/platforms/instagram/cli.d.ts.map +1 -0
  111. package/dist/src/platforms/instagram/cli.js +30 -0
  112. package/dist/src/platforms/instagram/cli.js.map +1 -0
  113. package/dist/src/platforms/instagram/client.d.ts +65 -0
  114. package/dist/src/platforms/instagram/client.d.ts.map +1 -0
  115. package/dist/src/platforms/instagram/client.js +524 -0
  116. package/dist/src/platforms/instagram/client.js.map +1 -0
  117. package/dist/src/platforms/instagram/commands/auth.d.ts +3 -0
  118. package/dist/src/platforms/instagram/commands/auth.d.ts.map +1 -0
  119. package/dist/src/platforms/instagram/commands/auth.js +330 -0
  120. package/dist/src/platforms/instagram/commands/auth.js.map +1 -0
  121. package/dist/src/platforms/instagram/commands/chat.d.ts +3 -0
  122. package/dist/src/platforms/instagram/commands/chat.d.ts.map +1 -0
  123. package/dist/src/platforms/instagram/commands/chat.js +42 -0
  124. package/dist/src/platforms/instagram/commands/chat.js.map +1 -0
  125. package/dist/src/platforms/instagram/commands/index.d.ts +4 -0
  126. package/dist/src/platforms/instagram/commands/index.d.ts.map +1 -0
  127. package/dist/src/platforms/instagram/commands/index.js +4 -0
  128. package/dist/src/platforms/instagram/commands/index.js.map +1 -0
  129. package/dist/src/platforms/instagram/commands/message.d.ts +3 -0
  130. package/dist/src/platforms/instagram/commands/message.d.ts.map +1 -0
  131. package/dist/src/platforms/instagram/commands/message.js +102 -0
  132. package/dist/src/platforms/instagram/commands/message.js.map +1 -0
  133. package/dist/src/platforms/instagram/commands/shared.d.ts +8 -0
  134. package/dist/src/platforms/instagram/commands/shared.d.ts.map +1 -0
  135. package/dist/src/platforms/instagram/commands/shared.js +31 -0
  136. package/dist/src/platforms/instagram/commands/shared.js.map +1 -0
  137. package/dist/src/platforms/instagram/credential-manager.d.ts +20 -0
  138. package/dist/src/platforms/instagram/credential-manager.d.ts.map +1 -0
  139. package/dist/src/platforms/instagram/credential-manager.js +104 -0
  140. package/dist/src/platforms/instagram/credential-manager.js.map +1 -0
  141. package/dist/src/platforms/instagram/ensure-auth.d.ts +2 -0
  142. package/dist/src/platforms/instagram/ensure-auth.d.ts.map +1 -0
  143. package/dist/src/platforms/instagram/ensure-auth.js +21 -0
  144. package/dist/src/platforms/instagram/ensure-auth.js.map +1 -0
  145. package/dist/src/platforms/instagram/index.d.ts +5 -0
  146. package/dist/src/platforms/instagram/index.d.ts.map +1 -0
  147. package/dist/src/platforms/instagram/index.js +5 -0
  148. package/dist/src/platforms/instagram/index.js.map +1 -0
  149. package/dist/src/platforms/instagram/listener.d.ts +32 -0
  150. package/dist/src/platforms/instagram/listener.d.ts.map +1 -0
  151. package/dist/src/platforms/instagram/listener.js +87 -0
  152. package/dist/src/platforms/instagram/listener.js.map +1 -0
  153. package/dist/src/platforms/instagram/types.d.ts +61 -0
  154. package/dist/src/platforms/instagram/types.d.ts.map +1 -0
  155. package/dist/src/platforms/instagram/types.js +89 -0
  156. package/dist/src/platforms/instagram/types.js.map +1 -0
  157. package/dist/src/platforms/kakaotalk/auth/kakao-login.d.ts +27 -0
  158. package/dist/src/platforms/kakaotalk/auth/kakao-login.d.ts.map +1 -0
  159. package/dist/src/platforms/kakaotalk/auth/kakao-login.js +213 -0
  160. package/dist/src/platforms/kakaotalk/auth/kakao-login.js.map +1 -0
  161. package/dist/src/platforms/kakaotalk/cli.d.ts +5 -0
  162. package/dist/src/platforms/kakaotalk/cli.d.ts.map +1 -0
  163. package/dist/src/platforms/kakaotalk/cli.js +30 -0
  164. package/dist/src/platforms/kakaotalk/cli.js.map +1 -0
  165. package/dist/src/platforms/kakaotalk/client.d.ts +40 -0
  166. package/dist/src/platforms/kakaotalk/client.d.ts.map +1 -0
  167. package/dist/src/platforms/kakaotalk/client.js +290 -0
  168. package/dist/src/platforms/kakaotalk/client.js.map +1 -0
  169. package/dist/src/platforms/kakaotalk/commands/auth.d.ts +3 -0
  170. package/dist/src/platforms/kakaotalk/commands/auth.d.ts.map +1 -0
  171. package/dist/src/platforms/kakaotalk/commands/auth.js +515 -0
  172. package/dist/src/platforms/kakaotalk/commands/auth.js.map +1 -0
  173. package/dist/src/platforms/kakaotalk/commands/chat.d.ts +3 -0
  174. package/dist/src/platforms/kakaotalk/commands/chat.d.ts.map +1 -0
  175. package/dist/src/platforms/kakaotalk/commands/chat.js +23 -0
  176. package/dist/src/platforms/kakaotalk/commands/chat.js.map +1 -0
  177. package/dist/src/platforms/kakaotalk/commands/index.d.ts +4 -0
  178. package/dist/src/platforms/kakaotalk/commands/index.d.ts.map +1 -0
  179. package/dist/src/platforms/kakaotalk/commands/index.js +4 -0
  180. package/dist/src/platforms/kakaotalk/commands/index.js.map +1 -0
  181. package/dist/src/platforms/kakaotalk/commands/message.d.ts +3 -0
  182. package/dist/src/platforms/kakaotalk/commands/message.d.ts.map +1 -0
  183. package/dist/src/platforms/kakaotalk/commands/message.js +41 -0
  184. package/dist/src/platforms/kakaotalk/commands/message.js.map +1 -0
  185. package/dist/src/platforms/kakaotalk/commands/shared.d.ts +7 -0
  186. package/dist/src/platforms/kakaotalk/commands/shared.d.ts.map +1 -0
  187. package/dist/src/platforms/kakaotalk/commands/shared.js +24 -0
  188. package/dist/src/platforms/kakaotalk/commands/shared.js.map +1 -0
  189. package/dist/src/platforms/kakaotalk/credential-manager.d.ts +27 -0
  190. package/dist/src/platforms/kakaotalk/credential-manager.d.ts.map +1 -0
  191. package/dist/src/platforms/kakaotalk/credential-manager.js +82 -0
  192. package/dist/src/platforms/kakaotalk/credential-manager.js.map +1 -0
  193. package/dist/src/platforms/kakaotalk/ensure-auth.d.ts +3 -0
  194. package/dist/src/platforms/kakaotalk/ensure-auth.d.ts.map +1 -0
  195. package/dist/src/platforms/kakaotalk/ensure-auth.js +11 -0
  196. package/dist/src/platforms/kakaotalk/ensure-auth.js.map +1 -0
  197. package/dist/src/platforms/kakaotalk/index.d.ts +7 -0
  198. package/dist/src/platforms/kakaotalk/index.d.ts.map +1 -0
  199. package/dist/src/platforms/kakaotalk/index.js +5 -0
  200. package/dist/src/platforms/kakaotalk/index.js.map +1 -0
  201. package/dist/src/platforms/kakaotalk/listener.d.ts +24 -0
  202. package/dist/src/platforms/kakaotalk/listener.d.ts.map +1 -0
  203. package/dist/src/platforms/kakaotalk/listener.js +171 -0
  204. package/dist/src/platforms/kakaotalk/listener.js.map +1 -0
  205. package/dist/src/platforms/kakaotalk/protocol/config.d.ts +14 -0
  206. package/dist/src/platforms/kakaotalk/protocol/config.d.ts.map +1 -0
  207. package/dist/src/platforms/kakaotalk/protocol/config.js +23 -0
  208. package/dist/src/platforms/kakaotalk/protocol/config.js.map +1 -0
  209. package/dist/src/platforms/kakaotalk/protocol/connection.d.ts +25 -0
  210. package/dist/src/platforms/kakaotalk/protocol/connection.d.ts.map +1 -0
  211. package/dist/src/platforms/kakaotalk/protocol/connection.js +144 -0
  212. package/dist/src/platforms/kakaotalk/protocol/connection.js.map +1 -0
  213. package/dist/src/platforms/kakaotalk/protocol/crypto.d.ts +8 -0
  214. package/dist/src/platforms/kakaotalk/protocol/crypto.d.ts.map +1 -0
  215. package/dist/src/platforms/kakaotalk/protocol/crypto.js +51 -0
  216. package/dist/src/platforms/kakaotalk/protocol/crypto.js.map +1 -0
  217. package/dist/src/platforms/kakaotalk/protocol/packet.d.ts +7 -0
  218. package/dist/src/platforms/kakaotalk/protocol/packet.d.ts.map +1 -0
  219. package/dist/src/platforms/kakaotalk/protocol/packet.js +38 -0
  220. package/dist/src/platforms/kakaotalk/protocol/packet.js.map +1 -0
  221. package/dist/src/platforms/kakaotalk/protocol/session.d.ts +18 -0
  222. package/dist/src/platforms/kakaotalk/protocol/session.d.ts.map +1 -0
  223. package/dist/src/platforms/kakaotalk/protocol/session.js +127 -0
  224. package/dist/src/platforms/kakaotalk/protocol/session.js.map +1 -0
  225. package/dist/src/platforms/kakaotalk/protocol/types.d.ts +41 -0
  226. package/dist/src/platforms/kakaotalk/protocol/types.d.ts.map +1 -0
  227. package/dist/src/platforms/kakaotalk/protocol/types.js +8 -0
  228. package/dist/src/platforms/kakaotalk/protocol/types.js.map +1 -0
  229. package/dist/src/platforms/kakaotalk/token-extractor.d.ts +17 -0
  230. package/dist/src/platforms/kakaotalk/token-extractor.d.ts.map +1 -0
  231. package/dist/src/platforms/kakaotalk/token-extractor.js +273 -0
  232. package/dist/src/platforms/kakaotalk/token-extractor.js.map +1 -0
  233. package/dist/src/platforms/kakaotalk/types.d.ts +198 -0
  234. package/dist/src/platforms/kakaotalk/types.d.ts.map +1 -0
  235. package/dist/src/platforms/kakaotalk/types.js +74 -0
  236. package/dist/src/platforms/kakaotalk/types.js.map +1 -0
  237. package/dist/src/platforms/line/cli.d.ts +5 -0
  238. package/dist/src/platforms/line/cli.d.ts.map +1 -0
  239. package/dist/src/platforms/line/cli.js +32 -0
  240. package/dist/src/platforms/line/cli.js.map +1 -0
  241. package/dist/src/platforms/line/client.d.ts +31 -0
  242. package/dist/src/platforms/line/client.d.ts.map +1 -0
  243. package/dist/src/platforms/line/client.js +296 -0
  244. package/dist/src/platforms/line/client.js.map +1 -0
  245. package/dist/src/platforms/line/commands/auth.d.ts +3 -0
  246. package/dist/src/platforms/line/commands/auth.d.ts.map +1 -0
  247. package/dist/src/platforms/line/commands/auth.js +199 -0
  248. package/dist/src/platforms/line/commands/auth.js.map +1 -0
  249. package/dist/src/platforms/line/commands/chat.d.ts +3 -0
  250. package/dist/src/platforms/line/commands/chat.d.ts.map +1 -0
  251. package/dist/src/platforms/line/commands/chat.js +28 -0
  252. package/dist/src/platforms/line/commands/chat.js.map +1 -0
  253. package/dist/src/platforms/line/commands/friend.d.ts +3 -0
  254. package/dist/src/platforms/line/commands/friend.d.ts.map +1 -0
  255. package/dist/src/platforms/line/commands/friend.js +25 -0
  256. package/dist/src/platforms/line/commands/friend.js.map +1 -0
  257. package/dist/src/platforms/line/commands/index.d.ts +6 -0
  258. package/dist/src/platforms/line/commands/index.d.ts.map +1 -0
  259. package/dist/src/platforms/line/commands/index.js +6 -0
  260. package/dist/src/platforms/line/commands/index.js.map +1 -0
  261. package/dist/src/platforms/line/commands/message.d.ts +3 -0
  262. package/dist/src/platforms/line/commands/message.d.ts.map +1 -0
  263. package/dist/src/platforms/line/commands/message.js +48 -0
  264. package/dist/src/platforms/line/commands/message.js.map +1 -0
  265. package/dist/src/platforms/line/commands/profile.d.ts +3 -0
  266. package/dist/src/platforms/line/commands/profile.d.ts.map +1 -0
  267. package/dist/src/platforms/line/commands/profile.js +23 -0
  268. package/dist/src/platforms/line/commands/profile.js.map +1 -0
  269. package/dist/src/platforms/line/credential-manager.d.ts +22 -0
  270. package/dist/src/platforms/line/credential-manager.d.ts.map +1 -0
  271. package/dist/src/platforms/line/credential-manager.js +71 -0
  272. package/dist/src/platforms/line/credential-manager.js.map +1 -0
  273. package/dist/src/platforms/line/ensure-auth.d.ts +3 -0
  274. package/dist/src/platforms/line/ensure-auth.d.ts.map +1 -0
  275. package/dist/src/platforms/line/ensure-auth.js +10 -0
  276. package/dist/src/platforms/line/ensure-auth.js.map +1 -0
  277. package/dist/src/platforms/line/index.d.ts +7 -0
  278. package/dist/src/platforms/line/index.d.ts.map +1 -0
  279. package/dist/src/platforms/line/index.js +6 -0
  280. package/dist/src/platforms/line/index.js.map +1 -0
  281. package/dist/src/platforms/line/listener.d.ts +22 -0
  282. package/dist/src/platforms/line/listener.d.ts.map +1 -0
  283. package/dist/src/platforms/line/listener.js +121 -0
  284. package/dist/src/platforms/line/listener.js.map +1 -0
  285. package/dist/src/platforms/line/types.d.ts +165 -0
  286. package/dist/src/platforms/line/types.d.ts.map +1 -0
  287. package/dist/src/platforms/line/types.js +79 -0
  288. package/dist/src/platforms/line/types.js.map +1 -0
  289. package/dist/src/platforms/slack/cli.d.ts.map +1 -1
  290. package/dist/src/platforms/slack/cli.js +6 -1
  291. package/dist/src/platforms/slack/cli.js.map +1 -1
  292. package/dist/src/platforms/slack/client.d.ts +85 -3
  293. package/dist/src/platforms/slack/client.d.ts.map +1 -1
  294. package/dist/src/platforms/slack/client.js +577 -40
  295. package/dist/src/platforms/slack/client.js.map +1 -1
  296. package/dist/src/platforms/slack/commands/activity.js +1 -1
  297. package/dist/src/platforms/slack/commands/activity.js.map +1 -1
  298. package/dist/src/platforms/slack/commands/auth.js +2 -2
  299. package/dist/src/platforms/slack/commands/auth.js.map +1 -1
  300. package/dist/src/platforms/slack/commands/bookmark.d.ts +3 -0
  301. package/dist/src/platforms/slack/commands/bookmark.d.ts.map +1 -0
  302. package/dist/src/platforms/slack/commands/bookmark.js +116 -0
  303. package/dist/src/platforms/slack/commands/bookmark.js.map +1 -0
  304. package/dist/src/platforms/slack/commands/channel.d.ts.map +1 -1
  305. package/dist/src/platforms/slack/commands/channel.js +198 -5
  306. package/dist/src/platforms/slack/commands/channel.js.map +1 -1
  307. package/dist/src/platforms/slack/commands/drafts.js +1 -1
  308. package/dist/src/platforms/slack/commands/drafts.js.map +1 -1
  309. package/dist/src/platforms/slack/commands/emoji.d.ts +3 -0
  310. package/dist/src/platforms/slack/commands/emoji.d.ts.map +1 -0
  311. package/dist/src/platforms/slack/commands/emoji.js +27 -0
  312. package/dist/src/platforms/slack/commands/emoji.js.map +1 -0
  313. package/dist/src/platforms/slack/commands/file.d.ts.map +1 -1
  314. package/dist/src/platforms/slack/commands/file.js +26 -5
  315. package/dist/src/platforms/slack/commands/file.js.map +1 -1
  316. package/dist/src/platforms/slack/commands/index.d.ts +5 -0
  317. package/dist/src/platforms/slack/commands/index.d.ts.map +1 -1
  318. package/dist/src/platforms/slack/commands/index.js +5 -0
  319. package/dist/src/platforms/slack/commands/index.js.map +1 -1
  320. package/dist/src/platforms/slack/commands/message.d.ts.map +1 -1
  321. package/dist/src/platforms/slack/commands/message.js +134 -8
  322. package/dist/src/platforms/slack/commands/message.js.map +1 -1
  323. package/dist/src/platforms/slack/commands/pin.d.ts +3 -0
  324. package/dist/src/platforms/slack/commands/pin.d.ts.map +1 -0
  325. package/dist/src/platforms/slack/commands/pin.js +76 -0
  326. package/dist/src/platforms/slack/commands/pin.js.map +1 -0
  327. package/dist/src/platforms/slack/commands/reaction.js +3 -3
  328. package/dist/src/platforms/slack/commands/reaction.js.map +1 -1
  329. package/dist/src/platforms/slack/commands/reminder.d.ts +3 -0
  330. package/dist/src/platforms/slack/commands/reminder.d.ts.map +1 -0
  331. package/dist/src/platforms/slack/commands/reminder.js +98 -0
  332. package/dist/src/platforms/slack/commands/reminder.js.map +1 -0
  333. package/dist/src/platforms/slack/commands/saved.js +1 -1
  334. package/dist/src/platforms/slack/commands/saved.js.map +1 -1
  335. package/dist/src/platforms/slack/commands/sections.js +1 -1
  336. package/dist/src/platforms/slack/commands/sections.js.map +1 -1
  337. package/dist/src/platforms/slack/commands/snapshot.d.ts.map +1 -1
  338. package/dist/src/platforms/slack/commands/snapshot.js +12 -1
  339. package/dist/src/platforms/slack/commands/snapshot.js.map +1 -1
  340. package/dist/src/platforms/slack/commands/unread.js +3 -3
  341. package/dist/src/platforms/slack/commands/unread.js.map +1 -1
  342. package/dist/src/platforms/slack/commands/user.d.ts.map +1 -1
  343. package/dist/src/platforms/slack/commands/user.js +78 -1
  344. package/dist/src/platforms/slack/commands/user.js.map +1 -1
  345. package/dist/src/platforms/slack/commands/usergroup.d.ts +3 -0
  346. package/dist/src/platforms/slack/commands/usergroup.d.ts.map +1 -0
  347. package/dist/src/platforms/slack/commands/usergroup.js +190 -0
  348. package/dist/src/platforms/slack/commands/usergroup.js.map +1 -0
  349. package/dist/src/platforms/slack/credential-manager.d.ts +2 -1
  350. package/dist/src/platforms/slack/credential-manager.d.ts.map +1 -1
  351. package/dist/src/platforms/slack/credential-manager.js +2 -1
  352. package/dist/src/platforms/slack/credential-manager.js.map +1 -1
  353. package/dist/src/platforms/slack/ensure-auth.js +4 -4
  354. package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
  355. package/dist/src/platforms/slack/index.d.ts +4 -1
  356. package/dist/src/platforms/slack/index.d.ts.map +1 -1
  357. package/dist/src/platforms/slack/index.js +3 -1
  358. package/dist/src/platforms/slack/index.js.map +1 -1
  359. package/dist/src/platforms/slack/listener.d.ts +30 -0
  360. package/dist/src/platforms/slack/listener.d.ts.map +1 -0
  361. package/dist/src/platforms/slack/listener.js +157 -0
  362. package/dist/src/platforms/slack/listener.js.map +1 -0
  363. package/dist/src/platforms/slack/types.d.ts +198 -275
  364. package/dist/src/platforms/slack/types.d.ts.map +1 -1
  365. package/dist/src/platforms/slack/types.js +22 -0
  366. package/dist/src/platforms/slack/types.js.map +1 -1
  367. package/dist/src/platforms/slackbot/client.d.ts +4 -1
  368. package/dist/src/platforms/slackbot/client.d.ts.map +1 -1
  369. package/dist/src/platforms/slackbot/client.js +40 -21
  370. package/dist/src/platforms/slackbot/client.js.map +1 -1
  371. package/dist/src/platforms/slackbot/commands/auth.js +2 -2
  372. package/dist/src/platforms/slackbot/commands/auth.js.map +1 -1
  373. package/dist/src/platforms/slackbot/commands/shared.js +1 -1
  374. package/dist/src/platforms/slackbot/commands/shared.js.map +1 -1
  375. package/dist/src/platforms/slackbot/types.d.ts +20 -282
  376. package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
  377. package/dist/src/platforms/teams/client.d.ts +5 -1
  378. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  379. package/dist/src/platforms/teams/client.js +27 -9
  380. package/dist/src/platforms/teams/client.js.map +1 -1
  381. package/dist/src/platforms/teams/commands/auth.js +3 -3
  382. package/dist/src/platforms/teams/commands/auth.js.map +1 -1
  383. package/dist/src/platforms/teams/commands/channel.js +3 -3
  384. package/dist/src/platforms/teams/commands/channel.js.map +1 -1
  385. package/dist/src/platforms/teams/commands/file.js +3 -3
  386. package/dist/src/platforms/teams/commands/file.js.map +1 -1
  387. package/dist/src/platforms/teams/commands/message.js +4 -4
  388. package/dist/src/platforms/teams/commands/message.js.map +1 -1
  389. package/dist/src/platforms/teams/commands/reaction.js +2 -2
  390. package/dist/src/platforms/teams/commands/reaction.js.map +1 -1
  391. package/dist/src/platforms/teams/commands/snapshot.js +1 -1
  392. package/dist/src/platforms/teams/commands/snapshot.js.map +1 -1
  393. package/dist/src/platforms/teams/commands/team.js +1 -1
  394. package/dist/src/platforms/teams/commands/team.js.map +1 -1
  395. package/dist/src/platforms/teams/commands/user.js +3 -3
  396. package/dist/src/platforms/teams/commands/user.js.map +1 -1
  397. package/dist/src/platforms/teams/ensure-auth.js +1 -1
  398. package/dist/src/platforms/teams/ensure-auth.js.map +1 -1
  399. package/dist/src/platforms/teams/index.d.ts +6 -0
  400. package/dist/src/platforms/teams/index.d.ts.map +1 -0
  401. package/dist/src/platforms/teams/index.js +5 -0
  402. package/dist/src/platforms/teams/index.js.map +1 -0
  403. package/dist/src/platforms/teams/types.d.ts +26 -193
  404. package/dist/src/platforms/teams/types.d.ts.map +1 -1
  405. package/dist/src/platforms/telegram/app-config.d.ts +7 -0
  406. package/dist/src/platforms/telegram/app-config.d.ts.map +1 -0
  407. package/dist/src/platforms/telegram/app-config.js +39 -0
  408. package/dist/src/platforms/telegram/app-config.js.map +1 -0
  409. package/dist/src/platforms/telegram/chat-utils.d.ts +5 -0
  410. package/dist/src/platforms/telegram/chat-utils.d.ts.map +1 -0
  411. package/dist/src/platforms/telegram/chat-utils.js +33 -0
  412. package/dist/src/platforms/telegram/chat-utils.js.map +1 -0
  413. package/dist/src/platforms/telegram/cli.d.ts +5 -0
  414. package/dist/src/platforms/telegram/cli.d.ts.map +1 -0
  415. package/dist/src/platforms/telegram/cli.js +15 -0
  416. package/dist/src/platforms/telegram/cli.js.map +1 -0
  417. package/dist/src/platforms/telegram/client.d.ts +47 -0
  418. package/dist/src/platforms/telegram/client.d.ts.map +1 -0
  419. package/dist/src/platforms/telegram/client.js +481 -0
  420. package/dist/src/platforms/telegram/client.js.map +1 -0
  421. package/dist/src/platforms/telegram/commands/auth.d.ts +44 -0
  422. package/dist/src/platforms/telegram/commands/auth.d.ts.map +1 -0
  423. package/dist/src/platforms/telegram/commands/auth.js +522 -0
  424. package/dist/src/platforms/telegram/commands/auth.js.map +1 -0
  425. package/dist/src/platforms/telegram/commands/chat.d.ts +3 -0
  426. package/dist/src/platforms/telegram/commands/chat.d.ts.map +1 -0
  427. package/dist/src/platforms/telegram/commands/chat.js +55 -0
  428. package/dist/src/platforms/telegram/commands/chat.js.map +1 -0
  429. package/dist/src/platforms/telegram/commands/index.d.ts +4 -0
  430. package/dist/src/platforms/telegram/commands/index.d.ts.map +1 -0
  431. package/dist/src/platforms/telegram/commands/index.js +4 -0
  432. package/dist/src/platforms/telegram/commands/index.js.map +1 -0
  433. package/dist/src/platforms/telegram/commands/message.d.ts +3 -0
  434. package/dist/src/platforms/telegram/commands/message.d.ts.map +1 -0
  435. package/dist/src/platforms/telegram/commands/message.js +40 -0
  436. package/dist/src/platforms/telegram/commands/message.js.map +1 -0
  437. package/dist/src/platforms/telegram/commands/shared.d.ts +10 -0
  438. package/dist/src/platforms/telegram/commands/shared.d.ts.map +1 -0
  439. package/dist/src/platforms/telegram/commands/shared.js +32 -0
  440. package/dist/src/platforms/telegram/commands/shared.js.map +1 -0
  441. package/dist/src/platforms/telegram/credential-manager.d.ts +25 -0
  442. package/dist/src/platforms/telegram/credential-manager.d.ts.map +1 -0
  443. package/dist/src/platforms/telegram/credential-manager.js +159 -0
  444. package/dist/src/platforms/telegram/credential-manager.js.map +1 -0
  445. package/dist/src/platforms/telegram/my-telegram-org.d.ts +14 -0
  446. package/dist/src/platforms/telegram/my-telegram-org.d.ts.map +1 -0
  447. package/dist/src/platforms/telegram/my-telegram-org.js +164 -0
  448. package/dist/src/platforms/telegram/my-telegram-org.js.map +1 -0
  449. package/dist/src/platforms/telegram/tdlib.d.ts +11 -0
  450. package/dist/src/platforms/telegram/tdlib.d.ts.map +1 -0
  451. package/dist/src/platforms/telegram/tdlib.js +113 -0
  452. package/dist/src/platforms/telegram/tdlib.js.map +1 -0
  453. package/dist/src/platforms/telegram/types.d.ts +192 -0
  454. package/dist/src/platforms/telegram/types.d.ts.map +1 -0
  455. package/dist/src/platforms/telegram/types.js +183 -0
  456. package/dist/src/platforms/telegram/types.js.map +1 -0
  457. package/dist/src/platforms/whatsapp/cli.d.ts +6 -0
  458. package/dist/src/platforms/whatsapp/cli.d.ts.map +1 -0
  459. package/dist/src/platforms/whatsapp/cli.js +31 -0
  460. package/dist/src/platforms/whatsapp/cli.js.map +1 -0
  461. package/dist/src/platforms/whatsapp/client.d.ts +39 -0
  462. package/dist/src/platforms/whatsapp/client.d.ts.map +1 -0
  463. package/dist/src/platforms/whatsapp/client.js +436 -0
  464. package/dist/src/platforms/whatsapp/client.js.map +1 -0
  465. package/dist/src/platforms/whatsapp/commands/auth.d.ts +3 -0
  466. package/dist/src/platforms/whatsapp/commands/auth.d.ts.map +1 -0
  467. package/dist/src/platforms/whatsapp/commands/auth.js +170 -0
  468. package/dist/src/platforms/whatsapp/commands/auth.js.map +1 -0
  469. package/dist/src/platforms/whatsapp/commands/chat.d.ts +3 -0
  470. package/dist/src/platforms/whatsapp/commands/chat.d.ts.map +1 -0
  471. package/dist/src/platforms/whatsapp/commands/chat.js +42 -0
  472. package/dist/src/platforms/whatsapp/commands/chat.js.map +1 -0
  473. package/dist/src/platforms/whatsapp/commands/index.d.ts +4 -0
  474. package/dist/src/platforms/whatsapp/commands/index.d.ts.map +1 -0
  475. package/dist/src/platforms/whatsapp/commands/index.js +4 -0
  476. package/dist/src/platforms/whatsapp/commands/index.js.map +1 -0
  477. package/dist/src/platforms/whatsapp/commands/message.d.ts +3 -0
  478. package/dist/src/platforms/whatsapp/commands/message.d.ts.map +1 -0
  479. package/dist/src/platforms/whatsapp/commands/message.js +61 -0
  480. package/dist/src/platforms/whatsapp/commands/message.js.map +1 -0
  481. package/dist/src/platforms/whatsapp/commands/shared.d.ts +8 -0
  482. package/dist/src/platforms/whatsapp/commands/shared.d.ts.map +1 -0
  483. package/dist/src/platforms/whatsapp/commands/shared.js +37 -0
  484. package/dist/src/platforms/whatsapp/commands/shared.js.map +1 -0
  485. package/dist/src/platforms/whatsapp/credential-manager.d.ts +20 -0
  486. package/dist/src/platforms/whatsapp/credential-manager.d.ts.map +1 -0
  487. package/dist/src/platforms/whatsapp/credential-manager.js +104 -0
  488. package/dist/src/platforms/whatsapp/credential-manager.js.map +1 -0
  489. package/dist/src/platforms/whatsapp/ensure-auth.d.ts +2 -0
  490. package/dist/src/platforms/whatsapp/ensure-auth.d.ts.map +1 -0
  491. package/dist/src/platforms/whatsapp/ensure-auth.js +23 -0
  492. package/dist/src/platforms/whatsapp/ensure-auth.js.map +1 -0
  493. package/dist/src/platforms/whatsapp/index.d.ts +4 -0
  494. package/dist/src/platforms/whatsapp/index.d.ts.map +1 -0
  495. package/dist/src/platforms/whatsapp/index.js +4 -0
  496. package/dist/src/platforms/whatsapp/index.js.map +1 -0
  497. package/dist/src/platforms/whatsapp/suppress-ws-warnings.d.ts +11 -0
  498. package/dist/src/platforms/whatsapp/suppress-ws-warnings.d.ts.map +1 -0
  499. package/dist/src/platforms/whatsapp/suppress-ws-warnings.js +24 -0
  500. package/dist/src/platforms/whatsapp/suppress-ws-warnings.js.map +1 -0
  501. package/dist/src/platforms/whatsapp/types.d.ts +42 -0
  502. package/dist/src/platforms/whatsapp/types.d.ts.map +1 -0
  503. package/dist/src/platforms/whatsapp/types.js +75 -0
  504. package/dist/src/platforms/whatsapp/types.js.map +1 -0
  505. package/dist/src/platforms/whatsappbot/cli.d.ts +5 -0
  506. package/dist/src/platforms/whatsappbot/cli.d.ts.map +1 -0
  507. package/dist/src/platforms/whatsappbot/cli.js +17 -0
  508. package/dist/src/platforms/whatsappbot/cli.js.map +1 -0
  509. package/dist/src/platforms/whatsappbot/client.d.ts +31 -0
  510. package/dist/src/platforms/whatsappbot/client.d.ts.map +1 -0
  511. package/dist/src/platforms/whatsappbot/client.js +202 -0
  512. package/dist/src/platforms/whatsappbot/client.js.map +1 -0
  513. package/dist/src/platforms/whatsappbot/commands/auth.d.ts +28 -0
  514. package/dist/src/platforms/whatsappbot/commands/auth.d.ts.map +1 -0
  515. package/dist/src/platforms/whatsappbot/commands/auth.js +163 -0
  516. package/dist/src/platforms/whatsappbot/commands/auth.js.map +1 -0
  517. package/dist/src/platforms/whatsappbot/commands/index.d.ts +4 -0
  518. package/dist/src/platforms/whatsappbot/commands/index.d.ts.map +1 -0
  519. package/dist/src/platforms/whatsappbot/commands/index.js +4 -0
  520. package/dist/src/platforms/whatsappbot/commands/index.js.map +1 -0
  521. package/dist/src/platforms/whatsappbot/commands/message.d.ts +27 -0
  522. package/dist/src/platforms/whatsappbot/commands/message.d.ts.map +1 -0
  523. package/dist/src/platforms/whatsappbot/commands/message.js +122 -0
  524. package/dist/src/platforms/whatsappbot/commands/message.js.map +1 -0
  525. package/dist/src/platforms/whatsappbot/commands/shared.d.ts +9 -0
  526. package/dist/src/platforms/whatsappbot/commands/shared.d.ts.map +1 -0
  527. package/dist/src/platforms/whatsappbot/commands/shared.js +13 -0
  528. package/dist/src/platforms/whatsappbot/commands/shared.js.map +1 -0
  529. package/dist/src/platforms/whatsappbot/commands/template.d.ts +16 -0
  530. package/dist/src/platforms/whatsappbot/commands/template.d.ts.map +1 -0
  531. package/dist/src/platforms/whatsappbot/commands/template.js +51 -0
  532. package/dist/src/platforms/whatsappbot/commands/template.js.map +1 -0
  533. package/dist/src/platforms/whatsappbot/credential-manager.d.ts +17 -0
  534. package/dist/src/platforms/whatsappbot/credential-manager.d.ts.map +1 -0
  535. package/dist/src/platforms/whatsappbot/credential-manager.js +121 -0
  536. package/dist/src/platforms/whatsappbot/credential-manager.js.map +1 -0
  537. package/dist/src/platforms/whatsappbot/index.d.ts +5 -0
  538. package/dist/src/platforms/whatsappbot/index.d.ts.map +1 -0
  539. package/dist/src/platforms/whatsappbot/index.js +4 -0
  540. package/dist/src/platforms/whatsappbot/index.js.map +1 -0
  541. package/dist/src/platforms/whatsappbot/types.d.ts +66 -0
  542. package/dist/src/platforms/whatsappbot/types.d.ts.map +1 -0
  543. package/dist/src/platforms/whatsappbot/types.js +28 -0
  544. package/dist/src/platforms/whatsappbot/types.js.map +1 -0
  545. package/dist/src/tui/adapters/channeltalk-adapter.d.ts +19 -0
  546. package/dist/src/tui/adapters/channeltalk-adapter.d.ts.map +1 -0
  547. package/dist/src/tui/adapters/channeltalk-adapter.js +88 -0
  548. package/dist/src/tui/adapters/channeltalk-adapter.js.map +1 -0
  549. package/dist/src/tui/adapters/discord-adapter.d.ts +22 -0
  550. package/dist/src/tui/adapters/discord-adapter.d.ts.map +1 -0
  551. package/dist/src/tui/adapters/discord-adapter.js +100 -0
  552. package/dist/src/tui/adapters/discord-adapter.js.map +1 -0
  553. package/dist/src/tui/adapters/instagram-adapter.d.ts +18 -0
  554. package/dist/src/tui/adapters/instagram-adapter.d.ts.map +1 -0
  555. package/dist/src/tui/adapters/instagram-adapter.js +115 -0
  556. package/dist/src/tui/adapters/instagram-adapter.js.map +1 -0
  557. package/dist/src/tui/adapters/kakaotalk-adapter.d.ts +18 -0
  558. package/dist/src/tui/adapters/kakaotalk-adapter.d.ts.map +1 -0
  559. package/dist/src/tui/adapters/kakaotalk-adapter.js +146 -0
  560. package/dist/src/tui/adapters/kakaotalk-adapter.js.map +1 -0
  561. package/dist/src/tui/adapters/line-adapter.d.ts +18 -0
  562. package/dist/src/tui/adapters/line-adapter.d.ts.map +1 -0
  563. package/dist/src/tui/adapters/line-adapter.js +92 -0
  564. package/dist/src/tui/adapters/line-adapter.js.map +1 -0
  565. package/dist/src/tui/adapters/slack-adapter.d.ts +23 -0
  566. package/dist/src/tui/adapters/slack-adapter.d.ts.map +1 -0
  567. package/dist/src/tui/adapters/slack-adapter.js +111 -0
  568. package/dist/src/tui/adapters/slack-adapter.js.map +1 -0
  569. package/dist/src/tui/adapters/teams-adapter.d.ts +20 -0
  570. package/dist/src/tui/adapters/teams-adapter.d.ts.map +1 -0
  571. package/dist/src/tui/adapters/teams-adapter.js +85 -0
  572. package/dist/src/tui/adapters/teams-adapter.js.map +1 -0
  573. package/dist/src/tui/adapters/telegram-adapter.d.ts +18 -0
  574. package/dist/src/tui/adapters/telegram-adapter.d.ts.map +1 -0
  575. package/dist/src/tui/adapters/telegram-adapter.js +183 -0
  576. package/dist/src/tui/adapters/telegram-adapter.js.map +1 -0
  577. package/dist/src/tui/adapters/types.d.ts +41 -0
  578. package/dist/src/tui/adapters/types.d.ts.map +1 -0
  579. package/dist/src/tui/adapters/types.js +2 -0
  580. package/dist/src/tui/adapters/types.js.map +1 -0
  581. package/dist/src/tui/adapters/whatsapp-adapter.d.ts +18 -0
  582. package/dist/src/tui/adapters/whatsapp-adapter.d.ts.map +1 -0
  583. package/dist/src/tui/adapters/whatsapp-adapter.js +120 -0
  584. package/dist/src/tui/adapters/whatsapp-adapter.js.map +1 -0
  585. package/dist/src/tui/app.d.ts +2 -0
  586. package/dist/src/tui/app.d.ts.map +1 -0
  587. package/dist/src/tui/app.js +652 -0
  588. package/dist/src/tui/app.js.map +1 -0
  589. package/dist/src/tui/cli.d.ts +3 -0
  590. package/dist/src/tui/cli.d.ts.map +1 -0
  591. package/dist/src/tui/cli.js +14 -0
  592. package/dist/src/tui/cli.js.map +1 -0
  593. package/dist/src/tui/utils.d.ts +5 -0
  594. package/dist/src/tui/utils.d.ts.map +1 -0
  595. package/dist/src/tui/utils.js +54 -0
  596. package/dist/src/tui/utils.js.map +1 -0
  597. package/dist/src/tui/views/channel-picker.d.ts +18 -0
  598. package/dist/src/tui/views/channel-picker.d.ts.map +1 -0
  599. package/dist/src/tui/views/channel-picker.js +131 -0
  600. package/dist/src/tui/views/channel-picker.js.map +1 -0
  601. package/dist/src/tui/views/workspace-picker.d.ts +18 -0
  602. package/dist/src/tui/views/workspace-picker.d.ts.map +1 -0
  603. package/dist/src/tui/views/workspace-picker.js +131 -0
  604. package/dist/src/tui/views/workspace-picker.js.map +1 -0
  605. package/docs/bun.lock +2 -666
  606. package/docs/content/docs/agent-skills.mdx +1 -1
  607. package/docs/content/docs/cli/channeltalk.mdx +264 -0
  608. package/docs/content/docs/cli/channeltalkbot.mdx +261 -0
  609. package/docs/content/docs/cli/instagram.mdx +211 -0
  610. package/docs/content/docs/cli/kakaotalk.mdx +286 -0
  611. package/docs/content/docs/cli/line.mdx +306 -0
  612. package/docs/content/docs/cli/meta.json +18 -0
  613. package/docs/content/docs/cli/slack.mdx +395 -0
  614. package/docs/content/docs/{integrations → cli}/slackbot.mdx +1 -1
  615. package/docs/content/docs/{integrations → cli}/teams.mdx +2 -2
  616. package/docs/content/docs/cli/telegram.mdx +107 -0
  617. package/docs/content/docs/cli/whatsapp.mdx +163 -0
  618. package/docs/content/docs/cli/whatsappbot.mdx +169 -0
  619. package/docs/content/docs/index.mdx +21 -13
  620. package/docs/content/docs/meta.json +9 -1
  621. package/docs/content/docs/quick-start.mdx +29 -6
  622. package/docs/content/docs/sdk/channeltalk.mdx +384 -0
  623. package/docs/content/docs/sdk/channeltalkbot.mdx +395 -0
  624. package/docs/content/docs/sdk/discord.mdx +535 -0
  625. package/docs/content/docs/sdk/instagram.mdx +367 -0
  626. package/docs/content/docs/sdk/kakaotalk.mdx +290 -0
  627. package/docs/content/docs/sdk/line.mdx +347 -0
  628. package/docs/content/docs/sdk/meta.json +4 -0
  629. package/docs/content/docs/sdk/slack.mdx +671 -0
  630. package/docs/content/docs/sdk/teams.mdx +350 -0
  631. package/docs/content/docs/sdk/whatsapp.mdx +293 -0
  632. package/docs/content/docs/sdk/whatsappbot.mdx +266 -0
  633. package/docs/content/docs/tui.mdx +137 -0
  634. package/docs/public/tui.png +0 -0
  635. package/docs/src/app/page.tsx +885 -308
  636. package/e2e/discordbot.e2e.test.ts +1 -1
  637. package/examples/discord-listen.ts +56 -0
  638. package/examples/kakaotalk-listen.ts +49 -0
  639. package/examples/slack-listen.ts +60 -0
  640. package/package.json +118 -9
  641. package/scripts/postbuild.ts +1 -0
  642. package/scripts/prepublish.ts +21 -1
  643. package/skills/agent-channeltalk/SKILL.md +18 -6
  644. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  645. package/skills/agent-discord/SKILL.md +77 -2
  646. package/skills/agent-discord/references/common-patterns.md +1 -1
  647. package/skills/agent-discordbot/SKILL.md +1 -1
  648. package/skills/agent-instagram/SKILL.md +383 -0
  649. package/skills/agent-instagram/references/authentication.md +256 -0
  650. package/skills/agent-instagram/references/common-patterns.md +362 -0
  651. package/skills/agent-instagram/templates/chat-summary.sh +124 -0
  652. package/skills/agent-instagram/templates/monitor-chat.sh +143 -0
  653. package/skills/agent-instagram/templates/post-message.sh +130 -0
  654. package/skills/agent-kakaotalk/SKILL.md +587 -0
  655. package/skills/agent-kakaotalk/references/authentication.md +343 -0
  656. package/skills/agent-kakaotalk/references/common-patterns.md +403 -0
  657. package/skills/agent-kakaotalk/templates/chat-summary.sh +121 -0
  658. package/skills/agent-kakaotalk/templates/monitor-chat.sh +160 -0
  659. package/skills/agent-kakaotalk/templates/post-message.sh +123 -0
  660. package/skills/agent-line/SKILL.md +490 -0
  661. package/skills/agent-line/references/authentication.md +297 -0
  662. package/skills/agent-line/references/common-patterns.md +355 -0
  663. package/skills/agent-line/templates/chat-summary.sh +63 -0
  664. package/skills/agent-line/templates/monitor-chat.sh +76 -0
  665. package/skills/agent-line/templates/post-message.sh +123 -0
  666. package/skills/agent-slack/SKILL.md +266 -7
  667. package/skills/agent-slack/references/common-patterns.md +105 -39
  668. package/skills/agent-slackbot/SKILL.md +1 -1
  669. package/skills/agent-slackbot/references/common-patterns.md +52 -0
  670. package/skills/agent-teams/SKILL.md +49 -1
  671. package/skills/agent-telegram/SKILL.md +123 -0
  672. package/skills/agent-whatsapp/SKILL.md +382 -0
  673. package/skills/agent-whatsapp/references/authentication.md +191 -0
  674. package/skills/agent-whatsapp/references/common-patterns.md +336 -0
  675. package/skills/agent-whatsapp/templates/chat-summary.sh +122 -0
  676. package/skills/agent-whatsapp/templates/monitor-chat.sh +157 -0
  677. package/skills/agent-whatsapp/templates/post-message.sh +120 -0
  678. package/skills/agent-whatsappbot/SKILL.md +371 -0
  679. package/skills/agent-whatsappbot/references/authentication.md +216 -0
  680. package/skills/agent-whatsappbot/references/common-patterns.md +331 -0
  681. package/skills/agent-whatsappbot/templates/account-summary.sh +127 -0
  682. package/skills/agent-whatsappbot/templates/post-message.sh +120 -0
  683. package/skills/agent-whatsappbot/templates/send-template.sh +153 -0
  684. package/src/cli.ts +34 -6
  685. package/src/platforms/channeltalk/client.test.ts +30 -28
  686. package/src/platforms/channeltalk/client.ts +29 -8
  687. package/src/platforms/channeltalk/commands/auth.ts +9 -7
  688. package/src/platforms/channeltalk/commands/shared.ts +1 -1
  689. package/src/platforms/channeltalk/ensure-auth.ts +10 -8
  690. package/src/platforms/channeltalk/index.test.ts +114 -0
  691. package/src/platforms/channeltalk/index.ts +27 -14
  692. package/src/platforms/channeltalk/token-extractor.test.ts +227 -65
  693. package/src/platforms/channeltalk/token-extractor.ts +146 -25
  694. package/src/platforms/channeltalk/types.ts +3 -1
  695. package/src/platforms/channeltalkbot/client.test.ts +12 -12
  696. package/src/platforms/channeltalkbot/client.ts +31 -11
  697. package/src/platforms/channeltalkbot/commands/auth.test.ts +1 -5
  698. package/src/platforms/channeltalkbot/commands/auth.ts +2 -2
  699. package/src/platforms/channeltalkbot/commands/shared.ts +1 -1
  700. package/src/platforms/channeltalkbot/index.test.ts +76 -0
  701. package/src/platforms/channeltalkbot/index.ts +14 -11
  702. package/src/platforms/discord/client.test.ts +30 -30
  703. package/src/platforms/discord/client.ts +33 -6
  704. package/src/platforms/discord/commands/auth.test.ts +2 -2
  705. package/src/platforms/discord/commands/auth.ts +2 -2
  706. package/src/platforms/discord/commands/channel.test.ts +6 -6
  707. package/src/platforms/discord/commands/channel.ts +3 -3
  708. package/src/platforms/discord/commands/dm.ts +2 -2
  709. package/src/platforms/discord/commands/file.ts +3 -3
  710. package/src/platforms/discord/commands/friend.test.ts +5 -5
  711. package/src/platforms/discord/commands/friend.ts +1 -1
  712. package/src/platforms/discord/commands/member.test.ts +4 -4
  713. package/src/platforms/discord/commands/member.ts +1 -1
  714. package/src/platforms/discord/commands/mention.test.ts +4 -4
  715. package/src/platforms/discord/commands/mention.ts +1 -1
  716. package/src/platforms/discord/commands/message.ts +6 -6
  717. package/src/platforms/discord/commands/note.ts +2 -2
  718. package/src/platforms/discord/commands/profile.ts +1 -1
  719. package/src/platforms/discord/commands/reaction.ts +3 -3
  720. package/src/platforms/discord/commands/server.test.ts +2 -2
  721. package/src/platforms/discord/commands/server.ts +1 -1
  722. package/src/platforms/discord/commands/snapshot.ts +1 -1
  723. package/src/platforms/discord/commands/thread.test.ts +5 -5
  724. package/src/platforms/discord/commands/thread.ts +2 -2
  725. package/src/platforms/discord/commands/user.ts +3 -3
  726. package/src/platforms/discord/ensure-auth.ts +1 -1
  727. package/src/platforms/discord/index.test.ts +84 -0
  728. package/src/platforms/discord/index.ts +51 -0
  729. package/src/platforms/discord/listener.test.ts +782 -0
  730. package/src/platforms/discord/listener.ts +297 -0
  731. package/src/platforms/discord/types.ts +133 -0
  732. package/src/platforms/discordbot/client.test.ts +33 -33
  733. package/src/platforms/discordbot/client.ts +28 -7
  734. package/src/platforms/discordbot/commands/auth.test.ts +1 -5
  735. package/src/platforms/discordbot/commands/auth.ts +2 -2
  736. package/src/platforms/discordbot/commands/channel.test.ts +1 -5
  737. package/src/platforms/discordbot/commands/message.test.ts +1 -3
  738. package/src/platforms/discordbot/commands/server.test.ts +1 -5
  739. package/src/platforms/discordbot/commands/shared.ts +1 -1
  740. package/src/platforms/discordbot/commands/snapshot.test.ts +1 -3
  741. package/src/platforms/discordbot/commands/thread.test.ts +1 -3
  742. package/src/platforms/discordbot/commands/user.test.ts +1 -5
  743. package/src/platforms/instagram/cli.ts +37 -0
  744. package/src/platforms/instagram/client.test.ts +396 -0
  745. package/src/platforms/instagram/client.ts +655 -0
  746. package/src/platforms/instagram/commands/auth.ts +401 -0
  747. package/src/platforms/instagram/commands/chat.ts +49 -0
  748. package/src/platforms/instagram/commands/index.ts +3 -0
  749. package/src/platforms/instagram/commands/message.ts +134 -0
  750. package/src/platforms/instagram/commands/shared.test.ts +51 -0
  751. package/src/platforms/instagram/commands/shared.ts +55 -0
  752. package/src/platforms/instagram/credential-manager.test.ts +277 -0
  753. package/src/platforms/instagram/credential-manager.ts +134 -0
  754. package/src/platforms/instagram/ensure-auth.test.ts +84 -0
  755. package/src/platforms/instagram/ensure-auth.ts +24 -0
  756. package/src/platforms/instagram/index.test.ts +44 -0
  757. package/src/platforms/instagram/index.ts +16 -0
  758. package/src/platforms/instagram/listener.test.ts +130 -0
  759. package/src/platforms/instagram/listener.ts +106 -0
  760. package/src/platforms/instagram/types.test.ts +228 -0
  761. package/src/platforms/instagram/types.ts +153 -0
  762. package/src/platforms/kakaotalk/auth/kakao-login.ts +296 -0
  763. package/src/platforms/kakaotalk/cli.ts +37 -0
  764. package/src/platforms/kakaotalk/client.test.ts +490 -0
  765. package/src/platforms/kakaotalk/client.ts +328 -0
  766. package/src/platforms/kakaotalk/commands/auth.ts +569 -0
  767. package/src/platforms/kakaotalk/commands/chat.ts +34 -0
  768. package/src/platforms/kakaotalk/commands/index.ts +3 -0
  769. package/src/platforms/kakaotalk/commands/message.ts +56 -0
  770. package/src/platforms/kakaotalk/commands/shared.ts +38 -0
  771. package/src/platforms/kakaotalk/credential-manager.test.ts +231 -0
  772. package/src/platforms/kakaotalk/credential-manager.ts +110 -0
  773. package/src/platforms/kakaotalk/ensure-auth.ts +16 -0
  774. package/src/platforms/kakaotalk/index.test.ts +68 -0
  775. package/src/platforms/kakaotalk/index.ts +30 -0
  776. package/src/platforms/kakaotalk/listener.test.ts +370 -0
  777. package/src/platforms/kakaotalk/listener.ts +203 -0
  778. package/src/platforms/kakaotalk/protocol/NOTICE.md +51 -0
  779. package/src/platforms/kakaotalk/protocol/config.ts +28 -0
  780. package/src/platforms/kakaotalk/protocol/connection.ts +159 -0
  781. package/src/platforms/kakaotalk/protocol/crypto.ts +71 -0
  782. package/src/platforms/kakaotalk/protocol/packet.ts +47 -0
  783. package/src/platforms/kakaotalk/protocol/session.ts +156 -0
  784. package/src/platforms/kakaotalk/protocol/types.ts +42 -0
  785. package/src/platforms/kakaotalk/token-extractor.ts +320 -0
  786. package/src/platforms/kakaotalk/types.ts +212 -0
  787. package/src/platforms/line/cli.ts +39 -0
  788. package/src/platforms/line/client.test.ts +162 -0
  789. package/src/platforms/line/client.ts +352 -0
  790. package/src/platforms/line/commands/auth.ts +219 -0
  791. package/src/platforms/line/commands/chat.ts +34 -0
  792. package/src/platforms/line/commands/friend.ts +28 -0
  793. package/src/platforms/line/commands/index.ts +5 -0
  794. package/src/platforms/line/commands/message.ts +59 -0
  795. package/src/platforms/line/commands/profile.ts +24 -0
  796. package/src/platforms/line/credential-manager.test.ts +163 -0
  797. package/src/platforms/line/credential-manager.ts +99 -0
  798. package/src/platforms/line/ensure-auth.ts +13 -0
  799. package/src/platforms/line/index.test.ts +48 -0
  800. package/src/platforms/line/index.ts +27 -0
  801. package/src/platforms/line/listener.test.ts +341 -0
  802. package/src/platforms/line/listener.ts +138 -0
  803. package/src/platforms/line/types.test.ts +157 -0
  804. package/src/platforms/line/types.ts +181 -0
  805. package/src/platforms/slack/cli.ts +10 -0
  806. package/src/platforms/slack/client.test.ts +703 -69
  807. package/src/platforms/slack/client.ts +664 -43
  808. package/src/platforms/slack/commands/activity.ts +1 -1
  809. package/src/platforms/slack/commands/auth.ts +2 -2
  810. package/src/platforms/slack/commands/bookmark.test.ts +91 -0
  811. package/src/platforms/slack/commands/bookmark.ts +148 -0
  812. package/src/platforms/slack/commands/channel.test.ts +47 -1
  813. package/src/platforms/slack/commands/channel.ts +255 -4
  814. package/src/platforms/slack/commands/drafts.ts +1 -1
  815. package/src/platforms/slack/commands/emoji.test.ts +32 -0
  816. package/src/platforms/slack/commands/emoji.ts +33 -0
  817. package/src/platforms/slack/commands/file.ts +30 -4
  818. package/src/platforms/slack/commands/index.ts +5 -0
  819. package/src/platforms/slack/commands/message.ts +173 -7
  820. package/src/platforms/slack/commands/pin.test.ts +72 -0
  821. package/src/platforms/slack/commands/pin.ts +93 -0
  822. package/src/platforms/slack/commands/reaction.ts +3 -3
  823. package/src/platforms/slack/commands/reminder.test.ts +86 -0
  824. package/src/platforms/slack/commands/reminder.ts +125 -0
  825. package/src/platforms/slack/commands/saved.ts +1 -1
  826. package/src/platforms/slack/commands/sections.ts +1 -1
  827. package/src/platforms/slack/commands/snapshot.test.ts +4 -4
  828. package/src/platforms/slack/commands/snapshot.ts +14 -1
  829. package/src/platforms/slack/commands/unread.test.ts +3 -3
  830. package/src/platforms/slack/commands/unread.ts +3 -3
  831. package/src/platforms/slack/commands/user.ts +90 -1
  832. package/src/platforms/slack/commands/usergroup.test.ts +157 -0
  833. package/src/platforms/slack/commands/usergroup.ts +242 -0
  834. package/src/platforms/slack/credential-manager.ts +3 -1
  835. package/src/platforms/slack/ensure-auth.ts +4 -4
  836. package/src/platforms/slack/index.test.ts +59 -0
  837. package/src/platforms/slack/index.ts +46 -1
  838. package/src/platforms/slack/listener.test.ts +370 -0
  839. package/src/platforms/slack/listener.ts +181 -0
  840. package/src/platforms/slack/types.ts +187 -0
  841. package/src/platforms/slackbot/client.test.ts +26 -26
  842. package/src/platforms/slackbot/client.ts +40 -22
  843. package/src/platforms/slackbot/commands/auth.test.ts +1 -5
  844. package/src/platforms/slackbot/commands/auth.ts +2 -2
  845. package/src/platforms/slackbot/commands/shared.ts +1 -1
  846. package/src/platforms/teams/client.test.ts +34 -34
  847. package/src/platforms/teams/client.ts +32 -9
  848. package/src/platforms/teams/commands/auth.test.ts +2 -2
  849. package/src/platforms/teams/commands/auth.ts +3 -3
  850. package/src/platforms/teams/commands/channel.test.ts +6 -6
  851. package/src/platforms/teams/commands/channel.ts +3 -3
  852. package/src/platforms/teams/commands/file.ts +3 -3
  853. package/src/platforms/teams/commands/message.ts +4 -4
  854. package/src/platforms/teams/commands/reaction.ts +2 -2
  855. package/src/platforms/teams/commands/snapshot.ts +1 -1
  856. package/src/platforms/teams/commands/team.test.ts +2 -2
  857. package/src/platforms/teams/commands/team.ts +1 -1
  858. package/src/platforms/teams/commands/user.ts +3 -3
  859. package/src/platforms/teams/ensure-auth.ts +1 -1
  860. package/src/platforms/teams/index.test.ts +74 -0
  861. package/src/platforms/teams/index.ts +30 -0
  862. package/src/platforms/telegram/app-config.test.ts +44 -0
  863. package/src/platforms/telegram/app-config.ts +53 -0
  864. package/src/platforms/telegram/chat-utils.test.ts +71 -0
  865. package/src/platforms/telegram/chat-utils.ts +39 -0
  866. package/src/platforms/telegram/cli.ts +20 -0
  867. package/src/platforms/telegram/client.test.ts +90 -0
  868. package/src/platforms/telegram/client.ts +623 -0
  869. package/src/platforms/telegram/commands/auth.test.ts +113 -0
  870. package/src/platforms/telegram/commands/auth.ts +662 -0
  871. package/src/platforms/telegram/commands/chat.ts +65 -0
  872. package/src/platforms/telegram/commands/index.ts +3 -0
  873. package/src/platforms/telegram/commands/message.ts +51 -0
  874. package/src/platforms/telegram/commands/shared.test.ts +15 -0
  875. package/src/platforms/telegram/commands/shared.ts +50 -0
  876. package/src/platforms/telegram/credential-manager.test.ts +152 -0
  877. package/src/platforms/telegram/credential-manager.ts +203 -0
  878. package/src/platforms/telegram/my-telegram-org.ts +206 -0
  879. package/src/platforms/telegram/tdlib.ts +159 -0
  880. package/src/platforms/telegram/types.test.ts +74 -0
  881. package/src/platforms/telegram/types.ts +417 -0
  882. package/src/platforms/whatsapp/cli.ts +38 -0
  883. package/src/platforms/whatsapp/client.ts +526 -0
  884. package/src/platforms/whatsapp/commands/auth.ts +205 -0
  885. package/src/platforms/whatsapp/commands/chat.ts +49 -0
  886. package/src/platforms/whatsapp/commands/index.ts +3 -0
  887. package/src/platforms/whatsapp/commands/message.ts +79 -0
  888. package/src/platforms/whatsapp/commands/shared.ts +61 -0
  889. package/src/platforms/whatsapp/credential-manager.test.ts +278 -0
  890. package/src/platforms/whatsapp/credential-manager.ts +134 -0
  891. package/src/platforms/whatsapp/ensure-auth.test.ts +85 -0
  892. package/src/platforms/whatsapp/ensure-auth.ts +26 -0
  893. package/src/platforms/whatsapp/index.test.ts +39 -0
  894. package/src/platforms/whatsapp/index.ts +16 -0
  895. package/src/platforms/whatsapp/suppress-ws-warnings.ts +21 -0
  896. package/src/platforms/whatsapp/types.test.ts +190 -0
  897. package/src/platforms/whatsapp/types.ts +95 -0
  898. package/src/platforms/whatsappbot/cli.ts +23 -0
  899. package/src/platforms/whatsappbot/client.test.ts +411 -0
  900. package/src/platforms/whatsappbot/client.ts +256 -0
  901. package/src/platforms/whatsappbot/commands/auth.ts +206 -0
  902. package/src/platforms/whatsappbot/commands/index.ts +3 -0
  903. package/src/platforms/whatsappbot/commands/message.ts +148 -0
  904. package/src/platforms/whatsappbot/commands/shared.ts +22 -0
  905. package/src/platforms/whatsappbot/commands/template.ts +69 -0
  906. package/src/platforms/whatsappbot/credential-manager.test.ts +303 -0
  907. package/src/platforms/whatsappbot/credential-manager.ts +148 -0
  908. package/src/platforms/whatsappbot/index.test.ts +34 -0
  909. package/src/platforms/whatsappbot/index.ts +18 -0
  910. package/src/platforms/whatsappbot/types.test.ts +141 -0
  911. package/src/platforms/whatsappbot/types.ts +71 -0
  912. package/src/tui/adapters/channeltalk-adapter.ts +102 -0
  913. package/src/tui/adapters/discord-adapter.ts +112 -0
  914. package/src/tui/adapters/instagram-adapter.ts +132 -0
  915. package/src/tui/adapters/kakaotalk-adapter.ts +163 -0
  916. package/src/tui/adapters/line-adapter.ts +109 -0
  917. package/src/tui/adapters/slack-adapter.ts +128 -0
  918. package/src/tui/adapters/teams-adapter.ts +95 -0
  919. package/src/tui/adapters/telegram-adapter.ts +203 -0
  920. package/src/tui/adapters/types.ts +43 -0
  921. package/src/tui/adapters/whatsapp-adapter.ts +138 -0
  922. package/src/tui/app.ts +689 -0
  923. package/src/tui/cli.ts +18 -0
  924. package/src/tui/utils.test.ts +149 -0
  925. package/src/tui/utils.ts +58 -0
  926. package/src/tui/views/channel-picker.ts +146 -0
  927. package/src/tui/views/workspace-picker.ts +146 -0
  928. package/docs/content/docs/integrations/meta.json +0 -5
  929. package/docs/content/docs/integrations/slack.mdx +0 -218
  930. package/docs/content/docs/{integrations → cli}/discord.mdx +19 -19
  931. package/docs/content/docs/{integrations → cli}/discordbot.mdx +8 -8
@@ -0,0 +1,153 @@
1
+ #!/bin/bash
2
+ #
3
+ # send-template.sh - Send a WhatsApp template message via Cloud API
4
+ #
5
+ # Usage:
6
+ # ./send-template.sh <to> <template-name> [--language <code>] [--components <json>]
7
+ #
8
+ # Arguments:
9
+ # to - Recipient phone number (e.g. 15551234567)
10
+ # template-name - Name of the approved template to send
11
+ #
12
+ # Options:
13
+ # --language <code> - Language code (default: en_US)
14
+ # --components <json> - JSON array of template components (variables, buttons, etc.)
15
+ #
16
+ # Example:
17
+ # ./send-template.sh 15551234567 hello_world
18
+ # ./send-template.sh 15551234567 order_confirmation --language en_US
19
+ # ./send-template.sh 15551234567 shipping_update --components '[{"type":"body","parameters":[{"type":"text","text":"ORDER-123"}]}]'
20
+
21
+ set -euo pipefail
22
+
23
+ # Check arguments
24
+ if [ $# -lt 2 ]; then
25
+ echo "Usage: $0 <to> <template-name> [--language <code>] [--components <json>]"
26
+ echo ""
27
+ echo "Examples:"
28
+ echo " $0 15551234567 hello_world"
29
+ echo " $0 15551234567 order_confirmation --language en_US"
30
+ echo " $0 15551234567 shipping_update --components '[{\"type\":\"body\",\"parameters\":[{\"type\":\"text\",\"text\":\"ORDER-123\"}]}]'"
31
+ exit 1
32
+ fi
33
+
34
+ TO="$1"
35
+ TEMPLATE_NAME="$2"
36
+ shift 2
37
+
38
+ # Parse optional arguments
39
+ LANGUAGE="en_US"
40
+ COMPONENTS=""
41
+
42
+ while [ $# -gt 0 ]; do
43
+ case "$1" in
44
+ --language)
45
+ if [ $# -lt 2 ]; then
46
+ echo "Error: --language requires a value"
47
+ exit 1
48
+ fi
49
+ LANGUAGE="$2"
50
+ shift 2
51
+ ;;
52
+ --components)
53
+ if [ $# -lt 2 ]; then
54
+ echo "Error: --components requires a value"
55
+ exit 1
56
+ fi
57
+ COMPONENTS="$2"
58
+ shift 2
59
+ ;;
60
+ *)
61
+ echo "Unknown option: $1"
62
+ exit 1
63
+ ;;
64
+ esac
65
+ done
66
+
67
+ # Colors for output
68
+ RED='\033[0;31m'
69
+ GREEN='\033[0;32m'
70
+ YELLOW='\033[1;33m'
71
+ NC='\033[0m' # No Color
72
+
73
+ # Check if agent-whatsappbot is installed
74
+ if ! command -v agent-whatsappbot &> /dev/null; then
75
+ echo -e "${RED}Error: agent-whatsappbot not found${NC}"
76
+ echo ""
77
+ echo "Install it with:"
78
+ echo " npm install -g agent-messenger"
79
+ exit 1
80
+ fi
81
+
82
+ # Check authentication
83
+ echo "Checking authentication..."
84
+ AUTH_STATUS=$(agent-whatsappbot auth status 2>&1) || true
85
+
86
+ if ! echo "$AUTH_STATUS" | jq -e '.valid' > /dev/null 2>&1; then
87
+ echo -e "${RED}Not authenticated!${NC}"
88
+ echo ""
89
+ echo "Run this to authenticate:"
90
+ echo " agent-whatsappbot auth set <phone-number-id> <access-token>"
91
+ exit 1
92
+ fi
93
+
94
+ PHONE_ID=$(echo "$AUTH_STATUS" | jq -r '.phone_number_id // "Unknown"')
95
+ echo -e "${GREEN}✓ Authenticated (Phone ID: $PHONE_ID)${NC}"
96
+ echo ""
97
+
98
+ # Send template message with retry logic
99
+ max_attempts=3
100
+ attempt=1
101
+
102
+ echo "Sending template '$TEMPLATE_NAME' to $TO..."
103
+ echo "Language: $LANGUAGE"
104
+ if [ -n "$COMPONENTS" ]; then
105
+ echo "Components: $COMPONENTS"
106
+ fi
107
+ echo ""
108
+
109
+ while [ $attempt -le $max_attempts ]; do
110
+ echo -e "${YELLOW}Attempt $attempt/$max_attempts...${NC}"
111
+
112
+ if [ -n "$COMPONENTS" ]; then
113
+ RESULT=$(agent-whatsappbot message send-template "$TO" "$TEMPLATE_NAME" --language "$LANGUAGE" --components "$COMPONENTS" 2>&1) || true
114
+ else
115
+ RESULT=$(agent-whatsappbot message send-template "$TO" "$TEMPLATE_NAME" --language "$LANGUAGE" 2>&1) || true
116
+ fi
117
+
118
+ if echo "$RESULT" | jq -e '.messages' > /dev/null 2>&1; then
119
+ echo -e "${GREEN}✓ Template message sent successfully!${NC}"
120
+
121
+ MSG_ID=$(echo "$RESULT" | jq -r '.messages[0].id // ""')
122
+
123
+ echo ""
124
+ echo "Message details:"
125
+ echo " To: $TO"
126
+ echo " Template: $TEMPLATE_NAME"
127
+ echo " Language: $LANGUAGE"
128
+ if [ -n "$MSG_ID" ]; then
129
+ echo " Message ID: $MSG_ID"
130
+ fi
131
+
132
+ exit 0
133
+ fi
134
+
135
+ if echo "$RESULT" | jq -e '.error' > /dev/null 2>&1; then
136
+ ERROR_MSG=$(echo "$RESULT" | jq -r '.error // "Unknown error"')
137
+
138
+ echo -e "${RED}✗ Failed: $ERROR_MSG${NC}"
139
+ else
140
+ echo -e "${RED}✗ Unexpected error: $RESULT${NC}"
141
+ fi
142
+
143
+ if [ $attempt -lt $max_attempts ]; then
144
+ SLEEP_TIME=$((attempt * 2))
145
+ echo "Retrying in ${SLEEP_TIME}s..."
146
+ sleep $SLEEP_TIME
147
+ fi
148
+
149
+ attempt=$((attempt + 1))
150
+ done
151
+
152
+ echo -e "${RED}Failed after $max_attempts attempts${NC}"
153
+ exit 1
package/src/cli.ts CHANGED
@@ -20,30 +20,58 @@ program.command('slack', 'Interact with Slack workspaces', {
20
20
  executableFile: join(__dirname, 'platforms', 'slack', `cli${ext}`),
21
21
  })
22
22
 
23
+ program.command('slackbot', 'Interact with Slack using bot tokens', {
24
+ executableFile: join(__dirname, 'platforms', 'slackbot', `cli${ext}`),
25
+ })
26
+
23
27
  program.command('discord', 'Interact with Discord guilds', {
24
28
  executableFile: join(__dirname, 'platforms', 'discord', `cli${ext}`),
25
29
  })
26
30
 
31
+ program.command('discordbot', 'Interact with Discord using bot tokens', {
32
+ executableFile: join(__dirname, 'platforms', 'discordbot', `cli${ext}`),
33
+ })
34
+
27
35
  program.command('teams', 'Interact with Microsoft Teams', {
28
36
  executableFile: join(__dirname, 'platforms', 'teams', `cli${ext}`),
29
37
  })
30
38
 
31
- program.command('slackbot', 'Interact with Slack using bot tokens', {
32
- executableFile: join(__dirname, 'platforms', 'slackbot', `cli${ext}`),
39
+ program.command('telegram', 'Interact with Telegram via TDLib', {
40
+ executableFile: join(__dirname, 'platforms', 'telegram', `cli${ext}`),
33
41
  })
34
42
 
35
- program.command('discordbot', 'Interact with Discord using bot tokens', {
36
- executableFile: join(__dirname, 'platforms', 'discordbot', `cli${ext}`),
43
+ program.command('whatsapp', 'Interact with WhatsApp via linked device', {
44
+ executableFile: join(__dirname, 'platforms', 'whatsapp', `cli${ext}`),
37
45
  })
38
46
 
39
- program.command('channeltalkbot', 'Interact with Channel Talk using API credentials', {
40
- executableFile: join(__dirname, 'platforms', 'channeltalkbot', `cli${ext}`),
47
+ program.command('whatsappbot', 'Interact with WhatsApp using Cloud API credentials', {
48
+ executableFile: join(__dirname, 'platforms', 'whatsappbot', `cli${ext}`),
49
+ })
50
+
51
+ program.command('line', 'Interact with LINE', {
52
+ executableFile: join(__dirname, 'platforms', 'line', `cli${ext}`),
53
+ })
54
+
55
+ program.command('instagram', 'Interact with Instagram DMs', {
56
+ executableFile: join(__dirname, 'platforms', 'instagram', `cli${ext}`),
57
+ })
58
+
59
+ program.command('kakaotalk', 'Interact with KakaoTalk', {
60
+ executableFile: join(__dirname, 'platforms', 'kakaotalk', `cli${ext}`),
41
61
  })
42
62
 
43
63
  program.command('channeltalk', 'Interact with Channel Talk', {
44
64
  executableFile: join(__dirname, 'platforms', 'channeltalk', `cli${ext}`),
45
65
  })
46
66
 
67
+ program.command('channeltalkbot', 'Interact with Channel Talk using API credentials', {
68
+ executableFile: join(__dirname, 'platforms', 'channeltalkbot', `cli${ext}`),
69
+ })
70
+
71
+ program.command('tui', 'Launch unified messenger TUI', {
72
+ executableFile: join(__dirname, 'tui', `cli${ext}`),
73
+ })
74
+
47
75
  program.parse(process.argv)
48
76
 
49
77
  export default program
@@ -50,17 +50,19 @@ describe('ChannelClient', () => {
50
50
 
51
51
  const getJsonBody = (callIndex = 0) => JSON.parse(String(fetchCalls[callIndex]?.options?.body)) as Record<string, unknown>
52
52
 
53
- test('constructor requires account cookie', () => {
54
- expect(() => new ChannelClient('', 'session-cookie')).toThrow(ChannelError)
55
- expect(() => new ChannelClient('')).toThrow(ChannelError)
56
- expect(() => new ChannelClient('account-cookie')).not.toThrow()
57
- expect(() => new ChannelClient('account-cookie', '')).not.toThrow()
53
+ test('login() requires account cookie', async () => {
54
+ await expect(new ChannelClient().login({ accountCookie: '' })).rejects.toThrow(ChannelError)
55
+ await expect(new ChannelClient().login({ accountCookie: '', sessionCookie: 'session-cookie' })).rejects.toThrow(ChannelError)
56
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie' })
57
+ expect(client).toBeInstanceOf(ChannelClient)
58
+ const client2 = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: '' })
59
+ expect(client2).toBeInstanceOf(ChannelClient)
58
60
  })
59
61
 
60
62
  test('successful GET request returns unwrapped JSON', async () => {
61
63
  mockResponse({ account: { id: 'acc-1', name: 'Desk Owner', email: 'owner@example.com', emailVerified: true, language: 'en', country: 'KR', createdAt: 1 } })
62
64
 
63
- const client = new ChannelClient('account-cookie', 'session-cookie')
65
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
64
66
  const account = await client.getAccount()
65
67
 
66
68
  expect(account.id).toBe('acc-1')
@@ -71,7 +73,7 @@ describe('ChannelClient', () => {
71
73
  mockResponse({ account: { id: 'acc-1', name: 'Desk Owner', email: 'owner@example.com', emailVerified: true, language: 'en', country: 'KR', createdAt: 1 } })
72
74
  mockResponse({ channel: { id: 'ch-1', name: 'Support' } })
73
75
 
74
- const client = new ChannelClient('account-cookie', 'session-cookie')
76
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
75
77
  await client.getAccount()
76
78
  await client.getChannel('ch-1')
77
79
 
@@ -87,7 +89,7 @@ describe('ChannelClient', () => {
87
89
  mockResponse({ errors: [{ message: 'Rate limited' }] }, 429, { 'Retry-After': '0.05' })
88
90
  mockResponse({ account: { id: 'acc-1', name: 'Desk Owner', email: 'owner@example.com', emailVerified: true, language: 'en', country: 'KR', createdAt: 1 } })
89
91
 
90
- const client = new ChannelClient('account-cookie', 'session-cookie')
92
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
91
93
  const start = Date.now()
92
94
  const account = await client.getAccount()
93
95
  const elapsed = Date.now() - start
@@ -102,7 +104,7 @@ describe('ChannelClient', () => {
102
104
  mockResponse({ errors: [{ message: 'Server error' }] }, 500)
103
105
  mockResponse({ account: { id: 'acc-1', name: 'Desk Owner', email: 'owner@example.com', emailVerified: true, language: 'en', country: 'KR', createdAt: 1 } })
104
106
 
105
- const client = new ChannelClient('account-cookie', 'session-cookie')
107
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
106
108
  const start = Date.now()
107
109
  const account = await client.getAccount()
108
110
  const elapsed = Date.now() - start
@@ -115,7 +117,7 @@ describe('ChannelClient', () => {
115
117
  test('4xx non-429 throws immediately without retry', async () => {
116
118
  mockResponse({ type: 'forbidden', errors: [{ message: 'Forbidden' }] }, 403)
117
119
 
118
- const client = new ChannelClient('account-cookie', 'session-cookie')
120
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
119
121
  await expect(client.getAccount()).rejects.toThrow(ChannelError)
120
122
  expect(fetchCalls).toHaveLength(1)
121
123
  })
@@ -129,7 +131,7 @@ describe('ChannelClient', () => {
129
131
  throw new Error('socket hang up')
130
132
  }
131
133
 
132
- const client = new ChannelClient('account-cookie', 'session-cookie')
134
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
133
135
 
134
136
  try {
135
137
  await client.getAccount()
@@ -144,7 +146,7 @@ describe('ChannelClient', () => {
144
146
  test('204 response returns undefined', async () => {
145
147
  mockResponse(null, 204)
146
148
 
147
- const client = new ChannelClient('account-cookie', 'session-cookie')
149
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
148
150
  const result = await (client as unknown as { request: <T>(method: string, path: string) => Promise<T> }).request<void>('GET', '/desk/account')
149
151
 
150
152
  expect(result).toBeUndefined()
@@ -168,7 +170,7 @@ describe('ChannelClient', () => {
168
170
  test('listChannels includes query params', async () => {
169
171
  mockResponse({ channels: [{ id: 'ch-1', name: 'Support' }] })
170
172
 
171
- const client = new ChannelClient('account-cookie', 'session-cookie')
173
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
172
174
  const channels = await client.listChannels({ limit: 500 })
173
175
 
174
176
  expect(channels[0]?.id).toBe('ch-1')
@@ -178,7 +180,7 @@ describe('ChannelClient', () => {
178
180
  test('getChannel uses the channel detail endpoint', async () => {
179
181
  mockResponse({ channel: { id: 'ch-1', name: 'Support' } })
180
182
 
181
- const client = new ChannelClient('account-cookie', 'session-cookie')
183
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
182
184
  await client.getChannel('ch-1')
183
185
 
184
186
  expect(fetchCalls[0].url).toBe('https://desk-api.channel.io/desk/channels/ch-1')
@@ -187,7 +189,7 @@ describe('ChannelClient', () => {
187
189
  test('listManagers uses the managers endpoint', async () => {
188
190
  mockResponse({ managers: [{ id: 'mgr-1', channelId: 'ch-1', accountId: 'acc-1', name: 'Alex' }] })
189
191
 
190
- const client = new ChannelClient('account-cookie', 'session-cookie')
192
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
191
193
  const managers = await client.listManagers('ch-1', { limit: 200 })
192
194
 
193
195
  expect(managers[0]?.id).toBe('mgr-1')
@@ -197,7 +199,7 @@ describe('ChannelClient', () => {
197
199
  test('getManagerRole unwraps the role response', async () => {
198
200
  mockResponse({ role: { permissions: ['read'] } })
199
201
 
200
- const client = new ChannelClient('account-cookie', 'session-cookie')
202
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
201
203
  const role = await client.getManagerRole('ch-1')
202
204
 
203
205
  expect(role).toEqual({ permissions: ['read'] })
@@ -209,7 +211,7 @@ describe('ChannelClient', () => {
209
211
  mockResponse({ group: { id: 'grp-1', channelId: 'ch-1', name: 'ops' } })
210
212
  mockResponse({ messages: [{ id: 'msg-1' }] })
211
213
 
212
- const client = new ChannelClient('account-cookie', 'session-cookie')
214
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
213
215
  await client.listGroups('ch-1', { limit: 500 })
214
216
  await client.getGroup('ch-1', 'grp-1')
215
217
  await client.getGroupMessages('ch-1', 'grp-1', { sortOrder: 'desc', limit: 100, since: 'cursor-1' })
@@ -227,7 +229,7 @@ describe('ChannelClient', () => {
227
229
  test('sendGroupMessage includes requestId in the body', async () => {
228
230
  mockResponse({ message: { id: 'msg-1', requestId: 'req-123' } })
229
231
 
230
- const client = new ChannelClient('account-cookie', 'session-cookie')
232
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
231
233
  const blocks = ChannelClient.wrapTextInBlocks('hello group')
232
234
  await client.sendGroupMessage('ch-1', 'grp-1', blocks, 'req-123')
233
235
 
@@ -241,7 +243,7 @@ describe('ChannelClient', () => {
241
243
  mockResponse({ messages: [{ id: 'msg-1' }] })
242
244
  mockResponse({ message: { id: 'msg-2', requestId: 'req-234' } })
243
245
 
244
- const client = new ChannelClient('account-cookie', 'session-cookie')
246
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
245
247
  const blocks = ChannelClient.wrapTextInBlocks('hello dm')
246
248
 
247
249
  await client.listDirectChats('ch-1', { limit: 200 })
@@ -260,7 +262,7 @@ describe('ChannelClient', () => {
260
262
  mockResponse({ messages: [{ id: 'msg-1' }] })
261
263
  mockResponse({ message: { id: 'msg-2', requestId: 'req-345' } })
262
264
 
263
- const client = new ChannelClient('account-cookie', 'session-cookie')
265
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
264
266
  const blocks = ChannelClient.wrapTextInBlocks('hello user')
265
267
 
266
268
  await client.listUserChats('ch-1', { state: 'opened', limit: 25 })
@@ -278,7 +280,7 @@ describe('ChannelClient', () => {
278
280
  test('listBots uses the bots endpoint', async () => {
279
281
  mockResponse({ bots: [{ id: 'bot-1', channelId: 'ch-1', name: 'DeskBot' }] })
280
282
 
281
- const client = new ChannelClient('account-cookie', 'session-cookie')
283
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
282
284
  const bots = await client.listBots('ch-1', { limit: 1000 })
283
285
 
284
286
  expect(bots[0]?.id).toBe('bot-1')
@@ -288,7 +290,7 @@ describe('ChannelClient', () => {
288
290
  test('5xx on POST does not retry', async () => {
289
291
  mockResponse({ type: 'server_error', errors: [{ message: 'Server error' }] }, 500)
290
292
 
291
- const client = new ChannelClient('account-cookie', 'session-cookie')
293
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
292
294
  await expect(client.sendGroupMessage('ch-1', 'grp-1', ChannelClient.wrapTextInBlocks('hello'), 'req-123')).rejects.toThrow(ChannelError)
293
295
  expect(fetchCalls).toHaveLength(1)
294
296
  })
@@ -296,7 +298,7 @@ describe('ChannelClient', () => {
296
298
  test('error responses use desk API error fields', async () => {
297
299
  mockResponse({ type: 'not_found', status: 404, errors: [{ message: 'Missing resource' }], language: 'en' }, 404)
298
300
 
299
- const client = new ChannelClient('account-cookie', 'session-cookie')
301
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
300
302
 
301
303
  try {
302
304
  await client.getChannel('missing')
@@ -315,7 +317,7 @@ describe('ChannelClient', () => {
315
317
  })
316
318
  mockResponse({ account: { id: 'acc-2', name: 'Desk Owner', email: 'owner@example.com', emailVerified: true, language: 'en', country: 'KR', createdAt: 2 } })
317
319
 
318
- const client = new ChannelClient('account-cookie', 'session-cookie')
320
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
319
321
  await client.getAccount()
320
322
 
321
323
  const start = Date.now()
@@ -329,7 +331,7 @@ describe('ChannelClient', () => {
329
331
  test('generated requests still include the cookie header on post endpoints', async () => {
330
332
  mockResponse({ message: { id: 'msg-1' } })
331
333
 
332
- const client = new ChannelClient('account-cookie', 'session-cookie')
334
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
333
335
  await client.sendDirectChatMessage('ch-1', 'dm-1', ChannelClient.wrapTextInBlocks('hello'), 'req-999')
334
336
 
335
337
  expect(getHeaders().Cookie).toBe('x-account=account-cookie; ch-session-1=session-cookie')
@@ -344,7 +346,7 @@ describe('ChannelClient', () => {
344
346
  }
345
347
  mockResponse(searchResponse)
346
348
 
347
- const client = new ChannelClient('account-cookie', 'session-cookie')
349
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
348
350
  const result = await client.searchTeamChatMessages('ch-1', 'hello world', { limit: 10 })
349
351
 
350
352
  const url = new URL(fetchCalls[0].url)
@@ -363,7 +365,7 @@ describe('ChannelClient', () => {
363
365
  }
364
366
  mockResponse(searchResponse)
365
367
 
366
- const client = new ChannelClient('account-cookie', 'session-cookie')
368
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
367
369
  const result = await client.searchUserChatMessages('ch-1', 'test query')
368
370
 
369
371
  const url = new URL(fetchCalls[0].url)
@@ -375,7 +377,7 @@ describe('ChannelClient', () => {
375
377
  test('searchTeamChatMessages works without limit parameter', async () => {
376
378
  mockResponse({ hits: [], bots: [], sessions: [] })
377
379
 
378
- const client = new ChannelClient('account-cookie', 'session-cookie')
380
+ const client = await new ChannelClient().login({ accountCookie: 'account-cookie', sessionCookie: 'session-cookie' })
379
381
  await client.searchTeamChatMessages('ch-1', 'test')
380
382
 
381
383
  const url = new URL(fetchCalls[0].url)
@@ -11,6 +11,7 @@ import type {
11
11
  MessageBlock,
12
12
  } from './types'
13
13
  import { ChannelError } from './types'
14
+ import { ChannelCredentialManager } from './credential-manager'
14
15
 
15
16
  const BASE_URL = 'https://desk-api.channel.io'
16
17
  const MAX_RETRIES = 3
@@ -23,18 +24,37 @@ interface ChannelApiErrorResponse {
23
24
  }
24
25
 
25
26
  export class ChannelClient {
26
- private accountCookie: string
27
+ private accountCookie: string | null = null
27
28
  private sessionCookie: string | undefined
28
29
  private rateLimitRemaining: number | null = null
29
30
  private rateLimitResetAt = 0
30
31
 
31
- constructor(accountCookie: string, sessionCookie?: string) {
32
- if (!accountCookie) {
33
- throw new ChannelError('Account cookie is required', 'missing_account_cookie')
32
+ async login(credentials?: { accountCookie: string; sessionCookie?: string }): Promise<this> {
33
+ if (credentials) {
34
+ if (!credentials.accountCookie) {
35
+ throw new ChannelError('Account cookie is required', 'missing_account_cookie')
36
+ }
37
+ this.accountCookie = credentials.accountCookie
38
+ this.sessionCookie = credentials.sessionCookie
39
+ return this
34
40
  }
35
41
 
36
- this.accountCookie = accountCookie
37
- this.sessionCookie = sessionCookie
42
+ const { ensureChannelAuth } = await import('./ensure-auth')
43
+ await ensureChannelAuth()
44
+ const creds = await new ChannelCredentialManager().getCredentials()
45
+ if (!creds) {
46
+ throw new ChannelError(
47
+ 'No Channel Talk credentials found. Make sure Channel Talk desktop app is installed and logged in.',
48
+ 'no_credentials',
49
+ )
50
+ }
51
+ return this.login({ accountCookie: creds.account_cookie, sessionCookie: creds.session_cookie ?? undefined })
52
+ }
53
+
54
+ private ensureAuth(): void {
55
+ if (this.accountCookie === null) {
56
+ throw new ChannelError('Not authenticated. Call .login() first.', 'not_authenticated')
57
+ }
38
58
  }
39
59
 
40
60
  static wrapTextInBlocks(text: string): MessageBlock[] {
@@ -222,8 +242,8 @@ export class ChannelClient {
222
242
  private getHeaders(): Record<string, string> {
223
243
  return {
224
244
  Cookie: this.sessionCookie
225
- ? `x-account=${this.accountCookie}; ch-session-1=${this.sessionCookie}`
226
- : `x-account=${this.accountCookie}`,
245
+ ? `x-account=${this.accountCookie!}; ch-session-1=${this.sessionCookie}`
246
+ : `x-account=${this.accountCookie!}`,
227
247
  'Content-Type': 'application/json',
228
248
  }
229
249
  }
@@ -255,6 +275,7 @@ export class ChannelClient {
255
275
  }
256
276
 
257
277
  private async request<T>(method: string, path: string, body?: unknown, unwrapKey?: string): Promise<T> {
278
+ this.ensureAuth()
258
279
  const url = `${BASE_URL}${path}`
259
280
  let lastError: Error | undefined
260
281
 
@@ -50,15 +50,17 @@ type ChannelCredentialManagerLike = Pick<
50
50
  >
51
51
  type ChannelTokenExtractorLike = Pick<ChannelTokenExtractor, 'extract'>
52
52
 
53
- let createChannelClient = (accountCookie: string, sessionCookie?: string): ChannelClientLike =>
54
- new ChannelClient(accountCookie, sessionCookie)
53
+ let createChannelClient: (accountCookie: string, sessionCookie?: string) => ChannelClientLike | Promise<ChannelClientLike> = async (
54
+ accountCookie: string,
55
+ sessionCookie?: string,
56
+ ): Promise<ChannelClientLike> => new ChannelClient().login({ accountCookie, sessionCookie })
55
57
 
56
58
  let createCredentialManager = (): ChannelCredentialManagerLike => new ChannelCredentialManager()
57
59
 
58
60
  let createTokenExtractor = (): ChannelTokenExtractorLike => new ChannelTokenExtractor()
59
61
 
60
62
  export function setChannelAuthCommandDependenciesForTesting(dependencies: {
61
- createChannelClient?: (accountCookie: string, sessionCookie?: string) => ChannelClientLike
63
+ createChannelClient?: (accountCookie: string, sessionCookie?: string) => ChannelClientLike | Promise<ChannelClientLike>
62
64
  createCredentialManager?: () => ChannelCredentialManagerLike
63
65
  createTokenExtractor?: () => ChannelTokenExtractorLike
64
66
  }): void {
@@ -68,8 +70,8 @@ export function setChannelAuthCommandDependenciesForTesting(dependencies: {
68
70
  }
69
71
 
70
72
  export function resetChannelAuthCommandDependenciesForTesting(): void {
71
- createChannelClient = (accountCookie: string, sessionCookie?: string): ChannelClientLike =>
72
- new ChannelClient(accountCookie, sessionCookie)
73
+ createChannelClient = async (accountCookie: string, sessionCookie?: string): Promise<ChannelClientLike> =>
74
+ new ChannelClient().login({ accountCookie, sessionCookie })
73
75
  createCredentialManager = (): ChannelCredentialManagerLike => new ChannelCredentialManager()
74
76
  createTokenExtractor = (): ChannelTokenExtractorLike => new ChannelTokenExtractor()
75
77
  }
@@ -86,7 +88,7 @@ export async function extractAction(options: ActionOptions = {}): Promise<Extrac
86
88
  }
87
89
  }
88
90
 
89
- const client = createChannelClient(extracted.accountCookie, extracted.sessionCookie)
91
+ const client = await createChannelClient(extracted.accountCookie, extracted.sessionCookie)
90
92
  const account = await client.getAccount()
91
93
  const channels = await client.listChannels()
92
94
 
@@ -141,7 +143,7 @@ export async function statusAction(options: ActionOptions = {}): Promise<StatusR
141
143
  const storedWorkspace = (await credManager.listAll()).find((workspace) => workspace.workspace_id === creds.workspace_id)
142
144
 
143
145
  try {
144
- const client = createChannelClient(creds.account_cookie, creds.session_cookie ?? undefined)
146
+ const client = await createChannelClient(creds.account_cookie, creds.session_cookie ?? undefined)
145
147
  const account = await client.getAccount()
146
148
 
147
149
  return {
@@ -14,7 +14,7 @@ export async function getClient(options: SharedOptions = {}): Promise<ChannelCli
14
14
  throw new Error('No credentials. Run "agent-channeltalk auth extract" first.')
15
15
  }
16
16
 
17
- return new ChannelClient(creds.account_cookie, creds.session_cookie)
17
+ return new ChannelClient().login({ accountCookie: creds.account_cookie, sessionCookie: creds.session_cookie })
18
18
  }
19
19
 
20
20
  export async function getCurrentWorkspaceId(options: SharedOptions = {}): Promise<string> {
@@ -9,13 +9,15 @@ type ChannelCredentialManagerLike = Pick<
9
9
  >
10
10
  type ChannelTokenExtractorLike = Pick<ChannelTokenExtractor, 'extract'>
11
11
 
12
- let createChannelClient = (accountCookie: string, sessionCookie?: string): ChannelClientLike =>
13
- new ChannelClient(accountCookie, sessionCookie)
12
+ let createChannelClient: (accountCookie: string, sessionCookie?: string) => ChannelClientLike | Promise<ChannelClientLike> = async (
13
+ accountCookie: string,
14
+ sessionCookie?: string,
15
+ ): Promise<ChannelClientLike> => new ChannelClient().login({ accountCookie, sessionCookie })
14
16
  let createCredentialManager = (): ChannelCredentialManagerLike => new ChannelCredentialManager()
15
17
  let createTokenExtractor = (): ChannelTokenExtractorLike => new ChannelTokenExtractor()
16
18
 
17
19
  export function setEnsureChannelAuthDependenciesForTesting(deps: {
18
- createClient?: (accountCookie: string, sessionCookie?: string) => ChannelClientLike
20
+ createClient?: (accountCookie: string, sessionCookie?: string) => ChannelClientLike | Promise<ChannelClientLike>
19
21
  createCredentialManager?: () => ChannelCredentialManagerLike
20
22
  createTokenExtractor?: () => ChannelTokenExtractorLike
21
23
  }): void {
@@ -25,15 +27,15 @@ export function setEnsureChannelAuthDependenciesForTesting(deps: {
25
27
  }
26
28
 
27
29
  export function resetEnsureChannelAuthDependenciesForTesting(): void {
28
- createChannelClient = (accountCookie: string, sessionCookie?: string): ChannelClientLike =>
29
- new ChannelClient(accountCookie, sessionCookie)
30
+ createChannelClient = async (accountCookie: string, sessionCookie?: string): Promise<ChannelClientLike> =>
31
+ new ChannelClient().login({ accountCookie, sessionCookie })
30
32
  createCredentialManager = () => new ChannelCredentialManager()
31
33
  createTokenExtractor = () => new ChannelTokenExtractor()
32
34
  }
33
35
 
34
36
  // Keep old API for backward compatibility
35
37
  export const setEnsureChannelAuthClientFactoryForTesting = (
36
- factory: (accountCookie: string, sessionCookie?: string) => ChannelClientLike,
38
+ factory: (accountCookie: string, sessionCookie?: string) => ChannelClientLike | Promise<ChannelClientLike>,
37
39
  ): void => setEnsureChannelAuthDependenciesForTesting({ createClient: factory })
38
40
 
39
41
  export const resetEnsureChannelAuthClientFactoryForTesting = (): void =>
@@ -46,7 +48,7 @@ export async function ensureChannelAuth(): Promise<void> {
46
48
 
47
49
  if (creds) {
48
50
  try {
49
- const client = createChannelClient(creds.account_cookie, creds.session_cookie ?? undefined)
51
+ const client = await createChannelClient(creds.account_cookie, creds.session_cookie ?? undefined)
50
52
  await client.getAccount()
51
53
  return
52
54
  } catch {
@@ -60,7 +62,7 @@ export async function ensureChannelAuth(): Promise<void> {
60
62
  return
61
63
  }
62
64
 
63
- const client = createChannelClient(extracted.accountCookie, extracted.sessionCookie)
65
+ const client = await createChannelClient(extracted.accountCookie, extracted.sessionCookie)
64
66
  const account = await client.getAccount()
65
67
  const channels = await client.listChannels()
66
68
  if (channels.length === 0) {